Schaltaktor HM-LC-SW1-PL Event aus dem Eventmonitor mit notify weiterberarbeiten

Begonnen von cocojambo, 20 November 2022, 14:14:14

Vorheriges Thema - Nächstes Thema

cocojambo

Ich habe bei mir die o.g. HM Steckdose im Einsatz. Sie wird bei mir mit  verschiedenen "on-for-timer" und einem "press long self01" aus eventMap geschaltet. leider lassen sich die verschiedenen Timerlängen nicht in den Readings auslesen um sie weiter zu verwenden. Im Reading steht immer nur timedOn, running, on und off.
Aber beim Auslösen der verschiedenen Timer stehen allerdings diese im Eventmonitor.

2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW commState: CMDs_pending
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW set_10min           <=======
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW commState: CMDs_processing...
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW trigLast: fhem:02
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW trigLast: fhem:02
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW commState: CMDs_done
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW deviceMsg: on (to VCCU1)
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW level: 100
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW pct: 100
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW on
2022-11-20 14:01:57 CUL_HM Anlage_Kueche_SW timedOn: running


Aber wie kann ich dieses Event  "CUL_HM Anlage_Kueche_SW set_10min" auslesen um es z.b. mit notify weiterberarbeiten zu können?
Bei wiki und auch im Forum habe ich nix dazu gefunden, aber ich muß auch sagen, das ich garnicht genau definieren kann wie oder wonach ich suchen soll.

Grüße aus Köln
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

MadMax-FHEM

Zitat von: cocojambo am 20 November 2022, 14:14:14
Aber wie kann ich dieses Event  "CUL_HM Anlage_Kueche_SW set_10min" auslesen um es z.b. mit notify weiterberarbeiten zu können?
Bei wiki und auch im Forum habe ich nix dazu gefunden, aber ich muß auch sagen, das ich garnicht genau definieren kann wie oder wonach ich suchen soll.

Das halte ich für ein Gerücht.

Ganz einfach (nachdem du ja eh schon den Eventmonitor offen hast): vom Eventmonitor anlegen lassen
https://wiki.fhem.de/wiki/Event_monitor
https://wiki.fhem.de/wiki/Event_monitor#Vorgehensweise_beim_Anlegen_eines_Ger.C3.A4tes

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

cocojambo

@ MadMax-FHEM

Hallo Joachim,

das kannst du ruhig für ein Gerücht halten, aber ich sitze an diesem Problem schon wirklich über 3 STD und habe das ganze Internet durchgraben.
Muß Dir aber eingestehen, das ich nicht nach Wiki Event Monitor gesucht habe, sondern nach Begriffen wie Readings, notify, Event loggen, $Event, usw.
Ich schreibe wirklich erst ins Board wenn ich nicht mehr weiter weiß.

Ich bin aber froh, das du mir weiterhelfen konntest. Das werde nacher sofort ausprobieren. (bin noch unterwegs) und mich melden.

Gruß
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

cocojambo

Wie beschrieben über den EventMonitor ein notify erzeugt (zum Test 1min).

define Anlage_Kueche_SW_notify notify Anlage_Kueche_SW:set_1min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 60'


Danke Joachim, das funktioniert, muß ich aber jetzt für jeden neuen Wert eines neus notify definieren, oder läßt sich da einfacher gestalten?

define Anlage_Kueche_SW_60_notify notify Anlage_Kueche_SW:set_1min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 60'
define Anlage_Kueche_SW_120_notify notify Anlage_Kueche_SW:set_2min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 120'


Ich habe verschiedene Möglichkeiten probiert:

define Anlage_Kueche_SW_notify notify Anlage_Kueche_SW:set_1min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 60';; :set_2min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 120'
oder
define Anlage_Kueche_SW_notify notify Anlage_Kueche_SW:set_1min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 60';; Anlage_Kueche_SW:set_2min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 120'


Auch mit "Gänsefüsschen"......geht nicht.
Wie müssen Abfagen im notify für mehrer Bedingungen aneinander gefügt werden?

Gruß
Nobbi

FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

MadMax-FHEM

Naja:

1. beim Anlegen eines notify wirst du ja gefragt, ob das für GENAU DIESEN WERT/Event sein soll oder "allgemein(er)" -> allgemein(er)

2. innerhalb eines Event-Handlers (-> notify) ein setreading auf das auslösende Device wird verhindert, da damit ja eine Loop erzeugt werden kann. Wenn man genau aufpasst und die Trigger-Regex genau genug wählt (-> allgemein[er] ist da dann eher schlecht[er] ;) ), dann kann man es mit einem fhem-sleep!! "entkoppeln" und trotzdem tun. Aber halt: ACHTUNG! -> Loop-Gefahr)...

3. es sind doch alles fhem-Befehle. Also du willst (musst ja) ein fhem sleep nehmen und danach sind ja nur set oder setreading. All das sind fhem Befehle -> da brauchst du gar keine Anführungszeichen. Strichpunkte zur Befehlstrennung: je nachdem wo/wie du eingibst 1 oder 2 Strichpunkte...

-----------------------------

Wenn du (später mal) das allgemeine(re) notify hast, dann mal anschauen was in $EVENT bzw. $EVTPART1 usw. steht. Kannst du dir ja per Log3 ausgeben lassen: Log3(undef, 1, "Hier Text und dann $EVENT") bzw. statt $EVENT halt $EVTPART1 usw. Weil du ja dann nicht mehr auf genau einen bestimmten Wert triggerst, sondern ja allgemein(er) und damit ja wissen musst wie der Wert war ($EVENT $EVTPART1 usw.).

EDIT: das hier funktioniert nicht:
Zitat
Anlage_Kueche_SW:set_2min 'sleep 0.1;; setReading Anlage_Kueche_SW Timer 120
Siehe commandref zu notify: define nName notify RegEx Ausführung / in der Ausführung kannst du nicht einfach weitere RegEx angeben...
D.h. du musst ein allgemeines/allgemeineres notify nehmen/erstellen:

define Anlage_Kueche_SW_notify notify Anlage_Kueche_SW:set_.*

Dann steht in $EVENT /$EVTPART eben sowas wie set_1min. D.h. da musst du dir halt dann überlegen was du damit tust. Evtl. sowas:

define Anlage_Kueche_SW_notify notify Anlage_Kueche_SW:set_.* {my $time=(split(/_/,$EVENT))[1];; fhem("sleep 0.1;; setreading Anlage_Kueche_SW Timer $time")}

Wie geschrieben bzgl. Strichpunkte schauen wo/wie du eingibst. Und ob nun $EVENT oder $EVTPART musst du auch mal schauen.
Dann stehen nicht die Sekunden in dem Reading sondern die Minutenangaben vom set_Xmin (also Xmin) aber somit wäre es "generisch"... Andernfalls musst du dir halt was überlegen wie du dann von Xmin auf Sekunden kommst usw.

EDIT: aber wieder ACHTUNG beim _sw Kanal kommen doch auch andere set_ also set_on set_off usw.! Wenn es nur um 1min oder 2min geht/ginge oder du generell nur min hast/willst, also set_Xmin, dann halt die RegEx entsprechend "bauen": https://regex101.com/ Für einstellige Minuten würde sowas gehen:

define Anlage_Kueche_SW_notify notify Anlage_Kueche_SW:set_.min { }



Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

cocojambo

Hallo Joachim,

Ich habe mich mal mit deinem Lösungsvorschlägen auseinander gesetzt. Erst mal vielen Dank, das du dich um mein Problem so ausführlich gekümmert hast.
Ich habe versucht mal deinen Ansatz zu verstehen. Was dort gemacht wird ist klar, aber was wo an welcher Stelle zu stehen hat, ist mir rätselhaft.
define Anlage_Kueche_SW_notify notify Anlage_Kueche_SW:set_.* {my $time=(split(/_/,$EVENT))[1];; fhem("sleep 0.1;; setreading Anlage_Kueche_SW Timer $time")}
So gut sind meine Kenntnisse nun wirklich nicht, zumindest was Perl angeht. Deshalb finde ich es echt gut, das es immer wieder User gibt, die einem hier echt weiterhelfen. Ich hätte das Ding nicht ans laufen bekommen.
Die Auswertung geht mit deinem Vorschlag einwandfrei. Ich habe dann nur noch mit Hilfe von stateFormat die Ein-und Ausschaltzeiten sowie die Verzögerung und die Icons Darstellung und Bedienung gelöst.
So funktioniert es jetzt.
attr Anlage_Kueche_SW devStateIcon on:rc_AUDIO@green:off off:rc_AUDIO@red:on timedOn:rc_AUDIO@yellow:off goes_off:rc_AUDIO@blue:off
attr Anlage_Kueche_SW eventMap /on-for-timer 60:60min/ /on-for-timer 180:180min/ /on-for-timer 20:off/

attr Anlage_Kueche_SW stateFormat { if((ReadingsVal($name,"Timer","") eq "60min") || ReadingsVal("$name","Timer","") eq "180min") {return "timedOn";;}\
elsif ((ReadingsVal("$name","timedOn","") eq "running") && ReadingsVal("$name","Timer","") eq "off") {return "goes_off"}\
else {return ReadingsVal($name,"state","");;;;}}\


Das war eine tolle Hilfe.
Gruß
Nobbi aus "Kölle am Rhing"
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000