Hauptmenü

(GELÖST) Syntax geändert??

Begonnen von is2late, 29 Mai 2024, 16:42:22

Vorheriges Thema - Nächstes Thema

is2late

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
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

betateilchen

nur ein Bauchgefühl: hast Du mal versucht, die Leerzeichen hinter den Kommas in der device-Liste wegzulassen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

is2late

#2
Vielen Dank, probiere ich mal.

-> Hm, Fehlermeldung bleibt leider ;-(
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

tomcat.x

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
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

is2late

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!

Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Otto123

#5
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

is2late

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
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

tomcat.x

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.
FHEM: 6.1 auf Raspi 3, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 7.57), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

Damian

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 :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz