FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Gunther am 12 Januar 2022, 23:04:35

Titel: bedingtes NOTIFY geht nicht
Beitrag von: Gunther am 12 Januar 2022, 23:04:35
Ich möchte zwei Dummy-Variablen (pushover_heizungsstatus_hilke und pushover_heizungsstatus_gunther : an/aus) nutzen, um einstellen zu können, ob beim Statuswechsel der Heizung auf 1 eine Pushnachricht an meine Frau oder mich gesendet wird.

Leider bekomme ich immer eine Fehlermeldung, weiß aber nicht was falsch ist.

Das steht im DEV des notify:
heizung_Status:1
{if (Value("pushover_heizungsstatus_hilke") eq 'ja') { fhem "set Pushover msg title="Heizungsstatus" Die Heizung steht auf Tagbetrieb. device='IPhone8Hilke' "}};;
{if (Value("pushover_heizungsstatus_gunther") eq 'ja') { fhem "set Pushover msg title="Heizungsstatus" Die Heizung steht auf Tagbetrieb. device='IPhone7GB' "}};;


Habe diverse Klammer und Anführungsstrich-Optionen, die mir sinnvoll erschienen erfolglos getestet.

Folgende Fehlermeldung kommt:
syntax error at (eval 4205595) line 1, near ""set Pushover msg title="Heizungsstatus"

Habt Ihr einen Tipp für mich?
Oder sollte ich auf ein DOIF umsteigen?
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: MadMax-FHEM am 12 Januar 2022, 23:06:03
Klammern falsch...

define nNotify notify Device:Regex {if(Bedingung1){fhem("fhem-Befehl1")}if(Bedingung2){fhem("fhem-Befehl2")}}

Ergo: deine erste "if-Zeile" macht Perl "auf" und Perl am Ende auch wieder "zu" Was danach kommt, also 2tes if ist dann "falsch"...

EDIT: die Strichpunkte sind auch unnötig ;)

Du brauchst für EINEN Auslöser doch nicht auf DOIF umsteigen... ;)

{ -> Perl } -> fhem
Siehe: https://wiki.fhem.de/wiki/Klammerebenen und auch https://wiki.fhem.de/wiki/Notify

Anmerkung: lass die Verwendung von Value! Value greift auf STATE (ja das INTERNAL!!!) zu! Das wird z.B. durch stateFormat beeinflusst! Besser ReadingsVal("Device", "Reading", "Ersatzwert") oder ReadingsNum...

Gruß, Joachim
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: Gunther am 12 Januar 2022, 23:32:08
Danke Dir!
Schaue ich mir die Tage an.
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: frank am 12 Januar 2022, 23:44:12
die fehlermeldung bezieht sich wohl aber auf die anführungszeichen.
beim "verschachteln" von anführungszeichen musst du unterschiedliche verwenden.
"set Pushover msg title='Heizungsstatus'......"
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: MadMax-FHEM am 12 Januar 2022, 23:45:39
Zitat von: frank am 12 Januar 2022, 23:44:12
die fehlermeldung bezieht sich wohl aber auf die anführungszeichen.
beim "verschachteln" von anführungszeichen musst du unterschiedliche verwenden.
"set Pushover msg title='Heizungsstatus'......"

Stimmt, das kommt noch dazu ;)

Die "Strichlein" waren wohl zu klein für mein Auge ;)

Gruß, Joachim
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: TomLee am 12 Januar 2022, 23:48:04
Zitat von: frank am 12 Januar 2022, 23:44:12
die fehlermeldung bezieht sich wohl aber auf die anführungszeichen.
beim "verschachteln" von anführungszeichen musst du unterschiedliche verwenden.
"set Pushover msg title='Heizungsstatus'......"

Seh ich genauso, wobei alle anderen Erläuterungen ja nicht falsch waren.

Hier eine Möglichkeit es auch mit weniger Klammern umzusetzen :

heizung_Status:1
{return fhem ("set Pushover msg title='Heizungsstatus' Die Heizung steht auf Tagbetrieb. device='IPhone8Hilke'") if ReadingsVal('pushover_heizungsstatus_hilke','state','false') eq 'ja';
return fhem ("set Pushover msg title='Heizungsstatus' Die Heizung steht auf Tagbetrieb. device='IPhone7GB'") if ReadingsVal('pushover_heizungsstatus_gunther','state','false') eq 'ja';}
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: Gunther am 13 Januar 2022, 07:37:17
Danke Euch!
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: Gunther am 13 Januar 2022, 23:23:20
Habe nun folgendes über die Kommandozeile in FHEM erfolgreich getestet:
{if (ReadingsVal('pushover_heizungsstatus_gunther','state','false') eq 'an') { fhem "set Pushover msg Die Heizung steht auf Tagbetrieb. title='Heizungsstatus' device='IPhone7GB' "}}
also wenn
pushover_heizungsstatus_gunther auf "an" steht, geht die Nachricht raus. bei "aus" nicht.
So soll es sein.

Aber: Im notify funktioniert das nicht. Wenn ich das Dummy auf 1 schalte, passiert leider nix.
So sieht DEV des notifys aus:
heizung_Status:1
{if (ReadingsVal('pushover_heizungsstatus_gunther','state','false') eq 'an') { fhem "set Pushover msg Die Heizung steht auf Tagbetrieb. title='Heizungsstatus' device='IPhone7GB' "}};;


Habe ich noch einen Denkfehler?
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: Jamo am 13 Januar 2022, 23:42:04
Eventuell hast Du event-on-change-reading gesetzt?
Hast Du im Eventmonitor geschaut, ob da auch ein event kommt, wenn Du heizung_Status:1 auf 1 schaltest.
Dort kannst Du auch direkt das notify erstellen, damit ist es dann immer richtig.
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: Gunther am 14 Januar 2022, 01:24:00
Danke für Deine Antwort!

Im Dummy ist kein event-in-change-reading gesetzt.
Event kommt. Wenn ich auf nötige anlegen gehe, steht dort dasselbe wie in meinem Notify (vorne).
Komisch
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: MadMax-FHEM am 14 Januar 2022, 07:42:11
Poste doch mal ein list vom notify und vom dumy.
Und Auszüge aus dem Eventmonitor...

Gruß, Joachim
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: Gunther am 14 Januar 2022, 16:09:38
Hier die lists

Internals:
   DEF        heizung_Status:1
{if (ReadingsVal('pushover_heizungsstatus_gunther','state','false') eq 'an') { fhem "set Pushover msg Die Heizung steht auf Tagbetrieb. title='Heizungsstatus' device='IPhone7GB' "}};;
   FUUID      5ce57bec-f33f-7b68-92f7-61af80f8f0bda645
   NAME       notify_heizungsstatus_pushover_1
   NOTIFYDEV  heizung_Status
   NR         3681
   NTFY_ORDER 50-notify_heizungsstatus_pushover_1
   REGEXP     heizung_Status:1
   STATE      2022-01-14 06:20:00
   TRIGGERTIME 1642137604.33378
   TYPE       notify
   READINGS:
     2022-01-13 23:18:03   state           active
     2022-01-14 06:20:00   triggeredByDev  heizung_Status
     2022-01-14 06:20:00   triggeredByEvent 1
Attributes:
   room       Logik,Logik_Heizung


Internals:
   CFGFN     
   FUUID      61df3f9e-f33f-7b68-b9c8-660b20ca8bd29e5c
   NAME       pushover_heizungsstatus_gunther
   NR         69429
   STATE      an
   TYPE       dummy
   READINGS:
     2022-01-13 23:17:16   state           an
Attributes:
   alias      Schalter: Aktivieren und Deaktivieren Pushnachricht Heizungsstatus gunther
   group      Status
   room       G_Dummydevices,Logik,Logik_Heizung
   setList    an aus
   webCmd     an:aus
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: MadMax-FHEM am 14 Januar 2022, 16:34:31
list heizung_Status wäre noch gut und eben Eventmonitor auch von heizung_Status ;)

dummy wäre nicht nötig gewesen (schadet aber auch nicht) , sorry...

Gruß, Joachim
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: TomLee am 14 Januar 2022, 16:47:25
Es sind die zwei Semikolon in der DEF des notify die da nix zu suchen haben.
Eins ginge, wenn man da unbedingt eines stehen haben will  ;D
Titel: Antw:bedingtes NOTIFY geht nicht
Beitrag von: Gunther am 14 Januar 2022, 23:14:31
Zitat von: MadMax-FHEM am 14 Januar 2022, 16:34:31
list heizung_Status wäre noch gut und eben Eventmonitor auch von heizung_Status ;)

Internals:
   FUUID      5ce57bec-f33f-7b68-be9b-126e2189c5658e4b
   NAME       heizung_Status
   NR         3665
   STATE      1
   TYPE       dummy
   READINGS:
     2022-01-14 06:20:00   state           1
Attributes:
   comment    1 = Tag / Anwesend
2 = Nacht / Schlafen
3 = Abwesend / Urlaub / Nottemperatur

   group      Status
   room       G_Dummydevices,Haus,Logik,Logik_Heizung
   setList    1 2 3
   sortby     01
   webCmd     1:2:3


Event Monitor:
2022-01-14 23:12:16 dummy heizung_Status 2
2022-01-14 23:12:22 dummy heizung_Status 1
2022-01-14 23:12:23 dummy heizung_Status 1


keine Reaktion im Event Monitor vom notify...