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. Schedule im ms Bereich

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Schedule im ms Bereich

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
38 Beiträge 5 Kommentatoren 862 Aufrufe 3 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.
  • Ben1983B Ben1983

    @paul53 und wann sollen die beschrieben werden?
    Der Verwendete Wert ist nun mal global, wie soll ich den sonst bekommen, außer mit getState?

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #26

    @ben1983 sagte: wie soll ich den sonst bekommen, außer mit getState?

    Bei Skriptstart den Wert mit getState(id).val in die Variable einlesen und dann mit der Variablen weiter arbeiten. Den Datenpunkt dann laufend mit setState(id, variable, true) aktualiseren.

    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

    Ben1983B 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @ben1983 sagte: wie soll ich den sonst bekommen, außer mit getState?

      Bei Skriptstart den Wert mit getState(id).val in die Variable einlesen und dann mit der Variablen weiter arbeiten. Den Datenpunkt dann laufend mit setState(id, variable, true) aktualiseren.

      Ben1983B Offline
      Ben1983B Offline
      Ben1983
      schrieb am zuletzt editiert von Ben1983
      #27

      @paul53 würde funktionieren,
      aber das was ich mit setstate beschreibe ist ja auch die zu lesende Variable.
      ok, könnte man auch auf die Variable schreiben und direkt nach dem schreiben darauf dann mit setstate zuweisen. also quasi so:

      let myVar = getState(Idxy).val;
      let myTime = getState(IdTime).val;
      

      im intervall dann:

      myVar = getLowpass(myVar,myTime,200);
      setState(Idxy,myVar);
      

      sollte das besser funktionieren?

      Bedeutet also, dass man in einem intervall besser kein getState verwenden sollte?
      dann müsste ich nur den aktualwert über ein .on event der variable zuweisen.

      ein .n event einer variable gibts nicht, oder?

      paul53P 1 Antwort Letzte Antwort
      0
      • Ben1983B Ben1983

        @paul53 würde funktionieren,
        aber das was ich mit setstate beschreibe ist ja auch die zu lesende Variable.
        ok, könnte man auch auf die Variable schreiben und direkt nach dem schreiben darauf dann mit setstate zuweisen. also quasi so:

        let myVar = getState(Idxy).val;
        let myTime = getState(IdTime).val;
        

        im intervall dann:

        myVar = getLowpass(myVar,myTime,200);
        setState(Idxy,myVar);
        

        sollte das besser funktionieren?

        Bedeutet also, dass man in einem intervall besser kein getState verwenden sollte?
        dann müsste ich nur den aktualwert über ein .on event der variable zuweisen.

        ein .n event einer variable gibts nicht, oder?

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #28

        @ben1983 sagte: sollte das besser funktionieren?

        Ja.

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

        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

        Ben1983B 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @asgothian sagte: bei meinen Skripten muss ich die nicht löschen wenn ich das Skript anhalte.

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

          Jey CeeJ Online
          Jey CeeJ Online
          Jey Cee
          Developer
          schrieb am zuletzt editiert von
          #29

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

          Persönlicher Support
          Spenden -> paypal.me/J3YC33

          Ben1983B 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @ben1983 sagte: sollte das besser funktionieren?

            Ja.

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

            Ben1983B Offline
            Ben1983B Offline
            Ben1983
            schrieb am zuletzt editiert von
            #30

            @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);
            
            AsgothianA 1 Antwort Letzte Antwort
            0
            • Jey CeeJ Jey Cee

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

              Ben1983B Offline
              Ben1983B Offline
              Ben1983
              schrieb am zuletzt editiert von
              #31

              @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 Antwort Letzte Antwort
              0
              • Ben1983B Ben1983

                @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);
                
                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von
                #32

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

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                1 Antwort Letzte Antwort
                0
                • Ben1983B Offline
                  Ben1983B Offline
                  Ben1983
                  schrieb am zuletzt editiert von
                  #33

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

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • Ben1983B Ben1983

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

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #34

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

                    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

                    Ben1983B 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

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

                      Ben1983B Offline
                      Ben1983B Offline
                      Ben1983
                      schrieb am zuletzt editiert von Ben1983
                      #35

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

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • Ben1983B 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?

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #36

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

                        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

                        Ben1983B 2 Antworten Letzte Antwort
                        0
                        • paul53P 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)
                          
                          Ben1983B Offline
                          Ben1983B Offline
                          Ben1983
                          schrieb am zuletzt editiert von
                          #37

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

                          1 Antwort Letzte Antwort
                          0
                          • paul53P 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)
                            
                            Ben1983B Offline
                            Ben1983B Offline
                            Ben1983
                            schrieb am zuletzt editiert von
                            #38

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

                            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

                            652

                            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