NEWS
[Vorlage] Generisches Fensteroffenskript + Vis
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich musste jeden Kontakt im ioBorker von Hand anpassen, da die Räume immer Chanel-weise zugeordnet wurden und nicht nur der eigentliche Kontakt - egal sei's drum Script1 = OK
- Die Räume dürfen natürlich channelweise zugeordnet sein, der ganze Kontakt befindet sich ja in einem Raum. Nur die Funktion Verschluss oder Fenster etc. darf nicht dem ganzen channel, sondern nur dem Schalt Datenpunkt zugeordnet sein.
Hier wird immer ein altes CuxD-Gerät gemeldet, welches sich weder auf der CCU3 noch im ioBroker-Adapter von Homematic zu finden lässt.
- Sowas hatte ich auch schon mal. Das passiert scheinbar wenn man ein Gerät löscht ohne vorher dessen Raum und Funktionszuordnung zu löschen. Bei mir war die Lösung, in die Aufzählungen zu gehen, auf den Raum bzw. die Funktion zu gehen welche das Gerät mal hatte und das dort tatsächlich noch aufgeführte Gerät zu löschen.
Kann ich überhaupt zwei Script-Instanzen diese Scriptes laufen lassen?
- Ist eigentlich nicht vorgesehen, sollte aber machbar sein. Wird aber auf jeden Fall Anpassungen im Skript brauchen, anderes Skriptverzeichnis, anderen Namen für die Funktion. Was es mit Deinen seltsamen Raumzuordnungen auf sich hat erschliesst sich mir allerdings nicht und wird zu seltsamen Meldungen führen, wie "Fenster TFK-OG geschlossen" führen, was iwie sinnfrei ist.
Edit:
Wieso könnte sich das Script an einem nicht vorhandenen Gerät aufhängen?
- Siehe .2, aaber ich vermute da evtl. noch eine falsche Raum oder Funktionszuweisung Deinerseits. Das Skript geht die Aufzählung der Funktionen durch, findet es eine passende, sucht es sich dazu den Raum raus und ermittelt dann den Namen. Eine "Leiche" gemäß .2 sollte da kein Problem machen außer es ist iwo ein ganzer Channel der Funktion zugeordnet.
-
Sorr ymeint nicht Räume sondern Gewerke / Funktion ...
-
@al-79 Siehe Edit im letzen Post.
-
@Pittini
Nabend,
nun habe ich doch nur ein Script erst einmal versucht.
ioBroker, Javascript & VM wurden bereits mehrfach neugestartet aber ich bekommen nun das Script nicht mehr zu laufen. Es werden ein paar Punkte abgearbeitet aber die Tabelle wird nicht mehr erzeugt.Hier ein Auszug aus dem Fehler-Log...
javascript.0 2020-06-03 20:20:46.523 error (25674) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2020-06-03 20:20:46.523 error (25674) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) javascript.0 2020-06-03 20:20:46.523 error (25674) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-06-03 20:20:46.523 error (25674) at (anonymous function).get (/opt/iobroker/node_modules/iobroker.objects-redis/index.js:1:93703) javascript.0 2020-06-03 20:20:46.523 error (25674) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1910:38 javascript.0 2020-06-03 20:20:46.523 error (25674) at Object.<anonymous> (script.js.home.Fensterscript-v2-OG:164:13) javascript.0 2020-06-03 20:20:46.523 error (25674) at main (script.js.home.Fensterscript-v2-OG:201:5) javascript.0 2020-06-03 20:20:46.523 error (25674) at CreateOverviewTable (script.js.home.Fensterscript-v2-OG:312:219) javascript.0 2020-06-03 20:20:46.523 error (25674) at ReplaceChars (script.js.home.Fensterscript-v2-OG:342:32) javascript.0 2020-06-03 20:20:46.523 error (25674) Error in callback: TypeError: Cannot read property 'replace' of undefined
Ich weiß Glaskugeln sind mangelware.... aber wat könnte dies sein?
Javascript ist 4.6.17Grüße
-
@al-79 sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich weiß Glaskugeln sind mangelware.... aber wat könnte dies sein?
Iwo kein Raum zugeordnet aber ne Funktion vermut ich mal. Zeig doch mal nen Screenshot von der Objektliste wie Du das gesetzt hast.
-
Klar kein Problem.
-
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.