Not: cFos Şarj Yöneticisi, SunSpec kullanan çoğu solar inverteri okuyabilir ("SunSpec Solar Inverter / Meter" cihaz tipi). Bu durumda, kendi sayaç tanımınızı oluşturmanıza gerek yoktur.
CFos Charging Manager, standart repertuarda olmayan sayaçları desteklemek için kendi sayaç tanımlarınızı oluşturmanıza olanak tanır. Şu anda üç tür bulunmaktadır: Modbus sayaçları, HTTP/JSON sayaçları ve MQTT/JSON sayaçları. Bu sayaçlar için tanım dosyaları çok benzerdir. Modbus sayaçları verilerini Modbus aracılığıyla belirli kayıtlardan okurken, HTTP/JSON sayaçları verilerini HTTP isteği aracılığıyla alır ve JSON'u yanıt olarak ayrıştırır. MQTT/JSON sayaçları için, cFos Ücretlendirme Yöneticisi MQTT konularına abone olur ve konu altında yayınlanan mesajları JSON olarak ayrıştırır. Ayrıştırma için cFos Şarj Yöneticisi küçük bir "sorgu dili" kullanır. İşte cFos Charging Manager'd aki MQTT yeteneklerinin dokümantasyonu.
Akım ve voltaj gibi önceden tanımlanmış bir dizi değişkene ek olarak, kullanıcı tanımlı sayaçlar bilinmeyen kullanıcı tanımlı değişkenleri de okuyabilir, girişleri sorgulayabilir ve çıkışları ayarlayabilir. Değişkenlerin okunması ve çıktıların ayarlanması formüllerin değerlendirilmesini sağlar. Aşağıda açıklanan Şarj Yöneticisi değişkenleri ve global Şarj Yöneticisi çıkışları ile birlikte bu güçlü bir özelliktir ve hatta belirli ev otomasyonu görevlerine ve akü depolama gibi harici cihazların kontrolüne izin verir. Bununla ilgili kontrol görevlerini gerçekleştirirseniz, lütfen bize geri bildirimde bulunun. İnsanların cFos Şarj Yöneticisi ile neyi kontrol ettikleriyle çok ilgileniyoruz ve bu, Şarj Yöneticisini müşteri ihtiyaçlarına göre daha da geliştirmemize yardımcı oluyor.
İşte Modbus için aktif güç için tek bir kayıt okuyan basit bir örnek tanım. Özel uygulamanız için kayıt numarasını kolayca değiştirebilirsiniz:
Tek bir kayıt için örnek tanım.
Burada Modbus için örnek bir tanım ve HTTP/JSON için bir tanım bulunmaktadır:
Modbus ölçüm cihazı için örnek tanımı indirin
HTTP/JSON ölçer için örnek tanımı indirin
Şarj Yöneticisi zaten bu tür birkaç dosya ile birlikte gelir, ancak "Sistem yapılandırması" altında kendi dosyalarınızı yükleyebilir ve bunları tekrar silebilirsiniz.
Burada sunduğumuz sayaç tanımlarının çoğunu bulacaksınız:
Verilen sayaç tanımlarını indirin
Eğer kendi sayaç dosyanızı oluşturduysanız ve bu diğer kullanıcılar için de uygun olabilirse, bunu bize sunarsanız çok minnettar oluruz. O zaman bunu Charging Manager'ın gelecekteki sürümleriyle birlikte sunacağız.
Ek sayaçlar için sayaç tanımlarını indirinSayaç tanımları, özellikleri ve alt nesneleri olan global bir JSON nesnesine sahip JSON dosyalarıdır. 'rtype' okuma işleminin türünü belirler: 0 = Modbus, 1 = HTTP/JSON, 2 = MQTT/JSON. 'mtype' cihaz türünü belirler: 0 = Diğer cihaz, 1 = Sayaç, 2 = İnvertör, 4 = Akü depolama.
Sayıları 0x önekiyle ondalık veya onaltılık olarak belirtebilirsiniz. // kullanarak tek satırlık açıklamalara da izin verilir.
Tanım dosyalarınızı bir JSON5 doğrulayıcıdan geçirmenizi öneririz, örneğin bu JSON5 doğrulayıcı Aşağıdaki referansta formüllerde hangi değerlerin kullanılabileceğini anlamak için Formüller bölümünü mutlaka okumuş olmalısınız.
silence_period, msn. cinsinden, cihazın bir mesajın başlangıcını tanıması için Modbus RTU erişiminden önceki duraklama uzunluğu belirlenir.
silence_same_slave, true: Duraklama, aynı cihaza birden fazla erişimde de gözlemlenir.
retries: Cihaz yanıt vermezse yeniden deneme sayısı.
rcv_timeout: msn. cinsinden, cihaz yanıt verene kadar erişim başına maksimum bekleme süresi.
modbus_read: Modbus okuma komutunun fonksiyon numarası, genellikle 3 veya 4.
modbus_read_max_registers: Bir seferde okunabilecek maksimum kayıt sayısı.
modbus_allow_gaps: true = Bir okuma işleminde kullanılmayan kayıt alanları okunabilir.
connect_timeout: msn'dir. bir TCP bağlantısı için maksimum bekleme süresi.
delay_after_connect: msn cinsindendir. İlk komutu göndermeden önce bağlantı kurulduktan sonra duraklatın.
upd_delay: msn cinsinden. bir cihazın okunabileceği aralığı belirler. Bazı cihazlar çok sık sorgulanırsa aşırı yüklenir.
manufacturer: String, üreticinin adı. Bu, kutucuğun genişletilmiş bilgilerinde görüntülenir.
delay_accumulated: true = Birikmiş değerler (kWh) yalnızca 3 saniyede bir veya yeterli güç varsa sorgulanır. false = Bu değerler her zaman sorgulanır.
ui_addr: URL, web arayüzünü çağırmak için cihaz adresinden farklıysa.
reserved: 0 olarak yorumlanan değerleri içeren dizi (cihaz modele bağlı olarak belirli değerleri destekliyorsa kullanışlıdır).
Yukarıda listelenen özellikleri atlarsanız, cFos Charging Manager çoğu durumda iyi çalışan varsayılan değerleri alır.
JSON tanımında bir sonraki adım, sayacın akım, voltaj vb. değerleri okumak veya hesaplamak için kullandığı değişkenlerin tanımıdır. Şarj Yöneticisi aşağıdaki değişkenleri bilir:
type_designation, version, firmware_version, serial: Bunlar, kutucuğun genişletilmiş bilgilerinde gösterildiği gibi model adını oluşturur. Bunlar sayacı ayarlarken veya sıfırlarken bir kez sorgulanır .
voltage_l1..voltage_l3, current_l1..current_l3, power_w, power_var, power_va, power_w_l1..power_w_l3: CFos Şarj Yöneticisi bunlardan voltaj_l1..l3, işaretli akım_l1..l3, güç_w ve güç_va değerlerini hesaplamaya çalışır. Tüm değişkenleri belirtmek zorunda değilsiniz. CFos Şarj Yöneticisi değerleri mevcut değişkenlerden hesaplamaya çalışır.
import_wh, export_wh: Şarj Yöneticisi import_wh ve export_wh değerlerini görüntülemek için bu değişkenleri kullanır. Tek yönlü sayaçlar için (örn. inverterler), her zaman yalnızca import_wh tanımlamalısınız. Export_wh yalnızca çift yönlü sayaçlar için tanımlanmalıdır (depolama tankları veya şebeke referans sayaçları gibi).
soc: Varsa, bir akü depolama tankının Şarj Durumu kutucukta % olarak görüntülenir.
Ayrıca, her güncellemede okunan veya formüller kullanılarak hesaplanan farklı adlara sahip başka değişkenler de tanımlayabilirsiniz. CM. ile başlayan değişkenler tanımlarsanız, örneğin CM._set_price, atanan değerler global Charging Manager değişkenlerinde saklanır (aşağıya bakın) ve buna göre sorgulanabilir.
Ile başlayan değişkenler: Ile başlayan değişkenler tanımlarsanız, bunlar kullanıcı arayüzünde sayaç kutucuğunda genişletilmiş bilgiler altında görüntülenir, örneğin bir akü deposunun sıcaklığı.
Nesne, yukarıda listelenen değişkenin adından sonra adlandırılır ve aşağıdaki özelliklere sahiptir: fixed: Sabit bir değere sahip dize.
Örneğin type_designation veya voltage için değer belirlenemiyorsa kullanışlıdır. expr: String, değişken okunmaz ancak bir formül olarak değerlendirilir. type: Sabit veya expr değilse, değişkenin türü: int16, uint16, int32, uint32, float, int64, string. Bu, Modbus için kayıtları doğru biçimde okumak açısından önemlidir. uint16 ve uint32 yalnızca pozitif sayıları kabul edebilen türlerdir.
JSON/HTTP ile genellikle float kullanabilirsiniz. çözünürlük: float, okunan değer 'çözünürlük' ile çarpılır. Voltaj değerleri volt, akım değerleri miliamper, güç değerleri watt, enerji değerleri watt-saat (Wh) cinsinden olmalıdır.
Negatif 'çözünürlük' ile, ters işarete sahipse bir değeri ters çevirebilirsiniz. once: bool (doğru veya yanlış), doğruysa, değer cihaz başlatıldığında yalnızca bir kez okunur, aksi takdirde periyodik olarak okunur. address: sayı (Modbus) veya dize (HTTP/JSON), Modbus kayıt numarası veya okunacak değerin HTTP URL'si. query:
Dize, HTTP JSON için Şarj Yöneticisinin JSON yanıtında okunacak değeri bulduğu sorgu dilindeki belirtim. sıra: Dize, Modbus için değerin bulunduğu bayt sırası, "hl" veya "lh". uzunluk: sayı, Modbus için bir dizenin kayıtlardaki uzunluğu. 'version' ve 'firmware_version' değişkenleri için 'length' sayısal versiyonları noktalı dizelere dönüştürmek için kullanılır. 'length' için 2 veya 4 değerlerine izin verilir, bu da a.b ve a.b.c.d sürüm biçimleriyle sonuçlanır. 'length' 2 ve 'int16' veya 'uint16' tipi ile, Şarj Yöneticisi düşük ve yüksek baytı bir nokta ile, 'int32' veya 'uint32' düşük ve yüksek word ile, 'int64' düşük ve yüksek dword ile ayırır. 'lenth' 4 ve 'int32' veya 'uint32' için, Ücretlendirme Yöneticisi değeri bir nokta ile ayrılmış 4 bayta böler.
'int64' için buna uygun olarak 4 kelime. regex: String. Düzenli bir ifade belirtilirse, sayaç yanıtının JSON'da olması gerekmez. Düzenli ifadenin tüm eşleşmesi ya da ilk grup sonuç olarak değerlendirilir. Lütfen bunu yalnızca cihaz JSON döndürmüyorsa kullanın.
İşte düzenli ifadelerimizin özelliklerinin listesi: any char: . named classes:
\d \s \w \D \S \W anonim sınıflar: [a-z0-9_], [^0-9], [^\d] alternatifli gruplar: (ab|cd|ef) yakalanmamış gruplar: (?:ab|cd) (açgözlü) bir kez veya hiçbiri: a?, a???
(açgözlü ) çok ya da hiç: a*, a*?
(açgözlü ) bir veya daha fazla: a+, a+? dize başı: ^ dize sonu: $
Şarj Yöneticisi, cihaz başına farklı kayıtlardan veya JSON öğelerinden 32 adede kadar giriş değerini sorgulayabilir. "Girdiler" özelliği bir JSON dizisidir. Her giriş için aşağıdaki özellikleri tanımlamanız gerekir:
adresi: Adres (Modbus kaydı veya URL).
say: Bu istekle okunacak giriş bitlerinin sayısı.
sorgusu: HTTP/JSON için, yanıttaki değeri bulmak için sorgu dili.
CFos Şarj Yöneticisi her güncellemede bu şekilde tanımlanan tüm girişleri okur ve bitleri dahili olarak bir diziye yerleştirir; bu dizi daha sonra Input1..InputN. formülleriyle sorgulanabilir.
Şarj Yöneticisi cihaz başına 32 adede kadar çıkışı değiştirebilir. Çıkışlar, çıkış nesnelerinin bir JSON dizisi olarak "çıkışlar" içinde tanımlanır. İlgili çıkışın durumu değişmişse, tüm çıkışlar her güncelleme döngüsünün sonunda değiştirilir.
Her çıkış için, çıkış nesnesinde aşağıdaki özellikleri tanımlamanız gerekir:
adresi: isteğe bağlı HTTP yöntemi ile HTTP URL'si, örneğin GET http://www.example.com?output1=${var1}. Modbus kayıtlarını ayarlamak için cFos Şarj Yöneticisinin HTTP API'sini kullanabilirsiniz. Şarj Yöneticisi localhost üzerindeki eşleşen erişimleri tespit eder ve talebi dahili işleyiciye yönlendirir, böylece harici HTTP API erişimlerinde olduğu gibi yetkilendirmeye ihtiyacınız olmaz. Tüm değiştirmelerden sonra URL boşsa, hiçbir çıktı ayarlanmaz. Örneğin, yalnızca belirli değişkenler mevcutsa çıktıları değiştirebilirsiniz (bkz. formüller: exists() işlevi). Adres içinde ayrıca ${adres} ve ${id} belirtebilirsiniz. Bu, ayarlarda tanımlandığı şekliyle geçerli cihaz adresi ve Modbus ID'sidir. Adres ve id esas olarak Modbus API'sini kullanmak için kullanılır (aşağıya bakın).
body: POST veya PUT için isteğe bağlı HTTP gövdesi.
URL ve gövdede, global Charging Manager değişkenlerine veya ilgili sayaçtan referans veren ${expr} formüllerini kullanabilirsiniz. Çıktı ayarlanırken 'expr' formülü değerlendirilir ve URL veya gövde metninde değiştirilir. Yukarıdaki örnekte, http://www.example.com?output1=1 çıktıyı ayarlar ve http://www.example.com?output1=0 onu silerse, bir 'var1' değişkeni tanımlayabilir ve bunu istediğiniz gibi 1 veya 0 olarak ayarlayabilirsiniz. Bu şekilde, daha önce bir formül kullanarak bir değişkende sakladığınız Modbus kayıtlarındaki bellek performansını kontrol etmek için sayısal değerler de yazabilirsiniz.
URL'de sayısal bir değer geçmek yerine, Shelly WLAN soketlerinde olduğu gibi, formüle bağlı olarak bir metni başka bir metinle değiştirmeniz gerekiyorsa, bunu şu şekilde yazabilirsiniz: ${if expr`text1`text2}. 'Kesme işareti' bir geri işaretidir (ASCII kodu 96). Eğer 'expr' != 0 ise, metin1 eklenir, aksi takdirde metin2. Shelly WLAN soketi için URL şu şekilde görünür: http://<ip-addr>/relay/0?turn=${if expr`on`off}, yani expr != 0 ise, Şarj Yöneticisi http://<ip-addr>/relay/0?turn=on, aksi takdirde http://<ip-addr>/relay/0?turn=off adresini çağırır.
URL olarak göreli bir yol girerseniz, Şarj Yöneticisi ilgili cihaz için yapılandırılmış adresi alır. Etki alanı olarak 'localhost' girerseniz, Şarj Yöneticisi üzerinde çalıştığı cihazın adresini alır. Kendi API'sine bir erişim tespit ederse, tam bir HTTP erişimi yürütmek yerine dahili işleyiciyi kullanır, böylece sayaç tanımında bir kullanıcı adı ve şifre saklamanız gerekmez. Ile başlayan bir URL, Şarj Yöneticisinin her zaman tam bir HTTP erişimi gerçekleştirmesine neden olur.
Çıkışları sıfırlayın: Bir "outputs" dizisine ek olarak, "outputs" dizisi gibi yapılandırılmış "resets" adında bir dizi de tanımlayabilirsiniz. Bu, cihaz devre dışı bırakıldığında çıkışları başlangıç değerlerine sıfırlamak için kullanılabilir. Bununla, kullanıcı tanımlı değişkenler ve "once": true ile birlikte, üniteyi ilk durumuna geri döndürebilirsiniz.
Çıkışları periyodik olarak yazın: Bazı cihazlar için çıkışların periyodik olarak yazılması gerekir, aksi takdirde cihaz değerleri "varsayılan" duruma sıfırlar. Örneğin, Kostal bellek, bellek kontrolü bir süre aktif olarak yazılmadıysa varsayılan kurallarını tekrar kullanır. Çıkışları periyodik olarak ayarlamak için, adresin önüne #xxx# ekleyebilirsiniz; burada xxx, yazılacak değer aynı kalsa bile çıkışın kaç saniyede bir yeniden yazılacağını gösterir. Örneğin, adres /cnf?cmd=set_cm_vars&name=test&val=42 ise, bu değerin her 30 saniyede bir yazılmasını sağlamak için #30#/cnf?cmd=set_cm_vars&name=test&val=42 kullanabilirsiniz.
Şu anda, üye adları ve "." ve "[]" operatörleri "sorgu" arama ifadelerinde kullanılabilir, örnekler:
test | "test" adlı öğe |
isim1.isim2 | "name1" alt nesnesinde "name2" adlı öğe |
name[idx] | "name" nesne öğesinin "idx" öğesi. "idx" bir sayı olabilir, örneğin diziler veya bir dize için |
name["u2"] | "name" nesne öğesinin "u2" öğesi, "name.u2" öğesine karşılık gelir |
name[{"el1": "v1", "el2": 3}].value | Nesne gösteriminin koşulunu sağlayan dizi elemanı seçilir ve 'değer' adlı eleman değerlendirilir. Burada örneğin 'isim' dizisinde nesne elemanları olarak 'v1' değerine sahip 'el1' ve 3 değerine sahip 'el2' olan eleman seçilir ve bu nesneden 'değer' elemanının değeri döndürülür. |
Şarj Yöneticisi yapılandırmasında değişkenler oluşturabilirsiniz. Değer olarak sabit bir değer veya bir formül kullanabilirsiniz. Her güncelleme döngüsünün sonunda, Şarj Yöneticisi gerekirse bu değişkenlerin değerini yeniden hesaplar. Daha sonra bunları (belirli) Şarj Yöneticisi parametrelerinde, Şarj Kurallarında veya çıkışları kontrol etmek için kullanabilirsiniz. Değişken olarak Ex.member veya Mx.member da yazabilirsiniz. Burada Exve Mx, Şarj Yöneticisinde ayarlanan bir duvar kutusunun veya sayacın cihaz kimliğidir. member, ilgili cihazda depolanan "kullanıcı tanımlı" bir değişkendir. Bazı değişkenlerin özel bir anlamı olabilir: KEBA için "out1" bir anahtarlama çıkışıdır, ABB B23 sayaçları için "out1" ve "out2" anahtarlama çıkışlarıdır (bunu destekleyen modeller için). Bir 1 çıkışı açar, bir 0 tekrar kapatır.
Belirli koşullar altında açılması gereken ancak daha sonra bir süre çalışan cihazlarınız varsa (örn. çamaşır makinesi, bulaşık makinesi), değişkeni bir "tetikleyici" olarak da tanımlayabilirsiniz. O zaman değişkenin formülü, değişkenin 1'e ayarlandığı koşuldur. Ayarlanabilir bir süre sonra tekrar 0'a ayarlanır. Bir "yeniden tetikleme koşulu", koşul yerine getirildiği sürece kapatmaya (yani değişkeni 0'a ayarlamaya) kadar geçen sürenin tekrar tekrar uzatılmasına olanak tanır.
Test amacıyla, Şarj Yöneticisi ve sayaç değişkenlerini, örneğin mevcut Awattar fiyatlarını görüntüleyebilirsiniz:
Şarj Yöneticisi yapılandırmasında, global çıkışları yukarıda 'Çıkışlar' altındaki sayaç tanımında açıklandığı gibi yapılandırabilirsiniz. Bunlar, durumları değişmişse her güncelleme döngüsünün sonunda ayarlanır. Kullanıcı tanımlı cihazlarda anahtarlama çıkışlarını kontrol etmek istiyorsanız, yukarıdaki kural önerilir (bkz. Şarj Yöneticisi Değişkenleri): Kullanıcı tanımlı sayaçta "out1", "out2" vb. adlara sahip değişkenler ayarlarsınız ve kullanıcı tanımlı sayaçta bu değişkenlerin değerine bağlı olarak çıkışı değiştiren çıkışlar ayarlarsınız.
Şarj Yöneticisinin Modbus API'si, herhangi bir Modbus RTU veya TCP adresine sahip Modbus cihazlarını kontrol etmek için kullanılır (Şarj Yöneticisinden erişilebilir). Modbus RTU için adres olarak COMx,bd,8,p,s girin; burada x COM port numarası, bd baud hızı, p parite ('N', 'E' veya 'O') ve s de her bir cihazın yapılandırmasında olduğu gibi stop bitlerinin sayısıdır (1 veya 2). Modbus TCP için muhatap, port numarası da dahil olmak üzere Şarj Yöneticisinin ağındaki cihazın IP adresidir.
Modbus API'sinin URL'si (HTTP GET için) şöyledir:
/cnf?cmd=modbus_get veya /cnf?cmd=modbus_set
cFos Şarj Yöneticisi aşağıdaki ek sorgu parametrelerini destekler:
addr: Yukarıda belirtilen Modbus RTU veya TCP cihaz adresi.
func: Modbus fonksiyon numarası, örneğin 3 veya 4 okumak için, 6 veya 16 yazmak için.
id: Modbus cihazının cihaz kimliği.
reg: Modbus kayıt numarası. Değer ondalık veya onaltılık olarak verilebilir (0x önekiyle).
val: sayı, kayda yazılacak değer. Okurken atlayın.
türü: 'w' 16bit (varsayılan), d = 32bit, f = float, q = 64bit, s = string.
cnt: sayı, dizenin kayıtlardaki maksimum uzunluğu, diğer türler için atlayın veya 1 olarak ayarlayın.
order: String, bayt sırası, "hl" veya "lh".
Not: 'Sayaç'ınızda öncelikle kontrol görevleri varsa, bu cihazın başlangıç sayfasında görünmemesi için bu kutucuğun ayarlarında 'Cihazı gizle' seçeneğini işaretleyebilirsiniz.
Not: HTTP üzerinden okunan bazı sayaçlar yetkilendirme olarak bir kullanıcı adı/parola gerektirir. Bunu HTTP erişimi için adreste belirtebilirsiniz, örneğin http://username:password@192.168.2.111
. Kullanıcı adınız veya parolanız bir "@" içeriyorsa, bunu "%40" ile değiştirmelisiniz.