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. Mehrere Objekte auf Statusänderung prüfen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Mehrere Objekte auf Statusänderung prüfen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 3 Kommentatoren 574 Aufrufe
  • Ä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.
  • A Offline
    A Offline
    AkiraFFM
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #2

      Schau dir Mal $selector an

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

      Sent from my iPhone using Tapatalk

      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        AkiraFFM
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @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 ?

          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

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            AkiraFFM
            schrieb am zuletzt editiert von
            #5

            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 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

            633

            Online

            32.6k

            Benutzer

            82.3k

            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