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. Gelöst: On Change

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Gelöst: On Change

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
15 Beiträge 4 Kommentatoren 481 Aufrufe 4 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 ich habe einen Artikel gefunden, der die Verwendung von Globalen Variablen beschreibt.
    Ich habe von Paul53 folgendes geklaut:

    function variablen_holen() {
    var vAußenTemperatur = getState("hm-rpc.2.00185BE98B3FCA.1.ACTUAL_TEMPERATURE").val;
    var vTemperatur = getState("hm-rpc.0.OEQ0128317.1.TEMPERATURE").val;  //Wintergarten
    var vLux = getState("hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION").val; //LUX Wetterstation
    var vLuxInnen = getState("hm-rpc.2.000D58A9915658.1.CURRENT_ILLUMINATION").val; //LUX Wintergarten
    var vRegen = getState("hm-rpc.2.00185BE98B3FCA.1.RAINING").val;
    var vWind = getState("hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED").val;
    var vAnwesenheit = getState("javascript.0.Anwesenheitssteuerung.Userlist.JemandDa").val;
    
    return {
      AußenTemperatur: vAußenTemperatur,
      Temperatur: vTemperatur,
      Lux: vLux,
      LuxInnen: vLuxInnen,
      Regen: vRegen,
      Anwesenheit: vAnwesenheit,
      Wind: vWind,
        };
    }
    
    var variablen = variablen_holen();
    var Temperatur = variablen.Temperatur;
    var Regen = variablen.Regen;
    var Wind = variablen.Wind;
    var Lux = variablen.Lux;
    var Anwesenheit = variablen.Anwesenheit;
    

    Die variablen enthalten auch Werte. Ich möchte das mein Script auf "Temperatur" Änderung reagiert.

    var variablen = variablen_holen();
    var Temperatur = variablen.Temperatur;
    var Regen = variablen.Regen;
    var Wind = variablen.Wind;
    var Lux = variablen.Lux;
    var Anwesenheit = variablen.Anwesenheit;
    const idSW_Temp = 'javascript.0.Garten.Markisse.SW_Temp'; // Auslösewert Temp
    var SW_Temp = getState(idSW_Temp).val;
    log(Temperatur);
    on({ id: Temperatur, change: 'any' }, function () {
        if (Temperatur <= SW_Temp) {
            log("ist kleiner");
            setState("javascript.0.Garten.Markisse.Bedingung_2", 0)
        } else { setState("javascript.0.Garten.Markisse.Bedingung_2", 1)
         log("ist größer"); };
    });
    

    Leider reagiert das Script nicht. Wo ist der fehler?
    Gruß
    Michael

    htreckslerH harrymH 2 Antworten Letzte Antwort
    0
    • M michihorn

      Hallo ich habe einen Artikel gefunden, der die Verwendung von Globalen Variablen beschreibt.
      Ich habe von Paul53 folgendes geklaut:

      function variablen_holen() {
      var vAußenTemperatur = getState("hm-rpc.2.00185BE98B3FCA.1.ACTUAL_TEMPERATURE").val;
      var vTemperatur = getState("hm-rpc.0.OEQ0128317.1.TEMPERATURE").val;  //Wintergarten
      var vLux = getState("hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION").val; //LUX Wetterstation
      var vLuxInnen = getState("hm-rpc.2.000D58A9915658.1.CURRENT_ILLUMINATION").val; //LUX Wintergarten
      var vRegen = getState("hm-rpc.2.00185BE98B3FCA.1.RAINING").val;
      var vWind = getState("hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED").val;
      var vAnwesenheit = getState("javascript.0.Anwesenheitssteuerung.Userlist.JemandDa").val;
      
      return {
        AußenTemperatur: vAußenTemperatur,
        Temperatur: vTemperatur,
        Lux: vLux,
        LuxInnen: vLuxInnen,
        Regen: vRegen,
        Anwesenheit: vAnwesenheit,
        Wind: vWind,
          };
      }
      
      var variablen = variablen_holen();
      var Temperatur = variablen.Temperatur;
      var Regen = variablen.Regen;
      var Wind = variablen.Wind;
      var Lux = variablen.Lux;
      var Anwesenheit = variablen.Anwesenheit;
      

      Die variablen enthalten auch Werte. Ich möchte das mein Script auf "Temperatur" Änderung reagiert.

      var variablen = variablen_holen();
      var Temperatur = variablen.Temperatur;
      var Regen = variablen.Regen;
      var Wind = variablen.Wind;
      var Lux = variablen.Lux;
      var Anwesenheit = variablen.Anwesenheit;
      const idSW_Temp = 'javascript.0.Garten.Markisse.SW_Temp'; // Auslösewert Temp
      var SW_Temp = getState(idSW_Temp).val;
      log(Temperatur);
      on({ id: Temperatur, change: 'any' }, function () {
          if (Temperatur <= SW_Temp) {
              log("ist kleiner");
              setState("javascript.0.Garten.Markisse.Bedingung_2", 0)
          } else { setState("javascript.0.Garten.Markisse.Bedingung_2", 1)
           log("ist größer"); };
      });
      

      Leider reagiert das Script nicht. Wo ist der fehler?
      Gruß
      Michael

      htreckslerH Offline
      htreckslerH Offline
      htrecksler
      Forum Testing
      schrieb am zuletzt editiert von
      #2

      @michihorn pack mal in code-tags...das lässt sich nur schwer lesen

      Gruss Hermann

      ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

      1 Antwort Letzte Antwort
      0
      • M michihorn

        Hallo ich habe einen Artikel gefunden, der die Verwendung von Globalen Variablen beschreibt.
        Ich habe von Paul53 folgendes geklaut:

        function variablen_holen() {
        var vAußenTemperatur = getState("hm-rpc.2.00185BE98B3FCA.1.ACTUAL_TEMPERATURE").val;
        var vTemperatur = getState("hm-rpc.0.OEQ0128317.1.TEMPERATURE").val;  //Wintergarten
        var vLux = getState("hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION").val; //LUX Wetterstation
        var vLuxInnen = getState("hm-rpc.2.000D58A9915658.1.CURRENT_ILLUMINATION").val; //LUX Wintergarten
        var vRegen = getState("hm-rpc.2.00185BE98B3FCA.1.RAINING").val;
        var vWind = getState("hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED").val;
        var vAnwesenheit = getState("javascript.0.Anwesenheitssteuerung.Userlist.JemandDa").val;
        
        return {
          AußenTemperatur: vAußenTemperatur,
          Temperatur: vTemperatur,
          Lux: vLux,
          LuxInnen: vLuxInnen,
          Regen: vRegen,
          Anwesenheit: vAnwesenheit,
          Wind: vWind,
            };
        }
        
        var variablen = variablen_holen();
        var Temperatur = variablen.Temperatur;
        var Regen = variablen.Regen;
        var Wind = variablen.Wind;
        var Lux = variablen.Lux;
        var Anwesenheit = variablen.Anwesenheit;
        

        Die variablen enthalten auch Werte. Ich möchte das mein Script auf "Temperatur" Änderung reagiert.

        var variablen = variablen_holen();
        var Temperatur = variablen.Temperatur;
        var Regen = variablen.Regen;
        var Wind = variablen.Wind;
        var Lux = variablen.Lux;
        var Anwesenheit = variablen.Anwesenheit;
        const idSW_Temp = 'javascript.0.Garten.Markisse.SW_Temp'; // Auslösewert Temp
        var SW_Temp = getState(idSW_Temp).val;
        log(Temperatur);
        on({ id: Temperatur, change: 'any' }, function () {
            if (Temperatur <= SW_Temp) {
                log("ist kleiner");
                setState("javascript.0.Garten.Markisse.Bedingung_2", 0)
            } else { setState("javascript.0.Garten.Markisse.Bedingung_2", 1)
             log("ist größer"); };
        });
        

        Leider reagiert das Script nicht. Wo ist der fehler?
        Gruß
        Michael

        harrymH Offline
        harrymH Offline
        harrym
        schrieb am zuletzt editiert von
        #3

        @michihorn sagte in On Change:

        if (Temperatur <= SW_Temp)

        wo ist die Variable/Datenpunkt?

        bitte scripte/logs und co in die Tags (</>) packen ... ist leichter zu lesen ;)

        ASRock FM2A88X-ITX+ mit 32GB RAM, 128GB SSD mit Proxmox, 3x1 TB SSD als RAID mit CT und VMs.

        M 1 Antwort Letzte Antwort
        0
        • harrymH harrym

          @michihorn sagte in On Change:

          if (Temperatur <= SW_Temp)

          wo ist die Variable/Datenpunkt?

          bitte scripte/logs und co in die Tags (</>) packen ... ist leichter zu lesen ;)

          M Offline
          M Offline
          michihorn
          schrieb am zuletzt editiert von
          #4

          @harrym hab ich

          harrymH 1 Antwort Letzte Antwort
          0
          • M michihorn

            @harrym hab ich

            harrymH Offline
            harrymH Offline
            harrym
            schrieb am zuletzt editiert von
            #5

            @michihorn

            if (Temperatur <= SW_Temp) <== wo hast du die Variable?

            ASRock FM2A88X-ITX+ mit 32GB RAM, 128GB SSD mit Proxmox, 3x1 TB SSD als RAID mit CT und VMs.

            M 1 Antwort Letzte Antwort
            0
            • harrymH harrym

              @michihorn

              if (Temperatur <= SW_Temp) <== wo hast du die Variable?

              M Offline
              M Offline
              michihorn
              schrieb am zuletzt editiert von michihorn
              #6

              @harrym hab die VAR noch mal mit angefügt
              Aktuell ist die Temperatur 30 und SW_Temp 27

              Normalerweise sollte "on({ id: Temperatur, change: 'any' }, function () {" bei Änderung triggern, tut s aber nicht

              harrymH 1 Antwort Letzte Antwort
              0
              • M michihorn

                @harrym hab die VAR noch mal mit angefügt
                Aktuell ist die Temperatur 30 und SW_Temp 27

                Normalerweise sollte "on({ id: Temperatur, change: 'any' }, function () {" bei Änderung triggern, tut s aber nicht

                harrymH Offline
                harrymH Offline
                harrym
                schrieb am zuletzt editiert von
                #7

                @michihorn du triggerst auf ne variable?

                ASRock FM2A88X-ITX+ mit 32GB RAM, 128GB SSD mit Proxmox, 3x1 TB SSD als RAID mit CT und VMs.

                M 1 Antwort Letzte Antwort
                0
                • harrymH harrym

                  @michihorn du triggerst auf ne variable?

                  M Offline
                  M Offline
                  michihorn
                  schrieb am zuletzt editiert von
                  #8

                  @harrym das war der Plan. Sobald sich der Wert der VAR ändert soll das Script laufen.

                  harrymH 1 Antwort Letzte Antwort
                  0
                  • M michihorn

                    @harrym das war der Plan. Sobald sich der Wert der VAR ändert soll das Script laufen.

                    harrymH Offline
                    harrymH Offline
                    harrym
                    schrieb am zuletzt editiert von
                    #9

                    @michihorn schreib die variable in nen datenpunkt und trigger dann auf den datenpunkt

                    ASRock FM2A88X-ITX+ mit 32GB RAM, 128GB SSD mit Proxmox, 3x1 TB SSD als RAID mit CT und VMs.

                    M 1 Antwort Letzte Antwort
                    0
                    • harrymH harrym

                      @michihorn schreib die variable in nen datenpunkt und trigger dann auf den datenpunkt

                      M Offline
                      M Offline
                      michihorn
                      schrieb am zuletzt editiert von
                      #10

                      @harrym Ich habe ja extra mit den globalen Variablen experimentiert, so das ich nicht noch weitere DP anlegen muß, denn der DP ist ja über RPC2 angelegt. Um Schreibkram beim Programmieren zu minimieren wollte ich die Globalen Variablen nutzen

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • M michihorn

                        @harrym Ich habe ja extra mit den globalen Variablen experimentiert, so das ich nicht noch weitere DP anlegen muß, denn der DP ist ja über RPC2 angelegt. Um Schreibkram beim Programmieren zu minimieren wollte ich die Globalen Variablen nutzen

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #11

                        @michihorn sagte:

                        Um Schreibkram beim Programmieren zu minimieren wollte ich die Globalen Variablen nutzen

                        Man kann trotzdem nicht auf einen Wert triggern, sondern nur auf eine ID. Ändere es besser in eine Funktion ids_holen();

                        function ids_holen() {
                          let idAußenTemperatur = "hm-rpc.2.00185BE98B3FCA.1.ACTUAL_TEMPERATURE";
                          let idTemperatur ="hm-rpc.0.OEQ0128317.1.TEMPERATURE";  //Wintergarten
                          let idLux = "hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION"; //LUX Wetterstation
                          let idLuxInnen = "hm-rpc.2.000D58A9915658.1.CURRENT_ILLUMINATION"; //LUX 
                          Wintergarten
                          let idRegen = "hm-rpc.2.00185BE98B3FCA.1.RAINING";
                          let idWind = "hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED";
                          let idAnwesenheit = "javascript.0.Anwesenheitssteuerung.Userlist.JemandDa";
                          return {
                            AußenTemperatur: idAußenTemperatur,
                            Temperatur: idTemperatur,
                            Lux: idLux,
                            LuxInnen: idLuxInnen,
                            Regen: idRegen,
                            Anwesenheit: idAnwesenheit,
                            Wind: idWind,
                          };
                        }
                        

                        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

                        M 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @michihorn sagte:

                          Um Schreibkram beim Programmieren zu minimieren wollte ich die Globalen Variablen nutzen

                          Man kann trotzdem nicht auf einen Wert triggern, sondern nur auf eine ID. Ändere es besser in eine Funktion ids_holen();

                          function ids_holen() {
                            let idAußenTemperatur = "hm-rpc.2.00185BE98B3FCA.1.ACTUAL_TEMPERATURE";
                            let idTemperatur ="hm-rpc.0.OEQ0128317.1.TEMPERATURE";  //Wintergarten
                            let idLux = "hm-rpc.2.00185BE98B3FCA.1.ILLUMINATION"; //LUX Wetterstation
                            let idLuxInnen = "hm-rpc.2.000D58A9915658.1.CURRENT_ILLUMINATION"; //LUX 
                            Wintergarten
                            let idRegen = "hm-rpc.2.00185BE98B3FCA.1.RAINING";
                            let idWind = "hm-rpc.2.00185BE98B3FCA.1.WIND_SPEED";
                            let idAnwesenheit = "javascript.0.Anwesenheitssteuerung.Userlist.JemandDa";
                            return {
                              AußenTemperatur: idAußenTemperatur,
                              Temperatur: idTemperatur,
                              Lux: idLux,
                              LuxInnen: idLuxInnen,
                              Regen: idRegen,
                              Anwesenheit: idAnwesenheit,
                              Wind: idWind,
                            };
                          }
                          
                          M Offline
                          M Offline
                          michihorn
                          schrieb am zuletzt editiert von michihorn
                          #12

                          @paul53 Und wie nehme ich im entsprechenden Script Bezug auf die Variablen? Genau wie vorher auch?

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • M michihorn

                            @paul53 Und wie nehme ich im entsprechenden Script Bezug auf die Variablen? Genau wie vorher auch?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #13

                            @michihorn sagte:

                            Bezug auf die Variablen? Genau wie vorher auch?

                            Ja, nur mit dem Unterschied, dass keine Werte, sondern IDs enthalten sind.

                            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

                            M 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @michihorn sagte:

                              Bezug auf die Variablen? Genau wie vorher auch?

                              Ja, nur mit dem Unterschied, dass keine Werte, sondern IDs enthalten sind.

                              M Offline
                              M Offline
                              michihorn
                              schrieb am zuletzt editiert von
                              #14

                              @paul53 sagte in On Change:

                              @michihorn sagte:

                              Bezug auf die Variablen? Genau wie vorher auch?

                              Ja, nur mit dem Unterschied, dass keine Werte, sondern IDs enthalten sind.

                              Danke das hilft mir weiter

                              paul53P 1 Antwort Letzte Antwort
                              0
                              • M michihorn

                                @paul53 sagte in On Change:

                                @michihorn sagte:

                                Bezug auf die Variablen? Genau wie vorher auch?

                                Ja, nur mit dem Unterschied, dass keine Werte, sondern IDs enthalten sind.

                                Danke das hilft mir weiter

                                paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #15

                                @michihorn
                                Dein Script mit IDs könnte so aussehen:

                                const ids = ids_holen();
                                const idSW_Temp = 'javascript.0.Garten.Markisse.SW_Temp'; // Auslösewert Temp
                                
                                on(ids.Temperatur, function (dp) {
                                    if (dp.state.val <= getState(idSW_Temp).val) {
                                        log("ist kleiner");
                                        setState("javascript.0.Garten.Markisse.Bedingung_2", 0)
                                    } else { 
                                        setState("javascript.0.Garten.Markisse.Bedingung_2", 1)
                                        log("ist größer"); };
                                });
                                

                                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
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                488

                                Online

                                32.7k

                                Benutzer

                                82.4k

                                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