Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Rauchmelder Skript

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Rauchmelder Skript

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptsecurity
52 Beiträge 6 Kommentatoren 5.2k Aufrufe 8 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Dominik F.D Offline
    Dominik F.D Offline
    Dominik F.
    schrieb am zuletzt editiert von Dominik F.
    #1

    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.Rauchmelder
    

    Edit:
    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();
    }
    
    
    cashC paul53P 2 Antworten Letzte Antwort
    0
    • Dominik F.D Dominik F.

      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.Rauchmelder
      

      Edit:
      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();
      }
      
      
      cashC Offline
      cashC Offline
      cash
      Most Active
      schrieb am zuletzt editiert von
      #2

      @Dominik-F Die Frage ist ja eher was das Log gesagt hat als der Melder ausgelöst wurde und welcher Datenpunkt in io. Broker welchen Status hatte?

      Dominik F.D 1 Antwort Letzte Antwort
      0
      • cashC cash

        @Dominik-F Die Frage ist ja eher was das Log gesagt hat als der Melder ausgelöst wurde und welcher Datenpunkt in io. Broker welchen Status hatte?

        Dominik F.D Offline
        Dominik F.D Offline
        Dominik F.
        schrieb am zuletzt editiert von
        #3

        @cash

        Der Log hat gar nichts gesagt, als ob nie was passiert wäre^^
        Mein Skript auf der CCU3 was ich Sicherheitshalber noch nicht gelöscht habe, hat funktioniert und mir eine Email geschickt.

        cashC 1 Antwort Letzte Antwort
        0
        • Dominik F.D Dominik F.

          @cash

          Der Log hat gar nichts gesagt, als ob nie was passiert wäre^^
          Mein Skript auf der CCU3 was ich Sicherheitshalber noch nicht gelöscht habe, hat funktioniert und mir eine Email geschickt.

          cashC Offline
          cashC Offline
          cash
          Most Active
          schrieb am zuletzt editiert von
          #4

          @Dominik-F Bleibt noch die Frage welches Objekt welchen Status hatte als er ausgelöst wurde? Das Script kann nur reagieren wenn in ioBroker etwas passiert...

          Dominik F.D 1 Antwort Letzte Antwort
          1
          • cashC cash

            @Dominik-F Bleibt noch die Frage welches Objekt welchen Status hatte als er ausgelöst wurde? Das Script kann nur reagieren wenn in ioBroker etwas passiert...

            Dominik F.D Offline
            Dominik F.D Offline
            Dominik F.
            schrieb am zuletzt editiert von
            #5

            @cash

            Ja da hatte ich jetzt nicht nachgeschaut weil es 23:30 Uhr war und ich das Ding so schnell wie möglich aus haben wollte :D

            cashC 1 Antwort Letzte Antwort
            0
            • Dominik F.D Dominik F.

              @cash

              Ja da hatte ich jetzt nicht nachgeschaut weil es 23:30 Uhr war und ich das Ding so schnell wie möglich aus haben wollte :D

              cashC Offline
              cashC Offline
              cash
              Most Active
              schrieb am zuletzt editiert von
              #6

              @Dominik-F Der Fehler wird in Zeile 37 liegen nur ohne das man weiß welcher State sich ändert wird man es nicht lösen können...

              Dominik F.D 2 Antworten Letzte Antwort
              0
              • cashC cash

                @Dominik-F Der Fehler wird in Zeile 37 liegen nur ohne das man weiß welcher State sich ändert wird man es nicht lösen können...

                Dominik F.D Offline
                Dominik F.D Offline
                Dominik F.
                schrieb am zuletzt editiert von
                #7

                @cash

                Kannst du aus diesem Skript, das in meiner CCU läuft vielleicht den State herrausfinden?

                ! HomeMatic-Script
                ! AUSGELöSTEN  RAUCHMELDER FINDEN
                ! http://www.christian-luetgens.de/homematic/e-mail/rauchmelder/Rauchmelder.htm
                
                ! VARIABLEN DEFINIEREN
                
                string s_chn;
                object o_chn;
                object o_dp;
                
                string s_true = "";
                string s_false = "";
                
                string s_subj;
                string s_body;
                integer i_template;
                
                ! RAUCHMELDER FINDEN UND STATUS ABFRAGEN
                
                foreach (s_chn, dom.GetObject(ID_CHANNELS).EnumUsedIDs()) {
                  o_chn = dom.GetObject (s_chn);
                  if (o_chn.HssType() == "SMOKE_DETECTOR") {
                    o_dp = o_chn.DPByHssDP ("STATE");
                    if (o_dp.Value()) {
                      s_true = s_true # "  " # o_chn.Name() # "\n";
                    } else {
                      s_false = s_false # "  " # o_chn.Name() # "\n";
                    }
                  }
                }
                
                ! SUBJECT, BODY UND ALARMIERUNG (FEHLER/STATUS) VORBEREITEN
                
                if (s_true == "") {
                  s_subj = "Rauchmelder sind OK";
                  s_true = "  keine\n";
                  i_template = 2;
                } else {
                  s_subj = "Rauchmelder haben ausgeloest";
                  i_template = 1;
                }
                
                if (s_false == "") {
                  s_false = "  keine\n";
                }
                
                s_body = "Rauchmelder ausgelöst:\n" # s_true # "\nRauchmelder OK:\n" # s_false;
                
                ! MAIL VERSENDEN
                
                dom.GetObject ("E-Mail.Subject").State (s_subj);
                dom.GetObject ("E-Mail.Body").State (s_body);
                dom.GetObject ("E-Mail.Versand").State (i_template);
                
                !  Ende des Scripts
                
                
                paul53P 1 Antwort Letzte Antwort
                0
                • Dominik F.D Dominik F.

                  @cash

                  Kannst du aus diesem Skript, das in meiner CCU läuft vielleicht den State herrausfinden?

                  ! HomeMatic-Script
                  ! AUSGELöSTEN  RAUCHMELDER FINDEN
                  ! http://www.christian-luetgens.de/homematic/e-mail/rauchmelder/Rauchmelder.htm
                  
                  ! VARIABLEN DEFINIEREN
                  
                  string s_chn;
                  object o_chn;
                  object o_dp;
                  
                  string s_true = "";
                  string s_false = "";
                  
                  string s_subj;
                  string s_body;
                  integer i_template;
                  
                  ! RAUCHMELDER FINDEN UND STATUS ABFRAGEN
                  
                  foreach (s_chn, dom.GetObject(ID_CHANNELS).EnumUsedIDs()) {
                    o_chn = dom.GetObject (s_chn);
                    if (o_chn.HssType() == "SMOKE_DETECTOR") {
                      o_dp = o_chn.DPByHssDP ("STATE");
                      if (o_dp.Value()) {
                        s_true = s_true # "  " # o_chn.Name() # "\n";
                      } else {
                        s_false = s_false # "  " # o_chn.Name() # "\n";
                      }
                    }
                  }
                  
                  ! SUBJECT, BODY UND ALARMIERUNG (FEHLER/STATUS) VORBEREITEN
                  
                  if (s_true == "") {
                    s_subj = "Rauchmelder sind OK";
                    s_true = "  keine\n";
                    i_template = 2;
                  } else {
                    s_subj = "Rauchmelder haben ausgeloest";
                    i_template = 1;
                  }
                  
                  if (s_false == "") {
                    s_false = "  keine\n";
                  }
                  
                  s_body = "Rauchmelder ausgelöst:\n" # s_true # "\nRauchmelder OK:\n" # s_false;
                  
                  ! MAIL VERSENDEN
                  
                  dom.GetObject ("E-Mail.Subject").State (s_subj);
                  dom.GetObject ("E-Mail.Body").State (s_body);
                  dom.GetObject ("E-Mail.Versand").State (i_template);
                  
                  !  Ende des Scripts
                  
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @Dominik-F sagte:

                  o_dp = o_chn.DPByHssDP ("STATE");
                  

                  Das HM-Script wertet den STATE aus, nicht den ERROR_SMOKE_CHAMBER-1_ALARM.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  Dominik F.D 1 Antwort Letzte Antwort
                  1
                  • paul53P paul53

                    @Dominik-F sagte:

                    o_dp = o_chn.DPByHssDP ("STATE");
                    

                    Das HM-Script wertet den STATE aus, nicht den ERROR_SMOKE_CHAMBER-1_ALARM.

                    Dominik F.D Offline
                    Dominik F.D Offline
                    Dominik F.
                    schrieb am zuletzt editiert von
                    #9

                    @paul53

                    also müsste ich dann im obrigen Skript auch den State auswerten und nochmal testen oder`?

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • Dominik F.D Dominik F.

                      @paul53

                      also müsste ich dann im obrigen Skript auch den State auswerten und nochmal testen oder`?

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von paul53
                      #10

                      @Dominik-F sagte:

                      also müsste ich dann im obrigen Skript auch den State auswerten und nochmal testen oder`?

                      Ja, wobei eine zusätzliche Selektion erforderlich ist, da viele HM-Geräte einen Datenpunkt haben, dessen ID auf STATE endet. Verwende das Gewerk(enum.functions) für die 7 STATE-Datenpunkte und selektiere danach.

                      $('*.STATE(functions=smoke)').each(function(id, i) {log(id);});
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      Dominik F.D 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @Dominik-F sagte:

                        also müsste ich dann im obrigen Skript auch den State auswerten und nochmal testen oder`?

                        Ja, wobei eine zusätzliche Selektion erforderlich ist, da viele HM-Geräte einen Datenpunkt haben, dessen ID auf STATE endet. Verwende das Gewerk(enum.functions) für die 7 STATE-Datenpunkte und selektiere danach.

                        $('*.STATE(functions=smoke)').each(function(id, i) {log(id);});
                        
                        Dominik F.D Offline
                        Dominik F.D Offline
                        Dominik F.
                        schrieb am zuletzt editiert von
                        #11

                        @paul53

                        ich habs jetzt geändert. hast du eine idee wie ich es testen kann ohne das die Rauchmelder losgehen und extrem laut sind?

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • Dominik F.D Dominik F.

                          @paul53

                          ich habs jetzt geändert. hast du eine idee wie ich es testen kann ohne das die Rauchmelder losgehen und extrem laut sind?

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #12

                          @Dominik-F sagte:

                          wie ich es testen kann ohne das die Rauchmelder losgehen und extrem laut sind?

                          Im Tab "Objekte" im Expertenmodus den Wert von STATE auf true ändern und anschließend wieder zurück auf false.

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          Dominik F.D 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @Dominik-F sagte:

                            wie ich es testen kann ohne das die Rauchmelder losgehen und extrem laut sind?

                            Im Tab "Objekte" im Expertenmodus den Wert von STATE auf true ändern und anschließend wieder zurück auf false.

                            Dominik F.D Offline
                            Dominik F.D Offline
                            Dominik F.
                            schrieb am zuletzt editiert von
                            #13

                            @paul53

                            sehr gut. Es kam sofort eine Pushnachricht an. Ich hoffe dann mal, dass es im ernstfall auch funktioniert :D

                            1 Antwort Letzte Antwort
                            0
                            • cashC cash

                              @Dominik-F Der Fehler wird in Zeile 37 liegen nur ohne das man weiß welcher State sich ändert wird man es nicht lösen können...

                              Dominik F.D Offline
                              Dominik F.D Offline
                              Dominik F.
                              schrieb am zuletzt editiert von
                              #14

                              Ich habe noch eine Frage zur Pushnachricht in dem Skript.
                              Normalerweise sollte die Schrift"Rauch erkannt" rot sein, jedoch wird sie nicht Rot angezeigt sondern so

                              - <font color="red">Rauch erkannt</font>
                              
                              cashC 1 Antwort Letzte Antwort
                              0
                              • Dominik F.D Dominik F.

                                Ich habe noch eine Frage zur Pushnachricht in dem Skript.
                                Normalerweise sollte die Schrift"Rauch erkannt" rot sein, jedoch wird sie nicht Rot angezeigt sondern so

                                - <font color="red">Rauch erkannt</font>
                                
                                cashC Offline
                                cashC Offline
                                cash
                                Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @Dominik-F Dir fehlt da noch was:

                                retry: 60,
                                expire: 600,
                                html: 1

                                Das hinzufügen. Dann funktionieren Prio 2 Meldungen auch besser. Denn wenn der Rauchmelder anspringt würde ich auf Prio2 gehen so dass man in Pushover bestätigen muss das man die Meldung wahrgenommen hat....

                                Dominik F.D 1 Antwort Letzte Antwort
                                0
                                • cashC cash

                                  @Dominik-F Dir fehlt da noch was:

                                  retry: 60,
                                  expire: 600,
                                  html: 1

                                  Das hinzufügen. Dann funktionieren Prio 2 Meldungen auch besser. Denn wenn der Rauchmelder anspringt würde ich auf Prio2 gehen so dass man in Pushover bestätigen muss das man die Meldung wahrgenommen hat....

                                  Dominik F.D Offline
                                  Dominik F.D Offline
                                  Dominik F.
                                  schrieb am zuletzt editiert von
                                  #16

                                  @cash

                                  ah, ich hab mich schon immer gefragt warum
                                  retry: 60,
                                  expire: 600,
                                  html: 1
                                  bei dir mit drin war :D Kannst du mir kurz erklären was die 3 Einträge genau bewirken?

                                  Prio hab ich jetzt auch geändert und Push funktioniert nun.

                                  cashC 1 Antwort Letzte Antwort
                                  0
                                  • Dominik F.D Dominik F.

                                    @cash

                                    ah, ich hab mich schon immer gefragt warum
                                    retry: 60,
                                    expire: 600,
                                    html: 1
                                    bei dir mit drin war :D Kannst du mir kurz erklären was die 3 Einträge genau bewirken?

                                    Prio hab ich jetzt auch geändert und Push funktioniert nun.

                                    cashC Offline
                                    cashC Offline
                                    cash
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #17

                                    @Dominik-F html sollte klar sein damit Dein red auch rot ist.
                                    Der 600er wert ist die Zeit wie lange Pushover Dich errinnert bevor es verfällt. Die 60 Die Pause zwischen den Pushnachrichten. Sobald Du in der App natürlich die Push bestätigt ist der Spuk vorbei.
                                    Mit der Einstellung bekommst Du wenn ich nicht ganz falsch liege max 10 Minuten jede Minute eine Push das Dein Rauchmelder an ist. Wenn Du bis dahin die Push nicht hörst wird auch ein höherer Wert nicht mehr helfen. Bitte dort nicht übertreiben. Dazu ggf. auch die FAQ von Pushover lesen.

                                    1 Antwort Letzte Antwort
                                    0
                                    • FeuersturmF Online
                                      FeuersturmF Online
                                      Feuersturm
                                      schrieb am zuletzt editiert von
                                      #18

                                      @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.D D 2 Antworten Letzte Antwort
                                      0
                                      • FeuersturmF Feuersturm

                                        @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.D Offline
                                        Dominik F.D Offline
                                        Dominik F.
                                        schrieb am zuletzt editiert von Dominik F.
                                        #19

                                        @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

                                        FeuersturmF 1 Antwort Letzte Antwort
                                        0
                                        • Dominik F.D Dominik F.

                                          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.Rauchmelder
                                          

                                          Edit:
                                          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();
                                          }
                                          
                                          
                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          schrieb am zuletzt editiert von
                                          #20

                                          @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)');
                                          

                                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                          Dominik F.D 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          885

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe