NEWS
Custom Skill Fensterkontakte - Fenster offen Abfrage
-
Hallo Leute,
habe mich über die Weihnachtsfeiertage mit dem Thema Custom Skill und Fensterkontakte auseinandergesetzt und möchte meine Erfahrungen ein wenig teilen.
Der Custom Skill macht eigentlich nichts anderes als ein per text2command hinterlegtes Kommando auszführen - in dem Fall die Frage nach Fenster offen!? - gibt den Variableninhalt eines per Skript generierten Textes aus.
Dann habe ich ein Script mit dem Zusammenstoppeln des Strings (eigener Datenpunkt) angelegt - das ganze mache ich zyklisch - könnte man natürlich schöner mit Eventtriggern machen aber sei es drum.
Im Normalfall sind alle Fenster geschlossen.
Sobald ein Fenster geöffnet wird schreibt das Script wo es geöffnet ist - (vorsicht hab eine Mischlung aus HMIP (rpc1) und HM Fensterkontakten (rpc0)
Am Ende des Skript baue ich noch bei mehreren Fenstern ein und vor dem letzten Fenster ein und schon plappert mir Alexa auf die Frage ob Fenster offen sind eine Antwort.
Aus "legacy" Gründen ist das Script eigentlich ein globales in dem eine Function definiert ist - theoretisch könnte man das ganze natürlich gleich in einen Cron einbauen.
function PruefeFenster() { var FensterStatus = "Alle Fenster sind geschlossen"; var FensterStatusOffenWo = ""; var FensterOffenCount = 0; var lastDelimiter = 0; if (getState("hm-rpc.1.BLA1.1.STATE"/*HmIP-SWDM BLA1:1.STATE*/).val === 1) { FensterStatusOffenWo += "in der Küche, "; FensterOffenCount += 1; } if (getState("hm-rpc.1.BLA2.1.STATE"/*HmIP-SWDM BLA2:1.STATE*/).val === 1) { FensterStatusOffenWo += "im Ankleidezimmer, "; FensterOffenCount += 1; } if (getState("hm-rpc.1.BLA3.1.STATE"/*HmIP-SWDM BLA3:1.STATE*/).val === 1) { FensterStatusOffenWo += "im Schlafzimmer, "; FensterOffenCount += 1; } if (getState("hm-rpc.0.BLA4.1.STATE"/*HmIP-SWDM BLA4:1.STATE*/).val === true) { FensterStatusOffenWo += "in Christas Arbeitszimmer, "; FensterOffenCount += 1; } if (getState("hm-rpc.0.BLA5.1.STATE"/*HmIP-SWDM BLA5:1.STATE*/).val === true) { FensterStatusOffenWo += "im Wohnzimmer, "; FensterOffenCount += 1; } if (getState("hm-rpc.0.BLA6.1.STATE"/*BLA6.STATE*/).val === true) { FensterStatusOffenWo += "in Jörgs Arbeitszimmer, "; FensterOffenCount += 1; } if (FensterOffenCount > 0) { FensterStatus = "Fenster "; //wenn mehrere Fenster offen sind will ich grammatikalisch Richtig ein und einfügen. if (FensterOffenCount > 1) { lastDelimiter = FensterStatusOffenWo.lastIndexOf(","); lastDelimiter = FensterStatusOffenWo.substr(0, lastDelimiter).lastIndexOf(","); var replacement = " und "; FensterStatusOffenWo = FensterStatusOffenWo.substr(0, lastDelimiter) + " und " + FensterStatusOffenWo.substr(lastDelimiter + 1, FensterStatusOffenWo.length) ; } FensterStatus += FensterStatusOffenWo; FensterStatus += " offen" ; } setState("javascript.0.FensterOffenTextAntwort"/*FensterOffenTextAntwort*/, FensterStatus); }
-
Huhu…ich möchte Deine Arbeit in keinster Weise schmälern.
Der User dslraser hat die Anfrage eigentlich schon perfektioniert.
Meiner Meinung nach auch etwas einfacher und ebenfalls über Alexa steuerbar.
Wie gesagt, keine Kritik, nur ein Hinweis, dass es das schon gibt.
-
Verlinkst du evtl. den zugehörigen Thread - viele Wege führen nach Rom - und so viel Arbeit wars jetzt auch nicht
-
Ab hier geht es los mit dem Lichtabfragescript und geht über zur Fensterabfrage.