Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Schedule im ms Bereich

    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

    Schedule im ms Bereich

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Ben1983 last edited by

      @ben1983 sagte: sollte das besser funktionieren?

      Ja.

      Wenn myTime variabel sein soll, kann man sie per on(IdTime, callback) aktualisieren.

      Ben1983 1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer @paul53 last edited by

        @paul53 sagte in Schedule im ms Bereich:

        Mit Skript anhalten werden alle Timer des Skriptes gestoppt (gelöscht).

        Sollten sie ja. Ich hatte früher seltsamme Effekte in Skripten. Seit dem lösche ich beim beenden vom Skript alles was potentiell weiter laufen könnte.

        Ben1983 1 Reply Last reply Reply Quote 0
        • Ben1983
          Ben1983 @paul53 last edited by

          @paul53 sollte so gehen, oder?

          let myLowpass = getState(IdWirkleistungGesamtLowpass).val;
          let myFiltertime = getState(IdLowpassFilterTime).val;
          let myValue = 0;
          on(IdWirkleistungGesamt,setmyVal);
          function setmyVal()
          {
              myValue = getState(IdWirkleistungGesamt).val;
          }
          
          function myInterval()
          {
              myLowpass = GetLowpassValue(myLowpass,myValue,myFiltertime,0.2);
              setState(IdWirkleistungGesamtLowpass,myLowpass);
          }
          
          setInterval(myInterval,200);
          
          Asgothian 1 Reply Last reply Reply Quote 0
          • Ben1983
            Ben1983 @Jey Cee last edited by

            @jey-cee keine ahnung, ob es an dem set und get gelegen hat, oder einfach nur am mehrfach übertragen?
            auf jeden fall war er überlastet und durcheinander

            1 Reply Last reply Reply Quote 0
            • Asgothian
              Asgothian Developer @Ben1983 last edited by

              @ben1983 was macht die Funktion “GetLowpassValue”, und wie lange braucht sie ?

              1 Reply Last reply Reply Quote 0
              • Ben1983
                Ben1983 last edited by

                @asgothian also hier der gesamte Aufruf:
                Habe mal davor und danach geloggt.

                log("Start Befehl");
                setState(IdWirkleistungGesamtLowpass,GetLowpassValue(getState(IdWirkleistungGesamtLowpass).val,getState(IdWirkleistungGesamt).val,getState(IdLowpassFilterTime).val,2));
                log("Ende Befehl");
                

                Ergebnis:

                javascript.0
                2022-01-27 23:18:44.685	info	script.js.common.Allgemein: Ende Befehl
                
                javascript.0
                2022-01-27 23:18:44.685	info	script.js.common.Allgemein: Start Befehl
                

                denke max 1ms dauert das ganze.

                vielleicht war es nur eine falsche eingabe vorher.

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Ben1983 last edited by

                  @ben1983 sagte: denke max 1ms dauert das ganze.

                  Nein, es dauert wahrscheinlich etwas länger, denn setState() arbeitet asynchron, d.h. log("Ende Befehl") wird ausgeführt, bevor setState() fertig ist.

                  @asgothian sagte in Schedule im ms Bereich:

                  was macht die Funktion “GetLowpassValue”

                  Ich schließe mich der Frage an. Nur wenn man die Funktion kennt, kann man beurteilen, ob daraus ein zeitliches Problem entstehen könnte.

                  Ben1983 1 Reply Last reply Reply Quote 0
                  • Ben1983
                    Ben1983 @paul53 last edited by Ben1983

                    @paul53 Stimmt, habe es mal so gemacht:

                    log("Start");
                    setState(IdWirkleistungGesamtLowpass,GetLowpassValue(getState(IdWirkleistungGesamtLowpass).val,getState(IdWirkleistungGesamt).val,2,0.2))
                    
                    on(IdWirkleistungGesamtLowpass,logging);
                    
                    function logging()
                    {
                        log("Ende");
                    }
                    

                    Ergebnis:

                    javascript.0
                    2022-01-27 23:52:36.433	info	script.js.common.Allgemein: Ende
                    javascript.0
                    2022-01-27 23:52:36.348	info	script.js.common.Allgemein: Start
                    

                    Also 85ms benötigt setState

                    Wie ist das denn zu sehen, wenn ich bspw. 20 werte hintereinander mit setSTate schreibe die brauchen doch dann keine 20 * 85ms, oder?

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Ben1983 last edited by paul53

                      @ben1983 sagte: Also 85ms benötigt setState

                      Nein, weniger: Der Trigger benötigt auch einige Zeit.

                      @ben1983 sagte in Schedule im ms Bereich:

                      wenn ich bspw. 20 werte hintereinander mit setSTate schreibe die brauchen doch dann keine 20 * 85ms, oder?

                      Nein, die setState() werden kurz (< 1ms) nacheinander ausgeführt, aber alle sind erst nach einigen ms Verzögerung fertig.

                      So siehst Du die Dauer von setState(), wobei noch 2 getState() dabei sind (Variablen wären schneller):

                      function logging()
                      {
                          log("Ende");
                      }
                      log("Start");
                      setState(IdWirkleistungGesamtLowpass,GetLowpassValue(getState(IdWirkleistungGesamtLowpass).val,getState(IdWirkleistungGesamt).val,2,0.2), logging)
                      
                      Ben1983 2 Replies Last reply Reply Quote 0
                      • Ben1983
                        Ben1983 @paul53 last edited by

                        @paul53 OK, da komme ich auf 86ms
                        sogar, wenn ich die letzte zeile 10 mal ausführe

                        1 Reply Last reply Reply Quote 0
                        • Ben1983
                          Ben1983 @paul53 last edited by

                          @paul53 führt eine funktion immer eine zuletzt übergeben aus? kannte ich so noch gar nicht.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          805
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          5
                          38
                          752
                          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