NEWS
[Vorlage] Generisches Fensteroffenskript + Vis
-
@pittini Blind... zu Oft und zulange drauf geguckt und irgendwie immer nur Zeile 42 auf dem Schirm gehabt.
Danke für den erneuten Schubs....
Wird Zeit für ne Bildschirm Pause
-
Nachdem das Script ja jetzt bei mir läuft und ich mehr oder weniger jetzt alle Beiträge hier gelesen habe wollte ich noch eine Frage stellen.
Wie @Dominik-F auf einer der ersten Seiten auch geschrieben hat benutze ich ebenfalls für 4 Türen/Fenster sowohl die HM Drehgriff Sensoren als auch HM TFKs.
Wie habt ihr die sinnvoll den Functions zugewiesen?
Aktuell habe ich den Drehgriff Sensor als Tür und den TFK als Fenster was natürlich in der Tabelle zu 2 Einträgen führt.
Hintergrund ist das ich bei geschlossener Tür (Drehgriff steht auf open aber TFK auf closed) am liebsten eine Anzeige hätte das der "Griff" noch offen ist aber Tür/Fenster zu aber halt nicht verriegelt ist.
Hoffe ich konnte mich verständlich ausdrücken.
-
@pittini
Hallo,nutze Dein wirklich gelungenes Skript schon lange und es funktioniert alles einwandfrei.
Nun habe ich ein paar Alexa mehr und wollte mal fragen, wie ich mehrere Alexa (hier die anzugebene ID) in das Skript bekomme, so das die Ansage an alle Alexas ausgegeben wird.
Bisher hatte ich die eine ID ja hier eingegeben:
//Alexa const UseAlexa = false; // Sollen Nachrichten via Alexa ausgegeben werden? const AlexaInstance = "alexa2.0"; const AlexaId = "G090..."; // Die Alexa Seriennummer. const AlexaVolume = "50"; // Lautstärke der Nachrichten. Wert von 1 bis 100
Hatte hier versucht die durch Komma/Semikolon getrennt einzugeben etc., hat aber leider nicht funktioniert.
Wie könnte ich denn mehrere IDs eingeben?
-
-
versuchs mal als array <also ['id1, 'id2'] vielleicht gehts
-
@qqolli Sorry, da kann ich Dir nich helfen, ich hab nich mal eine Alexa, von daher kein Plan wie das umzusetzen wäre.
-
@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.