Automatyzacje - w czasie rzeczywistym?

Dziękuje za pomoc, ruszyło, wystarczy ten okrojony kod nawet bez ID, problemem był okres telemetrii, który trzeba ustawić na 300s, jutro spróbuje z tymi osmioma czujnikami

  Rule1 ON DS18B20#Temperature>%var1% DO Backlog var1 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20":{"Temperature":%value%}}; var2 %value%; add1 0.2; sub2 0.2 ENDON 
Rule1 + ON DS18B20#Temperature<%var2% DO Backlog var2 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20":{"Temperature":%value%}}; var1 %value%; add1 0.2; sub2 0.2 ENDON
Rule1 1

Dla innych:
w przypadku jak poniżej :slight_smile:
image

Rule1 ON DS18B20-1#Temperature>%var1% DO Backlog var1 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-1":{"Temperature":%value%}}; var2 %value%; add1 0.4; sub2 0.4 ENDON 
Rule1 + ON DS18B20-1#Temperature<%var2% DO Backlog var2 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-1":{"Temperature":%value%}}; var1 %value%; add1 0.4; sub2 0.4 ENDON
Rule1 + ON DS18B20-2#Temperature>%var3% DO Backlog var3 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-2":{"Temperature":%value%}}; var4 %value%; add3 0.4; sub4 0.4 ENDON 
Rule1 + ON DS18B20-2#Temperature<%var4% DO Backlog var4 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-2":{"Temperature":%value%}}; var3 %value%; add3 0.4; sub4 0.4 ENDON
Rule1 + ON DS18B20-3#Temperature>%var5% DO Backlog var5 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-3":{"Temperature":%value%}}; var6 %value%; add5 0.4; sub6 0.4 ENDON 
Rule1 + ON DS18B20-3#Temperature<%var6% DO Backlog var6 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-3":{"Temperature":%value%}}; var5 %value%; add5 0.4; sub6 0.4 ENDON
Rule2 + ON DS18B20-4#Temperature>%var7% DO Backlog var7 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-4":{"Temperature":%value%}}; var8 %value%; add7 0.4; sub8 0.4 ENDON 
Rule2 + ON DS18B20-4#Temperature<%var8% DO Backlog var8 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-4":{"Temperature":%value%}}; var7 %value%; add7 0.4; sub8 0.4 ENDON
Rule2 + ON DS18B20-5#Temperature>%var9% DO Backlog var9 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-5":{"Temperature":%value%}}; var10 %value%; add9 0.4; sub10 0.4 ENDON 
Rule2 + ON DS18B20-5#Temperature<%var10% DO Backlog var10 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-5":{"Temperature":%value%}}; var9 %value%; add9 0.4; sub10 0.4 ENDON
Rule2 + ON DS18B20-6#Temperature>%var11% DO Backlog var11 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-6":{"Temperature":%value%}}; var12 %value%; add11 0.4; sub12 0.4 ENDON 
Rule2 + ON DS18B20-6#Temperature<%var12% DO Backlog var12 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-6":{"Temperature":%value%}}; var11 %value%; add11 0.4; sub12 0.4 ENDON
Rule3 + ON DS18B20-7#Temperature>%var13% DO Backlog var13 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-7":{"Temperature":%value%}}; var14 %value%; add13 0.4; sub14 0.4 ENDON 
Rule3 + ON DS18B20-7#Temperature<%var14% DO Backlog var14 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-7":{"Temperature":%value%}}; var13 %value%; add13 0.4; sub14 0.4 ENDON
Rule3 + ON DS18B20-8#Temperature>%var15% DO Backlog var15 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-8":{"Temperature":%value%}}; var16 %value%; add15 0.4; sub16 0.4 ENDON 
Rule3 + ON DS18B20-8#Temperature<%var16% DO Backlog var16 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","DS18B20-8":{"Temperature":%value%}}; var15 %value%; add15 0.4; sub16 0.4 ENDON
Rule1 1
Rule2 1
Rule3 1

w powyższym przypadku tamnosta wysyła mi tylko power i za chiny nie wiem jak ugyźć wysyłanie pozostałych parmaterów. Pomożesz?

moja paczka danych, jak podstawiam w jednel linijce pozostałe parametry, to wszystkie się zastępują jednym - z power i w rezultacie mam 2500Watt i 2500V itd :face_with_head_bandage:, jak robiłem kolejny z nazwą ENERGY to na przemiennie się wyświetlały, czyli coś się krzaczy

12:41:31.198 MQT: tele/Express_Kuchnia/SENSOR = {"Time":"2022-03-20T12:41:31","ENERGY":{"TotalStartTime":"2021-09-23T20:49:23","Total":102.269,"Yesterday":0.698,"Today":0.319,"Period":0,"Power":3,"ApparentPower":21,"ReactivePower":20,"Factor":0.13,"Voltage":250,"Current":0.082}}

image

A co byś chciał wysyłać? Całą paczkę danych czy tylko jakieś wybrane parametry?

tylko te parametry"Power":3, "Total":102.181, "Yesterday":0.698, "Today":0.231, "Voltage":248, "Current":0.081}}
jak nie da rady to paczka też może być, tak jest tera zo 10s - steruje tak pompą ciepła w oparciu o jej obciążenie

Zrobiłbym dokładnie tak jak poprzednio:

Rule1 ON ENERGY#Power>%var1% DO Backlog var1 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","ENERGY":{"Power":%value%}} ; var2 %value%; add1 5; sub2 5 ENDON 
Rule1 + ON ENERGY#Power<%var2% DO Backlog var2 %value%; Publish tele/%topic%/SENSOR {"Time":"%timestamp%","ENERGY":{"Power":%value%}} ; var1 %value%; add1 5; sub2 5 ENDON 

To wyśle informację przy zmianie energii o 5W. Nie wiem jak wysłać inne dane (pewnie są zapisana pod jakąś zmienną). Ale skoro sterujesz pompą odczytując pobieraną moc - to powinno wystarczyć. Reszta parametrów jest mniej istotna, więc moc możesz wysyłać używając reguł, a resztę telemetrią.

inne dane są dla mnie kluczowe do obliczania kosztów zużycia energii przez pompę, więc może lepiej postanę przy starym sposobie

Kluczowa wydaje mi się następująca kwestia: jak często potrzebujesz aktualizować koszty zużycia. Wydaje mi się mało sensowne liczenie co ileś-sekund. Przecież jak ustawisz telemetrię na 5 minut, to aktualizacja kosztów prawie 300x na dobę wydaje się zupełnie wystarczająca…

Ale jak potrzebujesz innych danych, to konstrukcja typu:
ON ENERGY#Power, ON ENERGY#Total, ON ENERGY#Voltage itp powinna rozwiązać sprawę.

Spróbuj z komendą w regule jako akcja wpisz State.
obraz