NEWS
[Vorlage] Generisches Fensteroffenskript + Vis
-
soo hab's mit deiner Frage bzgl Raum nun nochmal getestet... ich muss dem .STATE direkt den Raum UND die Funktion zuweisen... In der Beschreibung im GIThub steht es reicht den Raum dem Gerät zuzuweisen nicht dem .STATE....
Nun funktionierts....
Ist evtl nur ne Eigenart von Homematic-Sensoren ?Wie aufwendig wäre es das Script für mehrere Etage umzuschreiben?
Grüße
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
oo hab's mit deiner Frage bzgl Raum nun nochmal getestet... ich muss dem .STATE direkt den Raum UND die Funktion zuweisen... In der Beschreibung im GIThub steht es reicht den Raum dem Gerät zuzuweisen nicht dem .STATE....
Nun funktionierts....
Ist evtl nur ne Eigenart von Homematic-Sensoren ?Wozu mach ich in der Anleitung extra nen Screenshot dazu? Wozu schreib ich Dir das in der Antwort oben unter .1 extra nochmal?
Ist in Deinem Screenshot immer noch falsch an sich. Der Raum wird dem GANZEN GERÄT zugeordnet, weil das das ganze Gerät sich ja physikalisch in einem Raum befindet. Die Funktion wird nur dem einen bestimmten Datenpunkt zugeordnet weil ein Gerät ja mehrere Funktionen haben kann. Is doch eigentlich logisch oder?Wie aufwendig wäre es das Script für mehrere Etage umzuschreiben?
Hab ich Dir auch schon oben unter .3 beantwortet. Der Aufwand das zu testen is normal 5 Minuten. Zwei Skriptvariablen ändern im Einstellungsbereich und ne Extra Funktion anlegen und zuweisen. Letzteres hast ja glaub ich eh schon gemacht.
-
Sorry mit der Nutzung für mehrer Etagen habe ich gedacht du meintest es müssen im Script function.() angepasst / geändert werden... Du meintest aber die Funktion am Sensor... ja die habe ich schon zugewiesen.
Die zwei scriptvariablen sind ja "nur" der javascript.pfad und die Funktion des Melders....
-
Ich hab auch 2 Versionen des Scriptes laufen, das funktioniert problemlos wenn man die beiden Sachen anpasst. Das erste nutze ich zur Kontrolle und Anzeige welche Fenster im Haus offen/geschlossen sind und das 2te verwende ich für meine Heizungssteuerung. Ich nutze 2 Scripte weil ich bei der Heizungssteuerung einen Fensterkontakt nicht nutzen möchte, diesen aber für meine Kontrolle angezeigt bekommen möchte.
-
soo nachdem ich das Script nun für drei Etagen fertig hatte, musste ich heute feststellen, dass sich ioBroker die Räume nicht gemerkt hat und dann logischerweise das Script nicht mehr funktioniert.
Hat das schon jemand gehabt? - also dass ioBroker die Räume & Funktionen nicht dauerhaft behält.
Ich habe schon folgendes probiert:- Räume & Funktionen angepasst - dann nichts weiter gemacht - Zuweisung bleibt dann einige Zeit.
- Räume & Funktionen angepasst - dann ioBroker neu gestartet - Zuweisung bleibt auch einige Zeit.
- Räume & Funktionen angepasst - dann ESXi-VM neu gestartet - Zuweisung bleibt auch einige Zeit.
Ich habe keinen Hinweis dazu gefunden, wann bzw durch was, genau die Zuweisung wieder Rückgängig gemacht wird.
Grüße
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich habe keinen Hinweis dazu gefunden, wann bzw durch was, genau die Zuweisung wieder Rückgängig gemacht wird.
Ich glaub der HM Adapter macht das, der legt das so an wie in der CCU gesetzt, macht mans anders wirds wieder geändert. Lösung, dem Ding seinen Willen lassen, Räume kann man ja in HM richtig machen, die Funktionen immer ZUSÄTZLICH zu den von HM gesetzten verwenden. War zumindest bei mir die Lösung, ich hab aber auch nur paar HM Thermostate.
-
@Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich glaub der HM Adapter macht das, der legt das so an wie in der CCU gesetzt, macht mans anders wirds wieder geändert.
man muss ja nicht alles synchronisieren. (mache ich schon lange nicht mehr)
Die Räume und Funktionen kann man auch in ioBroker erstellen, dann ist Ruhe und wird nicht mehr überschrieben... -
Mir ist in letzter Zeit aufgefallen, dass mir die offenen Fenster teilweise nicht richtig angezeigt werden. Ich habe manchmal z.B. nur ein Fenster offen, mir werden aber 6 offene angezeigt. Schließe ich dann das eine Fenster wird wieder alles richtig angezeigt mir 0 offenen Fenster. Ich kann das bisher nur nicht reproduzieren da es nicht täglich auftritt. Eventuell hilft dir die Meldung darüber ja trotzdem etwas. Das Phänomen hatten wir ja schon mal gehabt.
-
@Dominik-F sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Mir ist in letzter Zeit aufgefallen, dass mir die offenen Fenster teilweise nicht richtig angezeigt werden. Ich habe manchmal z.B. nur ein Fenster offen, mir werden aber 6 offene angezeigt. Schließe ich dann das eine Fenster wird wieder alles richtig angezeigt mir 0 offenen Fenster. Ich kann das bisher nur nicht reproduzieren da es nicht täglich auftritt. Eventuell hilft dir die Meldung darüber ja trotzdem etwas. Das Phänomen hatten wir ja schon mal gehabt.
Kann ich nicht bestätigen, hier läuft alles absolut rund. Hat auch noch niemand anders was gemeldet. Soll heißen, ohne Logs und Reproduzierbarkeit gibts null Chance da was zu finden.
-
Moj zusammen,
zunmächst vielen Dank für das geniale Script - erleichtert mir eine ganze Menge Arbeit.
Ich habe Version 1.5.3 gezogen und installiert. Alle Datenpunkte usw werden auch angelegt.
Solbald ich aber ein Fenster öffne oder schließe stoppt das Script mit folgender Fehlermeldung:2020-06-06 14:32:38.487 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: Reaching CreateRoomsWithVentWarnings 2020-06-06 14:32:38.488 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: Reaching CreateRoomsWithOpenWindowsList 2020-06-06 14:32:38.489 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: RoomsWithOpenWindows: Alle Fenster sind geschlossen 2020-06-06 14:32:38.489 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: Reaching CreateRoomsWithTiltedWindowsList 2020-06-06 14:32:38.489 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: RoomsWithTiltedWindows: Keine Fenster gekippt 2020-06-06 14:32:38.489 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: Reaching CreateRoomsWithVentWarnings 2020-06-06 14:32:42.772 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: Trigger= 12 Wert= true Alter Wert= false 2020-06-06 14:32:42.773 - [31merror[39m: javascript.0 (14143) Error in callback: TypeError: Cannot read property 'search' of null 2020-06-06 14:32:42.773 - [31merror[39m: javascript.0 (14143) at Object.<anonymous> (script.js.common.Fensterauswertung:725:30) 2020-06-06 14:32:42.773 - [31merror[39m: javascript.0 (14143) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1123:38) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:450:25) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at aliases.(anonymous function).targets.forEach.target (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4819:41) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at Array.forEach (<anonymous>:null:null) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4814:46) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:229:41) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at runCallback (timers.js:705:18) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at tryOnImmediate (timers.js:676:5) 2020-06-06 14:32:42.774 - [31merror[39m: javascript.0 (14143) at processImmediate (timers.js:658:5) 2020-06-06 14:32:44.826 - [32minfo[39m: javascript.0 (14143) script.js.common.Fensterauswertung: Trigger= 12 Wert= false Alter Wert= true 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) Error in callback: TypeError: Cannot read property 'search' of null 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) at Object.<anonymous> (script.js.common.Fensterauswertung:725:30) 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1123:38) 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:450:25) 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) at aliases.(anonymous function).targets.forEach.target (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4819:41) 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) at Array.forEach (<anonymous>:null:null) 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4814:46) 2020-06-06 14:32:44.827 - [31merror[39m: javascript.0 (14143) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:229:41) 2020-06-06 14:32:44.828 - [31merror[39m: javascript.0 (14143) at runCallback (timers.js:705:18) 2020-06-06 14:32:44.828 - [31merror[39m: javascript.0 (14143) at tryOnImmediate (timers.js:676:5) 2020-06-06 14:32:44.828 - [31merror[39m: javascript.0 (14143) at processImmediate (timers.js:658:5)
ich bin leider in JS nicht so sehr bewandert. Könnte daher evtl. jedmand etwas Licht in mein Dunkel bringen?
-
@boehmgui sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Könnte daher evtl. jedmand etwas Licht in mein Dunkel bringen?
Sieht auf den ersten Blick nach ner Fehlkonfiguration aus. Zeig doch mal Deine Skripteinstellungen und nen Screenshot aus der Objektliste wie und wo Du Deine Räume und Funktionen gesetzt hast.
-
@Pittini
Meine Konfig://Grundeinstellungen const logging = true; //Erweiterte Logs ausgeben? const praefix = "javascript.0.FensterUeberwachung."; //Grundpfad für Script DPs - Muß innerhalb javascript.x sein. const WelcheFunktionVerwenden = "Verschluss"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel! const IgnoreTime = 10000; // 10000 ms = 10 Sekunden - Zeit in ms für die kurzzeitiges öffnen/schliessen ignoriert wird //Nachrichteneinstellungen const ZeitBisNachricht = 900000 // 300000 ms = 5 Minuten - Zyklus- bzw. Ablaufzeit für Fensteroffenwarnung/en const MaxMessages = 3; //Maximale Anzahl der Nachrichten pro Raum const UseTelegram = false; // Sollen Nachrichten via Telegram gesendet werden? const UseAlexa = false; // Sollen Nachrichten via Alexa ausgegeben werden? const AlexaId = ""; // Die Alexa Seriennummer. const UseMail = false; //Nachricht via Mail versenden? const UseSay = false; // Sollen Nachrichten via Say ausgegeben werden? Autorenfunktion, muß deaktiviert werden. const UseEventLog = true; // Sollen Nachrichten ins Eventlog geschreiben werden? Autorenfunktion, muß deaktiviert werden. //Tabelleneinstellungen const WindowOpenImg = "/icons-mfd-svg/fts_window_1w_open.svg"; //Icon für Fenster offen const WindowCloseImg = "/icons-mfd-svg/fts_window_1w.svg"; // Icon für Fenster geschlossen const WindowTiltedImg = "/icons-mfd-svg/fts_window_1w_tilt.svg" //Icon für Fenster gekippt const WindowOpenTiltedImg = "/icons-mfd-svg/fts_window_2w_open_l_tilt_r.svg" //Icon für offen und gekippt in einem Raum gleichzeitig const VentImg = "/icons-mfd-svg/vent_ventilation.svg"; //Icon für Lüftungsinfo const ImgInvert = 1; // Bildfarben invertieren? Erlaubte Werte von 0 bis 1 const OpenWindowColor = "#f44336"; // Farbe für Fenster offen const TiltedWindowColor = "#F56C62"; //Farbe für gekippte Fenster const ClosedWindowColor = "#4caf50"; // Farbe für geschlossene Fenster const VentWarnColor = "#ffc107"; // Farbe für Lüftungswarnung const ShowCaptionTbl = false; // Überschrift anzeigen? const ShowSummaryTbl = true; // Zusammenfassung anzeigen? const ShowDetailTbl = true; // Details anzeigen? //Logeinstellungen const MaxLogEntrys = 20; //Maximale Anzahl der zu speichernden Logeinträge const AutoAddTimestamp = true; //Soll den geloggten Nachrichten automatisch ein Zeitsempel zugeordnet werden? const LogTimeStampFormat = "TT.MM.JJJJ SS:mm:ss"; //Zeitformatierung für Log Zeitstempel const LogEntrySeparator = "<br>"; //Trennzeichen für Logeinträge
Und hier ein paar der Objekte:
Alles, was "Verschluss" als Funktion hat, hat auch einen Raum zugeweisen. Es gibt einige Räume, die haben mehrere Fenster. Das aber, so hatte ich gelesen, sollte aber keine Probleme bereiten?
-
ich glaube, ich habe herausgefunden, woran es liegt.
Ich habe für alle meine Devices Aliasse angelegt um unbhängig falls ich mal eines austauschen muss.
Wenn ich das richtig sehe, erwarte das Script auch Channel Ebene den Raumnamen. Das geht bei Aliassen nicht.
Habe das gerade mal mit nur einem Fenster ausprobiert und da kam dieser Fehler nicht mehr.
Allerdings wird nun über12586) Error in callback: ReferenceError: WriteEventLog is not defined
geklagt.
habe ich da etwas vergessen zu installieren? -
@Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
@Dominik-F sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Mir ist in letzter Zeit aufgefallen, dass mir die offenen Fenster teilweise nicht richtig angezeigt werden. Ich habe manchmal z.B. nur ein Fenster offen, mir werden aber 6 offene angezeigt. Schließe ich dann das eine Fenster wird wieder alles richtig angezeigt mir 0 offenen Fenster. Ich kann das bisher nur nicht reproduzieren da es nicht täglich auftritt. Eventuell hilft dir die Meldung darüber ja trotzdem etwas. Das Phänomen hatten wir ja schon mal gehabt.
Kann ich nicht bestätigen, hier läuft alles absolut rund. Hat auch noch niemand anders was gemeldet. Soll heißen, ohne Logs und Reproduzierbarkeit gibts null Chance da was zu finden.
Ich werde wenn es mir nächstes mal auffällt mal n Screenshot machen und die Logs vom Tag hier posten dazu. Vielleicht liegts auch an den beiden Versionen der Scripte die parallel laufen.
-
@boehmgui
Dachte mir schon sowas, da stimmt alles mögliche nicht.-
Einstellungen Zeile 16 muß auf false gesetzt werden, steht auch ausdrücklich im Kommentar daneben (Hat aber nix mit dem aktuellen Fehler zu tun, würde aber zum nächsten führen wenn der aktuelle behoben ist.) - Muß korrigiert werden.
-
Was ist der oberste Channel Deiner ganzen Sensoren, das seh ich leider nicht auf dem Screenshot.
-
Die Raumzuweisungen sind nicht richtig, es ist immer der ganze Sensor in einem Raum und nicht nur ein Datenpunkt davon. Muß korrigiert werden.
-
Die übergeordneten Channels haben nicht den Typ Channel, sind aus Skriptsicht damit ungültig.
Hier gibts zwei Möglichkeiten, entweder Du machst die Channels richtig, oder Du deaktivierst die Sicherheitsabfrage welche zu dem Fehler führt (Jeweils ein // vor die Zeilen 725,747,748,749,750 - und das nach jedem update wiederholen). Die ist drin weil einige "Spezialisten" die Datenpunkte des Fensterskriptverzeichnisses als Verschluss angaben, was zu einer Endlosschleife führt und den ganzen JS Adapter abschmieren läßt. Deswegen fragt das Skript den übergeordneten Channel ab, welcher bei Dir nicht existiert.
-
-
@Pittini sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
@boehmgui
Dachte mir schon sowas, da stimmt alles mögliche nicht.Oha, da habe ich ja echt in die Vollen gegriffen.
zu 1. da habe ich den Parameter falsch interpretiert, dachte damit bekäme ich überhaupt erst Logeinträge.
zu 2. das sieht bei mir so aus - sind alles Aliasse:
zu 4. das ist wohl wiel ich mit Aliassen arbeite. habe die entsprechenden Zeilen auskommentiert und nun läuft es.
Ist schon erstaunlich, kaum macht man etwas richtig, schon funktioniert es.
Danke für Deine Hilfe
-
Hey Pittini, ich nutze ja das Skript 2 mal, habe auch die Einstellungen angepasst und es funktioniert soweit. Mir ist nun aufgefallen, dass die Prozessorlast von 5% auf teils über 40% ansteigt wenn ich beides laufen lasse. Ein Skript alleine hat keine Auswirkungen. Hast du irgendeine Idee was das verursachen könnte?
-
@Dominik-F sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Hast du irgendeine Idee was das verursachen könnte?
Leider nein, eigentlich sollte das Skript außer beim starten und wenn ein Kontakt triggert fast überhaupt keine CPU Last erzeugen, es wartet ja nur auf Trigger. Und 2 mal warten sollte da keinen Unterschied machen.
-
@Pittini
Ich habe die Synchronisierung der HM-Rega bei den Räumen & Gewerken abgeschalten. Seitdem funktioniert das Script soweit auch.
Habe nur eine Frage & ein Problem:Problem - Ein Fenster wurde gestern abend geöffnet... das Script gibt aber nun aus Fenster offen seit 6 Tagen 12 Stunden ... - das beobachte ich aber nun ersteinmal.
Frage - kann man die HTML-Tabelle Ausgabe sortieren ? Hintergrund: wichtige Sensoren oben in der Tabelle und eher unwichtige ans ende stellen lassen. Da die Tabelle doch sehr laaang werden kann und auf Mobilgeräten somit einige Sensoren erst durch's scrollen sichtbar werden.
Grüße
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Problem - Ein Fenster wurde gestern abend geöffnet... das Script gibt aber nun aus Fenster offen seit 6 Tagen 12 Stunden ... - das beobachte ich aber nun ersteinmal.
Kann ich ohne Log wenig zu sagen. Grundsätzlich geht das Skript nach dem Zeitstempel der letzten Aktualisierung, kann mir grad nicht vorstellen wie das entstehen könnte.
Frage - kann man die HTML-Tabelle Ausgabe sortieren ? Hintergrund: wichtige Sensoren oben in der Tabelle und eher unwichtige ans ende stellen lassen. Da die Tabelle doch sehr laaang werden kann und auf Mobilgeräten somit einige Sensoren erst durch's scrollen sichtbar werden.
Sortierung ist bislang nicht vorgesehen. Vorallem stellt sich ja die Frage, woher das Skript wissen soll was für Dich "wichtige Sensoren" bzw. Räume sind. Da bräuchte es ja nen extra DP wo man ne Art Prioritätsreihenfolge festlegt. Das ist nicht "mal schnell" einzubauen, vorallem weil wenn ich damit Anfang weis ich dass der nächste dann ne alphabetische Sortierung will usw., kannst aber gern nen FeatureRequest auf Git schreiben, evtl. in einer zukünftigen Version mal.