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

    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

                            599

                            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