NEWS
Push Skript Alarmbenachrichtigung
-
Hallo BuZZy,
` > Was ist hm-rpc.0.*NBO0010787.1.STATE? Das Script soll ablaufen, sobald sich bei dem Datenpunkt hm-rpc.0.*NBO0010787.1.STATE etwas tut?
Ist das so gewollt? Normalerweise "hört" man ja alle Rauchmelder ab und sobald sich da irgendwas tut, soll das Script laufen und prüfen welcher "true" meldet. `
Das Objekt ist das HM Rauchmelder Team, also quasi die Gruppe. Die geht automatisch auf true sobald ein Melder auf true geht.
Das mit der Fuktion hab ich übersehen. Vielen Dank, das werde ich testen. Hab das aus dem LowBatt Skript zusammengeschustert
Gruß
Markus
-
Also jetzt funktioniert das Senden wie erwartet (Hab mal einen Melder manuell auf true gestellt) Allerdings kommt der Name nicht mit. Der Fixtext (Feueralarm und Ausloesender Melder) wird gesendet aber die Variable nicht :?:
-
..Allerdings kommt der Name nicht mit. `
Dann nimm mal das, und zeige wie der Name aussieht der dann gesendet wird.
createState('Feueralarm.textALARM',''); var cacheSelectorSTATE = $('channel[state.id=*.STATE](functions=Rauchmelder)'); function melderCheck(obj) { var textALARM = []; cacheSelectorSTATE.each(function (id, i) { var status = getState(id).val; var obj = getObject(id); if (status === true) { textALARM.push(obj.common.name); sendTo("pushover.2", "send", { message: "FEUERALARM" + "\n" + "Ausloesender Melder: " + obj.common.name , sound: "siren", priority: 2, retry: 60, expire: 3600 }); } }); setState("Feueralarm.textALARM", textALARM.join(', ')); } cacheSelectorSTATE.on(function(obj) { melderCheck(obj); });
Gruß
-
> Dann nimm mal das, und zeige wie der Name aussieht der dann gesendet wird.
Besser, Die 2. Zeile der Pushnachricht lautet jetzt: "Ausloesender Melder: Eingang.STATE".
Weißt du noch wie ich das .STATE wegbekomme?
-
Ja, so:
createState('Feueralarm.textALARM',''); var cacheSelectorSTATE = $('channel[state.id=*.STATE](functions=Rauchmelder)'); function melderCheck(obj) { var textALARM = []; cacheSelectorSTATE.each(function (id, i) { var status = getState(id).val; var obj = getObject(id); if (status === true) { textALARM.push(obj.common.name.substr(0, obj.common.name.indexOf(':'))); sendTo("pushover.2", "send", { message: "FEUERALARM" + "\n" + "Ausloesender Melder: " + obj.common.name.substr(0, obj.common.name.indexOf('.')), sound: "siren", priority: 2, retry: 60, expire: 3600 }); } }); setState("Feueralarm.textALARM", textALARM.join(', ')); } cacheSelectorSTATE.on(function(obj) { melderCheck(obj); });
Gruß
-
Perfekt! Funktioniert. DANKE!
-
Hallo!
ich habe meine Geräte für den Feueralarm im Gewerk "Sicherheit" erfasst.
Da sich hier auch andere Gerätetypen befinden müsste ich die Liste auf den Gerätetyp "HM-Sec-SD-2" einschränlen.
Wie kann ich das beim cacheSelectorSTATE machen oder kann dich den Typ später beim Versand bestimmen?
Danke
Klaus
-
Perfekt! Funktioniert. DANKE! `
Kurze Frage zu dem Script.
Wo / wie kommt denn der "State == True" zustande?
Die Rauchmelder haben doch einen SMOKE_DETECTOR_ALARM_STATUS, der einen Wert von 0-3 (Rauchalarm = 1) annimmt.
Ich verstehe das mit den State nicht so ganz.
Danke
-
oder anders gefragt:
in Kanal 1 gibt es 4 Variablen vom Type "State".
an welcher Stelle im Script wird denn ausgewertet, welche das ist?
Bei einem Test am Gerät wird ja keine Nachricht per Push verschickt …..
Danke für die Hilfe, fuchse mich in JS gerade ein und stehe teilweise noch vor Problemen die Scripte zu verstehen.
-
nachdem ich mir hier viewtopic.php?p=229735#p229735 berechtigterweise eine "Backpfeife" abgeholt habe nehme ich die Diskussion hier noch einmal auf.
Mein Script sieht derzeit wie folgt aus:
! ````
createState('Feueralarm.textALARM','');
! var cacheSelectorSTATE = $('channelstate.id=*.STATE');
! function melderCheck(obj) {
var textALARM = [];cacheSelectorSTATE.each(function (id, i) { var status = getState(id).val; var obj = getObject(id); if (status === true) { textALARM.push(obj.common.name.substr(0, obj.common.name.indexOf(':'))); sendTo("pushover.1", "send", { message: "FEUERALARM" + "\n" + "Ausloesender Melder: " + obj.common.name.substr(0, obj.common.name.indexOf('.')), sound: "siren", priority: 2, retry: 60, expire: 3600 }); } });
setState("Feueralarm.textALARM", textALARM.join(', '));
}! cacheSelectorSTATE.on(function(obj) {
melderCheck(obj);
});was, wie gesagt nicht funktioniert, aber mich schleicht, als hätte ich das mit den Funktionsgruppen nicht verstanden (siehe meine fragen oben nach den States). Also: muss in die Funktionsgruppen der Channel (in diesem Fall Kanal 1) oder der State an sich. Zur Verdeutlichung: Meine "Rauchmelder" Gruppe sieht aus wie im Bild unten. Ist das richtig, oder muss es eher sein wie in der Gruppe "Test" in die ich nun mal nur den eigentlichen Sate Datenpunkt gelegt habe. ![](https://cdn.pbrd.co/images/HZMNAgN.png)~~![](</s><URL url=)https://cdn.pbrd.co/images/HZMNAgN.png" />~~
-
Versuche es so:
var cacheSelectorSTATE = $('channel[state.id=*.STATE](functions=rauchmelder)');
-
werde ich machen und testen, geht nur derzeit nicht.
das mit den States ist mir aber immer noch nicht klar (siehe meine Posts vom 05.01)