NEWS
[Vorlage] Generisches Fensteroffenskript + Vis
-
@qqolli leg doch bei alexa mehrere Geräte zusammen als Gruppe. Diese Gruppe taucht dann auch beim alexa adapter unter devices auf.
-
Hallo zusammen,
ich kriege das Skript leider nicht zum laufen und steh gerade auf den Schlauch. Ich habe die Standard Funktion für Fenster und Türen vom IoBroker verwendet.
Und diese meinen Sensoren zugeordnet.
Im script habe ich die ids (habs auch mit dem Namen probiert) eingetragen.
const WhichWindowFunctionToUse = "window"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel! const WhichDoorFunctionToUse = "door"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
leider schmeißt das Skript nach dem Start immer viele Warnungen, dann Fehler und bricht ab.
Says und EventLog habe ich auf false.11:03:00.878 info javascript.0 (5215) Start javascript script.js.common.Messages.WindowDoorStatus 11:03:00.897 info javascript.0 (5215) script.js.common.Messages.WindowDoorStatus: starting Fensterskript, Version 1.6.15 11:03:00.899 info javascript.0 (5215) script.js.common.Messages.WindowDoorStatus: registered 0 subscriptions and 0 schedules 11:03:00.927 warn javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:325:26) 11:03:00.928 warn javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5) 11:03:00.928 warn javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5) 11:03:00.929 warn javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13) 11:03:00.932 warn javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:326:35) 11:03:00.932 warn javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5) 11:03:00.933 warn javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5) 11:03:00.933 warn javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13) 11:03:00.937 warn javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:327:37) 11:03:00.937 warn javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5) 11:03:00.938 warn javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5) 11:03:00.938 warn javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13) 11:03:00.940 warn javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:328:32) 11:03:00.940 warn javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5) 11:03:00.941 warn javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5) 11:03:00.941 warn javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13) 11:03:00.943 warn javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:329:30) 11:03:00.944 warn javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5) 11:03:00.944 warn javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5) 11:03:00.945 warn javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13) 11:03:00.949 warn javascript.0 (5215) at init (script.js.common.Messages.WindowDoorStatus:341:27) 11:03:00.949 warn javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:349:5) 11:03:00.950 warn javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5) 11:03:00.951 warn javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13) 11:03:00.960 error javascript.0 (5215) at CreateRoomsWithOpenDoorsList (script.js.common.Messages.WindowDoorStatus:866:45) 11:03:00.961 error javascript.0 (5215) at main (script.js.common.Messages.WindowDoorStatus:351:5) 11:03:00.961 error javascript.0 (5215) at InitialSort (script.js.common.Messages.WindowDoorStatus:314:5) 11:03:00.962 error javascript.0 (5215) at Object.<anonymous> (script.js.common.Messages.WindowDoorStatus:278:13)
Ich bin gerade mit meinem Latein am Ende und hoffe ihr habt noch eine Idee.
Viele Grüße
Flo -
Probiere doch mal, überall Tuer zu nutzen. Also als Name der Aufzählung und der ID und im Script. Einfach nur mal als Test.
-
@dominik-f Leider selber Ergebnis. Ich habe jetzt auch noch alle Leerzeichen bei den Räumen raus. Hat aber auch nichts gebracht.
-
Ich habe mal ein kleines Testskript gemacht. Bei mir scheint die Funktion zum ermitteln der Räume im Javascript Adapter nicht zu funktionieren.
const testVar = $('zigbee.0.*.opened'/*Clients*/); console.log('test'); testVar.each(function (id, i) { console.log('*******************'); console.log(id); let name = getObject(id).common.name; console.log(name); let room = getObject(id, 'rooms').enumNames[0]; if (typeof room == 'object') room = room.de; console.log(room); });
liefert das Ergebnis
14:40:20.880 info javascript.0 (5215) script.js.TestJs: test 14:40:20.881 info javascript.0 (5215) script.js.TestJs: ******************* 14:40:20.883 info javascript.0 (5215) script.js.TestJs: zigbee.0.00158d0007bf12fa.opened 14:40:20.883 info javascript.0 (5215) script.js.TestJs: Is open 14:40:20.884 info javascript.0 (5215) script.js.TestJs: undefined 14:40:20.884 info javascript.0 (5215) script.js.TestJs: ******************* 14:40:20.884 info javascript.0 (5215) script.js.TestJs: zigbee.0.00158d0007d11bc3.opened 14:40:20.885 info javascript.0 (5215) script.js.TestJs: Is open 14:40:20.885 info javascript.0 (5215) script.js.TestJs: undefined 14:40:20.886 info javascript.0 (5215) script.js.TestJs: ******************* 14:40:20.886 info javascript.0 (5215) script.js.TestJs: zigbee.0.00158d0007d11fd2.opened 14:40:20.892 info javascript.0 (5215) script.js.TestJs: Is open 14:40:20.893 info javascript.0 (5215) script.js.TestJs: undefined
....
-
Ich habe es gelöst. Der javascript Adapter kriegt Änderungen an den Aufzählungen Raum/Funktion nicht mit... Man muss erst alles Konfigurieren, dann den Javascript Adapter neustarten und dann funktioniert auch das Skript...
A bug or a feature?
-
Okay super, ich bin davon ausgegangen, dass du dies gemacht hast, da es auch in der Anleitung steht
Nach der Zuweisung, bzw. dem anlegen neuer Aufzählungspunkte ist es empfehlenswert die JS Instanz neu zu starten da diese bei Aufzählungsänderungen gerne mal "zickt" was dann zu Skriptfehlern führt.
-
@dominik-f Ich könnte schwören, dass ich das bei meinem ersten Versuch auch getan habe. Aber daran lag es bei mir definitiv.
-
Das zweite Problem war, dass ich die ids der Aufzählung door/window verwendet habe. Darum hat es zuerst nicht funktioniert. Das Skript geht explizit auf die DE Anzeigetexte. Darum ging es beim ersten Versuch nicht, als ich den JS Adapter durchgestartet habe.
Jetzt macht es Sinn.
-
Ah okay, das ist mir noch nie aufgefallen, da ich generell immer die gleiche ID und Name verwende in den Aufzählungen
-
@Pittini Mir ist aufgefallen das seit einiger Zeit mein Ram voll läuft und mittlerweile auch IoB nach ein paar Tagen nicht mehr erreichbar ist, sobald ich dieses Script laufen habe. Ich habe die neuste Version. In der Log sehe ich leider nichts, was in Verbindung mit deinem Script stehen könnte, dennoch ist es so, wenn ich es deaktiviere läuft der ioB tagelang unauffällig, starte ich das Script geht es nach 1-3 Tagen los. Ram wird immer voller, Teilweise auch bis an die Grenze, beruhigt sich dann wieder. Mittlerweile schmiert dann auch irgendwie der iob ab, ich komm dann gar nicht mehr aufs Web If.
Ich häng hier dennoch mal die Log an, vllt kannst du da was sehen...
Die Log ist voll vom DB Close, ich hab da mal jede Menge gelöscht sonst hätte ich es nicht hochladen können.
Auch sonst ist das System auf dem neusten Stand. (Latest)
-
@d3ltoroxp Das Skript ist so oft im Einsatz, dass ich ein generisches Problem ausschliesse. Du müßtest jetzt rausfinden, was bei Dir anders als bei den anderen, mich eingeschlossen, ist.
-
Das Script läuft bei mir jetzt schon einige Wochen ohne Probleme.
Ist zwar sehr groß und mächtig, aber man kann ja Funktionen die nicht benötigt werden ausschalten.
Bei mir habe ich noch eine Variable für den Wallpanel Adapter eingefügt, damit die Ansagen auf dem Tablet über Wallpanel gemacht werden. War sehr einfach umzusetzen.Nun hätte ich aber noch eine bitte!
Es gibt zwar die Variable für Anwesenheit, aber keine Möglichkeit eine Meldung auszugeben wenn man das Haus verläßt und ein Fenster noch irgendwo offen steht.
Zum Beispiel: Anwesenheit wird false, Fenster offen ist true, dann sofort eine Meldung per Telegramm.Momentan habe ich das mit einem separaten Script realisiert.
-
@manolo Wie Du selber sagst, ist das Skript eh schon recht fett, deswegen werd ich das nicht integrieren, Dein Weg ist da genau der richtige. Das Skript stellt die Info zur Verfügung ob noch was offen ist, und darauf setzt Du ein eigenes Mini Skript auf.
-
Hallo, könnte man dein Skript auch für die Anzeige von Echo Dots verwenden?
Also im Raum XYZ läuft gerade ein Lied? Ist das sehr Aufwendig das anzupassen? -
@sigi234 Wenns dafür iwo nen true/fals Dp gibt, würde das Konzept funktionieren, aber anpassen....eher nicht, das ist zu speziell auf Türen/Fenster, da wär der Aufwand größer als ein neues Skript zu machen und evtl. Teile zu verwenden. Da ich aber keiner Echos, Alexas etc. habe, werd ich da nix machen, könnt ja nich mal testen.
-
Ok, Danke, dann versuche ich das mal mit Blockly.
-
@pittini Vielen Dank für das tolle Script! Bin gerade erst in der Testphase und habe es auch zum Laufen gebracht.
Allerdings kommen immer diese Fehlermeldungen, wenn ein Fenster geöffnet wird:10:36:51.626 error javascript.0 (21880) at Meldung (script.js.common.Fensterauswertung:387:25) 10:36:51.627 error javascript.0 (21880) at CheckWindow (script.js.common.Fensterauswertung:1086:64) 10:36:51.627 error javascript.0 (21880) at Object.<anonymous> (script.js.common.Fensterauswertung:1388:25)
Kann es irgendwie an Umlauten liegen?
Wäre sehr dankbar für jegliche Unterstützung.
Mod-Edit: Code in </> Code-Tag gepackt!
-
@reindeer-web Ich rate mal, Du hast Zeile 42 und/oder 43 nicht auf false gesetzt obwohls extra dabeisteht??
-
@pittini Oh Mann, bin ich blöd!
Da habe ich anscheinend dauernd darüber hinweg gelesen.
Vielen Dank für den Hinweis auf das Brett vor meinem Kopf.