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
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.
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.
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?
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
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
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'}}
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
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 (https://emsesp.org/MQTT/#published-data) ist immer alles auf englisch ?
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
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
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