Automatizálás ADA P1 Meterrel – így működik a JSON alapú szabályrendszer
Az ADA P1 Meter (és a hozzá kapcsolódó ADA rendszer) nem csak adatot gyűjt a mérőóráról és plugin eszközökről, hanem saját szabályrendszert is futtat.
Ez a szabályrendszer egy JSON fájlban él (általában rules.json), és egy beépített értelmező (interpreter.cpp) dolgozza fel.
Ezzel a felhasználó:
feltételekhez köthet HTTP hívásokat (pl. Shelly, Tasmota, saját REST API),
be tud avatkozni fogyasztók működésébe,
egyszerűen, kódelőismeret nélkül építhet automatizációt.
Ebben a cikkben végigmegyünk:
hogyan néz ki a rules.json,
hogyan kell felépíteni a feltételeket (condition),
hogyan működik az időzítés és az ismétlés,
hogyan használhatod a plugin adatokat (PZEM, Shelly, Tasmota, stb.),
kapni fogsz több konkrét szabálymintát.
1. A rules.json felépítése
A szabályrendszer egy JSON objektum, benne egy rules tömbbel:
id
Egyedi azonosító. Ha üres vagy hiányzik, a rule gyakorlatilag kihagyásra kerül.
enabled true → aktív, false → teljesen figyelmen kívül hagyja a firmware.
condition
Szöveges feltétel – akkor futnak az akciók, ha ez a kifejezés igaz (nem 0).
min_timer_seconds
Minimum idő (mp-ben), ameddig a feltételnek folyamatosan igaznak kell lennie, mielőtt az akció lefut.
0 → nincs késleltetés, „azonnali” rule.
repeat
false → egyszeri szabály: ha egyszer lefutott, vége.
true → ismétlődő szabály: a megadott késleltetéssel többször is lefuthat.
repeat_delay_seconds
Ismétlődő szabály esetén a két egymást követő végrehajtás között kötelező szünet (cooldown) másodpercben.
actions
HTTP hívások listája, sorban végrehajtva:
method: "GET" vagy "POST".
url: hívandó URL (ha üres, az akció kimarad).
body: POST esetén a küldendő JSON / adat (GET-nél üres lehet).
Opcionális, de hasznos:
name
Csak embernek szóló név, UI-ban, logban jól jön („Kávéfőző bekapcsolás”, stb.).
2. Miből dolgozik a szabályrendszer? – a dataJson
A szabályok nem a levegőbe lőnek: minden ciklusban kapnak egy aktuális „adatcsomagot” egy JSON-ben (itt hívjuk dataJson-nak). Ez tartalmazza többek között:
Ha egy kulcs nem létezik, az értéke gyakorlatilag 0 – ezért a feltétel soha nem lesz igaz, ha csak arra támaszkodsz. Ilyenkor érdemes ellenőrizni, jól írtad-e a nevet.
4. Időzítés és ismétlés: min_timer_seconds, repeat, repeat_delay_seconds
Itt jön a „varázs” rész: a szabály nem csak azt tudja, hogy most igaz-e a feltétel, hanem azt is, hogy mióta az.
A firmware minden rule-hoz belső állapotot tart fenn (RuleState), amiben tárolja:
fut-e timer,
mikor indult,
lefutottak-e már az akciók,
ismétlődik-e, mikor volt az utolsó futás.
4.1. min_timer_seconds – mennyi ideig legyen igaz a feltétel?
Ha min_timer_seconds = 0:
a feltétel első igaz pillanatában azonnal lefutnak az akciók (ha még nem futott le korábban).
Ha min_timer_seconds > 0:
amikor a feltétel először igaz lesz, elindul egy belső timer;
ha a feltétel folyamatosan igaz marad, és letelik ez az idő, akkor futnak az akciók;
ha közben a feltétel „leesik” (hamis lesz), a timer reset, kezdheti elölről, ha újra igaz.
Ezzel tudsz olyat csinálni, hogy:
„Csak akkor lépjen közbe a rendszer, ha már legalább 10 másodperce 3 kW fölött vagyok.”
túl nagy az import (2,5 kW felett) ÉS beesik a fesz L1-en,
vagy az 1-es Shelly plug 1 kW felett van,
akkor 10 mp után lekapcsolja a Shelly 0. reléjét.
8. Tippek a szabályok tervezéséhez
Ne spammelj eszközöket
Ha repeat = true, mindig állíts be ésszerű repeat_delay_seconds-t (pl. 30–300 mp), különben nagyon sűrűn kaphatnak parancsot.
Használj minimális időt zajos / billegő értékeknél
Áramszint, teljesítmény gyakran átugrik a határ körül → ilyenkor a min_timer_seconds kisimítja a zajt.
Mindig ellenőrizd a kulcsneveket
Ha elgépeled (pl. instantanous_power_import), az érték 0 lesz, és a condition soha nem igaz. A legjobb, ha a /json vagy /telegram válaszából copy-paste-elsz.
Először csak logolj / tesztelj
Ha félsz az azonnali kapcsolgatástól, csinálhatsz olyan szabályt, ami egy saját HTTP endpointot hív (pl. egy debug szerverre), hogy lásd, milyen gyakran lenne akció.
Egyszeri vs ismétlődő logika tisztán
repeat = false jó egyszeri eseményekre (pl. „ha először léptem át ezt a küszöböt, csinálj valamit, aztán soha többé”).
repeat = true kell, ha folyamatos felügyeletet akarsz (pl. fogyasztás limitálása, töltés szabályozása).
A fázismérés svájci bicskája
A PZIOT-E02 kétféle helyzetben adhat hatalmas segítséget:
1. Ha nincs P1 portos villanyórád
Ilyenkor a PZIOT-E02 önálló fázismérőként működik.
Egy fázison képes mérn…
A háztartási méretű kiserőművek (HMKE) tulajdonosai számára
természetes, hogy figyelik a hálózatba történő visszatáplálást. Ez az
érték mutatja meg, mennyi megtermelt energiát nem használ fel a há…
Az elmúlt időszakban egyre több magyar háztartásban vált fontossá, hogy ne csak a villanyszámlát lássák, hanem azt is, mi történik valójában a háttérben. Erre ad választ a debreceni fejlesztésű ADA P1…
Hozzászólások
Még nincs hozzászólás, légy te az első!