FHEM Forum

FHEM => Sonstiges => Thema gestartet von: hanske am 10 Dezember 2015, 08:58:54

Titel: Please define $NAME first
Beitrag von: hanske am 10 Dezember 2015, 08:58:54
Hallo,

seit dem Update von ca. Anfang November funktioniert bei einem meiner Notifys die Namensauflösung "$NAME" nur noch teilweise.

Bei einem set_desiredTemp von FHEM möchte ich bei meinen beiden Raumthermostaten verschiedene Readings setzen und ein burstXmit auslösen.

Dazu dieses Notify:

define n_rt_hm34_set notify rt_hm[3|4]:.*set_desired.* setreading $NAME_climate desired-temp-manu $EVTPART1; setreading $NAME_climate desired-temp-cent $EVTPART1; set $NAME_climate burstXmit;

Die Readings werden richtig gesetzt aber beim burstXmit wird "$NAME" nicht mehr aufgelöst:

2015.12.10 08:48:35 4: n_rt_hm34_set exec setreading $NAME_climate desired-temp-manu $EVTPART1; setreading $NAME_climate desired-temp-cent $EVTPART1; set $NAME_climate burstXmit;
2015.12.10 08:48:35 3: CUL_HM set rt_hm3 desired-temp 19.0
2015.12.10 08:48:35 3: n_rt_hm34_set return value: Please define $NAME_climate first


Wenn ich statt "set $NAME_climate burstXmit" direkt z.B. "set rt_hm3_climate burstXmit" ins notify schreibe geht es.

Funktionierte bis November immer auch so.
Hat sich mit dem 5.7er Release ein Bug eingeschlichen oder mache ich was falsch?
Titel: Antw:Please define $NAME first
Beitrag von: betateilchen am 10 Dezember 2015, 09:28:13
Da hat sich kein Bug eingeschlichen, sondern das Verhalten von fhem hat sich verändert. Das veränderte Verhalten ist dokumentiert und Du musst Deine Vorgehensweise entsprechend anpassen.

Was Du falsch gemacht hast: Zu wenig gelesen ;)
Titel: Antw:Please define $NAME first
Beitrag von: hanske am 10 Dezember 2015, 09:36:02
Kannst Du mir ein Stichwort geben, nachdem ich suchen kann?
Bisher habe ich nur %NAME -> $NAME gefunden. Aber das ist ja bei mir richtig.

Danke
Titel: Antw:Please define $NAME first
Beitrag von: betateilchen am 10 Dezember 2015, 09:44:09
Rudi hat da neulich eine Änderung eingebaut, damit solche speziellen Variablen innerhalb der Zeile immer zur Verfügung stehen. Den zugehörigen Thread müsste ich auch erst raussuchen.
Titel: Antw:Please define $NAME first
Beitrag von: hanske am 10 Dezember 2015, 09:57:44
Also wird es in einer der nächsten Versionen wieder gehen, oder muss/ kann ich was ändern?
Titel: Antw:Please define $NAME first
Beitrag von: rudolfkoenig am 10 Dezember 2015, 10:51:27
@hanske: eigentlich muesste dein Konstrukt funktionieren, und ich kann es in einem vereinfachten Setup nicht nachstellen:
fhem> defmod n notify n setreading $NAME EV1 $EVENT;; setreading $NAME EV1 $EVENT;; set $NAME $EVENT
fhem> trigger n hallo

erzeugt im Log bei verbose 5
Zitat2015.12.10 10:47:26.444 5: Cmd: >trigger n hallo<
2015.12.10 10:47:26.444 5: Triggering n (1 changes)
2015.12.10 10:47:26.444 5: Notify loop for n hallo
2015.12.10 10:47:26.445 5: Triggering n
2015.12.10 10:47:26.445 4: n exec setreading $NAME EV1 $EVENT; setreading $NAME EV1 $EVENT; set $NAME $EVENT
2015.12.10 10:47:26.445 5: Cmd: >setreading $NAME EV1 $EVENT<
2015.12.10 10:47:26.445 5: Triggering n (2 changes)
2015.12.10 10:47:26.445 5: Cmd: >setreading $NAME EV1 $EVENT<
2015.12.10 10:47:26.445 5: Triggering n (3 changes)
2015.12.10 10:47:26.446 5: Cmd: >set $NAME $EVENT<
2015.12.10 10:47:26.446 3: n return value: Unknown argument hallo, choose one of
was meiner Ansicht nach korrekt ist. Koenntest du bitte fuer mich einen vereinfachten Beispiel ohne Hardware konstruiren?
Titel: Antw:Please define $NAME first
Beitrag von: hanske am 10 Dezember 2015, 13:37:39
@rudolfkoenig

da es kein bekannter Bug ist, habe ich noch mal weiter rumprobiert und meinen Fehler gefunden.

Letztendlich lag es an dem Befehl vor dem burstXmit: "setreading $NAME_climate desired-temp-cent $EVTPART1;"
Das setzen des Readings hat noch ein DOIF getriggert, welches wieder dieses Notify getriggert hätte.
Da hat euer "Deadlockpreventer" die unabsichtliche Schleife aber wohl unterbrochen.
Die Fehlermeldung "Please define $NAME first" hatte mich nur nicht darauf gebracht nach so etwas zu suchen.

Jetzt geht es.
Danke