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

                              408

                              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