Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Neuer Javascript Adapter

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Neuer Javascript Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      michihorn last edited by 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***** ");
      });
      
      mcm1957 1 Reply Last reply Reply Quote 0
      • mcm1957
        mcm1957 @michihorn last edited by mcm1957

        @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

        1 Reply Last reply Reply Quote 1
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        632
        Online

        31.7k
        Users

        79.7k
        Topics

        1.3m
        Posts

        javascript
        2
        2
        169
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo