Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Mehrere Objekte auf Statusänderung prüfen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Mehrere Objekte auf Statusänderung prüfen

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

      Hallo,

      ich möchte gerne mehrere Geräte anlegen und auf deren Statusänderung reagieren.

      Hier ist mein aktueller Code, der auch gut funktioniert, allerdings nur für ein Gerät.

      const request = require('request').defaults({ rejectUnauthorized: false });
      var sessiontoken
      
      on({id: "My_Devices.0.Lichtschalter_Flur", change: "any"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("My_Devices.0.Lichtschalter_Flur").val == true) {
          try {
              request('https://IP:8080/json/system/loginApplication?loginToken=APPLToken', { json: true }, (err, res, body) => {
                  if (err) { return console.log(err); }
                  sessiontoken = body.result.token;
                  //console.log(`${sessiontoken}`);
                  request({url: 'https://IP:8080/json/device/turnOn?dsid=DeviceID', headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) {
                      console.log(body);
                  });
              });
          } catch (e) { console.error(e); }
        } else if (getState("My_Devices.0.Lichtschalter_Flur").val == false) {
          try {
              request('https://IP:8080/json/system/loginApplication?loginToken=APPLToken', { json: true }, (err, res, body) => {
                  if (err) { return console.log(err); }
                  sessiontoken = body.result.token;
                  //console.log(`${sessiontoken}`);
                  request({url: 'https://IP:8080/json/device/turnOff?dsid=DeviceID', headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) {
                      console.log(body);
                  });
              });
          } catch (e) { console.error(e); }
        }
      });
      
      

      Ich möchte ungern den Code für jedes Gerät duplizieren. Ist es möglich alles Geräte unter My_Devices.0 auf Änderung ab zu fragen und die Device ID des geänderten Gerätes an den HTTP Request zu übergen?

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Schau dir Mal $selector an

        https://github.com/ioBroker/ioBroker.ja ... --selector

        Sent from my iPhone using Tapatalk

        1 Reply Last reply Reply Quote 0
        • A
          AkiraFFM last edited by

          Hi,

          und danke schon mal für die schnelle Antwort. Ich versuch mich mal rein zu fuchsen. Aber da ich mit ioBroker und JavaScript erst vor zwei Tagen angefangen habe übersteigt es auf den ersten Blick noch mein Verständnis.

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

            @AkiraFFM:

            Ist es möglich alles Geräte unter My_Devices.0 auf Änderung ab zu fragen und die Device ID des geänderten Gerätes an den HTTP Request zu übergeben? `
            Ja, z.B. mit regex

            on(/^My_Devices\.0\..+/, function(obj) { // Triggert auf Wertänderung aller Datenpunkte unter My_Devices.0.
               var id = obj.id; // ID des Trigger-Datenpunktes
            
            

            Du meinst sicherlich die Datenpunkt-ID ?

            1 Reply Last reply Reply Quote 0
            • A
              AkiraFFM last edited by

              Danke hat damit wunderbar geklappt.

              Hier die Finale Lösung.

              const request = require('request').defaults({ rejectUnauthorized: false });
              var sessiontoken
              
              on(/^My_Devices\.0\..+/, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                var id = obj.id
                var dsid = obj.id.replace("My_Devices.0.", "")
                console.log(`DeviceID = ${id}`);
                if (getState(id).val == true) {
                  try {
                      request('https://IP:8080/json/system/loginApplication?loginToken=Token', { json: true }, (err, res, body) => {
                          if (err) { return console.log(err); }
                          sessiontoken = body.result.token;
                          console.log(`SessionToken = ${sessiontoken}`);
                          console.log(`https://IP:8080/json/device/turnOn?dsid=${dsid}`)
                          request({url: `https://IP:8080/json/device/turnOn?dsid=${dsid}`, headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) {
                              console.log(body);
                          });
                      });
                  } catch (e) { console.error(e); }
                } else if (getState(id).val == false) {
                  try {
                      request('https://IP:8080/json/system/loginApplication?loginToken=Token', { json: true }, (err, res, body) => {
                          if (err) { return console.log(err); }
                          sessiontoken = body.result.token;
                          console.log(`SessionToken = ${sessiontoken}`);
                          console.log(`https://IP:8080/json/device/turnOff?dsid=${dsid}`)
                          request({url: `https://IP:8080/json/device/turnOff?dsid=${dsid}`, headers: {Cookie: `token=${sessiontoken}`}}, function(error, response, body) {
                              console.log(body);
                          });
                      });
                  } catch (e) { console.error(e); }
                }
              });
              
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              813
              Online

              31.8k
              Users

              79.9k
              Topics

              1.3m
              Posts

              3
              5
              464
              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