Logfile Eintrag : Unknown argument aus, choose one of ON OFF TRIGGER

Begonnen von eckhard scholz, 23 Oktober 2024, 17:36:42

Vorheriges Thema - Nächstes Thema

eckhard scholz

Hallo in die Fhem Runde,

ich hab wieder mal ein Problem, ich denke mit dem angewendeten Syntax der Aktionen.
Wenn ich das richtig verstehe liefert das Signal "Ww3Way" die Signalzustände an/aus aber das Notify "n_Ww3Way" will on/off haben.

define n_Ww3Way notify MQTT2_ems_esp:ww3wayvalve:.* set Ww3Way $EVTPART1;; set db7317 $EVTPART1

Flogende Fehlermeldung tritt bei dabei auf:
n_Ww3Way return value: Unknown argument aus, choose one of  ON OFF TRIGGER
Im Forum habe ich nur ein ähnliches Thema gefunden, da geht es aber nur um einen Zustand (aus), ich muß beide Zustände auswerten ($EVTPART1).
Das Notify habe ich mit dem EventMonitor von FHEM automatisch anlege lassen, musste es aber wie angezeit abändern.
Interresannt ist allerdings, dass die beiden set´s funktionieren, trotz der Fehlermeldung.
Für einen Tip oder Link wäre ich dankbar.

Gruß
Eckhard

F!B,RPi-Fhem,RaspberryMatic,Cuno,Cul,S7-300,LOGO,HMIP,HM,FS20,

betateilchen

Dem notify ist es pupsegal, ob Du "on" "off" "an" "aus" oder "Donnerstag" schickst.
Mindestens einer der zu schaltenden Aktoren ist es, der explizit 'on' oder 'off' haben möchte.

Du kannst das vermutlich am einfachsten über eine eventMap lösen, in der Du an/aus auf on/off mappst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

eckhard scholz

Hallo Developer,

danke für die schnelle Hilfestellung.
Das mit dem EventMap hab ich bei dem notify schon ausprobiert, war wohl die falsche Stelle.
Ich habe es jetzt an den beiden Aktoren verwenden, leider auch kein Erfolg, die Fehlermeldung bleibt.

F!B,RPi-Fhem,RaspberryMatic,Cuno,Cul,S7-300,LOGO,HMIP,HM,FS20,

eckhard scholz

eventMap hat nix gebracht.

Das Eingangssignal "MQTT2_ems_esp:ww3wayvalve" bringt an/aus
Das Ausgangssignal "db7317" verlangt on/off

Gibt es noch andere Möglichkeiten?
F!B,RPi-Fhem,RaspberryMatic,Cuno,Cul,S7-300,LOGO,HMIP,HM,FS20,

betateilchen

Einfachste Alternative: mach zwei notify  8)

define n_Ww3Way_on  notify MQTT2_ems_esp:ww3wayvalve:.an  set Ww3Way,db7317 on
define n_Ww3Way_off notify MQTT2_ems_esp:ww3wayvalve:.aus set Ww3Way,db7317 off
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

eckhard scholz

#5
Ja, du hast warscheinlich recht.
Blöd ist nur, dass ich mehrere Signale von der Heizung abfrage, das wird dann eben bisschen viel.
Und ich könnte schwören, dass es schon mal Funktioniert hat. Ich habe das schon im vorigen Jahr mit der neuen Heizung in Betrieb genommen.

Aber so wie Du vorgeschlagen hast funktioniert alles.
Danke Developer
F!B,RPi-Fhem,RaspberryMatic,Cuno,Cul,S7-300,LOGO,HMIP,HM,FS20,

passibe

Wie liest du denn ww3wayvalve aus? Also was ist der zugehörige readingList-Eintrag in MQTT2_ems_esp?
Du könntest das da direkt schon mappen, sodass du direkt on/off im Reading hast.

Also irgendwie in der readingList (< ww3wayvalve_topic > natürlich ersetzen):
$DEVICETOPIC/<ww3wayvalve_topic>:.* {$EVENT eq "an" ? {ww3wayvalve => 'on'} : {ww3wayvalve => 'off'}}

eckhard scholz

#7
Hallo passible,

wie meinst du das, wie ich das MQTT2_ems_esp auslese?
Das Problem wird sein das ww:.*  mehrere Variablentypen hat.

Die readingList sieht so aus
boiler_data_ww:.* { json2nameValue($EVENT) }
ems_esp:ems-esp/boiler_data_ww:.* { json2nameValue($EVENT) }
ems_esp:ems-esp/boiler_data:.* { json2nameValue($EVENT) }
ems_esp:ems-esp/temperaturesensor_data:.* { json2nameValue($EVENT) }
ems_esp:ems-esp/heartbeat:.* { json2nameValue($EVENT) }
ems_esp:ems-esp/heating_active:.* heating_active
ems_esp:ems-esp/status:.* status
ems_esp:ems-esp/shower_active:.* shower_active
ems_esp:ems-esp/tapwater_active:.* tapwater_active
ems_esp:ems-esp/info:.* { json2nameValue($EVENT) }
ems_esp:ems-esp/wwseltemp:.* { json2nameValue($EVENT) }

In der Readings steht das:
ww3wayvalve                   aus   bzw.  an
wwactivated                     an     
wwchargeoptimization    aus
wwcharging                     an
wwcomfort1                     Eco
wwcurflow                        0.0
wwcurtemp                      50.5
wwdisinfecting                 aus
wwdisinfectiontemp         70
wwflowtempoffset            0
wwhyston                          -5
wwmaxtemp                      60

Gruß Eckhard
F!B,RPi-Fhem,RaspberryMatic,Cuno,Cul,S7-300,LOGO,HMIP,HM,FS20,

TomLee

Hallo,

so:
boiler_data_ww:.* { $EVENT =~ s/an/on/g;$EVENT =~ s/aus/off/g;json2nameValue($EVENT)}
edit:
besser:
boiler_data_ww:.* { $EVENT =~ s/\ban\b/on/g;$EVENT =~ s/\baus\b/off/g;json2nameValue($EVENT)}
Aber warum sind die Werte bei deinem Gerät auf deutsch ? In der Doku ist immer alles auf englisch ?

eckhard scholz

#9
OK, da wäre ich nicht drauf gekommen, dass so zu schreiben  :(
Wo bekommt man den mal eine Beschreibung der Steuerzeichen her (s/\ban\b/on/g)? Ein Paar kenne ich ja, aber bei weiten noch nicht alle.
Ich kann es leider erst nächste Woche testen.

ZitatAber warum sind die Werte bei deinem Gerät auf deutsch ? In der Doku ist immer alles auf englisch ?
Gute Frage ich hab das Modul so programmiert, es jetzt auch schon mehrere Monate so am laufen, gedanken über die Sprache habe ich mir damals garnicht gemacht. Ich muß da wieder mal rein schauen, vieleicht kann ich es auf englisch umstellen.

Danke erstmal Tester, für Deine Hilfe.
Ich werde berichten wie es gelaufen ist.

Gruß Eckhard
F!B,RPi-Fhem,RaspberryMatic,Cuno,Cul,S7-300,LOGO,HMIP,HM,FS20,

passibe

Siehe https://regex101.com
Unten rechts in der Ecke ist eine Erklärung (\b = "A word boundary")
Für die Regex Flags (g = global) muss man in der Eingabezeile auf das voreingestellte "gm" klicken, dann sieht man die Optionen.

Ansonsten spezifisch für Perl: https://perldoc.perl.org/perlre (Regex) und https://perldoc.perl.org/perlop#s/PATTERN/REPLACEMENT/msixpodualngcer (da wird der "substitution" Parameter erklärt, also das s/.../.../).

Ansonsten ist ChatGPT was regex angeht auch ganz gut

eckhard scholz

#11
Danke passible,

ich werd mir das dann mal "rein ziehen".
In Linux bin ich nur mittelmäßig unterwegs, es reicht halt gerade so.  8) 

An Developer,
so wie du es zuletzt beschrieben hast klappt es erstmal ... Danke

Erstmal allen einen schönen Sonntag noch  :)

Gruß
Eckhard

F!B,RPi-Fhem,RaspberryMatic,Cuno,Cul,S7-300,LOGO,HMIP,HM,FS20,