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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden