NEWS
[Vorlage] Generisches Fensteroffenskript + Vis
-
@Pittini Genau, das scheint es gewesen zu sein. Die gesetzten States bleiben bestehen.
Danke @dslraser
@Pittini Weil du grad hier bist. Gibt es eine Möglichkeit, die Liste aus deinem Script nutzen um mir von Alexa ansagen zu lassen, welche Fenster alle offen sind ? Wenn ich sie z.b. danach frage, oder wenn man das Haus verlässt `?
-
@D3ltoroxp sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Gibt es eine Möglichkeit, die Liste aus deinem Script nutzen um mir von Alexa ansagen zu lassen, welche Fenster alle offen sind ? Wenn ich sie z.b. danach frage, oder wenn man das Haus verlässt `?
Die Daten dazu liegen ja vor in:
javascript.0.FensterUeberwachung.RoomsWithOpenWindows
javascript.0.FensterUeberwachung.RoomsWithOpenDoors
javascript.0.FensterUeberwachung.RoomsWithOpeningsWie man Alexa dazu bringt die Dir vorzulesen weis ich nicht, da ich die Abhörwanze nicht nutze. Aber da kann Dir bestimmt wer anders hier weiterhelfen.
-
@Pittini Erstmal danke für das super Skript. Ich bin dabei dieses mit mein eigenem zu vereinen. Dabei hätte ich eventuell noch 2 Anregungen, die Du noch aufnehmen könntest, welche bestimmt auch für andere Nutzer interessant wären.
- Devices, wo man trotz NoMsgAtPresence = true immer eine Meldung bekommen kann unabhängig Presence
- Wenn man unterwegs ist (Presence false) und es eine Öffnung registriert, dass eine zusätzliche "Alarmvariable" gesetzt werden kann. Zusätzlich Infodevices, die die Alarmauslösung verhindern (z.B. keine Außentüren/Fenster)
Ich hatte es in meinem Skript so in der Art eingebunden:
// Nur wenn Alarmanlage scharf oder Device Info dann Meldung if (alarm === 1 || alarm === 2 || alarm === 3 || infodevice.indexOf(serial) != -1) { if (alarm === 1 || alarm === 2) setStateDelayed(idAlarm, 3, 1000); }
Ebenfalls ist mir aufgefallen das die Variable PresenceDp nie ausgewertet wird, sondern nur NoMsgAtPresence für Push-Meldungen. Nutze Version 1.6.5.
Ist nur ne Anregung/Idee. Ansonsten sehr genial das Skript.
-
@schittl sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
@Pittini Erstmal danke für das super Skript. Ich bin dabei dieses mit mein eigenem zu vereinen. Dabei hätte ich eventuell noch 2 Anregungen, die Du noch aufnehmen könntest, welche bestimmt auch für andere Nutzer interessant wären.
- Devices, wo man trotz NoMsgAtPresence = true immer eine Meldung bekommen kann unabhängig Presence
- Wenn man unterwegs ist (Presence false) und es eine Öffnung registriert, dass eine zusätzliche "Alarmvariable" gesetzt werden kann. Zusätzlich Infodevices, die die Alarmauslösung verhindern (z.B. keine Außentüren/Fenster)
Ich hatte es in meinem Skript so in der Art eingebunden:
// Nur wenn Alarmanlage scharf oder Device Info dann Meldung if (alarm === 1 || alarm === 2 || alarm === 3 || infodevice.indexOf(serial) != -1) { if (alarm === 1 || alarm === 2) setStateDelayed(idAlarm, 3, 1000); }
Die Vorschläge wären sicher machbar, aber das is mir zu spezifisch, sind eh schon drölfich Einstelloptionen, sollen ja auch Einsteiger ne Chance haben das Skript zu nutzen.
Ebenfalls ist mir aufgefallen das die Variable PresenceDp nie ausgewertet wird, sondern nur NoMsgAtPresence für Push-Meldungen. Nutze Version 1.6.5.
Das stimmt so nicht, in Zeile 1396 wird ein Trigger draufgelegt, der Wert steht dann in Presence. Von da wird er allerdings tatsächlich nicht weitergenutzt, wird gefixt.
-
@Pittini Ich habe es bei mir so gelöst (Zeile 1396):
if (PresenceDp != "") { //Trigger für Anwesenheitsdatenpunkt erzeugen wenn vorhanden on("PresenceDp", function (dp) { //Trigger für PresenceDp erzeugen Presence = dp.state.val; if (NoMsgAtPresence && Presence) NoMsgAtPresence = false; }); }
Ist aber noch in Testphase...
-
@schittl sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
@Pittini Ich habe es bei mir so gelöst (Zeile 1396):
if (PresenceDp != "") { //Trigger für Anwesenheitsdatenpunkt erzeugen wenn vorhanden on("PresenceDp", function (dp) { //Trigger für PresenceDp erzeugen Presence = dp.state.val; if (NoMsgAtPresence && Presence) NoMsgAtPresence = false; }); }
Ist aber noch in Testphase...
Das kannste so nicht machen, das ist doppelt unsauber. Erstens isses ne Konstante deren Wert Du gar nicht ändern kannst. Zweitens würde ich das weder im Trigger machen noch überhaupt NoMsgAtPresence ändern, dafür gibts doch Presence.
Ich hab das gestern (auch noch Testphase) so gelöst (Ab Zeile 335):
function Meldung(msg) { if (logging) log("Reaching Meldung, msg= " + msg + " NoMsgAtPresence= " + NoMsgAtPresence + " Presence= " + Presence); if (NoMsgAtPresence && Presence) { if (logging) log("Meldung blocked cause, NoMsgAtPresence= " + NoMsgAtPresence + " Presence= " + Presence); } else { if (MuteMode != 1 && MuteMode != 2) { if (UseSay) Say(msg); if (UseAlexa) { if (AlexaId != "") setState("alexa2.0.Echo-Devices." + AlexaId + ".Commands.announcement"/*announcement*/, msg); }; }; if (MuteMode != 2) { if (UseEventLog) { WriteEventLog(msg); }; if (UseTelegram) { sendTo("telegram.0", "send", { text: msg }); }; if (UseMail) { sendTo("email", { html: msg }); }; } setState(praefix + "LastMessage", msg); WriteMessageLog(msg); }; }
-
Das Script hängt sich immer auf, ich habe in meiner Homematic den Geräten Gewerken und Räumen zugeordnet, dann kommt der fehler in IOB beim Neustart : ,,script.js.Log.Fensterauswertung: Reaching CreateRoomsWithVentWarnings" Iobroker hängt sich auf, wenn ich dann Manuell in den Aufzählungen bei den Geräten nur den States den Raum und das Gewerk zuordne geht es, gibt es da eine Lösung?
-
@HoffmannOs sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Das Script hängt sich immer auf, ich habe in meiner Homematic den Geräten Gewerken und Räumen zugeordnet, dann kommt der fehler in IOB beim Neustart : ,,script.js.Log.Fensterauswertung: Reaching CreateRoomsWithVentWarnings" Iobroker hängt sich auf, wenn ich dann Manuell in den Aufzählungen bei den Geräten nur den States den Raum und das Gewerk zuordne geht es, gibt es da eine Lösung?
Bisher hab ich noch nicht mal Dein Problem verstanden. Grundsätzlich gilt, bitte immer komplettes Log und evtl. Screenshots wo ich seh was wie wo zugeordnet wurde. Und ne klare Fehlerbeschreibung, wann und/oder bei welcher Aktion der Fehler auftritt.
-
@Pittini
Hi, erst einmal muss ich sagen das ich deine Arbeiten sehr gut finde. Das Skript zur Fenster Auswertung ist super.
Jetzt habe ich noch 2 Fragen:Muss ich für die Lüftungsempfehlung noch was einstellen?
Die Spalte "Funktion" ist eigentlich für den ganzen Channel gedacht. Da gehört dann auch Batterie, Erreichbarkeit, etc. für das Fenster dazu. (damit werden soweit ich weiß auch die Widgets u. a. vom Material Design Adapter automatisch befüllt)
Wäre es nicht vorteilhafter die Spalte "Rolle" dafür zu verwenden? Diese erfüllt doch genau die von dir gewünschte "Einmaligkeit".
Wie denkst du darüber.
Und wäre es viel Arbeit das Script dahingehend zu ändern bzw. dahingehend konfigurierbar zu machen -
@Mike-Hellracer
Kann diesen Post bitte einer löschen
Irgendwas ist bei paste schief gegangen
Danke -
@Mike-Hellracer sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Muss ich für die Lüftungsempfehlung noch was einstellen?
Wenn Du benachrichtigt werden willst, beim entsprechenden Raum SendVentMsg auf true setzen
Die Spalte "Funktion" ist eigentlich für den ganzen Channel gedacht.
Sagt wer? Steht wo?
Da gehört dann auch Batterie, Erreichbarkeit, etc. für das Fenster dazu. (damit werden soweit ich weiß auch die Widgets u. a. vom Material Design Adapter automatisch befüllt)
Nope, das sind getrennte Funktionen. Is doch eigentlich logisch, dass ein Gerät verschiedene Funktionen haben kann, Batterie z.B. is wieder ne Funktion für mein Batterieskript usw.
Wäre es nicht vorteilhafter die Spalte "Rolle" dafür zu verwenden? Diese erfüllt doch genau die von dir gewünschte "Einmaligkeit".
Rolle wird vom Adapter vergeben, sollte eigentlich nicht verändert werden und ist auch nicht eindeutig.
Wie denkst du darüber.
Siehe oben
Und wäre es viel Arbeit das Script dahingehend zu ändern bzw. dahingehend konfigurierbar zu machen
Vermutlich ja, mach ich mir aber kein Kopp drum, da es diese Änderung mangels sinnhaftigkeit nicht geben wird.
Solltest Du das Problem haben dass Dir der HM Adapter die Funktionen überschreibt welche Du manuell gesetzt hast, einfach im Adapteradmin das syncen abstellen.
-
@Pittini
Hi
Danke für den Hinweis mit der Meldung.Irgendwie habe ich das dann in der Beschreibung der Datenfelder von iobroker anders verstanden.
Was nicht heißen soll das es kein Missverständnis sein kann.Ich dachte...
Funktion = Gewerk = Fenster, Rolladen, etc
Rolle = Typ = Kontakt, Batterie, ErreichbarkeitSiehe auch.
https://www.iobroker.net/docu/index-243.htm?page_id=5495&lang=de -
@Mike-Hellracer sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich dachte...
Funktion = Gewerk = Fenster, Rolladen, etc
Rolle = Typ = Kontakt, Batterie, ErreichbarkeitDas is ja auch nich verkehrt, aber es spricht doch nix dagegen mehrere Funktionen zuzuweisen. Also z.B. "Verschluss" für Fenster/Türen, aber trotzdem noch "Fenster" oder "Tür " für den jeweils dafür relevanten Datenpunkt. Die Rolle is leider untauglich weil da jeder Adapter was anderes reinschreibt, und es zusätzlich z.B. bei Lampenfarben 2 Mögliche Systeme geben kann, da muß einfach der User via Funktion entscheiden was das Skript jetzt nehmen soll.
-
@Pittini
Pittini
Danke für die erklärenden Worte.
Jetzt habe ich das auch verstanden.
Eigentlich richtig gedacht, aber leider von einigen unterschiedlich interpretiert .
Ich dachte die Rollen "window.tilted" und "window.value" währen eindeutig.
Jetzt verstehe ich auch deine Gründe es über eine "Funktion* umzusetzen.
Habe ich die Möglichkeit den verwendeten Namen der Funktion an einer Stelle des Scripts anzupassen, oder muss der einen bestimmten Namen (Fenster) haben?
Und verwendest du den Namen der Funktion (z. B. window) oder den Alias (Fenster)? -
@Mike-Hellracer sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
Ich dachte die Rollen "window.tilted" und "window.value" währen eindeutig.
Meine xiaomi Tür- Fensterkontakte haben als Rolle state und als Wert true/false - nehm ich dagegen den gleichen Sensor mit deconz is die Rolle sensor.open und der Wert auch true/false usw - und zack is vorbei mit eindeutig, Deswegen nehm ich eben die Funktion dafür, das ist auch für Anfänger relativ leicht zu verwenden.
Habe ich die Möglichkeit den verwendeten Namen der Funktion an einer Stelle des Scripts anzupassen, oder muss der einen bestimmten Namen (Fenster) haben?
Ist in den Skripteinstellungen anpassbar.
Und verwendest du den Namen der Funktion (z. B. window) oder den Alias (Fenster)?
Ich verwende das, was man in der Objektliste auswählen kann, also den Alias. Wobei bei mir eh Funktion und Alias identisch sind.
-
@Pittini
Habe jetzt die Funktionen angelegt. Und es werden auch die Fenster angezeigt.
SendVentMsg ist aktiviert. Wann werden die Nachricht verschickt?
Jetzt noch ein Problem. Ich habe 2 Fenster in der Küche und im Esszimmer aber es wird nur jeweils eins angezeigt oder schaue ich vlt falsch.
Auch die angezeigten Zeiten stimmen nicht.
Muss ich da noch was aktivieren? -
@Mike-Hellracer sagte in [Vorlage] Generisches Fensteroffenskript + Vis:
@Pittini
Habe jetzt die Funktionen angelegt. Und es werden auch die Fenster angezeigt.
SendVentMsg ist aktiviert. Wann werden die Nachricht verschickt?Wie Du es pro Raum in der Objectliste eingestellt hast in "VentWarnTime". Bei 0 is ausgeschaltet.
Jetzt noch ein Problem. Ich habe 2 Fenster in der Küche und im Esszimmer aber es wird nur jeweils eins angezeigt oder schaue ich vlt falsch.
Screenshot? Log?
Auch die angezeigten Zeiten stimmen nicht.
Screenshot? Log?
Muss ich da noch was aktivieren?
Nein.
-
@Pittini
Das mit der Zeit hat sich erledigt. War nur zu ungeduldig. Die anderen Themen habe ich dank deiner Hinweise auch gelöst bekommen.
Noch ein Bitte in eigener Sache für "getEnums('functions')"
Ich möchte vorschlagen eine Variable für die Kategorie (hier fest auf 'functions' eingestellt) einzuführen. vlt. "enumCategorie" oder so. -
@Pittini
kann gelöscht werden. habe mein Problem gelöst -
Erstmals, danke @Pittini für dieses Skipt! Ich wollte fragen ob ihr denkt dass jemand Interesse hätte dieses Skript auf Englisch zu haben? Ich habe es für mich übersetzt inkl. alle Kommentare. Funktioniert einwandfrei! Bei Bedarf kann ich es gerne teilen.
Noch ein "Feature Request" an dem ich vielleicht selbst bald bauen werde wäre dass man in den Triggers auch die jetzige Außentemperatur in Betracht nehmen kann. Habe ich z.B. so bei meinem "einfacheren" Skript getan denn im Sommer ist mir eigentlich egal ob eine Tür oder ein Fenster länger offen bleibt aber im Winter würde ich gerne die Warnung bekommen.