NEWS
Fenster auf Erkennung - Fehlermeldungen
-
Hallo,
ich habe mir ein paar Fensterkontakte angeschafft, die ich mit dem FritzGateway angemeldet habe.
Daraus habe ich mich nun versucht ein Script zu basteln, welches mir eine Telegram Messages schickt, wenn das Fenster offen (wahr) ist.Es sind 3 Fensterkontakte und ein Testbool zum ausprobieren unter 0_Userdata
Das die einzelnen Datenpunkte "nurAlert State" heissen, ist etwas blöd. Es sind aber tatsächlich verschiedene Fesnterkontakte.Die Sache mit dem Testbool funktioniert.
Leider nicht mit den Fensterkontakten.
Ich bekomme auch Warnmeldungen im LOG.
Für jeden Fesnterkontakt:*State "fritzdect.0.DECT_ZA4C1381D352B702A01.id" has no existing object, this might lead to an error in future versions*
Was läuft da schief?
Gruß Helix
-
@doppellhelix Mindestens eines deiner 'Alert state' Objekte existiert nicht (mehr), bzw. du hast ein Objekt ausgewählt auf das nicht getriggert werden kann.
Daher die Fehlermeldung.
Zeig doch mal den Objektbaum vonfritzdect.0.DECT__ZA4C1381D352B702A01
Nebenbei ist dieses Skript mal so richtig schlecht. Es gibt 3 Varianten die sinnvoll sind für eine Änderung:
V1:
V2:
V3:
V1 und V2 machen genau das was dein Skript machen soll
V3 liefert nur eine Meldung, 10 sekunden nachdem das erste Fenster geöffnet wurde. Dafür ist es am einfachsten zu erweitern. Einfach die beiden Listen am Anfang erweitern.
A.
Nachtrag: Ansonsten schau Dir den Adapter 'deviceReminder' an - der kann die Funktion liefern ohne das du Skripten musst.
-
@asgothian sagte in Fenster auf Erkennung - Fehlermeldungen:
schau Dir den Adapter 'deviceReminder' an - der kann die Funktion liefern
ich dachte bei diesem Adapter wird anhand von energy gesteuert?
-
Guten Morgen,
hier nochmal die Fehlermeldungen:
Dazu die Objektliste:
@asgothian said in Fenster auf Erkennung - Fehlermeldungen:
Nebenbei ist dieses Skript mal so richtig schlecht. Es gibt 3 Varianten die sinnvoll sind für eine Änderung:
Das glaube ich dir gerne
Mich würde nur interessieren, warum es so richtig schlecht ist.
Bislang konnte ich es nur mit der Boolschen Variablen testen. Das funktioniert.
Warum ist deine V1 soviel besser?
Für mich erscheint der Unterschied nicht soooo groß zu sein.V2 und V3 versteh ich noch nicht so ganz. Damit muss ich mich noch intensiver beschäftigen.
Und den DeviceReminder teste ich jetzt auch mal.Danke für deine Hilfe.
-
Auffällig ist das innerhalb des devices kein Datenpunkt
id
existiert. Das ist Ursache für die Fehlermeldung. Du solltest also den datenpunkt zur Auslösung neu auswählen.Zum Thema Skript ist nicht gut:
- du versuchst den Aufwand klein zu halten in dem du nur einen trigger definierst. Das ist erst einmal sinnvoll.
- im Trigger musst du dann aber Aufwand betreiben um heraus zu bekommen welche Fenster offen sind. Und das machst du mit ‘duplizierten’ Bausteinen. (Nebenbei auch mit Fehlern). Das konterkariert die Idee mit einem trigger zu arbeiten.
- copy-paste Fehler: Du startest timeout, timeout1, timeout2, timeout3, beendest aber immer ‘timeout’. Sprich selbst wenn die Fenster 2-4 schnell genug wieder geschlossen werden kommt die Meldung an telegram.
An dieser Stelle setzt V1 an. Wenn Du sowieso mit dupliziertem Code arbeitest dann kannst Du auch gleich mit 4 eigenständigen, in sich fast identischen triggern arbeiten. Dann kannst du wenigstens auf den Aufwand verzichten den du machst um die Fenster einzeln abzufragen.
Nebenbei gibt es noch einen systematischen Fehler: angenommen, das Fenster 1 wird 5 Sekunden nach dem Fenster 2 geöffnet und 3 Sekunden danach geschlossen.
Dann passiert folgendes:
- T=0: Fenster 1 wird geöffnet. Trigger wird aktiv.
timeout
wird gestartet. - T=5s: Fenster 2 wird geöffnet. trigger wird aktiv.
timeout
wird ein 2. Mal gestartet (weil Fenster 1 noch offen ist). Damit geht die Referenz auf den ersten Start verloren,timeout 2
wird gestartet - T=8s: Fenster 1 wird geschlossen. Trigger wird aktiv.
timeout
wird beendet (nur der als 2. Gestartete).timeout 2
wird gestartet (weil Fenster2 noch offen ist). Damit geht die Referenz auf den ersten Start vontimeout 2
verloren. - T=10s : Meldung an Telegramm - Fenster 1 ist auf. (Erster Start von
timeout
) - T=15s ; Meldung an Telegramm - Fenster 2 ist auf (Erster Start von
timeout
) - T=18s : Meldung an Telegramm - Fenster 2 ist auf (Zweiter Start von
timeout
)
Das dürfte nicht das sein was du willst. Natürlich lässt sich das auch in deinem Ansatz verhindern - erfordert aber zusätzlichen Aufwand, der sich letztendlich nicht rechnet.
Wie umgeht V2 dieses Problem - es nutzt die Tatsache das im trigger das auslösende Objekt sowie der auslösende Wert verfügbar sind um im nachfolgenden Code den korrekten Pfad auszuwählen, so dass eine Meldung immer nur für das ‘aktive’ Fenster bearbeitet wird.
A.
Nachtrag: beim lesen meiner ersten Antwort ist mir aufgefallen das meine Aussage nicht fair war. Dein Skript ist nicht ‘besonders’ schlecht. Ich hab mich da nicht gut ausgedrückt - dafür entschuldige ich mich,
- ja, das Skript hat Fehler
- ja, das geht besser
- nein, es ist nicht fair das einem Anfänger ‘vorzuwerfen’. Das wollte ich auch nicht.
-
Vielen Dank für deine Erklärung. Das hilft mir sehr.
Nur durch solche Erklärungen kann ich lernen wo mein Denkfehler ist bzw was ich falsch mache.Und bitte kein schlechtes Gewissen, wegen der Ausdrucksweise.
Passt schonNachtrag.
Ich habe das gesamte Script nun geleert.
Dennoch kommen die Warnmeldungen weiterhin.
Den Adapter habe ich auch mal neu gestartet, ohne Erfolg.Noch eine Idee, was ich machen kann?
-
@doppellhelix sagte in Fenster auf Erkennung - Fehlermeldungen:
Vielen Dank für deine Erklärung. Das hilft mir sehr.
Nur durch solche Erklärungen kann ich lernen wo mein Denkfehler ist bzw was ich falsch mache.Und bitte kein schlechtes Gewissen, wegen der Ausdrucksweise.
Passt schonNachtrag.
Ich habe das gesamte Script nun geleert.
Dennoch kommen die Warnmeldungen weiterhin.
Den Adapter habe ich auch mal neu gestartet, ohne Erfolg.Noch eine Idee, was ich machen kann?
wechsel doch mal bitte in die JS Ansicht (dieser Knopf)
Dann siehst du ob im Skript noch irgendwo ausserhalb des Viewports ein Baustein 'herumvagabundiert'
A.
-
Ja, da war noch was:
//JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0MlMkZ4bWwlM0U=
Hab jetzt das komplette Script gelöscht.
Immer noch die Warnmeldung.iobroker neu gestartet über systemctl
Dennoch kommt die Meldung weiterhin. -
@doppellhelix sagte in Fenster auf Erkennung - Fehlermeldungen:
//JTNDeG1sJTIweG...
Das ist das Blockly codiert ganz unten angehangen. Das darf man nicht löschen - soweit ich weis kann man das auch nicht.
Welche Fehlermeldung bleibt denn nun? -
-
@doppellhelix wurde dir doch schon erklärt. Den Datenpunkt "id" gibt es nicht, siehe dir die eigenen Bilder in Post #4 an. Du musst Anpassungen im Skript vornehmen.
Ro75.
-
wie ich schon sagte....ich habe das Script gelöscht.
Dennoch kommt die Fehlermeldung weiterhin.@doppellhelix said in Fenster auf Erkennung - Fehlermeldungen:
Hab jetzt das komplette Script gelöscht.
Immer noch die Warnmeldung.
iobroker neu gestartet über systemctl
Dennoch kommt die Meldung weiterhin. -
@doppellhelix Welche Version von FritzDect läuft bei dir?
Ro75.
-
@ro75
2.6.1 -
@doppellhelix das sind doch alles Zigbee-Geräte?
Ro75.
EDIT: Hast du noch andere Geräte, damit meine ich direkt DECT Geräte? Wie sieht dort die Datenstruktur aus?
Hattest du schon immer die 2.6.1 in Nutzung, oder erst gewechselt? -
Ich habe mehrere DECT Geräte.
Auch an Fesnterkontakte.
U.a. Kontakte der Telekom, die direkt per DECT-UKE an der FritzBox angeschlossen sind.
Auch einen original Fensterkontakt von AVM.
Datenstruktur ist die Selbe.Der Einzige Unterschied.
Diese FEnsterkontakte sind von einem Hersteller den AVM nicht in seiner Kompatibilitätsliste sind UND sie sind über den AVM SmartGateway angeschlossen und nicht direkt an der Fritte.Da könnte ich noch ein wenig mit herumprobieren.
-
@doppellhelix sagte in Fenster auf Erkennung - Fehlermeldungen:
Auch einen original Fensterkontakt von AVM.
Datenstruktur ist die Selbe.Dann scheinst dein System oder die 2.6.1 (ich bin noch bei der 2.5.11) ein generelles Problem zu haben, denn bei mir gibt es den Datenpunkt "id".
Und daher auch keine Fehlermeldung vom DECT-Adapter.
Ro75. -
@ro75 sagte in Fenster auf Erkennung - Fehlermeldungen:
Den Datenpunkt "id" gibt es nicht
wenn ich die schwarze Briefmarke richtig entziffern kann, fehlt dem DP das Objekt!
Da stellt sich dann die Frage wer und wie den angelegt hat.@Doppellhelix bitte keine Screenshots von log.
Diesen bitte als Text in code-tags posten! -
@ro75 said in Fenster auf Erkennung - Fehlermeldungen:
@doppellhelix sagte in Fenster auf Erkennung - Fehlermeldungen:
Auch einen original Fensterkontakt von AVM.
Datenstruktur ist die Selbe.Dann scheinst dein System oder die 2.6.1 (ich bin noch bei der 2.5.11) ein generelles Problem zu haben, denn bei mir gibt es den Datenpunkt "id".
Und daher auch keine Fehlermeldung vom DECT-Adapter.
Ro75.Ja, ich habes auch gerade gesehen.
Der original Fensterkontakt von AVM hat einen Datenpunkt "ID".Ich werde den originalen auch mal an den Smart Gateway hängen, bzw die Problemfensterkontakte direkt an die FRITZBox