FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: netwalk am 19 April 2017, 12:29:36

Titel: Fehler in der Definition nach Speichern
Beitrag von: netwalk am 19 April 2017, 12:29:36
Hallo,

ich habe ein seltsames Phänomen. Meine Definition für eine Benachrichtigung bei leeren Batterien lautet wie folgt:

([18:00-20:00] and [":battery: low"]) (set Pushover1 msg title="Batterie" message="<b>$DEVICE:</b> Batterie prüfen!" device="M_iPhone,M_iPad" sound=[dm.Pushover.sound:bat])

Das funktioniert auch eigentlich problemlos.
Ändere ich aber irgendetwas in der Definition, z.B. die Zeit:

([17:00-19:00] and [":battery: low"]) (set Pushover1 msg title="Batterie" message="<b>$DEVICE:</b> Batterie prüfen!" device="M_iPhone,M_iPad" sound=[dm.Pushover.sound:bat])

wird das
... $DEV ...
im Ausführungsteil ersetzt durch einen Device-Namen (vermutlich das letzte meldende Gerät), also z.B.:

([18:00-20:00] and [":battery: low"]) (set Pushover1 msg title="Batterie" message="<b>ths.ug.KellerschachtICE:</b> Batterie prüfen!" device="M_iPhone,M_iPad" sound=[dm.Pushover.sound:bat])

Eine Änderung in der Oberfläche führt zu keinem Ergebnis, ich muss manuell in der fhem.cfg editieren, damit dort wieder

... $DEVICE ...

steht.

FHEM ist auf dem Stand vom 18.04.2017.
Ich bin ratlos, was kann das sein?
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 19 April 2017, 12:41:26
Haha, Das Thema hatte ich gestern mit einem Notify. Hast Du auch am Ende des Devicenamens ein ICE stehen?
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 19 April 2017, 12:46:30
Bitte schön. Mal ein Querverweis

https://forum.fhem.de/index.php/topic,70732.0.html
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: netwalk am 19 April 2017, 14:32:22
@CoolTux

Hmhh,

...$NAME...

statt

...$DEVICE...

funktioniert bei PUSHOVER leider nicht.

Ich habe mir Deinen Thread und die Commandref bzgl. der Ersetzung von $DEV bei "set" durchgelesen.
Verstehe ich es richtig, dass also nur beim Speichern die Auflösung stattfindet? Bei der Ausführung des DOIF und des damit ausgelösten PUSHOVER ist die erhaltene Message völlig korrekt, es wird kein "ICE" angehängt.

Bedeutet dies, dass das PUSHOVER-Modul entsprechend modifiziert werden müsste, damit es konform mit der geforderten Syntax bei "set" ist?
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 19 April 2017, 14:50:19
Ich habe gerade noch mal geschaut. Kuck mal das hier hast du im ersten Thread geschrieben.

[18:00-20:00] and [":battery: low"]) (set Pushover1 msg title="Batterie" message="<b>ths.ug.KellerschachtICE:</b> Batterie prüfen!" device="M_iPhone,M_iPad" sound=[dm.Pushover.sound:bat])


Und genau das meine ich.
ths.ug.KellerschachtICE

hinten wurde ein ICE rangehangen, Es wird also bis $DEV von $DEVICE aufgelöst und dann einfach das noch fehlende ICE von DEVICE am aufgelösten teil rangehangen.
Es liegt nicht an Pushover. Es schein ein allgemeines Problem zu sein. Es scheint auch nicht an dblog zu hängen, da Du ja anscheinend fhem.conf verwendest.

Wie gesagt das $DEVICE hat nichts mit Pushover zu tun, in Deinem Fall hat es was mit DOIF zu tun. Aber ich glaube mich zu erinnern das es bei DOIF nicht $DEVICE sondern $DEVICES heißen muss, oder?
Ich schaue mal eben
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 19 April 2017, 14:52:16
Ok, es war doch DEVICE.

Ich habe da auch noch keine Erklärung für.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: netwalk am 19 April 2017, 15:06:03
Seltsam.

Dann nehme ich anfallende Änderungen betreffender DOIFs im Code statt im Interface vor, bis das Problem gelöst ist.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: rudolfkoenig am 19 April 2017, 17:14:53
Ich habe ein DOIF angelegt, die Definition in der FHEMWEB Detailansicht durch die hier vorher erwaehnte ersetzt, gespeichert, FHEM neu gestartet: $DEVICE steht noch immer da.

@netwalk: kannst du bitte eine Schritt-fuer-Schritt Anleitung fuers Nachstellen beschreiben?
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: netwalk am 19 April 2017, 17:40:53
Also, es existiert ein di.alert.bat.all mit folgender DEF:

([18:00-20:00] and [":battery: low"]) (set Pushover1 msg title="Batterie" message="<b>$DEVICE:</b> Batterie prüfen!" device="M_iPhone,M_iPad" sound=[dm.Pushover.sound:bat])

Im Frontend ändere ich die Zeiten:

([17:00-19:00] and [":battery: low"]) (set Pushover1 msg title="Batterie" message="<b>$DEVICE:</b> Batterie prüfen!" device="M_iPhone,M_iPad" sound=[dm.Pushover.sound:bat])

Mit dem Klick auf "Modify" wird der geänderte Code auch korrekt angezeigt.
Klicke ich nun noch einmal auf das di.alert.bat.all um die Seite erneut zu laden, wird im Code bereits das "$DEV" mit einem entsprechendem Gerätenamen ersetzt, z.B.:

([17:00-19:00] and [":battery: low"]) (set Pushover1 msg title="Batterie" message="<b>ths.au.Aussen.3ICE:</b> Batterie prüfen!" device="M_iPhone,M_iPad" sound=[dm.Pushover.sound:bat])

Dies passiert auch, wenn ich direkt nach der Änderung ("Modify"), ohne erneuten Aufruf der Seite, die Konfig speichere.

Ich hoffe, das klingt einigermaßen verständlich.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: rudolfkoenig am 19 April 2017, 17:59:02
Verstaendlich schon, fuehrt bloss bei mir nicht zu dem Problem.

Kannst du bitte versuchen das Problem mit einem leeren oder wahlweise mit der demo config nachzustellen? Ich habe es mit beiden Varianten probiert. Ich vermute ihr verwendet irgendein Modul/Plugin/etc, was ich nicht.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 19 April 2017, 18:08:08
Codemirror?!
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: netwalk am 19 April 2017, 18:36:07
Codemirror nutze ich auch...
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 19 April 2017, 18:37:33
Ich komme heute Abend an mein Testsystem. Dann schaue ich mal.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: rudolfkoenig am 19 April 2017, 18:42:47
fhem.cfg.demo ist mit CodeMirror, hat aber bei mir funktioniert
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: netwalk am 19 April 2017, 19:37:22
Ich habe jetzt den Fall auf einem anderen System getestet. Es ist noch relativ minimalistisch (nur Fritzbox und LaCrosse, kein Codemirror) und soll bei Gelegenheit mein jetziges Produktivsystem ablösen.

Mit dem Stand vom 14.03.2017 funktioniert das Erstellen, Modifizieren und Speichern problemlos, soll heißen, die Definition mit $DEVICE bleibt erhalten.
Nach dem Update von heute und einem erneuten Modify, ändert sich $DEVICE wieder in einen Gerätenamen mit anhängendem ICE.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 19 April 2017, 20:08:05
Ich habe auch mal etwas getestet. Mein Secondärsystem mit Codemirror und ConfigDb sagt mir beim erstellen den Notifys genau das was man erwartet. $DEVICE ist global und nicht definiert. Meckert also rum.
Mein Testsystem mit Codemirror und fhem.cfg macht genau das selbe. Testsystem und Primärsystem sind aktuell von Heute, Secondärsystem ist von Anfang letzter Woche.

Bedeutet also das lediglich mein Primärsystem die Auffälligkeit hat. Unterschiede gibt es natürlich eine Menge. Also was Module an geht.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: pte am 20 April 2017, 17:03:11
Ich kann diesen Effekt bestätigen. Er tritt aber nur sporadisch bei mir auf. Ich habe aber noch kein System erkannt, wann dies passiert.
Gestern hatte ich den Effekt mit Google Chrome, dann auf Mozilla gewechselt -> der Effekt war weg. Kurze Zeit später dann auch in Mozilla. Später lief es dann wieder und ich habe es erstmal unter "die Außerirdischen" abgetan.
Bin jetzt unterwegs, aber schaue heute Abend noch mal.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: pte am 20 April 2017, 19:51:33
Kann es heute wieder nachvollziehen.
Bei mir tritt es beim Editieren der Definition einer Readingsgroup auf, wo ich $DEVICE benutze.
Nach modify RG_... ist alles noch ok. Seite refreshen und alle $DEV sind durch einen scheinbar zufälligen Event ersetzt.
Voraussetzung scheint aber, dass während das Codemirrorfenster geöffnet ist, ein Event auftritt. Dieser Gerätename wird dann auch für $DEV ersetzt.

sieht mir ähnlich aus wie: https://forum.fhem.de/index.php/topic,70731.0.html (https://forum.fhem.de/index.php/topic,70731.0.html), wenn auch anderer Kontext.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: rudolfkoenig am 20 April 2017, 20:51:00
ZitatVoraussetzung scheint aber, dass während das Codemirrorfenster geöffnet ist, ein Event auftritt.
Ich glaube, das war der entscheidende Hinweis, jedenfalls der Teil mit "Event auftritt" nicht der mit Codemirror.
Ist wohl ein Bug in ReplaceSetMagic bzw. ein Nebeneffekt globaler Variablen.
Habs bei mir gefixt, und eingecheckt.
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: CoolTux am 20 April 2017, 20:52:40
@pte
Vielen Dank für Dein intensives testen.
Rudi Danke für den schnellen fix.

Euch allen einen entspannten Abend


Grüße
Titel: Antw:Fehler in der Definition nach Speichern
Beitrag von: netwalk am 21 April 2017, 10:57:22
Funktioniert wieder.
Vielen Dank!