Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. einfaches Script will nicht.... [solved]

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    einfaches Script will nicht.... [solved]

    This topic has been deleted. Only users with topic management privileges can see it.
    • Johannes Bauerstatter
      Johannes Bauerstatter last edited by Johannes Bauerstatter

      Hallo,

      kann mir bitte jemand sagen, warum dieses Script nicht will?:

      Der Teil mit dem Zeitprogramm funktioniert also ein um 11:15 und aus um 18:15 aber der Teil mit dem Verbrauch will nicht.

      const id_Verbrauch1 = '0_userdata.0.Verbräuche.Differenzverbrauch';
      const idWarmwasser = '0_userdata.0.Variablen.Warmwasser';
      
      //Variable ein per Zeitprogramm
      schedule('15 11 * * *', function ein() 
      {setState(idWarmwasser, true);
      sendTo('telegram.0', 'send', {text: 'Wasser ein Zeit'});});
      
      //Variable aus per Zeitprogramm
      schedule('15 18 * * *', function ein() 
      {setState(idWarmwasser, false);
      sendTo('telegram.0', 'send', {text: 'Wasser aus Zeit'});});
      
      //Variable ein per Verbrauch
      on (id_Verbrauch1, function ()
      {   var Verbrauch = getState(id_Verbrauch1).val; 
          if (Verbrauch < -500)
              {setState(idWarmwasser, true);}
      });
      
      //Ein - Aus per Variable
      on (idWarmwasser, function ()
      {
          var Warmwasser = getState(idWarmwasser).val;
          if (Warmwasser = true)
          {setState('sonoff.0.S4 Warmwasser.POWER', true);
          sendTo('telegram.0', 'send', {text: 'Wasser ein'})} 
          else if (Warmwasser = false) 
          {setState('sonoff.0.S4 Warmwasser.POWER', false);
          sendTo('telegram.0', 'send', {text: 'Wasser aus'})}
      });
      
      A E 2 Replies Last reply Reply Quote 0
      • A
        Ahnungsbefreit @Johannes Bauerstatter last edited by

        @johannes-bauerstatter Durch was wird denn id_Verbrauch1 aktualisiert? Ein anderes Script? Nur wenn sich das ändert, wird ja der untere Teil aufgerufen.

        Johannes Bauerstatter 1 Reply Last reply Reply Quote 0
        • E
          ente34 @Johannes Bauerstatter last edited by

          @johannes-bauerstatter sagte in einfaches Script will nicht....:

          if (Warmwasser = true)                                                                    
          

          Vergleiche mit "==" oder bei bool ganz weglassen:

          if (Warmwasser) {
              setState('sonoff.0.S4 Warmwasser.POWER', true);
              sendTo('telegram.0', 'send', {text: 'Wasser ein'})
          } else {
              setState('sonoff.0.S4 Warmwasser.POWER', false);
              sendTo('telegram.0', 'send', {text: 'Wasser aus'})
          }
          
          
          1 Reply Last reply Reply Quote 1
          • Johannes Bauerstatter
            Johannes Bauerstatter @Ahnungsbefreit last edited by

            @ahnungsbefreit Das ist die Einspeisung meiner PV-Anlage. Dieser Wert ändert sich ca. alle 5 Sek.

            @ente34 Vielen Dank werd ich ändern, wobei dieser Teil ja funktionieren muss, sonst würde das Zeitprogramm auch nicht laufen.

            A OliverIO 2 Replies Last reply Reply Quote 0
            • A
              Ahnungsbefreit @Johannes Bauerstatter last edited by

              @johannes-bauerstatter Hast Du mal einen log-Block eingebaut in die

              on (id_Verbrauch1, function ()
              {   
              

              Funktion? Damit man sieht, ob das überhaupt alle 5 Sek getriggert wird? Es sieht für mich so aus, als ob das nicht passiert...

              1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @Johannes Bauerstatter last edited by OliverIO

                @johannes-bauerstatter said in einfaches Script will nicht....:

                @ahnungsbefreit Das ist die Einspeisung meiner PV-Anlage. Dieser Wert ändert sich ca. alle 5 Sek.

                @ente34 Vielen Dank werd ich ändern, wobei dieser Teil ja funktionieren muss, sonst würde das Zeitprogramm auch nicht laufen.

                Das sind die Tücken von Javascript
                Durch das = wird der Wert true der variable Warmwasser zugewiesen.
                Diese Zuweisung erzeugt in Javascript einen truthy-Wert
                https://developer.mozilla.org/de/docs/Glossary/Truthy
                Daher der Wahrteil dieser Prüfung wird immer,immer,immer ausgeführt

                if (Warmwasser = true)
                

                falls es dann immer noch nicht funktioniert, musst du schauen ob im Datenpunkt Warmwasser wirklich der bool-Wert true/false steht oder evtl nur der Text "true" / "false"
                61fef3d6-b425-448a-b5ae-ffbf88fcb1d4-image.png

                Johannes Bauerstatter 1 Reply Last reply Reply Quote 0
                • Johannes Bauerstatter
                  Johannes Bauerstatter @OliverIO last edited by

                  Danke an Alle für die Tips und Hinweise.

                  Habs jetzt umgestellt und es läuft:

                  const id_Verbrauch = '0_userdata.0.Verbräuche.Differenzverbrauch';
                  const id_Warmwasser = 'sonoff.0.S4 Warmwasser.POWER';
                  
                  //Variable ein per Zeitprogramm
                  schedule('15 11 * * *', function() 
                      {setState(id_Warmwasser, true);
                      sendTo('telegram.0', 'send', {text: 'Wasser ein Zeit'});});
                  
                  //Variable aus per Zeitprogramm
                  schedule('15 18 * * *', function() 
                      {setState(id_Warmwasser, false);
                      sendTo('telegram.0', 'send', {text: 'Wasser aus Zeit'});});
                  
                  //Variable ein per Verbrauch
                  on (id_Verbrauch, function ()
                  {   var Verbrauch = getState(id_Verbrauch).val; 
                      if (Verbrauch < -500)
                      {setState(id_Warmwasser, true);}
                  });
                  
                  
                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Johannes Bauerstatter last edited by

                    @johannes-bauerstatter

                    damit es bei komplexeren skripten besser lesbar (auch für andere) ist
                    schau dir mal den style guide für javascript an.
                    Deiner Klammersetzung ist nicht so optimal
                    https://www.w3schools.com/js/js_conventions.asp

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate
                    FAQ Cloud / IOT
                    HowTo: Node.js-Update
                    HowTo: Backup/Restore
                    Downloads
                    BLOG

                    465
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    javascript schedule
                    4
                    8
                    448
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo