[Gelöst] Hilfe bei notify

Begonnen von dk3572, 28 Dezember 2020, 16:57:02

Vorheriges Thema - Nächstes Thema

dk3572

Hallo,

folgendes notify will nicht funktionieren:

CFGFN     
   DEF        (du_Heizungssteuerung_Bad:state:.*) {
    if ($EVTPART1 eq "on") {
    fhem("set Thermostat_Bad_Climate controlMode auto");;
}else {
    if ($EVTPART1 eq "off") {
    fhem("set Thermostat_Bad_Climate controlMode manual;;sleep 3;;set Thermostat_Bad_Climate desired-temp off");;
}
}
}
   FUUID      5fe9e7a2-f33f-cd72-a872-d9d206de91c76251
   NAME       n_Heizungssteuerung_Bad
   NOTIFYDEV  du_Heizungssteuerung_Bad
   NR         33742
   NTFY_ORDER 50-n_Heizungssteuerung_Bad
   REGEXP     (du_Heizungssteuerung_Bad:state:.*)
   STATE      active
   TRIGGERTIME 1609165957.89142
   TYPE       notify
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1609164706.07487
           VALUE      active
   READINGS:
     2020-12-28 16:39:23   state           active
Attributes:
   DbLogExclude .*


Es soll auf einen dummy mit on off reagieren.

Ist jemand so nett und hilft mir dabei?

Vielen Dank im Voraus und VG Dieter.

rudolfkoenig

Falls das Regexp nicht passt: (einen weiteren?) notify ueber Event-Monitor anlegen: "richtiges" Event abwarten, Zeile markieren, und Create... druecken.
Falls das Programm nicht passt: in FHEM log sollten Fehlermeldungen zu finden sein, nachdem ein Event eingetroffen ist.

Jamo

Am besten, wie Rudi gesagt, das event ausloesen (also den Dummy auf on und dann wieder auf off setzen),
und nebenbei den Eventmonitor laufen lassen, dann richtiges" Event abwarten, Zeile markieren, und Create... druecken.
Ansonsten: 'state' wird im event nieberückksichtigt, deswegen sollte das bei Dir so aussehen: du_Heizungssteuerung_Bad:(on|off)
- oder -
du_Heizungssteuerung_Bad:.*
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

dk3572

vielen Dank für eure Hilfe.

Event on off kommt an.

Wie von Jamo vorgeschlagen habe ich es auch bereits versucht.
Da erhalte ich diese Meldung:
2020.12.28 17:39:01.093 1: ERROR evaluating my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $NAME=   $evalSpecials->{'%NAME'};my $SELF=   $evalSpecials->{'%SELF'};my $TYPE=   $evalSpecials->{'%TYPE'};{
    if ($EVTPART1 eq "on") {
    fhem("set Thermostat_Bad_Climate controlMode auto");;
}else {
    if ($EVTPART1 eq "off") {
    fhem("set Thermostat_Bad_Climate controlMode manual;;sleep 3;;set Thermostat_Bad_Climate desired-temp off");;
}
}
}: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 2450101) line 2.
Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 2450101) line 5.

TomLee

Hallo,

Tipp: Ich schau mir in so einem Fall immer solange die im Wiki zu notify unter Syntax dargestellte Tabelle an bis ich selbst drauf komme, hilft (fast) immer.

Gruß

Thomas

dk3572

Zitat von: TomLee am 28 Dezember 2020, 18:12:06
Hallo,

Tipp: Ich schau mir in so einem Fall immer solange die im Wiki zu notify unter Syntax dargestellte Tabelle an bis ich selbst drauf komme, hilft (fast) immer.

Gruß

Thomas

ja, guter Tipp.
Leider mache ich das seit über 2 Stunden. Denn genau an das Beispiel habe ich mich gehalten.
Ich weiß aber nicht weiter und brauche einen noch besseren Tipp  ;)

TomLee

Am Beispiel von du_Heizungssteuerung_Bad:(on|off), siehst du EVTPART1 wenn du jetzt nochmal in die Tabelle schaust ?

dk3572

sorry, bekomme es nicht hin.

CFGFN     
   DEF        du_Heizungssteuerung_Bad:(on|off) {
    if ($EVTPART1 eq "on") {
    fhem('set Thermostat_Bad_Climate controlMode auto');
}else {
    if ($EVTPART1 eq "off") {
    fhem('set Thermostat_Bad_Climate controlMode manual;;sleep 3;;set Thermostat_Bad_Climate desired-temp off');
}
}
}
   FUUID      5fea065c-f33f-cd72-6cc8-421181268b43d0a8
   NAME       du_Heizungssteuerung_Bad_notify_1
   NR         37041
   NTFY_ORDER 50-du_Heizungssteuerung_Bad_notify_1
   REGEXP     du_Heizungssteuerung_Bad:(on|off)
   STATE      2020-12-28 18:54:52
   TRIGGERTIME 1609178094.06382
   TYPE       notify
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1609172572.00956
           VALUE      active
   READINGS:
     2020-12-28 18:54:45   state           active
Attributes:
   DbLogExclude .*


2020.12.28 18:54:54.064 1: ERROR evaluating my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $NAME=   $evalSpecials->{'%NAME'};my $SELF=   $evalSpecials->{'%SELF'};my $TYPE=   $evalSpecials->{'%TYPE'};{
    if ($EVTPART1 eq "on") {
    fhem('set Thermostat_Bad_Climate controlMode auto');
}else {
    if ($EVTPART1 eq "off") {
    fhem('set Thermostat_Bad_Climate controlMode manual;;sleep 3;;set Thermostat_Bad_Climate desired-temp off');
}
}
}: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 2461628) line 2.
Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 2461628) line 5.

TomLee

#8
Dann anders, mach ein anderes notify und mach nur Logausgaben:

erstmal :

du_Heizungssteuerung_Bad:(on|off) {Log3(gefunden, 3, "Das ist $EVENT ")}
dann

du_Heizungssteuerung_Bad:(on|off) {Log3(gefunden, 3, "Das ist $EVPART0")}

dann

du_Heizungssteuerung_Bad:(on|off) {Log3(gefunden, 3, "Das ist $EVPART1")}

dk3572

Zitat von: TomLee am 28 Dezember 2020, 19:06:32
Dann anders, mach ein anderes notify und mach nur Logausgaben:

erstmal :

du_Heizungssteuerung_Bad:(on|off) {Log3(gefunden, 3, "Das ist $EVENT ")}
dann

du_Heizungssteuerung_Bad:(on|off) {Log3(gefunden, 3, "Das ist $EVPART0")}

dann

du_Heizungssteuerung_Bad:(on|off) {Log3(gefunden, 3, "Das ist $EVPART1")}


ich bin wirklich dankbar für deine Mühe, aber so komme ich nicht weiter.
Ich benötige einfach nur Hilfe, keine Ratespielchen.
Gelesen und probiert habe ich jetzt über 3 Stunden. (Wiki, Forum, bereits vorhandenen notify)
Ich denke das zeigt deutlich das ich nicht auf fertige Lösungen erpicht bin.
Wenn also einer so nett wäre und mir genau beschreibt wie ich vorgehen muss?
Vielen Dank dafür.

Bareword "gefunden" not allowed while "strict subs" in use at (eval 2463942) line 1.

TomLee

Und ich bin kein Lehrer und weiß gerade nicht wie ich noch helfen könnte ohne die Lösung zu nennen.

dk3572

Zitat von: TomLee am 28 Dezember 2020, 19:26:16
Und ich bin kein Lehrer und weiß gerade nicht wie ich noch helfen könnte ohne die Lösung zu nennen.

und warum fällt es dir so schwer mir einfach die Lösung zu verraten?
Ich hätte wieder was gelernt und könnte weiter machen.

Jamo

Ich hatte nicht drauf geachtet, dass Du auf EVTPART1 abfragst, Du musst '$EVTPART1' einfach durch '$EVENT' ersetzen.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Otto123

Zitat von: dk3572 am 28 Dezember 2020, 19:28:52
und warum fällt es dir so schwer mir einfach die Lösung zu verraten?
Ich hätte wieder was gelernt und könnte weiter machen.
Es gibt einfach in deinem Fall keinen $EVTPART1 - und diese Möglichkeit zu erkennen hat nichts mit etwas verraten zu tun.
Ich war eigentlich ziemlich Stolz auf die Tabelle im Wiki, ich hatte gedacht daran versteht man den Zusammenhang.
Kannst Du mithelfen und verraten was daran unklar war?
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

TomLee

#14
Mein Gedanke mit den Logausgaben war dir aufzuzeigen was in den Variablen die im notify zur Verfügung stehen drin steht und du dann verstehst was zu den Meldungen

Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 2461628) line 2.
Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 2461628) line 5.


geführt hat.

Im Betreff steht du magst Hilfe und eben hast du noch mal betont das du auf keine fertige Lösung erpicht bist.

Was den besser ?
Ich oder jemand anderes sagt dir die Lösung und du hast weiterhin kein Verständnis zu $NAME $EVENT $EVTPART0 $EVTPART1 oder du versuchst das an Hand der Logausgaben nachzuvollziehen und wenn auch erstmal teilweise nimmst du was fürs nächste mal mit ?

Ich kann dich aber verstehen.

dk3572

ich verstehe es einfach nicht.

Jetzt sieht es so aus und funktioniert immer noch nicht:

   CFGFN     
   DEF        du_Heizungssteuerung_Bad:(on|off) {
    if ($EVENT eq "on") {
    fhem("set Thermostat_Bad_Climate controlMode auto");;
}else {
    if ($EVENT eq "off") {
    fhem("set Thermostat_Bad_Climate controlMode manual;;sleep 3;;set Thermostat_Bad_Climate desired-temp off");;
}
}
}
   FUUID      5fe9e7a2-f33f-cd72-a872-d9d206de91c76251
   NAME       n_Heizungssteuerung_Bad
   NR         33742
   NTFY_ORDER 50-n_Heizungssteuerung_Bad
   REGEXP     du_Heizungssteuerung_Bad:(on|off)
   STATE      2020-12-28 19:45:28
   TRIGGERTIME 1609181130.01583
   TYPE       notify
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1609164706.07487
           VALUE      active
   READINGS:
     2020-12-28 19:45:05   state           active
Attributes:
   DbLogExclude .*


Redet ihr von der Tabelle?

Beispiel Variablen Zuordnung zum Event

Otto123

#16
Zitat von: dk3572 am 28 Dezember 2020, 19:53:37
Redet ihr von der Tabelle?
Ja.

Zeigst Du mal den Event im Eventmonitor?
Werden die set Befehle aus dem notify geloggt? Stehen ja normal im FHEM Log ...
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

dk3572

Zitat von: Otto123 am 28 Dezember 2020, 20:00:22
Ja.

Zeigst Du mal den Event im Eventmonitor?
Werden die set Befehle aus dem notify geloggt? Stehen ja normal im FHEM Log ...

2020-12-28 20:02:05.342 dummy du_Heizungssteuerung_Bad on

Otto123

Damit sollte das notify triggern ;)

Wenn die Befehle nicht ausgeführt werden: Steht ein Fehler im Log oder wenigstens die Befehle?
Die Thermos regieren doch nicht so schnell?

Zu Tabelle:
$NAME = du_Heizungssteuerung_Bad
$EVENT = on
$EVTPART0 = on

mehr gibts nicht.

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

dk3572

so, und jetzt funktioniert es.
Es waren die doppelten ;;

Danke für eure Hilfe.

TomLee

Zitat von: dk3572 am 28 Dezember 2020, 19:18:24
Bareword "gefunden" not allowed while "strict subs" in use at (eval 2463942) line 1.

Sry, kopierfehler und jetzt erst bemerkt/verstanden, wenns noch interessiert:

du_Heizungssteuerung_Bad:(on|off) {Log3(undef, 3, "Das ist $NAME $EVENT $EVPART0")}
dann

du_Heizungssteuerung_Bad:(on|off) {Log3(undef, 3, "Das ist $EVTPART1")}

dk3572

ja, es interessiert noch, bin ja lernwillig  ;)

Hatte mich wohl mit dem $EVTPART1 etwas verrannt.

Danke noch mal.

TomLee

#22
Zitat von: dk3572 am 28 Dezember 2020, 21:39:23
ja, es interessiert noch, bin ja lernwillig  ;)

Da nehm ich dich mal beim Wort !

Ich hab mir das nicht ausgedacht !

{ notifyRegexpCheck('du_Heizungssteuerung_Bad:(on|off)') }
Ergebnis:
du_Heizungssteuerung_Bad:(on: device du_Heizungssteuerung_Bad (OK)
off): unknown (ignored)


{ notifyRegexpCheck('du_Heizungssteuerung_Bad:o[nf]+') }
Ergebnis:
du_Heizungssteuerung_Bad:o[nf]+: device du_Heizungssteuerung_Bad (OK)

dk3572

Zitat von: TomLee am 28 Dezember 2020, 22:37:59
Da nehm ich dich mal beim Wort !

Ich hab mir das nicht ausgedacht !

{ notifyRegexpCheck('du_Heizungssteuerung_Bad:(on|off)') }
Ergebnis:
du_Heizungssteuerung_Bad:(on: device du_Heizungssteuerung_Bad (OK)
off): unknown (ignored)


{ notifyRegexpCheck('du_Heizungssteuerung_Bad:o[nf]+') }
Ergebnis:
du_Heizungssteuerung_Bad:o[nf]+: device du_Heizungssteuerung_Bad (OK)

Ok, funktioniert hat es aber trotzdem  ???

Jetzt sieht es so aus und funktioniert ebenfalls:

   CFGFN     
   DEF        du_Heizungssteuerung.*:o[nf]+ {
    if ($EVENT eq "on") {
       if ($NAME eq "du_Heizungssteuerung_Bad") {
    fhem('set Thermostat_Bad_Climate controlMode auto');
       }
       if ($NAME eq "du_Heizungssteuerung_Wohnzimmer") {
    fhem('set PWMR_Wohnzimmer frostProtect off');
       }
}else {
    if ($EVENT eq "off") {
       if ($NAME eq "du_Heizungssteuerung_Bad") {
    fhem('set Thermostat_Bad_Climate controlMode manual;sleep 3;set Thermostat_Bad_Climate desired-temp off');
       }
       if ($NAME eq "du_Heizungssteuerung_Wohnzimmer") {
    fhem('set PWMR_Wohnzimmer frostProtect on');
       }
}
}
}
   FUUID      5feace4c-f33f-cd72-62c9-dc5c034ba1d181c4
   NAME       n_Heizungssteuerung
   NOTIFYDEV  du_Heizungssteuerung.*
   NR         57211
   NTFY_ORDER 50-n_Heizungssteuerung
   REGEXP     du_Heizungssteuerung.*:o[nf]+
   STATE      2020-12-29 08:14:18
   TRIGGERTIME 1609226060.3806
   TYPE       notify
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1609223756.86652
           VALUE      active
   READINGS:
     2020-12-29 08:09:20   state           active
Attributes:
   DbLogExclude .*