Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Gelöst: Scriptumbau mit HttpGet...schon wieder

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Gelöst: Scriptumbau mit HttpGet...schon wieder

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      michihorn last edited by michihorn

      Moin
      ich lese eifrig zum Thema HttpGet, doch leider klappt es nicht.
      Ich will einer Kamera einen Snapshot abverlangen.

      /*****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, 08.10.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
      
      on({ id: idKlingel, change: "any" }, function (obj) {
          if (obj.state.val == true)  {
              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"));
              httpGet('http://192.168.178.124/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=xxxxxx', (err, reponse) => {
                  if (err) {
                      console.error(err);
                  } else if (response.statusCode == 200) {
                      const resObj = JSON.parse(response.data);
                      writeFile("vis.0", "/klingelbild/Klingel.jpg", body);
                  }
              }
              );
          }
      });
      
      //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***** ");
      });
      
      

      Bitte um Unterstützung
      Michael

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @michihorn last edited by

        @michihorn sagte: Bitte um Unterstützung

        Zeile 30: body?

        M 1 Reply Last reply Reply Quote 0
        • M
          michihorn @paul53 last edited by michihorn

          @paul53 Das ist ein Relikt aus dem HTTP Request und dem alten Adapter, sollte wohl jetzt "response.data" heissen, oder?

          Die Kurzform sieht jetzt so aus und klappt.

          const idKlingel = "ring.0.doorbell_90474299.Events.doorbell"
          
          on({ id: idKlingel, change: "any" }, function (obj) {
              if (obj.state.val == true) {
                  httpGet('http://192.168.178.xx/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=rxxxxx', { 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);
                      }
                  });
              }
          });
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          703
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          170
          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