FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: is2late am 29 Mai 2024, 16:42:22

Titel: (GELÖST) Syntax geändert??
Beitrag von: is2late am 29 Mai 2024, 16:42:22
Hallo,
kann es sein, dass sich die Syntax geändert hat?
Folgendes DIOF hat klaglos lange funktioniert, seit einiger Zeit gibt es jedoch eine Fehlermeldung:
defmod Nachtruhe DOIF ([23:00-06:00]) (set Nachtruhe_Schalter on) DOELSE ((set Nachtruhe_Schalter off),set n_Briefkasten,  n_FunksteckdoseWasch_on, n_Funksteckdose_Trockner_on, n_Froster_Temperatur_on, n_Heizung_aus, n_Abfallmorgen, n_Robi_warning, n_RobiZurStation, n_GartenpumpeAN, n_GartenpumpeAUS active))Ziel ist ist das Unterdrücken von Meldungen zur Nachtruhezeit.

Fehlermeldungen:
setstate Nachtruhe 2024-05-29 06:00:00 error set n_Briefkasten: no set argument specified   n_FunksteckdoseWasch_on: Unknown command n_FunksteckdoseWasch_on, try help.  n_Funksteckdose_Trockner_on: Unknown command n_Funksteckdose_Trockner_on, try help.  n_Froster_Temperatur_on: Unknown command n_Froster_Temperatur_on, try help.  n_Heizung_aus: Unknown command n_Heizung_aus, try help.  n_Abfallmorgen: Unknown command n_Abfallmorgen, try help.  n_Robi_warning: Unknown command n_Robi_warning, try help.  n_RobiZurStation: Unknown command n_RobiZurStation, try help.  n_GartenpumpeAN: Unknown command n_GartenpumpeAN, try help.  n_GartenpumpeAUS active: Unknown command n_GartenpumpeAUS, try help.

Ein Syntaxfehler in meinem Code würde mich ja nicht überraschen. Allerdings hat der Code ja lange funktioniert...

Weiß jemand Rat? Ich könnte vermutlich umständlicher schreiben, wie set n_Briefkasten active; set n_FunksteckdoseWasch_on active etc aber das muss ja auch anders gehen.

Vielen Dank,
Ingo
Titel: Aw: Syntax geändert??
Beitrag von: betateilchen am 29 Mai 2024, 16:49:28
nur ein Bauchgefühl: hast Du mal versucht, die Leerzeichen hinter den Kommas in der device-Liste wegzulassen?
Titel: Aw: Syntax geändert??
Beitrag von: is2late am 29 Mai 2024, 16:54:00
Vielen Dank, probiere ich mal.

-> Hm, Fehlermeldung bleibt leider ;-(
Titel: Aw: Syntax geändert??
Beitrag von: tomcat.x am 29 Mai 2024, 17:44:35
Also in der Kommandozeile ist es genauso, wie betateilchen schreibt. Da funktioniert es nur ohne Blank. Und die einzelnen Befehle innerhalb von DOELSE sind bei mir mit Semikolon getrennt. Ich bin da aber auch bei jeden neuen DOIF wieder am nachschauen  ;)

ALso vielleicht so (ungetestet):
defmod Nachtruhe DOIF ([23:00-06:00]) (set Nachtruhe_Schalter on) DOELSE (set Nachtruhe_Schalter off; set n_Briefkasten,n_FunksteckdoseWasch_on,n_Funksteckdose_Trockner_on,n_Froster_Temperatur_on,n_Heizung_aus,n_Abfallmorgen,n_Robi_warning,n_RobiZurStation,n_GartenpumpeAN,n_GartenpumpeAUS active))
Viele Grüße
Thomas
Titel: Aw: Syntax geändert??
Beitrag von: is2late am 29 Mai 2024, 17:58:40
Vielen Dank, Thomas!

Habe zwischenzeitlich herumprobiert und Folgendes (Umständliches) gefunden, das funktioniert:

defmod Nachtruhe DOIF ([23:00-06:00]) (set Nachtruhe_Schalter on) DOELSE ((set Nachtruhe_Schalter off),set n_Briefkasten active,set n_FunksteckdoseWasch_on active,set n_Funksteckdose_Trockner_on active,set n_Froster_Temperatur_on active,set n_Heizung_aus active,set n_Abfallmorgen active,set n_Robi_warning active,set n_RobiZurStation active,set n_GartenpumpeAN active,set n_GartenpumpeAUS active)
Nochmals danke!

Titel: Aw: (GELÖST) Syntax geändert??
Beitrag von: Otto123 am 29 Mai 2024, 18:28:38
Guten Abend,
Zitat von: is2late am 29 Mai 2024, 16:42:22Allerdings hat der Code ja lange funktioniert...
Kannst Du behaupten, ich glaube es nicht. ;D in #1 ist zumal mindestens auch eine Klammer zuviel!
-> völlig falsche Klammersetzung! So sollte es aussehen (und das schon "immer")
(set Nachtruhe_Schalter off,(set n_Briefkasten,n_FunksteckdoseWasch_on,n_Funksteckdose_Trockner_on,n_Froster_Temperatur_on,n_Heizung_aus,n_Abfallmorgen,n_Robi_warning,n_RobiZurStation,n_GartenpumpeAN,n_GartenpumpeAUS active))steht auch schon "immer" so in der commandref ;) https://fhem.de/commandref_modular_DE.html#DOIF_Angaben_im_Ausfuehrungsteil

Leerzeichen zur Sicherheit weggelassen. ;)

Gruß Otto
Titel: Aw: (GELÖST) Syntax geändert??
Beitrag von: is2late am 30 Mai 2024, 11:18:33
Hallo ungläubiger Otto ;-)

vielen Dank; ich habe natürlich auf Deinen Code umgestellt.
Ich möchte dennoch schwören, dass der Code #1 jahrelang funktioniert hat. Andernfalls hätte es ja entweder Meldungen zur Nachtzeit (wenn die Deaktivierung der Notifys nicht erfolgt wäre) oder keine Meldungen tagsüber (wenn die Reaktivierung unterblieben wäre) gegeben. Hat aber alles ordnungsgemäß funktioniert. Gab über die Jahre auch keine Fehlermeldungen im Logfile, bis vor einigen Wochen. Mysteriös!

Na egal, wieder etwas dazugelernt. Dafür vielen Dank!

LG Ingo
Titel: Aw: (GELÖST) Syntax geändert??
Beitrag von: tomcat.x am 30 Mai 2024, 11:42:57
Ja, wer lesen kann ...  Das Beispiel in der commandref passt ja fast 1:1.

Semikolon scheint aber auch zu funktionieren, zumindest wenn ohne weitere Klammern einfach mehrere Befehle nacheinander ausgeführt werden sollen. Habe damit bis jetzt keine Probleme gehabt, aber kommt vielleicht noch, also direkt alles auf Komma umgestellt.
Titel: Aw: (GELÖST) Syntax geändert??
Beitrag von: Damian am 30 Mai 2024, 12:27:37
Zitat von: is2late am 30 Mai 2024, 11:18:33Ich möchte dennoch schwören, dass der Code #1 jahrelang funktioniert hat. Andernfalls hätte es ja entweder Meldungen zur Nachtzeit (wenn die Deaktivierung der Notifys nicht erfolgt wäre) oder keine Meldungen tagsüber (wenn die Reaktivierung unterblieben wäre) gegeben. Hat aber alles ordnungsgemäß funktioniert. Gab über die Jahre auch keine Fehlermeldungen im Logfile, bis vor einigen Wochen. Mysteriös!

Naja, ich möchte schwören, dass du etwas geändert haben muss ;) Denn die Syntax für Komma im DOIF wurde seit ca. einem Jahrzehnt nicht geändert :)
Titel: Aw: (GELÖST) Syntax geändert??
Beitrag von: Otto123 am 30 Mai 2024, 16:20:30
Zitat von: is2late am 30 Mai 2024, 11:18:33Ich möchte dennoch schwören,
Allein die zwei Kommas auf und drei wieder zu - müssten einen Fehler ergeben haben.
Zitat((set Nachtruhe_Schalter off),set n_Briefkasten,  n_FunksteckdoseWasch_on, ... active))
Spekulation:
Oder dieser Fehler wurde bisher nicht bemerkt und damit war der gesamte Ausdruck doppelt geklammert? Hat Damian die Syntaxprüfung geschärft?