Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Gelöst] Auf Sonnenstand reagieren mit beschreibbarer Variable

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    521

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

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

[Gelöst] Auf Sonnenstand reagieren mit beschreibbarer Variable

Scheduled Pinned Locked Moved JavaScript
31 Posts 3 Posters 2.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P paul53

    @webseb79 Dann sollte es funktionieren. Wie sieht das komplette Skript jetzt aus ?

    W Offline
    W Offline
    webseb79
    wrote on last edited by webseb79
    #20

    @paul53

    createState('javascript.0.Zeiten.Treppenlicht.Elevation', -0.5 , {type:"number", role:"javascript"});
    
    var idt3 = 'javascript.0.Zeiten.Treppenlicht.Elevation';
    
    var idElevation = getState(idt3).val;
    
    
    
    on({
        id: "javascript.0.Global.Sonnenstand.Elevation"/*Global.Sonnenstand.Elevation*/,
        change: "ne",
        valLe: idElevation,  
        oldValGt: idElevation,   
        logic: "and"
    }, function (obj) {
       Treppenlicht_an_Sonnenuntergang();
    });
    
    function Treppenlicht_an_Sonnenuntergang() {
    
        if      (getState("radar.0.G-Tag-Claudia.here"/*G-Tag-Claudia.here*/).val === false 
            &&   getState("radar.0.G-Tag-Sebastian.here"/*G-Tag-Sebastian.here*/).val === false ) 
                
                { return; }
        
        if      (getState("knx.0.Licht.Licht-Status.OG-Schlafzimmer-Treppenleuchte-Schalten-Status"/*OG-Schlafzimmer-Treppenleuchte-Schalten-Status*/).val === 1) 
                
                { return; }
        
                event("Schlafzimmer...Treppenbeleuchtung zum Sonnenuntergang eingeschalten","Allgemein","white");
                setState ("knx.0.Licht.Licht-Schalten.OG-Schlafzimmer-Treppenleuchte-Schalten"/*OG-Schlafzimmer-Treppenleuchte-Schalten*/, 1);
    }
    

    Wie schon erwähnt ... Typ String und alles lief.

    Sebastian

    paul53P 1 Reply Last reply
    0
    • W webseb79

      @paul53

      createState('javascript.0.Zeiten.Treppenlicht.Elevation', -0.5 , {type:"number", role:"javascript"});
      
      var idt3 = 'javascript.0.Zeiten.Treppenlicht.Elevation';
      
      var idElevation = getState(idt3).val;
      
      
      
      on({
          id: "javascript.0.Global.Sonnenstand.Elevation"/*Global.Sonnenstand.Elevation*/,
          change: "ne",
          valLe: idElevation,  
          oldValGt: idElevation,   
          logic: "and"
      }, function (obj) {
         Treppenlicht_an_Sonnenuntergang();
      });
      
      function Treppenlicht_an_Sonnenuntergang() {
      
          if      (getState("radar.0.G-Tag-Claudia.here"/*G-Tag-Claudia.here*/).val === false 
              &&   getState("radar.0.G-Tag-Sebastian.here"/*G-Tag-Sebastian.here*/).val === false ) 
                  
                  { return; }
          
          if      (getState("knx.0.Licht.Licht-Status.OG-Schlafzimmer-Treppenleuchte-Schalten-Status"/*OG-Schlafzimmer-Treppenleuchte-Schalten-Status*/).val === 1) 
                  
                  { return; }
          
                  event("Schlafzimmer...Treppenbeleuchtung zum Sonnenuntergang eingeschalten","Allgemein","white");
                  setState ("knx.0.Licht.Licht-Schalten.OG-Schlafzimmer-Treppenleuchte-Schalten"/*OG-Schlafzimmer-Treppenleuchte-Schalten*/, 1);
      }
      

      Wie schon erwähnt ... Typ String und alles lief.

      Sebastian

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #21

      @webseb79 sagte:

      Wie schon erwähnt ... Typ String und alles lief.

      Ein Stringvergleich (im Trigger) dürfte Probleme machen (bei negativen Werten).

      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

      W 1 Reply Last reply
      0
      • paul53P paul53

        @webseb79 sagte:

        Wie schon erwähnt ... Typ String und alles lief.

        Ein Stringvergleich (im Trigger) dürfte Probleme machen (bei negativen Werten).

        W Offline
        W Offline
        webseb79
        wrote on last edited by
        #22

        @paul53
        Zu dem Zeitpunkt war der Sonnenstand ja positiv...also kannst du rechthaben.
        Das Script läuft ja schon einige Zeit, nur 2 Dinge wurden verändert

            valLe: -0.5,  
            oldValGt: -0.5, 
        auf
        
            valLe: idElevation,  
            oldValGt: idElevation, 
        

        Wie kann ich die feste vergebene Zahl nun flexibel über Vis steuern?

        paul53P 1 Reply Last reply
        0
        • W webseb79

          @paul53
          Zu dem Zeitpunkt war der Sonnenstand ja positiv...also kannst du rechthaben.
          Das Script läuft ja schon einige Zeit, nur 2 Dinge wurden verändert

              valLe: -0.5,  
              oldValGt: -0.5, 
          auf
          
              valLe: idElevation,  
              oldValGt: idElevation, 
          

          Wie kann ich die feste vergebene Zahl nun flexibel über Vis steuern?

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #23

          @webseb79 sagte:

          Wie kann ich die feste vergebene Zahl nun flexibel über Vis steuern?

          Zusätzlich:

          on(idt3, function(dp) {
             idElevation = dp.state.val;
          });
          

          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

          W 1 Reply Last reply
          0
          • paul53P paul53

            @webseb79 sagte:

            Wie kann ich die feste vergebene Zahl nun flexibel über Vis steuern?

            Zusätzlich:

            on(idt3, function(dp) {
               idElevation = dp.state.val;
            });
            
            W Offline
            W Offline
            webseb79
            wrote on last edited by
            #24

            @paul53

            Da bin ich jetzt überfragt wohin das noch soll.
            Deine on - Anweisung sagt doch nur das wenn sich idt3 ändert dieser Wert in idElevation geschoben wird , oder?
            Ich triggere doch auf den ständig veränderten Sonnenstand.

            Sebastian

            paul53P 1 Reply Last reply
            0
            • W webseb79

              @paul53

              Da bin ich jetzt überfragt wohin das noch soll.
              Deine on - Anweisung sagt doch nur das wenn sich idt3 ändert dieser Wert in idElevation geschoben wird , oder?
              Ich triggere doch auf den ständig veränderten Sonnenstand.

              Sebastian

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #25

              @webseb79 sagte:

              das wenn sich idt3 ändert dieser Wert in idElevation geschoben wird , oder?

              Richtig. Das genau wolltest Du doch: Wenn der Wert in Vis geändert wird, kommt diese Änderung auch im Skript an, ohne dass das Skript neu gestartet werden muss.

              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

              W 1 Reply Last reply
              0
              • paul53P paul53

                @webseb79 sagte:

                das wenn sich idt3 ändert dieser Wert in idElevation geschoben wird , oder?

                Richtig. Das genau wolltest Du doch: Wenn der Wert in Vis geändert wird, kommt diese Änderung auch im Skript an, ohne dass das Skript neu gestartet werden muss.

                W Offline
                W Offline
                webseb79
                wrote on last edited by
                #26

                @paul53

                Deine letzte Anweisung

                on(idt3, function(dp) {
                
                   idElevation = dp.state.val;
                
                });
                

                hatte ich vorhin noch nicht und dort ging es doch schon wie ich es wollte , halt nur mit dem Datentyp "String" als Variable von Vis kommend und vergleichend vom Sonnenstandsscript die Variable kommend auch als "String".
                Nur dann kam doch die Meldung vom Sonnenstandsscript das es ein Datentyp "Number" verlangt.

                paul53P 1 Reply Last reply
                0
                • W webseb79

                  @paul53

                  Deine letzte Anweisung

                  on(idt3, function(dp) {
                  
                     idElevation = dp.state.val;
                  
                  });
                  

                  hatte ich vorhin noch nicht und dort ging es doch schon wie ich es wollte , halt nur mit dem Datentyp "String" als Variable von Vis kommend und vergleichend vom Sonnenstandsscript die Variable kommend auch als "String".
                  Nur dann kam doch die Meldung vom Sonnenstandsscript das es ein Datentyp "Number" verlangt.

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #27

                  @webseb79 sagte:

                  hatte ich vorhin noch nicht und dort ging es doch schon wie ich es wollte

                  Ohne den Trigger wird der Wert nur bei Skriptstart aktualisiert und bleibt dann konstant, egal was in Vis geändert wird.

                  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

                  W 1 Reply Last reply
                  0
                  • paul53P paul53

                    @webseb79 sagte:

                    hatte ich vorhin noch nicht und dort ging es doch schon wie ich es wollte

                    Ohne den Trigger wird der Wert nur bei Skriptstart aktualisiert und bleibt dann konstant, egal was in Vis geändert wird.

                    W Offline
                    W Offline
                    webseb79
                    wrote on last edited by
                    #28

                    @paul53
                    Ok ... zum laufen bekomme ich das nicht.
                    Gibt es eine andere Variante um zum Ziel zu kommen?
                    Eine angelegte Variable in Instanz.0 durch Vis beschreibbar vergleicht den Elevation Wert des Sonnenstandes und löst eine Funktion aus beim unterschreiten als 1.Beispiel und beim Überschreiten als 2.Beispiel.
                    Hast du da eine Idee Paul53

                    Danke Sebastian

                    1 Reply Last reply
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #29

                      Vorschlag:

                      const idGrenzwert = 'javascript.0.Zeiten.Treppenlicht.Elevation';
                      const idElevation = "javascript.0.Global.Sonnenstand.Elevation"/*Global.Sonnenstand.Elevation*/;
                      
                      createState(idGrenzwert, -0.5, {type: 'number', unit: '°'});
                      
                      var gwElevation = parseFloat(getState(idGrenzwert).val);
                      on(idGrenzwert, function(dp) {
                         gwElevation = parseFloat(dp.state.val);
                      });
                      
                      on(idElevation, function(dp) {
                         if(dp.state.val <= gwElevation && dp.oldState.val > gwElevation) {
                            // Aktion bei Unterschreiten Grenzwert
                         }
                         if(dp.state.val >= gwElevation && dp.oldState.val < gwElevation) {
                            // Aktion bei Überschreiten Grenzwert
                         }
                      });
                      

                      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

                      W 1 Reply Last reply
                      0
                      • paul53P paul53

                        Vorschlag:

                        const idGrenzwert = 'javascript.0.Zeiten.Treppenlicht.Elevation';
                        const idElevation = "javascript.0.Global.Sonnenstand.Elevation"/*Global.Sonnenstand.Elevation*/;
                        
                        createState(idGrenzwert, -0.5, {type: 'number', unit: '°'});
                        
                        var gwElevation = parseFloat(getState(idGrenzwert).val);
                        on(idGrenzwert, function(dp) {
                           gwElevation = parseFloat(dp.state.val);
                        });
                        
                        on(idElevation, function(dp) {
                           if(dp.state.val <= gwElevation && dp.oldState.val > gwElevation) {
                              // Aktion bei Unterschreiten Grenzwert
                           }
                           if(dp.state.val >= gwElevation && dp.oldState.val < gwElevation) {
                              // Aktion bei Überschreiten Grenzwert
                           }
                        });
                        
                        W Offline
                        W Offline
                        webseb79
                        wrote on last edited by
                        #30

                        @paul53

                        Vielen Dank Paul53 !
                        Ich glaube wir hätten die ganze Sache schon viel früher lösen können mit deinem Vorschlag.
                        Ich muss auch sagen das du richtig gut im Stoff stehst was Javascript angeht.
                        Ich lese ja ziemlich viel hier mit Tag täglich und du bist eigentlich bei vielen Lösungen mit present.
                        Mach weiter so.

                        Danke

                        Sebastian

                        paul53P 1 Reply Last reply
                        0
                        • W webseb79

                          @paul53

                          Vielen Dank Paul53 !
                          Ich glaube wir hätten die ganze Sache schon viel früher lösen können mit deinem Vorschlag.
                          Ich muss auch sagen das du richtig gut im Stoff stehst was Javascript angeht.
                          Ich lese ja ziemlich viel hier mit Tag täglich und du bist eigentlich bei vielen Lösungen mit present.
                          Mach weiter so.

                          Danke

                          Sebastian

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by
                          #31

                          @webseb79 sagte:

                          Ich glaube wir hätten die ganze Sache schon viel früher lösen können mit deinem Vorschlag.

                          Das Sonnenstandsskript musste auch für den richtigen Datenpunkttyp korrigiert werden.

                          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 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          395

                          Online

                          32.7k

                          Users

                          82.5k

                          Topics

                          1.3m

                          Posts
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Home
                          • Recent
                          • Tags
                          • Unread 0
                          • Categories
                          • Unreplied
                          • Popular
                          • GitHub
                          • Docu
                          • Hilfe