NEWS
Homematic Rauchmelder Raum auslesen
-
Hi,
wie kann ich denn in iobroker auslesen, aus welchem Raum ein Rauchmeldealarm kommt?
Ich kann nur den Status eines Rauchmelders auslesen. Wenn diese allerdings im Team stecken und alle schreien vermute ich mal, dass sich auch der State jedes einzelnen ändert und ich nicht mehr den Ursprung auswerten kann.
Oder muss ich pro Raum ein Team anlegen? Geht das auf die Batterie der Rauchmelder?
Gruß
maxpd
6072_2019-01-26_14_35_48-javascript_-_iobroker.png
6072_2019-01-26_14_48_00-javascript_-_iobroker.png -
Ich hab es wie folgt:
var rauchmelder = [ "hm-rpc.0.OEQ2021234.1.STATE" ]; on({id: rauchmelder, val:true, change: "ne"}, function (obj) { var name = obj.common.name.split(":")[0]; log("Rauchalarm ausgelöst bei " + name); });
Dazu musst du aber nicht nur das Gerät, sondern in der CCU auch den Kanal benennen. z.B. "Rauchmelder Schlafzimmer:1"
-
Mhh, also ich hätte es gerne in Blockly gelöst. Oder kann ich dein Skript in Blockly einfügen?
Muss ich das für jeden Rauchmelder oder nur einmal für das Team machen, da du ja scheinbar den Namen ausliest.
OK, da gibt es nur 1 Kanal pro Rauchmelder, das bekomme ich hin.
-
Kannst du nicht in Blockly importieren. Wie das Script aber schon zeigt, ist das sehr einfach..
Ich hab es bei mir über eine Liste gemacht, du kannst aber auch ein RegEx über den Namen legen, dann werden alle erkannt.
-
Sorry danw,
aber irgendwie schnall ich eine Umsetzung mit Blockly gar nicht.
Greifst du beim State das Team ab?
Und wie lese ich werte aus der Liste aus?
Regex in Blocky habe ich gar nicht gefunden.
-
Sorry danw,
aber irgendwie schnall ich eine Umsetzung mit Blockly gar nicht.
Greifst du beim State das Team ab?
Und wie lese ich werte aus der Liste aus? `
Verstehe deine Fragen ehrlich gesagt nicht wirklich.
var rauchmelder = [ "hm-rpc.0.OEQ2021234.1.STATE" ];
Sind einfach nur die Objekte der Rauchmelder. So könnte man die Liste erweitern.
var rauchmelder = [ "hm-rpc.0.OEQ2021234.1.STATE", "hm-rpc.0.OEQ2021235.1.STATE", "hm-rpc.0.OEQ2021236.1.STATE" ];
on({id: rauchmelder, val:true, change: "ne"}, function (obj) {
Das ist eine Subscription auf "rauchmelder", wenn der Wert auf "true" geändert wird. (also wenn einer der Rauchmelder auslöst, dann… )
var name = obj.common.name.split(":")[0]; log("Rauchalarm ausgelöst bei " + name); });
führe das hier aus.
Die erste Zeile setzt den Namen. obj.common.name ist der Name des Objektes, also bei dir "HM-Sec-SD-2 NBO0079980:1" - deswegen mein Tipp mit dem Umbenennen des Kanals in der CCU.
obj.common.name wird aufteilt mit dem Trennzeichen ":", [0] zeigt nur den ersten Treffer (also alles vor dem ersten ":") an. Also bei dem Beispiel dann "HM-Sec-SD-2 NBO0079980"
Die zweite Zeile zeigt es einfach nur im Log an.
Was du dann machen willst kannst du dort dann hinzufügen. (Lichter an, Innensirenen an, Telegram Nachricht senden, oder was auch immer).
-
Danke dir.
Auf Blockly umgemünzt sehe ich aber nur diese Option im Screenshot. Bzw. diese als Code.
Nur da die Rauchmelder verknüpft sind, werden wohl alle anschlagen und bei jedem der State auf wahr wechseln. Demnach bekomme ich auch von jedem Rauchmelder eine Benachrichtigung.
on({id: new RegExp('hm-rpc\\.0\\.NBO0080360\\.1\\.STATE' + "|" + 'hm-rpc\\.0\\.NBO0080211\\.1\\.STATE' + "|" + 'hm-rpc\\.0\\.NBO0079980\\.1\\.STATE'), change: "ne"}, function (obj) { if (getState("hm-rpc.0.NBO0079980.1.STATE").val == true) { sendTo("telegram", "send", { text: 'Feuer in Schlafzimmer' }); } else if (getState("hm-rpc.0.NBO0080211.1.STATE").val == true) { sendTo("telegram", "send", { text: 'Feuer auf Dachboden' }); } else if (getState("hm-rpc.0.NBO0080360.1.STATE").val == true) { sendTo("telegram", "send", { text: 'Feuer in Bibliothek' }); } });
-
Meine sind auch in einer Gruppe. Getestet habe ich es noch nicht. Wenn du Zeit und Lust hast…..
-
Habe es getestet.
Versuch 1: Die Rauchmelder gingen zwar alle los. Aber das Script hat gar keine Message geschickt. :shock:
Versuch 2: An anderem Rauchmelder. Hier hat es korrekt funktioniert und er hat mir den Raum genannt, in dem ich getestet habe.
Versuch 3: Rauchmelder aus Versuch 1, ist nochmal angesprungen.. diesmal hat er auch hier die Message des Raumes geschickt.
Hören die Rauchmelder eigentlich auch auf, wenn kein Qualm mehr im Raum ist? Denn bei Versuch 2 ist er von alleine wieder ausgegangen.
Benutzt ihr unterschiedliche Gruppen/Teams?
Schade dass man Rauchmelder nicht mehreren Gruppen/Teams zuweisen kann.
-
Die Rauchmelder müssen soweit ich weiss nach Vds nach einer bestimmten Zeit aufhören, jo.
-
Nur mal so...
sicher das du/Ihr so eine wichtige Funktion nach ioBroker auslagern wollt?
Es gibt bewährte Sachen die direkt auf der CCU laufen wodurch man mögliche Verzögerungen und zusätzliche Probleme ausschließen kann.