Hallo zusammen.
Ich frage per httpmod die Spritpreise ab. Klappt auch.
Habe mir über den Eventmonitor das doif erzeugen lassen, um mir die Spritpreise per Push aus Handy zu schicken.
DEF ([":^SuperE10"] <= 1.70)
(
{my $SE10A=ReadingsVal("AVIA","SuperE10","0");
my $SE10RE=ReadingsVal("Raiffeisen","SuperE10","0");
my $SE10PM=ReadingsVal("PM_Raesfeld","SuperE10","0");
my $SE10WE=ReadingsVal("Westfalen","SuperE10","0");
fhem ("set pushmsg msg <b>Spritpreise</b> <br> <br>AVIA E10: $SE10A € <br>PM $SE10PM €<br> Raiff.: E10: $SE10RE €<br>West_Lemb E10 $SE10WE € '' '' ");;}
)
DOELSE (set pushmsg msg Pech gehabt)
FUUID 69512c38-f33f-852e-3143-7d2cd979361dc381
FVERSION 98_DOIF.pm:0.306590/2025-12-25
MODEL FHEM
NAME Sprit_push
NOTIFYDEV global,.*().*
NR 720
NTFY_ORDER 50-Sprit_push
STATE cmd_1
TYPE DOIF
VERSION 30659 2025-12-25 12:37:16
eventCount 67
READINGS:
2026-02-01 10:14:59 Device Raiffeisen
2026-02-01 09:59:03 cmd 1
2026-02-01 09:59:03 cmd_event Sprit_push
2026-02-01 09:59:03 cmd_nr 1
2026-02-01 09:58:57 mode enabled
2026-02-01 09:59:03 state cmd_1
Regex:
accu:
bar:
barAvg:
collect:
cond:
:
0:
":^SuperE10" :^SuperE10
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('',$hash,'^SuperE10',0) <= 1.70
do:
0:
0 {my $SE10A=ReadingsVal("AVIA","SuperE10","0"); my $SE10RE=ReadingsVal("Raiffeisen","SuperE10","0"); my $SE10PM=ReadingsVal("PM_Raesfeld","SuperE10","0"); my $SE10WE=ReadingsVal("Westfalen","SuperE10","0"); fhem ("set pushmsg msg <b>Spritpreise</b> <br> <br>AVIA E10: $SE10A € <br>PM $SE10PM €<br> Raiff.: E10: $SE10RE €<br>West_Lemb E10 $SE10WE € '' '' ");;}
1:
0 set pushmsg msg Pech gehabt
helper:
NOTIFYDEV global,.*().*
event SuperE10: 1.749
globalinit 1
last_timer 0
sleeptimer -1
timerdev Raiffeisen
timerevent SuperE10: 1.749
triggerDev Raiffeisen
timerevents:
Diesel: 1.709
SuperE10: 1.749
SuperE5: 1.779
timereventsState:
Diesel: 1.709
SuperE10: 1.749
SuperE5: 1.779
triggerEvents:
Diesel: 1.709
SuperE10: 1.749
SuperE5: 1.779
triggerEventsState:
Diesel: 1.709
SuperE10: 1.749
SuperE5: 1.779
internals:
readings:
trigger:
uiState:
uiTable:
Attributes:
checkReadingEvent 1
checkall all
room Spritpreise
Wenn ich das doif auch Check all setze bekomme ich die Nachrichten. Auch bei cmd1 manuell ausführen klappt es.
Nur im Automatik Modus nicht.
Warum löst das doif nicht aus. Wenn eines der Super E10 readings unter 1,70 € fällt?
Gruß und danke
Sascha
Du fragst ein Event ab, das gibt true oder false zurück. Du kannst aber eine Vorgabe als weiteren Parameter angeben, dann bekommst du den Wert zurück.
Habe es jetzt abgeändert. Habe eigentlich gehofft es ein bisschen einfacher bzw kürzer machen zu können.
Aber so funktioniert es.
(
[AVIA:SuperE10:d] <= 1.68 or
[Raiffeisen:SuperE10:d] <= 1.68 or
[PM_Raesfeld:SuperE10:d] <=1.68 or
[avia_express:Super E10:d] <=1.68
)
(
Zitat von: sash.sc am 01 Februar 2026, 20:20:02Habe eigentlich gehofft es ein bisschen einfacher bzw kürzer machen zu können.
Trigger allgemein:
([#min:"":"E10"] < 1.70)Liste:
([@:"":"E10":$_< 1.70)Anzahl:
([#:"":"E10":$_< 1.70)Wenn du deine Tankstellen Devices mit TS_* oder Tabkstelle_* oder was anderem Sinnvollen benennst, kannst du das in den ersten Term mit einfügen und erzeugst so wesentlich weniger Rechenlast. Um trotzdem an die bisherigen Namen zu kommen, kannst du Alias verwenden:
Oder
([@:a"TS_":"E10":$_< 1.70)PS: am Handy geschrieben, Code (https://fhem.de/commandref_DE.html#DOIF_aggregation) kann Fehler enthalten!
Wann würde diese Definition auslösen?
([@:a"^TS_":SuperE10:$_ < 1.70])
Wenn einer der Werte von 5 Tankstellen unter 1.7 ist?
Gruß sascha
Gar nicht, weil die Variable SuperE10 leer ist. Du suchst den Sting "SuperE10". Und ja, wenn bei einem Device mit "TS_" beginnnend ein Reading, welches "SuperE10" im Namen hat, kleiner als 1.7 ist.
Ich hatte aber extra "E10" gewählt, weil eins deiner Readings "Super E10" hieß.