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.
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.
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:.*
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.
Hallo,
Tipp: Ich schau mir in so einem Fall immer solange die im Wiki zu notify unter Syntax (https://wiki.fhem.de/wiki/Notify#Syntax) dargestellte Tabelle an bis ich selbst drauf komme, hilft (fast) immer.
Gruß
Thomas
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 (https://wiki.fhem.de/wiki/Notify#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 ;)
Am Beispiel von du_Heizungssteuerung_Bad:(on|off), siehst du EVTPART1 wenn du jetzt nochmal in die Tabelle schaust ?
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.
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")}
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.
Und ich bin kein Lehrer und weiß gerade nicht wie ich noch helfen könnte ohne die Lösung zu nennen.
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.
Ich hatte nicht drauf geachtet, dass Du auf EVTPART1 abfragst, Du musst '$EVTPART1' einfach durch '$EVENT' ersetzen.
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?
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.
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
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 ...
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
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.
so, und jetzt funktioniert es.
Es waren die doppelten ;;
Danke für eure Hilfe.
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")}
ja, es interessiert noch, bin ja lernwillig ;)
Hatte mich wohl mit dem $EVTPART1 etwas verrannt.
Danke noch mal.
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)
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 .*