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. Neuer Javascript Adapter

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Neuer Javascript Adapter

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
2 Beiträge 2 Kommentatoren 194 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.
  • M Offline
    M Offline
    michihorn
    schrieb am zuletzt editiert von michihorn
    #1

    Hallo bislang habe ich den JavaScript-Adapter kleiner Version 8 genutzt.
    Habe aktuell auf einer Testmaschine den 8.8.3 installiert, nun kommt folgender Warnhinweis:

    javascript.0	22:30:48.991	info	Stopping script script.js.HAUS.Klingel.Klingel_Haustuer
    javascript.0	22:30:49.096	info	Start JavaScript script.js.HAUS.Klingel.Klingel_Haustuer (Javascript/js)
    javascript.0	22:30:49.135	warn	script.js.HAUS.Klingel.Klingel_Haustuer: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
    javascript.0	22:30:49.146	info	script.js.HAUS.Klingel.Klingel_Haustuer: registered 2 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
    

    Gruß
    Michael
    Da weiß ich nicht was ich ändern soll. Anbei hänge ich das Script.

    /*****Haustür Klingel*******************************************************************
    **    August 2020
    **    RING, Kamera
    **    
    **    Klingelsperre 80 Sekunden
    **    geä:21.09.20, 17.06.22, 20.10.22, 01.07.23; 18.07.23; 01.08.23, 06.10.23, 29.04.24
    *****************************************************************************************/
    
    const idKlingel = "ring.0.doorbell_90474299.Events.doorbell"
    const id_Ereignis = "0_userdata.0.Haus.Klingel.Ereignis"
    const id_Ereignisliste = "0_userdata.0.Haus.Klingel.Ereignisliste"
    const id_Zähler = "0_userdata.0.Haus.Klingel.Zaehler"
    const id_sperre = "0_userdata.0.Haus.Klingel.Sperre"
    const id_people = "0_userdata.0.System.CamNr"
    const id_rp5 = "ping.0.debianiob.RP5.alive"
    var anzahlbesucher
    var request = require('request');
    var fs = require('fs');
    
    on({ id: idKlingel, change: "any" }, function (obj) {
        //if ((obj.state.val == true) && getState(id_sperre).val == false && getState(id_people).val == 3){
        if ((obj.state.val == true) && getState(id_sperre).val == false) {
            setState(id_sperre, true)
            setState(id_Zähler, getState(id_Zähler).val + 1);
            var ereignis_text = formatDate(new Date(obj.state.ts), "hh:mm:ss");
            setState(id_Ereignis, ereignis_text.toString());
            log('Klingel Auslöser: ' + formatDate(new Date(obj.state.ts), "hh:mm:ss"));
            request({
                url: "http://192.168.178.7xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxxxxx", encoding: null,
            },
                (error, response, body) => {
                    if (!error && body) {
                               writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
                    }
                }
            );
        }
        setStateDelayed(id_sperre, false, 80000)
    });
    
    //Ereignisliste erstellen___________________________________________________________________________________________________
    function ereignis(text) {
        text = text.toString();
        var ereignisStr = getState(id_Ereignisliste).val;
        var ereignisArr;
    
        if (ereignisStr) {
            if (ereignisStr == "<ul><li></li></ul>") {
                ereignisArr = [];
            } else {
                ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
            }
        } else {
            ereignisArr = [];
        }
        ereignisArr = ereignisArr.reverse();
        ereignisArr.push(text);
        ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
        var str = ereignisArr.join("</li><li>");
        setState(id_Ereignisliste, "<ul><li>" + str + "</li></ul>");
    }
    on(id_Ereignis, function (data) {
        log('Ereignis ' + data.newState.val + ' übergeben');
        ereignis(data.newState.val);
    });
    
    //Ereignisse zurücksetzen
    on({ time: { hour: 23, minute: 59 } }, function () {
        setState(id_Zähler, 0);
        setState(id_Ereignis, "");
        setState(id_Ereignisliste, "");
        anzahlbesucher = 0;
        log("*****Klingelereignisse gelöscht***** ");
    });
    

    So funktioniert es mit dem neuen Javascript-Adapter:

    /*****Haustür Klingel******************************************************************************
    **    August 2020
    **    RING, Kamera
    **    
    **    
    **    geä:21.09.20, 17.06.22, 20.10.22, 01.07.23; 18.07.23; 01.08.23, 06.10.23, 29.04.24, 06.12.24
    ***************************************************************************************************/
    
    const idKlingel = "ring.0.doorbell_90474299.Events.doorbell"
    const id_Ereignis = "0_userdata.0.Haus.Klingel.Ereignis"
    const id_Ereignisliste = "0_userdata.0.Haus.Klingel.Ereignisliste"
    const id_Zähler = "0_userdata.0.Haus.Klingel.Zaehler"
    var anzahlbesucher
    
    on({ id: idKlingel, change: "any" }, function (obj) {
        if (obj.state.val == true) {
            setState(id_Zähler, getState(id_Zähler).val + 1);
            var ereignis_text = formatDate(new Date(obj.state.ts), "hh:mm:ss");
            setState(id_Ereignis, ereignis_text.toString());
            httpGet('http://192.168.178.1xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxx', { responseType: 'arraybuffer' }, async (err, response) => {
                if (!err) {
                    writeFile('vis.0', '/klingelbild/Klingel.jpg', response.data, (err) => {
                        if (err) {
                            console.error(err);
                        }
                    });
                } else {
                    console.error(err);
                }
            });
        }
    });
    
    function ereignis(text) {
        text = text.toString();
        var ereignisStr = getState(id_Ereignisliste).val;
        var ereignisArr;
     
        if (ereignisStr) {
            if (ereignisStr == "<ul><li></li></ul>") {
                ereignisArr = [];
            } else {
                ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
            }
        } else {
            ereignisArr = [];
        }
        ereignisArr = ereignisArr.reverse();
        ereignisArr.push(text);
        ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
        var str = ereignisArr.join("</li><li>");
        setState(id_Ereignisliste, "<ul><li>" + str + "</li></ul>");
    }
    on(id_Ereignis, function (data) {
        log('Ereignis ' + data.newState.val + ' übergeben');
        ereignis(data.newState.val);
    });
    
    //Ereignisse zurücksetzen
    on({ time: { hour: 23, minute: 59 } }, function () {
        setState(id_Zähler, 0);
        setState(id_Ereignis, "");
        setState(id_Ereignisliste, "");
        anzahlbesucher = 0;
        log("*****Klingelereignisse gelöscht***** ");
    });
    
    mcm1957M 1 Antwort Letzte Antwort
    0
    • M michihorn

      Hallo bislang habe ich den JavaScript-Adapter kleiner Version 8 genutzt.
      Habe aktuell auf einer Testmaschine den 8.8.3 installiert, nun kommt folgender Warnhinweis:

      javascript.0	22:30:48.991	info	Stopping script script.js.HAUS.Klingel.Klingel_Haustuer
      javascript.0	22:30:49.096	info	Start JavaScript script.js.HAUS.Klingel.Klingel_Haustuer (Javascript/js)
      javascript.0	22:30:49.135	warn	script.js.HAUS.Klingel.Klingel_Haustuer: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
      javascript.0	22:30:49.146	info	script.js.HAUS.Klingel.Klingel_Haustuer: registered 2 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
      

      Gruß
      Michael
      Da weiß ich nicht was ich ändern soll. Anbei hänge ich das Script.

      /*****Haustür Klingel*******************************************************************
      **    August 2020
      **    RING, Kamera
      **    
      **    Klingelsperre 80 Sekunden
      **    geä:21.09.20, 17.06.22, 20.10.22, 01.07.23; 18.07.23; 01.08.23, 06.10.23, 29.04.24
      *****************************************************************************************/
      
      const idKlingel = "ring.0.doorbell_90474299.Events.doorbell"
      const id_Ereignis = "0_userdata.0.Haus.Klingel.Ereignis"
      const id_Ereignisliste = "0_userdata.0.Haus.Klingel.Ereignisliste"
      const id_Zähler = "0_userdata.0.Haus.Klingel.Zaehler"
      const id_sperre = "0_userdata.0.Haus.Klingel.Sperre"
      const id_people = "0_userdata.0.System.CamNr"
      const id_rp5 = "ping.0.debianiob.RP5.alive"
      var anzahlbesucher
      var request = require('request');
      var fs = require('fs');
      
      on({ id: idKlingel, change: "any" }, function (obj) {
          //if ((obj.state.val == true) && getState(id_sperre).val == false && getState(id_people).val == 3){
          if ((obj.state.val == true) && getState(id_sperre).val == false) {
              setState(id_sperre, true)
              setState(id_Zähler, getState(id_Zähler).val + 1);
              var ereignis_text = formatDate(new Date(obj.state.ts), "hh:mm:ss");
              setState(id_Ereignis, ereignis_text.toString());
              log('Klingel Auslöser: ' + formatDate(new Date(obj.state.ts), "hh:mm:ss"));
              request({
                  url: "http://192.168.178.7xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxxxxx", encoding: null,
              },
                  (error, response, body) => {
                      if (!error && body) {
                                 writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
                      }
                  }
              );
          }
          setStateDelayed(id_sperre, false, 80000)
      });
      
      //Ereignisliste erstellen___________________________________________________________________________________________________
      function ereignis(text) {
          text = text.toString();
          var ereignisStr = getState(id_Ereignisliste).val;
          var ereignisArr;
      
          if (ereignisStr) {
              if (ereignisStr == "<ul><li></li></ul>") {
                  ereignisArr = [];
              } else {
                  ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
              }
          } else {
              ereignisArr = [];
          }
          ereignisArr = ereignisArr.reverse();
          ereignisArr.push(text);
          ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
          var str = ereignisArr.join("</li><li>");
          setState(id_Ereignisliste, "<ul><li>" + str + "</li></ul>");
      }
      on(id_Ereignis, function (data) {
          log('Ereignis ' + data.newState.val + ' übergeben');
          ereignis(data.newState.val);
      });
      
      //Ereignisse zurücksetzen
      on({ time: { hour: 23, minute: 59 } }, function () {
          setState(id_Zähler, 0);
          setState(id_Ereignis, "");
          setState(id_Ereignisliste, "");
          anzahlbesucher = 0;
          log("*****Klingelereignisse gelöscht***** ");
      });
      

      So funktioniert es mit dem neuen Javascript-Adapter:

      /*****Haustür Klingel******************************************************************************
      **    August 2020
      **    RING, Kamera
      **    
      **    
      **    geä:21.09.20, 17.06.22, 20.10.22, 01.07.23; 18.07.23; 01.08.23, 06.10.23, 29.04.24, 06.12.24
      ***************************************************************************************************/
      
      const idKlingel = "ring.0.doorbell_90474299.Events.doorbell"
      const id_Ereignis = "0_userdata.0.Haus.Klingel.Ereignis"
      const id_Ereignisliste = "0_userdata.0.Haus.Klingel.Ereignisliste"
      const id_Zähler = "0_userdata.0.Haus.Klingel.Zaehler"
      var anzahlbesucher
      
      on({ id: idKlingel, change: "any" }, function (obj) {
          if (obj.state.val == true) {
              setState(id_Zähler, getState(id_Zähler).val + 1);
              var ereignis_text = formatDate(new Date(obj.state.ts), "hh:mm:ss");
              setState(id_Ereignis, ereignis_text.toString());
              httpGet('http://192.168.178.1xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxx', { responseType: 'arraybuffer' }, async (err, response) => {
                  if (!err) {
                      writeFile('vis.0', '/klingelbild/Klingel.jpg', response.data, (err) => {
                          if (err) {
                              console.error(err);
                          }
                      });
                  } else {
                      console.error(err);
                  }
              });
          }
      });
      
      function ereignis(text) {
          text = text.toString();
          var ereignisStr = getState(id_Ereignisliste).val;
          var ereignisArr;
       
          if (ereignisStr) {
              if (ereignisStr == "<ul><li></li></ul>") {
                  ereignisArr = [];
              } else {
                  ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>");
              }
          } else {
              ereignisArr = [];
          }
          ereignisArr = ereignisArr.reverse();
          ereignisArr.push(text);
          ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken
          var str = ereignisArr.join("</li><li>");
          setState(id_Ereignisliste, "<ul><li>" + str + "</li></ul>");
      }
      on(id_Ereignis, function (data) {
          log('Ereignis ' + data.newState.val + ' übergeben');
          ereignis(data.newState.val);
      });
      
      //Ereignisse zurücksetzen
      on({ time: { hour: 23, minute: 59 } }, function () {
          setState(id_Zähler, 0);
          setState(id_Ereignis, "");
          setState(id_Ereignisliste, "");
          anzahlbesucher = 0;
          log("*****Klingelereignisse gelöscht***** ");
      });
      
      mcm1957M Offline
      mcm1957M Offline
      mcm1957
      schrieb am zuletzt editiert von mcm1957
      #2

      @michihorn
      Bitte verwende die SUCHFUNKTION. Zur Deprecation von request gibts gefühlt 100 Beiträge.

      Und schau mal in die Dokumentation:
      https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/upgrade-guide.md#request-to-httpget

      Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
      Support Repositoryverwaltung.

      Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

      LESEN - gute Forenbeitrage

      1 Antwort Letzte Antwort
      1
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      599

      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