NEWS
Rauchmelder Skript
-
@Dominik-F Setzt du die Homematic IP Rauchmelder HMIP-SWSD ein? Ich hätte Interesse an deinem Skript. Könntest du in deinem ersten Beitrag die aktuelle Version deines Skriptes einstellen bzw. bei neuen Erkenntnissen das Skript dort aktualisieren?
-
@Dominik-F Setzt du die Homematic IP Rauchmelder HMIP-SWSD ein? Ich hätte Interesse an deinem Skript. Könntest du in deinem ersten Beitrag die aktuelle Version deines Skriptes einstellen bzw. bei neuen Erkenntnissen das Skript dort aktualisieren?
@cash
Gerade das mit dem html war mir nicht klar :D Danke für deine Erklärung@Feuersturm
Nein, ich nutze keine HM IP, falls der Datenpunkt STATE dort auch existiert würde ich es einfach mal testen. Falls es nicht funktioniert kann man es vielleicht so umschreiben, dass es auch damit funktioniert.
Hab das aktuelle Skript oben eingestellt -
Hallo zusammen,
ich habe mit etwas Unterstützung ein Rauchmelder Skript laufen, dass mit, im Falle eines Alarms, per Push eine Nachricht schickt, welcher Rauchmelder von HM ausgelöst hat.
Da dort alle Rauchmelder im Log erkannt werden bin ich davon ausgegangen das es funktioniert. Gestern habe ich jedoch durch meine E-Zigarette ausversehen den im Wohnzimmer ausgelöst und festgestellt, dass das Skript nicht funktioniert. Kann mir da jemand helfen?var logging = true; var debugging = true; var observation = true; //Dauerhafte Überwachung der Geräte auf Rauch (true = aktiv // false =inaktiv) var onetime = true; //Prüft beim Script Start ob derzeit Geräte Rauch erkennen const prio_Rauchmelder = 0; //Variablen für Pushover const sendpush = true; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt const pushover_Instanz0 = 'pushover.0'; // Pushover instance für HM Alarme const pushover_Instanz1 = 'pushover.1'; // Pushover instance für HM Warnungen const pushover_Instanz2 = 'pushover.2'; // Pushover instance für Zigbee Alarme const pushover_Instanz3 = 'pushover.3'; // Pushover instance für Zigbee Warnung var prio = -2; //nicht verändern die höchste Prio nach Fehlertyp wird verwendet var titel; var message; var device = 'Handy_Domi'; //Welches Gerät soll die Nachricht bekommen //var device = 'All'; function send_pushover (device, message, titel, prio) { var pushover_Instanz; if (prio === 0){pushover_Instanz = pushover_Instanz0;} else if (prio == 1){pushover_Instanz = pushover_Instanz1;} else if (prio == 2){pushover_Instanz = pushover_Instanz2;} else {pushover_Instanz = pushover_Instanz3;} sendTo(pushover_Instanz, { device: device, message: message, title: titel, priority: 0, }); } //Ab hier eigentliches Script var cacheSelectorSmoke = $('channel[state.id=hm-rpc.0.*.1.ERROR_SMOKE_CHAMBER-1_ALARM$]'); function Smoke(obj) { var meldungsart = 'Rauch erkannt'; var Gesamt = 0; var Betroffen = 0; var text = []; var _message_tmp = ' '; var log_manuell = false; if (obj) { var common_name = obj.common.name.substr(0, obj.common.name.indexOf(':')); var status = obj.newState.val; var status_text; if(status){ status_text = 'Rauch erkannt'; } else{ status_text = 'kein Rauch'; } var id_name = obj.id.split('.')[2]; log(common_name +' ('+id_name +') ' +'--- Typ: '+meldungsart +' --- Status: ' +status_text); } else { if(debugging){ log('[DEBUG] '+'Function ' +meldungsart +' wird gestartet.'); } log_manuell = true; } cacheSelectorSmoke.each(function (id, i) {// Schleife für jedes gefundenen Element *.LOWBAT var obj = getObject(id); //var common_name = getObject(id).common.name.substr(0, obj.common.name.indexOf(':')); var common_name = getObject(id.substring(0, id.lastIndexOf('.') - 2)).common.name; var id_name = id.split('.')[2]; var native_type = getObject(id.substring(0, id.lastIndexOf('.') - 2)).native.TYPE; var meldungsart = id.split('.')[4]; var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss"); var datum_neu; var datum_seit; if(datum < '01.01.71 01:00:00'){ datum_seit = ''; datum_neu = ''; }else{ datum_seit= ' --- seit: '; datum_neu = datum +' Uhr'; } var status = getState(id).val; var status_text; if(status){ status_text = 'Rauch erkannt'; } else{ status_text = 'kein Rauch'; } if (status === true) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt ++Betroffen; text.push(common_name +' ('+id_name +')'); // Zu Array hinzufügen _message_tmp = _message_tmp +common_name +' ('+id_name +')' + ' - <font color="red">Rauch erkannt</font> '+'\n'; } ++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status if(debugging){ log('[DEBUG] '+'Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit +datum_neu); } }); // Schleife ist durchlaufen. Im Log wird der aktuelle Status ausgegeben if(Betroffen > 0){ if(debugging || log_manuell){ log('Es gibt: '+Gesamt +' Geräte im Gewerk ' +meldungsart+'. Derzeit: '+Betroffen +' Meldung(en).'); } if(Betroffen >1){ if(logging){ log('Übersicht aller Meldungen im Gewerk: ' +meldungsart +': '+ text.join(', ')); } } //Push verschicken if(sendpush && !log_manuell){ prio = prio_Rauchmelder; titel = 'Rauch erkannt'; message = _message_tmp; send_pushover (device, message, titel, prio); } } else{ if((debugging) || (onetime && log_manuell)){ if(Gesamt === 0){ log('Keine Geräte zum überwachen gefunden.'); } else{ log(Gesamt +' Geräte mit dem Datenpunkt ' +meldungsart+' werden überwacht.'); } } } } //Auslösen durch Zustandsänderung if(observation){ cacheSelectorSmoke.on(function(obj) { Smoke(obj); }); } if(onetime){ //beim Start Smoke(); }Hier der Log beim Starten des Skriptes:
javascript.0 2020-02-16 17:54:32.984 info (13024) script.js.common.Rauchmelder: registered 7 subscriptions and 0 schedules javascript.0 2020-02-16 17:54:32.984 info (13024) script.js.common.Rauchmelder: 7 Geräte mit dem Datenpunkt Rauch erkannt werden überwacht. javascript.0 2020-02-16 17:54:32.984 info (13024) script.js.common.Rauchmelder: [DEBUG] Geräte Nr. 6 Name: OG_Treppenhaus_Rauchmelder (NEQ1029056) --- HM-Sec-SD-2 --- Typ: ERROR_SMOKE_CHAMBER-1_ALARM --- Status: 0 kein Rauch javascript.0 2020-02-16 17:54:32.984 info (13024) script.js.common.Rauchmelder: [DEBUG] Geräte Nr. 5 Name: EG_Diele_Rauchmelder (NEQ1029037) --- HM-Sec-SD-2 --- Typ: ERROR_SMOKE_CHAMBER-1_ALARM --- Status: 0 kein Rauch javascript.0 2020-02-16 17:54:32.983 info (13024) script.js.common.Rauchmelder: [DEBUG] Geräte Nr. 4 Name: EG_Wohnzimmer_Rauchmelder (NEQ1028984) --- HM-Sec-SD-2 --- Typ: ERROR_SMOKE_CHAMBER-1_ALARM --- Status: 0 kein Rauch javascript.0 2020-02-16 17:54:32.983 info (13024) script.js.common.Rauchmelder: [DEBUG] Geräte Nr. 3 Name: OG_Schlafzimmer_Rauchmelder (NEQ1028652) --- HM-Sec-SD-2 --- Typ: ERROR_SMOKE_CHAMBER-1_ALARM --- Status: 0 kein Rauch javascript.0 2020-02-16 17:54:32.983 info (13024) script.js.common.Rauchmelder: [DEBUG] Geräte Nr. 2 Name: OG_Diele_Rauchmelder (NEQ1028645) --- HM-Sec-SD-2 --- Typ: ERROR_SMOKE_CHAMBER-1_ALARM --- Status: 0 kein Rauch javascript.0 2020-02-16 17:54:32.982 info (13024) script.js.common.Rauchmelder: [DEBUG] Geräte Nr. 1 Name: OG_Kinderzimmer_Hinten_Rauchmelder (NEQ1028635) --- HM-Sec-SD-2 --- Typ: ERROR_SMOKE_CHAMBER-1_ALARM --- Status: 0 kein Rauch javascript.0 2020-02-16 17:54:32.982 info (13024) script.js.common.Rauchmelder: [DEBUG] Geräte Nr. 0 Name: OG_Kinderzimmer_Vorne_Rauchmelder (NEQ1028629) --- HM-Sec-SD-2 --- Typ: ERROR_SMOKE_CHAMBER-1_ALARM --- Status: 0 kein Rauch javascript.0 2020-02-16 17:54:32.981 info (13024) script.js.common.Rauchmelder: [DEBUG] Function Rauch erkannt wird gestartet. javascript.0 2020-02-16 17:54:32.833 info (13024) Start javascript script.js.common.RauchmelderEdit:
Hier nun die aktuelle funktionierende Version (wird wenn es Veränderungen gibt aktualisiert) :var logging = true; var debugging = false; var observation = true; //Dauerhafte Überwachung der Geräte auf Rauch (true = aktiv // false =inaktiv) var onetime = true; //Prüft beim Script Start ob derzeit Geräte Rauch erkennen const prio_Rauchmelder = 0; //Variablen für Pushover const sendpush = true; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt const pushover_Instanz0 = 'pushover.0'; // Pushover instance für HM Alarme const pushover_Instanz1 = 'pushover.1'; // Pushover instance für HM Warnungen const pushover_Instanz2 = 'pushover.2'; // Pushover instance für Zigbee Alarme const pushover_Instanz3 = 'pushover.3'; // Pushover instance für Zigbee Warnung var prio = -2; //nicht verändern die höchste Prio nach Fehlertyp wird verwendet var titel; var message; var device = 'All'; //Welches Gerät soll die Nachricht bekommen function send_pushover (device, message, titel, prio) { var pushover_Instanz; if (prio === 0){pushover_Instanz = pushover_Instanz0;} else if (prio == 1){pushover_Instanz = pushover_Instanz1;} else if (prio == 2){pushover_Instanz = pushover_Instanz2;} else {pushover_Instanz = pushover_Instanz3;} sendTo(pushover_Instanz, { device: device, message: message, title: titel, priority: 2, retry: 60, expire: 600, html: 1 }); } //Ab hier eigentliches Script var cacheSelectorSmoke = $('*.STATE(functions=rauchmelder)'); function Smoke(obj) { var meldungsart = 'Rauch erkannt'; var Gesamt = 0; var Betroffen = 0; var text = []; var _message_tmp = ' '; var log_manuell = false; if (obj) { var common_name = obj.common.name.substr(0, obj.common.name.indexOf(':')); var status = obj.newState.val; var status_text; if(status){ status_text = 'Rauch erkannt'; } else{ status_text = 'kein Rauch'; } var id_name = obj.id.split('.')[2]; log(common_name +' ('+id_name +') ' +'--- Typ: '+meldungsart +' --- Status: ' +status_text); } else { if(debugging){ log('[DEBUG] '+'Function ' +meldungsart +' wird gestartet.'); } log_manuell = true; } cacheSelectorSmoke.each(function (id, i) {// Schleife für jedes gefundenen Element *.LOWBAT var obj = getObject(id); //var common_name = getObject(id).common.name.substr(0, obj.common.name.indexOf(':')); var common_name = getObject(id.substring(0, id.lastIndexOf('.') - 2)).common.name; var id_name = id.split('.')[2]; var native_type = getObject(id.substring(0, id.lastIndexOf('.') - 2)).native.TYPE; var meldungsart = id.split('.')[4]; var datum = formatDate(getState(id).lc, "TT.MM.JJ SS:mm:ss"); var datum_neu; var datum_seit; if(datum < '01.01.71 01:00:00'){ datum_seit = ''; datum_neu = ''; }else{ datum_seit= ' --- seit: '; datum_neu = datum +' Uhr'; } var status = getState(id).val; var status_text; if(status){ status_text = 'Rauch erkannt'; } else{ status_text = 'kein Rauch'; } if (status === true) { // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt ++Betroffen; text.push(common_name +' ('+id_name +')'); // Zu Array hinzufügen _message_tmp = _message_tmp +common_name +' ('+id_name +')' + ' - <font color="red">Rauch erkannt</font> '+'\n'; } ++Gesamt; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status if(debugging){ log('[DEBUG] '+'Geräte Nr. ' +i +' Name: '+ common_name +' ('+id_name+') --- '+native_type +' --- Typ: '+meldungsart +' --- Status: ' +status +' ' +status_text +datum_seit +datum_neu); } }); // Schleife ist durchlaufen. Im Log wird der aktuelle Status ausgegeben if(Betroffen > 0){ if(debugging || log_manuell){ log('Es gibt: '+Gesamt +' Geräte im Gewerk ' +meldungsart+'. Derzeit: '+Betroffen +' Meldung(en).'); } if(Betroffen >1){ if(logging){ log('Übersicht aller Meldungen im Gewerk: ' +meldungsart +': '+ text.join(', ')); } } //Push verschicken if(sendpush && !log_manuell){ prio = prio_Rauchmelder; titel = 'Rauch erkannt'; message = _message_tmp; send_pushover (device, message, titel, prio); } } else{ if((debugging) || (onetime && log_manuell)){ if(Gesamt === 0){ log('Keine Geräte zum überwachen gefunden.'); } else{ log(Gesamt +' Geräte mit dem Datenpunkt ' +meldungsart+' werden überwacht.'); } } } } //Auslösen durch Zustandsänderung if(observation){ cacheSelectorSmoke.on(function(obj) { Smoke(obj); }); } if(onetime){ //beim Start Smoke(); } -
@Dominik-F sagte:
var cacheSelectorSmoke = $('*.STATE(functions=rauchmelder)').each(function(id, i) {log(id);});
Zeile 39: Das ist eine Testfunktion. Richtige Variable:
var cacheSelectorSmoke = $('*.STATE(functions=rauchmelder)');Danke schön, hab es im ersten Post aktualisiert
-
@cash
Gerade das mit dem html war mir nicht klar :D Danke für deine Erklärung@Feuersturm
Nein, ich nutze keine HM IP, falls der Datenpunkt STATE dort auch existiert würde ich es einfach mal testen. Falls es nicht funktioniert kann man es vielleicht so umschreiben, dass es auch damit funktioniert.
Hab das aktuelle Skript oben eingestellt@Dominik-F Dankeschön.
Die HMIP-SWSD haben folgende Datenpunkte:

SMOKE_DETECTOR_ALARM_STATUS
"0": "IDLE_OFF",
"1": "PRIMARY_ALARM",
"2": "INTRUSION_ALARM",
"3": "SECONDARY_ALARM"SMOKE_DETECTOR_COMMAND
"0": "RESERVED_ALARM_OFF",
"1": "INTRUSION_ALARM_OFF",
"2": "INTRUSION_ALARM",
"3": "SMOKE_TEST",
"4": "COMMUNICATION_TEST",
"5": "COMMUNICATION_TEST_REPEATEDSMOKE_DETECTOR_TEST_RESULT
"0": "NONE",
"1": "SMOKE_TEST_OK",
"2": "SMOKE_TEST_FAILED",
"3": "COMMUNICATION_TEST_SENT",
"4": "COMMUNICATION_TEST_OK"Ich werde in den nächsten Tagen einmal schauen, dass ich dein Skript verstehe und ob ich es für die HMIP-SWSD Rauchmelder anpassen kann. Heute werde ich vermutlich nicht mehr dazu kommen.
-
@Dominik-F Dankeschön.
Die HMIP-SWSD haben folgende Datenpunkte:

SMOKE_DETECTOR_ALARM_STATUS
"0": "IDLE_OFF",
"1": "PRIMARY_ALARM",
"2": "INTRUSION_ALARM",
"3": "SECONDARY_ALARM"SMOKE_DETECTOR_COMMAND
"0": "RESERVED_ALARM_OFF",
"1": "INTRUSION_ALARM_OFF",
"2": "INTRUSION_ALARM",
"3": "SMOKE_TEST",
"4": "COMMUNICATION_TEST",
"5": "COMMUNICATION_TEST_REPEATEDSMOKE_DETECTOR_TEST_RESULT
"0": "NONE",
"1": "SMOKE_TEST_OK",
"2": "SMOKE_TEST_FAILED",
"3": "COMMUNICATION_TEST_SENT",
"4": "COMMUNICATION_TEST_OK"Ich werde in den nächsten Tagen einmal schauen, dass ich dein Skript verstehe und ob ich es für die HMIP-SWSD Rauchmelder anpassen kann. Heute werde ich vermutlich nicht mehr dazu kommen.
ich muss da jedoch ehrlich zu dir sein. Ich habe von @cash ein Skript für einen Wassermelder bekommen und habe das dann verändert und mit seiner und @paul53 Hilfe das nun zum laufen bekommen, daher werde ich dir da nur schwer helfen können. Ich würde mich natürlich freuen wenn am Ende ein Skript rauskommt, was sowohl HM als auch HMIP Geräte findet und damit funktioniert. Vielleicht klappt es ja mit zusammenarbeit von allen :)
-
Da bin ich guter Dinge, dass die Zusammenarbeit hier im Forum klappt. Ich stehe auch noch am Anfang meiner Programmierkünste. Bisher konnte ich aber jedes Problem durch Suchen oder durch die Hilfe von anderen Users hier im Forum lösen.
Vielleicht kommt ja auch noch der Hinweis zu einem fertigen Skript, welches die HMIP Rauchmelder überwacht, welches ich bisher noch nicht gefunden habe.
-
ich muss da jedoch ehrlich zu dir sein. Ich habe von @cash ein Skript für einen Wassermelder bekommen und habe das dann verändert und mit seiner und @paul53 Hilfe das nun zum laufen bekommen, daher werde ich dir da nur schwer helfen können. Ich würde mich natürlich freuen wenn am Ende ein Skript rauskommt, was sowohl HM als auch HMIP Geräte findet und damit funktioniert. Vielleicht klappt es ja mit zusammenarbeit von allen :)
@Dominik-F @Feuersturm Das Script sollte doch auch für HmIP funktionieren. Einfach testen. Im Script sollte halt noch die Pushover Ergänzungen rein. Und dann die Feuermelder halt in die entsprechende Gruppe packen. Ich vermute auch die werden mittel State laufen.
Ohne Gewähr - sollte aber passen.
-
@Dominik-F @Feuersturm Das Script sollte doch auch für HmIP funktionieren. Einfach testen. Im Script sollte halt noch die Pushover Ergänzungen rein. Und dann die Feuermelder halt in die entsprechende Gruppe packen. Ich vermute auch die werden mittel State laufen.
Ohne Gewähr - sollte aber passen.
Laut seinen Datenpunkten gibt es den Datenpunkt STATE bei HMIP nicht. Denke das einzige Problem wird wieder sein, den richtigen Datenpunkt zu finden und zu ergänzen
-
Da bin ich guter Dinge, dass die Zusammenarbeit hier im Forum klappt. Ich stehe auch noch am Anfang meiner Programmierkünste. Bisher konnte ich aber jedes Problem durch Suchen oder durch die Hilfe von anderen Users hier im Forum lösen.
Vielleicht kommt ja auch noch der Hinweis zu einem fertigen Skript, welches die HMIP Rauchmelder überwacht, welches ich bisher noch nicht gefunden habe.
@Feuersturm Ah hatte Deine Datenpunkte nicht gesehen. Stimmt das passt so nicht zusammen und müsste entsprechend angepasst werden.
-
@Feuersturm Ah hatte Deine Datenpunkte nicht gesehen. Stimmt das passt so nicht zusammen und müsste entsprechend angepasst werden.
Ich habe mal etwas gesucht, weil ich das nun auch mal umsetzen möchte. Zu den HMIP Rauchmeldern habe ich folgende Info gefunden.
SMOKE_DETECTOR_ALARM_STATUS
Die Zustände sind wie folgt:
0 = Kein Alarm steht an
1 = Brandalarm an diesem Melder erkannt
2 = Der Melder signalisiert einen Einbruchalarm
3 = Ein anderer Melder hat einen Brandalarm erkannt, dieser wurde auch an diesem Melder signalisiertDas ist dieser DP
{ "type": "state", "common": { "def": "IDLE_OFF", "type": "number", "read": true, "write": false, "min": 0, "max": 3, "states": { "0": "IDLE_OFF", "1": "PRIMARY_ALARM", "2": "INTRUSION_ALARM", "3": "SECONDARY_ALARM" }, "name": "Rauchmelder Wohnzimmer.SMOKE_DETECTOR_ALARM_STATUS" }, "native": { "MIN": "IDLE_OFF", "OPERATIONS": 5, "MAX": "SECONDARY_ALARM", "FLAGS": 1, "ID": "SMOKE_DETECTOR_ALARM_STATUS", "TYPE": "ENUM", "DEFAULT": "IDLE_OFF", "VALUE_LIST": [ "IDLE_OFF", "PRIMARY_ALARM", "INTRUSION_ALARM", "SECONDARY_ALARM" ], "CONTROL": "DANGER.STATE" }, "from": "system.adapter.hm-rpc.0", "user": "system.user.admin", "ts": 1581756986839, "_id": "hm-rpc.0.xxx.1.SMOKE_DETECTOR_ALARM_STATUS", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }Müßte sich dann auch umsetzen lassen ( ich mach das dann mal per Blockly für mich)
-
Ich habe mal etwas gesucht, weil ich das nun auch mal umsetzen möchte. Zu den HMIP Rauchmeldern habe ich folgende Info gefunden.
SMOKE_DETECTOR_ALARM_STATUS
Die Zustände sind wie folgt:
0 = Kein Alarm steht an
1 = Brandalarm an diesem Melder erkannt
2 = Der Melder signalisiert einen Einbruchalarm
3 = Ein anderer Melder hat einen Brandalarm erkannt, dieser wurde auch an diesem Melder signalisiertDas ist dieser DP
{ "type": "state", "common": { "def": "IDLE_OFF", "type": "number", "read": true, "write": false, "min": 0, "max": 3, "states": { "0": "IDLE_OFF", "1": "PRIMARY_ALARM", "2": "INTRUSION_ALARM", "3": "SECONDARY_ALARM" }, "name": "Rauchmelder Wohnzimmer.SMOKE_DETECTOR_ALARM_STATUS" }, "native": { "MIN": "IDLE_OFF", "OPERATIONS": 5, "MAX": "SECONDARY_ALARM", "FLAGS": 1, "ID": "SMOKE_DETECTOR_ALARM_STATUS", "TYPE": "ENUM", "DEFAULT": "IDLE_OFF", "VALUE_LIST": [ "IDLE_OFF", "PRIMARY_ALARM", "INTRUSION_ALARM", "SECONDARY_ALARM" ], "CONTROL": "DANGER.STATE" }, "from": "system.adapter.hm-rpc.0", "user": "system.user.admin", "ts": 1581756986839, "_id": "hm-rpc.0.xxx.1.SMOKE_DETECTOR_ALARM_STATUS", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }Müßte sich dann auch umsetzen lassen ( ich mach das dann mal per Blockly für mich)
-
@dslraser
Dieser $Selector sollte genügen:const cacheSelectorSmoke = $('*.SMOKE_DETECTOR_ALARM_STATUS');@paul53
ich wollte gerade anfangen :blush:
Meine 6 Melder werden auch gefunden
17.2.2020, 22:25:12.450 [info ]: javascript.0 (4842) Stop script script.js.Rauchmelder.Rauchmelder_Auslöser 17.2.2020, 22:25:12.538 [info ]: javascript.0 (4842) Start javascript script.js.Rauchmelder.Rauchmelder_Auslöser 17.2.2020, 22:25:12.545 [info ]: javascript.0 (4842) script.js.Rauchmelder.Rauchmelder_Auslöser: registered 6 subscriptions and 0 schedules -
@dslraser
Dieser $Selector sollte genügen:const cacheSelectorSmoke = $('*.SMOKE_DETECTOR_ALARM_STATUS');@paul53 sagte in Rauchmelder Skript:
@dslraser
Dieser $Selector sollte genügen:const cacheSelectorSmoke = $('*.SMOKE_DETECTOR_ALARM_STATUS');ich mußte var statt const schreiben, sonst kamen Fehler.
Script Start aus dem ersten Beitrag mit dem HMIP Selector
17.2.2020, 22:32:19.153 [info ]: javascript.0 (4842) Stop script script.js.Rauchmelder.Skript_1 17.2.2020, 22:32:19.238 [info ]: javascript.0 (4842) Start javascript script.js.Rauchmelder.Skript_1 17.2.2020, 22:32:19.340 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Function Rauch erkannt wird gestartet. 17.2.2020, 22:32:19.341 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 0 Name: Rauchmelder Keller Flur_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.341 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 1 Name: Rauchmelder Flur_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.342 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 2 Name: Rauchmelder Wohnzimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 17.02.20 21:45:20 Uhr 17.2.2020, 22:32:19.342 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 3 Name: Rauchmelder Gästezimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.343 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 4 Name: Rauchmelder Keller Wohnzimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.344 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 5 Name: Rauchmelder Schlafzimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.344 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: 6 Geräte mit dem Datenpunkt Rauch erkannt werden überwacht. 17.2.2020, 22:32:19.344 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: registered 6 subscriptions and 0 schedulesBeim Wohnzimmer habe ich vorhin in den Datenpunkten "gespielt", deshalb heute "Rauch erkannt"
-
@paul53 sagte in Rauchmelder Skript:
@dslraser
Dieser $Selector sollte genügen:const cacheSelectorSmoke = $('*.SMOKE_DETECTOR_ALARM_STATUS');ich mußte var statt const schreiben, sonst kamen Fehler.
Script Start aus dem ersten Beitrag mit dem HMIP Selector
17.2.2020, 22:32:19.153 [info ]: javascript.0 (4842) Stop script script.js.Rauchmelder.Skript_1 17.2.2020, 22:32:19.238 [info ]: javascript.0 (4842) Start javascript script.js.Rauchmelder.Skript_1 17.2.2020, 22:32:19.340 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Function Rauch erkannt wird gestartet. 17.2.2020, 22:32:19.341 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 0 Name: Rauchmelder Keller Flur_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.341 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 1 Name: Rauchmelder Flur_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.342 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 2 Name: Rauchmelder Wohnzimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 17.02.20 21:45:20 Uhr 17.2.2020, 22:32:19.342 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 3 Name: Rauchmelder Gästezimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.343 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 4 Name: Rauchmelder Keller Wohnzimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.344 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: [DEBUG] Geräte Nr. 5 Name: Rauchmelder Schlafzimmer_Dev (xxx) --- HmIP-SWSD --- Typ: SMOKE_DETECTOR_ALARM_STATUS --- Status: 0 kein Rauch --- seit: 11.12.19 13:34:06 Uhr 17.2.2020, 22:32:19.344 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: 6 Geräte mit dem Datenpunkt Rauch erkannt werden überwacht. 17.2.2020, 22:32:19.344 [info ]: javascript.0 (4842) script.js.Rauchmelder.Skript_1: registered 6 subscriptions and 0 schedulesBeim Wohnzimmer habe ich vorhin in den Datenpunkten "gespielt", deshalb heute "Rauch erkannt"
-
avascript.0 2020-02-17 22:54:21.348 error (4842) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2020-02-17 22:54:21.348 error (4842) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) javascript.0 2020-02-17 22:54:21.348 error (4842) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-02-17 22:54:21.348 error (4842) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:580:17) javascript.0 2020-02-17 22:54:21.348 error (4842) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1055:17) javascript.0 2020-02-17 22:54:21.348 error (4842) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1464:17) javascript.0 2020-02-17 22:54:21.348 error (4842) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1411:37) javascript.0 2020-02-17 22:54:21.347 error (4842) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1188:28) javascript.0 2020-02-17 22:54:21.347 error (4842) at Object.createScript (vm.js:277:10) javascript.0 2020-02-17 22:54:21.347 error (4842) at new Script (vm.js:83:7) javascript.0 2020-02-17 22:54:21.347 error (4842) SyntaxError: Identifier 'cacheSelectorSmoke' has already been declared javascript.0 2020-02-17 22:54:21.347 error (4842) ^ javascript.0 2020-02-17 22:54:21.347 error (4842) const cacheSelectorSmoke = $('*.SMOKE_DETECTOR_ALARM_STATUS'); javascript.0 2020-02-17 22:54:21.347 error at script.js.Rauchmelder.Skript_1:38 javascript.0 2020-02-17 22:54:21.347 error (4842) script.js.Rauchmelder.Skript_1 compile failed:Script Engine 4.4.2
-
avascript.0 2020-02-17 22:54:21.348 error (4842) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2020-02-17 22:54:21.348 error (4842) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) javascript.0 2020-02-17 22:54:21.348 error (4842) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-02-17 22:54:21.348 error (4842) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:580:17) javascript.0 2020-02-17 22:54:21.348 error (4842) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1055:17) javascript.0 2020-02-17 22:54:21.348 error (4842) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1464:17) javascript.0 2020-02-17 22:54:21.348 error (4842) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1411:37) javascript.0 2020-02-17 22:54:21.347 error (4842) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1188:28) javascript.0 2020-02-17 22:54:21.347 error (4842) at Object.createScript (vm.js:277:10) javascript.0 2020-02-17 22:54:21.347 error (4842) at new Script (vm.js:83:7) javascript.0 2020-02-17 22:54:21.347 error (4842) SyntaxError: Identifier 'cacheSelectorSmoke' has already been declared javascript.0 2020-02-17 22:54:21.347 error (4842) ^ javascript.0 2020-02-17 22:54:21.347 error (4842) const cacheSelectorSmoke = $('*.SMOKE_DETECTOR_ALARM_STATUS'); javascript.0 2020-02-17 22:54:21.347 error at script.js.Rauchmelder.Skript_1:38 javascript.0 2020-02-17 22:54:21.347 error (4842) script.js.Rauchmelder.Skript_1 compile failed:Script Engine 4.4.2
-
@dslraser sagte:
SyntaxError: Identifier 'cacheSelectorSmoke' has already been declared
Eine Konstante kann nur einmal deklariert werden. Wo erfolgt die erste Deklaration ?
@paul53
Ich habe nur das komplette Script aus dem ersten Beitrag genommen und den zweiten Selector eingefügt.Edit: muss der "zweite" Selector anders heißen, wenn man den ersten drinn läßt ?
-
@paul53
Ich habe nur das komplette Script aus dem ersten Beitrag genommen und den zweiten Selector eingefügt.Edit: muss der "zweite" Selector anders heißen, wenn man den ersten drinn läßt ?
-
@dslraser sagte:
und den zweiten Selector eingefügt.
Mit gleichem Bezeichner cacheSelectorSmoke eingefügt, nicht ersetzt ? Dann ist die Fehlermeldung logisch.
@paul53 sagte in Rauchmelder Skript:
Mit gleichem Bezeichner cacheSelectorSmoke eingefügt, nicht ersetzt ? Dann ist die Fehlermeldung logisch.
ja, habe ich. Ich lerne ja noch...
Ich hatte es einen Beitrag über Deinem als Edit eingefügt.
Und ist ein var quasi auch ein const ?