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. [gelöst]Zigbee Wassermelder

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    340

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

[gelöst]Zigbee Wassermelder

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
20 Beiträge 4 Kommentatoren 1.0k Aufrufe 2 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 versucht ein funktionierendes Skript von @cash für HM Wassermelder umzuschreiben, damit das für einen Zigbee Wassermelder von Aquara funktioniert.
    Aus dem Log ist denke ich mal ersichtlich wo der Fehler liegen könnte, jedoch ist mir das ganze noch etwas zu hoch.

    Vielleicht hat ja jemand von euch eine Idee:

    Hier das Skript:

    // jshint maxerr:2000
    /**************************
    
    Verschickt eine Pushmittteilung bei Meldungen vom Wassermelder
    15.02.19 V1.00 Erste Version
    03.03.19 V1.01 Push wurde micht verschickt
                  Logging optimiert
    **************************/
    var logging = true;
    var debugging = true;
    
    var observation = true; //Dauerhafte Überwachung der Geräte auf Servicemeldungen aktiv (true = aktiv // false =inaktiv)
    var onetime = true; //Prüft beim Script Start ob derzeit Geräte eine Servicemeldung haben
    
    //pro Fehlertyp kann eine andere Prio genutzt werden
    var prio_Water_leak = 0;
    
    //Variablen für Pushover
    var sendpush = true; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
    var _prio;
    var _titel;
    var _message;
    //var _device = 'TPhone'; //Welches Gerät soll die Nachricht bekommen
    var _device = 'Handy_Domi';
    
    //Ab hier eigentliches Script
    
    var cacheSelectorWater_leak_detected = $('zigbee.0.*.detected');
    
    function send_pushover_V4 (_device, _message, _titel, _prio) {
    var pushover_Instanz = 'pushover.0';
    if (_prio === 0){pushover_Instanz = 'pushover.0'}
    else if (_prio == 1){pushover_Instanz = 'pushover.1'}
    else if (_prio == 2){pushover_Instanz = 'pushover.2'}
    else {pushover_Instanz = 'pushover.3'}
    sendTo(pushover_Instanz, {
    device: _device,
    message: _message,
    title: _titel,
    priority: _prio,
    retry: 60,
    expire: 600,
    html: 1
    });
    }
    
    function water_detected(obj) {
    var meldungsart = 'Wasser';
    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 = 'Wasser erkannt';
        }
        else{
            status_text = 'kein Wasser';    
        }
        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;
    } 
    
    cacheSelectorWater_leak_detected.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 = 'Wasser erkannt';
        }
        else{
            status_text = 'kein Wasser';    
        }
    
        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">Wasser 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_Water_leak;
            _titel = 'Wasser erkannt';
            _message = _message_tmp;
            send_pushover_V4(_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){
    cacheSelectorWater_leak_detected.on(function(obj) {
    water_detected(obj);
    });
    
    }
    
    if(onetime){
    //beim Start
    water_detected();
    }
    

    Hier mein Log:

    javascript.0	2020-01-05 14:51:17.968	error	(5821) at Script.runInContext (vm.js:133:20)
    javascript.0	2020-01-05 14:51:17.967	error	(5821) at script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:156:1
    javascript.0	2020-01-05 14:51:17.967	error	(5821) at water_detected (script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:75:34)
    javascript.0	2020-01-05 14:51:17.966	error	(5821) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:846:29)
    javascript.0	2020-01-05 14:51:17.966	error	(5821) at script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:78:74
    javascript.0	2020-01-05 14:51:17.966	error	(5821) TypeError: Cannot read property 'common' of null
    javascript.0	2020-01-05 14:51:17.965	error	(5821) ^
    javascript.0	2020-01-05 14:51:17.965	error	(5821) var common_name = getObject(id.substring(0, id.lastIndexOf('.') - 2)).common.name;
    javascript.0	2020-01-05 14:51:17.964	error	(5821) script.js.common.Geräte.IoBroker.Wassermelder_Zigbee: script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:78
    javascript.0	2020-01-05 14:51:17.963	warn	(5821) Object "zigbee.0.00158d00035983" does not exist
    javascript.0	2020-01-05 14:51:17.962	info	(5821) script.js.common.Geräte.IoBroker.Wassermelder_Zigbee: [DEBUG] Function Wasser wird gestartet.
    javascript.0	2020-01-05 14:51:17.949	info	(5821) Start javascript script.js.common.Geräte.IoBroker.Wassermelder_Zigbee
    javascript.0	2020-01-05 14:51:17.295	info	(5821) Stop script script.js.common.Geräte.IoBroker.Wassermelder_Zigbee
    
    cashC 2 Antworten Letzte Antwort
    0
    • Dominik F.D Dominik F.

      Hallo zusammen,

      ich habe versucht ein funktionierendes Skript von @cash für HM Wassermelder umzuschreiben, damit das für einen Zigbee Wassermelder von Aquara funktioniert.
      Aus dem Log ist denke ich mal ersichtlich wo der Fehler liegen könnte, jedoch ist mir das ganze noch etwas zu hoch.

      Vielleicht hat ja jemand von euch eine Idee:

      Hier das Skript:

      // jshint maxerr:2000
      /**************************
      
      Verschickt eine Pushmittteilung bei Meldungen vom Wassermelder
      15.02.19 V1.00 Erste Version
      03.03.19 V1.01 Push wurde micht verschickt
                    Logging optimiert
      **************************/
      var logging = true;
      var debugging = true;
      
      var observation = true; //Dauerhafte Überwachung der Geräte auf Servicemeldungen aktiv (true = aktiv // false =inaktiv)
      var onetime = true; //Prüft beim Script Start ob derzeit Geräte eine Servicemeldung haben
      
      //pro Fehlertyp kann eine andere Prio genutzt werden
      var prio_Water_leak = 0;
      
      //Variablen für Pushover
      var sendpush = true; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
      var _prio;
      var _titel;
      var _message;
      //var _device = 'TPhone'; //Welches Gerät soll die Nachricht bekommen
      var _device = 'Handy_Domi';
      
      //Ab hier eigentliches Script
      
      var cacheSelectorWater_leak_detected = $('zigbee.0.*.detected');
      
      function send_pushover_V4 (_device, _message, _titel, _prio) {
      var pushover_Instanz = 'pushover.0';
      if (_prio === 0){pushover_Instanz = 'pushover.0'}
      else if (_prio == 1){pushover_Instanz = 'pushover.1'}
      else if (_prio == 2){pushover_Instanz = 'pushover.2'}
      else {pushover_Instanz = 'pushover.3'}
      sendTo(pushover_Instanz, {
      device: _device,
      message: _message,
      title: _titel,
      priority: _prio,
      retry: 60,
      expire: 600,
      html: 1
      });
      }
      
      function water_detected(obj) {
      var meldungsart = 'Wasser';
      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 = 'Wasser erkannt';
          }
          else{
              status_text = 'kein Wasser';    
          }
          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;
      } 
      
      cacheSelectorWater_leak_detected.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 = 'Wasser erkannt';
          }
          else{
              status_text = 'kein Wasser';    
          }
      
          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">Wasser 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_Water_leak;
              _titel = 'Wasser erkannt';
              _message = _message_tmp;
              send_pushover_V4(_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){
      cacheSelectorWater_leak_detected.on(function(obj) {
      water_detected(obj);
      });
      
      }
      
      if(onetime){
      //beim Start
      water_detected();
      }
      

      Hier mein Log:

      javascript.0	2020-01-05 14:51:17.968	error	(5821) at Script.runInContext (vm.js:133:20)
      javascript.0	2020-01-05 14:51:17.967	error	(5821) at script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:156:1
      javascript.0	2020-01-05 14:51:17.967	error	(5821) at water_detected (script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:75:34)
      javascript.0	2020-01-05 14:51:17.966	error	(5821) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:846:29)
      javascript.0	2020-01-05 14:51:17.966	error	(5821) at script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:78:74
      javascript.0	2020-01-05 14:51:17.966	error	(5821) TypeError: Cannot read property 'common' of null
      javascript.0	2020-01-05 14:51:17.965	error	(5821) ^
      javascript.0	2020-01-05 14:51:17.965	error	(5821) var common_name = getObject(id.substring(0, id.lastIndexOf('.') - 2)).common.name;
      javascript.0	2020-01-05 14:51:17.964	error	(5821) script.js.common.Geräte.IoBroker.Wassermelder_Zigbee: script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:78
      javascript.0	2020-01-05 14:51:17.963	warn	(5821) Object "zigbee.0.00158d00035983" does not exist
      javascript.0	2020-01-05 14:51:17.962	info	(5821) script.js.common.Geräte.IoBroker.Wassermelder_Zigbee: [DEBUG] Function Wasser wird gestartet.
      javascript.0	2020-01-05 14:51:17.949	info	(5821) Start javascript script.js.common.Geräte.IoBroker.Wassermelder_Zigbee
      javascript.0	2020-01-05 14:51:17.295	info	(5821) Stop script script.js.common.Geräte.IoBroker.Wassermelder_Zigbee
      
      cashC Offline
      cashC Offline
      cash
      Most Active
      schrieb am zuletzt editiert von
      #2

      @Dominik-F Zeile 78 bis zum Datumsfeld sind das Problem. Dort werden einige Infos vom Datenpunkt zusammen gesucht.
      So ein Script ist kein universal Script. Deshalb sollte man es für seine Bedürfnisse entsprechend anpassen. Es hängt viel vom Aufbau der Objekte ab. Bei Homematic sind sie anders wie bei allen anderen und von daher ist es klar das das Script nicht läuft... Du solltest mehr logging einbauen um zu sehen was genau wo passiert evtl verstehst Du dann was das Script macht

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

        Hallo zusammen,

        ich habe versucht ein funktionierendes Skript von @cash für HM Wassermelder umzuschreiben, damit das für einen Zigbee Wassermelder von Aquara funktioniert.
        Aus dem Log ist denke ich mal ersichtlich wo der Fehler liegen könnte, jedoch ist mir das ganze noch etwas zu hoch.

        Vielleicht hat ja jemand von euch eine Idee:

        Hier das Skript:

        // jshint maxerr:2000
        /**************************
        
        Verschickt eine Pushmittteilung bei Meldungen vom Wassermelder
        15.02.19 V1.00 Erste Version
        03.03.19 V1.01 Push wurde micht verschickt
                      Logging optimiert
        **************************/
        var logging = true;
        var debugging = true;
        
        var observation = true; //Dauerhafte Überwachung der Geräte auf Servicemeldungen aktiv (true = aktiv // false =inaktiv)
        var onetime = true; //Prüft beim Script Start ob derzeit Geräte eine Servicemeldung haben
        
        //pro Fehlertyp kann eine andere Prio genutzt werden
        var prio_Water_leak = 0;
        
        //Variablen für Pushover
        var sendpush = true; //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
        var _prio;
        var _titel;
        var _message;
        //var _device = 'TPhone'; //Welches Gerät soll die Nachricht bekommen
        var _device = 'Handy_Domi';
        
        //Ab hier eigentliches Script
        
        var cacheSelectorWater_leak_detected = $('zigbee.0.*.detected');
        
        function send_pushover_V4 (_device, _message, _titel, _prio) {
        var pushover_Instanz = 'pushover.0';
        if (_prio === 0){pushover_Instanz = 'pushover.0'}
        else if (_prio == 1){pushover_Instanz = 'pushover.1'}
        else if (_prio == 2){pushover_Instanz = 'pushover.2'}
        else {pushover_Instanz = 'pushover.3'}
        sendTo(pushover_Instanz, {
        device: _device,
        message: _message,
        title: _titel,
        priority: _prio,
        retry: 60,
        expire: 600,
        html: 1
        });
        }
        
        function water_detected(obj) {
        var meldungsart = 'Wasser';
        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 = 'Wasser erkannt';
            }
            else{
                status_text = 'kein Wasser';    
            }
            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;
        } 
        
        cacheSelectorWater_leak_detected.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 = 'Wasser erkannt';
            }
            else{
                status_text = 'kein Wasser';    
            }
        
            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">Wasser 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_Water_leak;
                _titel = 'Wasser erkannt';
                _message = _message_tmp;
                send_pushover_V4(_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){
        cacheSelectorWater_leak_detected.on(function(obj) {
        water_detected(obj);
        });
        
        }
        
        if(onetime){
        //beim Start
        water_detected();
        }
        

        Hier mein Log:

        javascript.0	2020-01-05 14:51:17.968	error	(5821) at Script.runInContext (vm.js:133:20)
        javascript.0	2020-01-05 14:51:17.967	error	(5821) at script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:156:1
        javascript.0	2020-01-05 14:51:17.967	error	(5821) at water_detected (script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:75:34)
        javascript.0	2020-01-05 14:51:17.966	error	(5821) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:846:29)
        javascript.0	2020-01-05 14:51:17.966	error	(5821) at script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:78:74
        javascript.0	2020-01-05 14:51:17.966	error	(5821) TypeError: Cannot read property 'common' of null
        javascript.0	2020-01-05 14:51:17.965	error	(5821) ^
        javascript.0	2020-01-05 14:51:17.965	error	(5821) var common_name = getObject(id.substring(0, id.lastIndexOf('.') - 2)).common.name;
        javascript.0	2020-01-05 14:51:17.964	error	(5821) script.js.common.Geräte.IoBroker.Wassermelder_Zigbee: script.js.common.Geräte.IoBroker.Wassermelder_Zigbee:78
        javascript.0	2020-01-05 14:51:17.963	warn	(5821) Object "zigbee.0.00158d00035983" does not exist
        javascript.0	2020-01-05 14:51:17.962	info	(5821) script.js.common.Geräte.IoBroker.Wassermelder_Zigbee: [DEBUG] Function Wasser wird gestartet.
        javascript.0	2020-01-05 14:51:17.949	info	(5821) Start javascript script.js.common.Geräte.IoBroker.Wassermelder_Zigbee
        javascript.0	2020-01-05 14:51:17.295	info	(5821) Stop script script.js.common.Geräte.IoBroker.Wassermelder_Zigbee
        
        cashC Offline
        cashC Offline
        cash
        Most Active
        schrieb am zuletzt editiert von
        #3

        @Dominik-F Zeile 56 wird auch nicht funktionieren. Die Zeile wird aber nur aufgerufen wenn es eine Meldung gibt

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

          @Dominik-F Zeile 56 wird auch nicht funktionieren. Die Zeile wird aber nur aufgerufen wenn es eine Meldung gibt

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

          @cash

          Ja, ich hatte gehofft das es einfach wäre umzuschreiben :D Dein Script ist schon sehr komplex und für mich, der gerade mal die einfachsten Skripte etwas umschreiben kann, leider völlig unmöglich dieses umzuschreiben :/ es hat mich schon allein stunden gekostet den Teil:

          var cacheSelectorWater_leak_detected = $('zigbee.0.*.detected');
          

          für Zigbee umzuschreiben. Vielleicht gibts hier ja jemanden der sich mit der Objektstrucktur von Zigbee auskennt und helfen kann, dies umzuschreiben

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

            @cash

            Ja, ich hatte gehofft das es einfach wäre umzuschreiben :D Dein Script ist schon sehr komplex und für mich, der gerade mal die einfachsten Skripte etwas umschreiben kann, leider völlig unmöglich dieses umzuschreiben :/ es hat mich schon allein stunden gekostet den Teil:

            var cacheSelectorWater_leak_detected = $('zigbee.0.*.detected');
            

            für Zigbee umzuschreiben. Vielleicht gibts hier ja jemanden der sich mit der Objektstrucktur von Zigbee auskennt und helfen kann, dies umzuschreiben

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

            @Dominik-F sagte:

            mit der Objektstrucktur von Zigbee auskennt

            Zeigen !!

            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:

              mit der Objektstrucktur von Zigbee auskennt

              Zeigen !!

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

              @paul53

              Unbenannt.PNG

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

                @paul53

                Unbenannt.PNG

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

                @Dominik-F
                Hast Du mehr als einen Wassermelder ? Wenn nicht, ist das verwendete Script viel zu komplex und für Deine Objektstruktur ungeeignet.

                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
                  Hast Du mehr als einen Wassermelder ? Wenn nicht, ist das verwendete Script viel zu komplex und für Deine Objektstruktur ungeeignet.

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

                  @paul53

                  Ich habe nur einen Wassermelder der über Zigbee läuft. Habe noch einen von HMIP der mit dem ursprünglichem Skript von Cash läuft und auch funktioniert. Daher bin ich auf die Idee gekommen, dass ich das einfach umschreiben könnte und später in das andere Skript einfügen könnte um beide über ein Skript laufen zu lassen und hab in meiner unwissenheit nicht damit gerechnet, das es so komplex ist.

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

                    @paul53

                    Ich habe nur einen Wassermelder der über Zigbee läuft. Habe noch einen von HMIP der mit dem ursprünglichem Skript von Cash läuft und auch funktioniert. Daher bin ich auf die Idee gekommen, dass ich das einfach umschreiben könnte und später in das andere Skript einfügen könnte um beide über ein Skript laufen zu lassen und hab in meiner unwissenheit nicht damit gerechnet, das es so komplex ist.

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

                    @Dominik-F Du hast nur einen Wassermelder von Homematic? Dann würde ich mein Script definitv nicht nutzen. Overkill.

                    Du kannst doch genau auf diesen einen Datenpunkt abfragen entweder per Java oder per Blockly....

                    Um nur ein Gerät zu überwachen braucht es nicht viele Zeilen. Auch der Name vom Auslöser muss nicht ermittelt werden. Es ist la klar welcher Wassermelder sich meldet. Mach ein Script pro Wassermelder und fertig...

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

                      @Dominik-F Du hast nur einen Wassermelder von Homematic? Dann würde ich mein Script definitv nicht nutzen. Overkill.

                      Du kannst doch genau auf diesen einen Datenpunkt abfragen entweder per Java oder per Blockly....

                      Um nur ein Gerät zu überwachen braucht es nicht viele Zeilen. Auch der Name vom Auslöser muss nicht ermittelt werden. Es ist la klar welcher Wassermelder sich meldet. Mach ein Script pro Wassermelder und fertig...

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

                      @cash

                      Da hast du wahrscheinlich recht. Dann werde ich mich daran mal versuchen :)

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

                        @cash

                        Da hast du wahrscheinlich recht. Dann werde ich mich daran mal versuchen :)

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

                        @Dominik-F Nutzt Du Telegram? Ich schicke Dir Morgen ggf. mal ein Beispiel für den Homematic Wassermelder, das kann man dann leicht für das Zigbee-Teil erweitern...

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

                          @Dominik-F Nutzt Du Telegram? Ich schicke Dir Morgen ggf. mal ein Beispiel für den Homematic Wassermelder, das kann man dann leicht für das Zigbee-Teil erweitern...

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

                          @cash

                          Vielen Dank, du bist mir eine große Hilfe.

                          Nein, ich nutze nur Pushover.

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

                            @cash

                            Vielen Dank, du bist mir eine große Hilfe.

                            Nein, ich nutze nur Pushover.

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

                            @Dominik-F Gut macht es einfacher für mich...

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

                              @cash

                              Vielen Dank, du bist mir eine große Hilfe.

                              Nein, ich nutze nur Pushover.

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

                              @Dominik-F Du musst die drei Triggerpunkte anpassen und beim dritten weiß ich nicht wie der meldet ob z. B. mit true oder false oder mit Zahl? Das mußt Du dann auch anpassen. Texte nach belieben. Habe es nicht getestet, sollte aber funktionieren

                              /*****************************************+
                               * Push bei Wassermeldung
                               * 
                               * 05.01.20 V1.00   Erste Version
                               * 
                               ****************************************/
                              var logging = true;
                              var debugging = false;
                              var sendpush = true;        // Push wenn Wasser erkannt wird
                              var sendpush_1 = true;        // Push wenn Wassermeldung beendet wurde
                              
                              let _prio;
                              let _titel = 'Wasserschaden';
                              let _message;
                              //let _device = 'TPhone'; 
                              let _device = 'All';
                              var tmp;
                              
                              var id_Trigger_1 = 'hm-rpc.2.001898A997FD42.1.WATERLEVEL_DETECTED'/*Küche Wassermelder:1 WATERLEVEL DETECTED*/
                              var id_Trigger_2 = 'hm-rpc.2.001898A997FD42.1.MOISTURE_DETECTED'/*Küche Wassermelder:1 MOISTURE DETECTED*/
                              var id_Trigger_3 = 'zigbee'
                              
                              function send_pushover (_device, _message, _titel, _prio) {
                                  var pushover_Instanz =  'pushover.0';
                                      if (_prio === 0){pushover_Instanz =  'pushover.0';}
                                      else if (_prio == 1){pushover_Instanz =  'pushover.1';}
                                      else if (_prio == 2){pushover_Instanz =  'pushover.2';}
                                      else {pushover_Instanz =  'pushover.3';}
                                      sendTo(pushover_Instanz, { 
                                      device: _device,
                                      message: _message, 
                                      title: _titel, 
                                      priority: _prio
                                  }); 
                              }
                              
                              function func_Wasser(){
                                  var Status_1 = getState(id_Trigger_1).val;
                                  var Status_2 = getState(id_Trigger_2).val;
                                  var Status_3 = getState(id_Trigger_3).val;
                                  var status_text_1;
                                  var status_text_2;
                                  var status_text_3;
                                  if(Status_1){
                                      status_text_1 = 'Wasser erkannt';
                                  }
                                  else{
                                      status_text_1 = 'keine Wasser';    
                                  }
                                  if(Status_2){
                                      status_text_2 = 'Feuchtigkeit erkannt';
                                  }
                                  else{
                                      status_text_2 = 'keine Feuchtigkeit';    
                                  }
                                  if(Status_3 == 1){
                                      status_text_3 = 'Wasser erkannt';
                                  }
                                  else{
                                      status_text_3 = 'keine Wasser';    
                                  }
                                  if(debugging){
                                      log('Status1_' +Status_1 +' --- Status2: ' +Status_2 +' --- Status3: ' +Status_3)
                                  }
                                  if(Status_1 || Status_2 || Status_3 == 1){
                                      tmp = 'Meldung vom Wassermelder. Status vom ersten Melder: '+status_text_1 +' --- Status vom zweiten Melder: '+status_text_2 +' --- Status vom dritten Melder: '+status_text_3;
                                      if(logging){
                                          log(tmp);
                                      }
                                      if(sendpush){
                                          _prio = 2;
                                          _message = tmp; 
                                          send_pushover(_device, _message, _titel, _prio);
                                      }
                              
                                  }
                                  else{
                                      tmp = 'Meldung vom  Wassermelder aufgehoben. Status vom ersten Melder: '+status_text_1 +' --- Status vom zweiten Melder: '+status_text_2 +' --- Status vom dritten Melder: '+status_text_3;
                                      if(logging){
                                          log(tmp);
                                      }
                                      if(sendpush_1){
                                          _prio = 0;
                                          _message = tmp;
                                          send_pushover(_device, _message, _titel, _prio);
                                      }    
                              
                                  }     
                              }
                              
                              on({id: id_Trigger_1, change: 'ne', ack: true}, func_Wasser);
                              on({id: id_Trigger_2, change: 'ne', ack: true}, func_Wasser);
                              on({id: id_Trigger_3, change: 'ne', ack: true}, func_Wasser);
                              
                              
                              
                              Dominik F.D 1 Antwort Letzte Antwort
                              0
                              • cashC cash

                                @Dominik-F Du musst die drei Triggerpunkte anpassen und beim dritten weiß ich nicht wie der meldet ob z. B. mit true oder false oder mit Zahl? Das mußt Du dann auch anpassen. Texte nach belieben. Habe es nicht getestet, sollte aber funktionieren

                                /*****************************************+
                                 * Push bei Wassermeldung
                                 * 
                                 * 05.01.20 V1.00   Erste Version
                                 * 
                                 ****************************************/
                                var logging = true;
                                var debugging = false;
                                var sendpush = true;        // Push wenn Wasser erkannt wird
                                var sendpush_1 = true;        // Push wenn Wassermeldung beendet wurde
                                
                                let _prio;
                                let _titel = 'Wasserschaden';
                                let _message;
                                //let _device = 'TPhone'; 
                                let _device = 'All';
                                var tmp;
                                
                                var id_Trigger_1 = 'hm-rpc.2.001898A997FD42.1.WATERLEVEL_DETECTED'/*Küche Wassermelder:1 WATERLEVEL DETECTED*/
                                var id_Trigger_2 = 'hm-rpc.2.001898A997FD42.1.MOISTURE_DETECTED'/*Küche Wassermelder:1 MOISTURE DETECTED*/
                                var id_Trigger_3 = 'zigbee'
                                
                                function send_pushover (_device, _message, _titel, _prio) {
                                    var pushover_Instanz =  'pushover.0';
                                        if (_prio === 0){pushover_Instanz =  'pushover.0';}
                                        else if (_prio == 1){pushover_Instanz =  'pushover.1';}
                                        else if (_prio == 2){pushover_Instanz =  'pushover.2';}
                                        else {pushover_Instanz =  'pushover.3';}
                                        sendTo(pushover_Instanz, { 
                                        device: _device,
                                        message: _message, 
                                        title: _titel, 
                                        priority: _prio
                                    }); 
                                }
                                
                                function func_Wasser(){
                                    var Status_1 = getState(id_Trigger_1).val;
                                    var Status_2 = getState(id_Trigger_2).val;
                                    var Status_3 = getState(id_Trigger_3).val;
                                    var status_text_1;
                                    var status_text_2;
                                    var status_text_3;
                                    if(Status_1){
                                        status_text_1 = 'Wasser erkannt';
                                    }
                                    else{
                                        status_text_1 = 'keine Wasser';    
                                    }
                                    if(Status_2){
                                        status_text_2 = 'Feuchtigkeit erkannt';
                                    }
                                    else{
                                        status_text_2 = 'keine Feuchtigkeit';    
                                    }
                                    if(Status_3 == 1){
                                        status_text_3 = 'Wasser erkannt';
                                    }
                                    else{
                                        status_text_3 = 'keine Wasser';    
                                    }
                                    if(debugging){
                                        log('Status1_' +Status_1 +' --- Status2: ' +Status_2 +' --- Status3: ' +Status_3)
                                    }
                                    if(Status_1 || Status_2 || Status_3 == 1){
                                        tmp = 'Meldung vom Wassermelder. Status vom ersten Melder: '+status_text_1 +' --- Status vom zweiten Melder: '+status_text_2 +' --- Status vom dritten Melder: '+status_text_3;
                                        if(logging){
                                            log(tmp);
                                        }
                                        if(sendpush){
                                            _prio = 2;
                                            _message = tmp; 
                                            send_pushover(_device, _message, _titel, _prio);
                                        }
                                
                                    }
                                    else{
                                        tmp = 'Meldung vom  Wassermelder aufgehoben. Status vom ersten Melder: '+status_text_1 +' --- Status vom zweiten Melder: '+status_text_2 +' --- Status vom dritten Melder: '+status_text_3;
                                        if(logging){
                                            log(tmp);
                                        }
                                        if(sendpush_1){
                                            _prio = 0;
                                            _message = tmp;
                                            send_pushover(_device, _message, _titel, _prio);
                                        }    
                                
                                    }     
                                }
                                
                                on({id: id_Trigger_1, change: 'ne', ack: true}, func_Wasser);
                                on({id: id_Trigger_2, change: 'ne', ack: true}, func_Wasser);
                                on({id: id_Trigger_3, change: 'ne', ack: true}, func_Wasser);
                                
                                
                                
                                Dominik F.D Offline
                                Dominik F.D Offline
                                Dominik F.
                                schrieb am zuletzt editiert von
                                #15

                                @cash

                                Wow, vielen Dank für deine Mühe! Der erste Test mit dem Zigbee Wassermelder hat funktioniert.
                                Ich werde jetzt versuchen, das Skript soweit zu ändern, dass wenn der Zigbee Wassermelder auf True geht, auch nur der Status von diesem verschickt wird. Falls ich mich da verrenne, darf ich dich dazu noch einmal anschreiben?
                                Ich bekomme jedoch eine Warnung :

                                	(13457) adapter.getMessage is deprecated and will be removed in js-controller 2.3. Please report this warning to the developer of this adapter!
                                

                                @Bluefox

                                Ich hoffe du bist der richtige Ansprechpartner für die Warnung bei dem Skript?

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

                                  @cash

                                  Wow, vielen Dank für deine Mühe! Der erste Test mit dem Zigbee Wassermelder hat funktioniert.
                                  Ich werde jetzt versuchen, das Skript soweit zu ändern, dass wenn der Zigbee Wassermelder auf True geht, auch nur der Status von diesem verschickt wird. Falls ich mich da verrenne, darf ich dich dazu noch einmal anschreiben?
                                  Ich bekomme jedoch eine Warnung :

                                  	(13457) adapter.getMessage is deprecated and will be removed in js-controller 2.3. Please report this warning to the developer of this adapter!
                                  

                                  @Bluefox

                                  Ich hoffe du bist der richtige Ansprechpartner für die Warnung bei dem Skript?

                                  BluefoxB Offline
                                  BluefoxB Offline
                                  Bluefox
                                  schrieb am zuletzt editiert von
                                  #16

                                  @Dominik-F Welche Version von zigbee adapter bringt diese Fehlermeldung?

                                  Dominik F.D 2 Antworten Letzte Antwort
                                  0
                                  • BluefoxB Bluefox

                                    @Dominik-F Welche Version von zigbee adapter bringt diese Fehlermeldung?

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

                                    @Bluefox
                                    0.11.5

                                    BluefoxB 1 Antwort Letzte Antwort
                                    0
                                    • BluefoxB Bluefox

                                      @Dominik-F Welche Version von zigbee adapter bringt diese Fehlermeldung?

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

                                      @Bluefox

                                      Die Meldung spuckt der pushover Adapter Version 1.1.1 aus jedoch nur wenn es um zigbee geht

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

                                        @Bluefox
                                        0.11.5

                                        BluefoxB Offline
                                        BluefoxB Offline
                                        Bluefox
                                        schrieb am zuletzt editiert von
                                        #19

                                        @Dominik-F Die Meldung wird in der Version 1.0.x verschwinden.

                                        Dominik F.D 1 Antwort Letzte Antwort
                                        0
                                        • BluefoxB Bluefox

                                          @Dominik-F Die Meldung wird in der Version 1.0.x verschwinden.

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

                                          @Bluefox

                                          Danke für dein schnelles Handeln

                                          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

                                          733

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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