Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Frage zu Intervall als Wartezeit

    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

    [gelöst] Frage zu Intervall als Wartezeit

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

      Hallo allerseits,

      wird das im Intervall sofort ein erstes Mal ausgeführt oder erst nach t?

      Ich möchte grad eine Wartezeit einrichten nach dem Motto "ok .. Satus erkannt .. mach aber erst was, wenn es nach 30 Sekunden immer noch so ist.

      Würde eine Variable vorher auf 0 setzen und im Intervall (30s) dann schauen wollen ob 1 ist .. ggf. aber auch 2 wenn das Intervall sofort ein erstes Mal ausgeführt wird.

      Schönen Gruß

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Benutze dafür Time-out anstatt Intervall

        Sent from my iPhone using Tapatalk

        1 Reply Last reply Reply Quote 0
        • D
          daniello last edited by

          Danke .. wollte ich zuerst .. aber Timeout kam mir dann unlogisch vor.

          Ich möchte prüfen ob die Leistung am Stecker kleiner 5W ist und erst wenn der Zustand 30 Sekunden hält etwas tun. Dann ist das Gerät (hoffentlich) wirklich aus. Beim Timeout würde jedes Mal der Zustand Wahr wenn im Zeitfenster was geändert wird.

          Passt doch nicht .. oder?

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Nein!

            Wen du innerhalb des timeout einen Wert (zB timeout 30sec, If Wert ist xxx) Dan prüft er nach 30 Sekunden diesen Wert.

            Sent from my iPhone using Tapatalk

            1 Reply Last reply Reply Quote 0
            • D
              daniello last edited by

              Danke .. hatte nach einer Erklärung gesucht .. und wohl die falsche gefunden .. dann passt mein Skript ja 🙂 Super!

              1 Reply Last reply Reply Quote 0
              • D
                daniello last edited by

                Trotzdem vielleicht noch die Antwort auf die Frage ob Intervall nach dem Ablauf der Zeit ein erstes Mal was tut oder sofort?

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

                  @Dutchman:

                  Dan prüft er nach 30 Sekunden diesen Wert. `
                  Das bedeutet nicht, dass zwischenzeitlich der Wert überschritten wurde.
                  @daniello:

                  erst wenn der Zustand 30 Sekunden hält etwas tun. `
                  Bei Wertüberschreitung (else): clearTimeout(timer). Beispiel:

                  var timer = null;
                  on(idPower, function(dp) {
                     if(dp.state.val < 5) {
                        timer = setTimeout(function() {
                           // etwas tun
                        }, 30000); // 30 s
                     } else if(timer) clearTimeout(timer);
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @daniello:

                    die Frage ob Intervall nach dem Ablauf der Zeit ein erstes Mal was tut oder sofort? `
                    Erst nach Ablauf der Zeit wird das erste Mal etwas ausgeführt.

                    1 Reply Last reply Reply Quote 0
                    • D
                      daniello last edited by

                      prima .. hätte es dann so umgesetzt .. müsste passen …

                      4418_2018-09-29_132626_timout.png

                      1 Reply Last reply Reply Quote 0
                      • Dutchman
                        Dutchman Developer Most Active Administrators last edited by

                        Ich würde den 2ten falls im timeout Weck lassen und im ersten falls einen Stop timeout einbauen.

                        Ändert sich der wert Dan innerhalb der 30 Sekunden wieder > xx stopst du damit den Timer und nichts wird ausgeführt

                        Sent from my iPhone using Tapatalk

                        1 Reply Last reply Reply Quote 0
                        • D
                          daniello last edited by

                          danke .. muss ich mal schauen ob ich das umgesetz bekomme .. dachte das passt so .. wegen der Hysterese.

                          Weiß gar nicht warum ich hier "Professional" bin .. vermutlich die Anzahl meiner Newbiefragen 🙂

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

                            493_blockly_wm_verz_gert_aus.jpg
                            Ist der Datenpunkt "waschmaschine" ein virtueller Datenpunkt (z.B. für Vis), dann aktualisiere verwenden; wird der Wert aber versendet (z.B eine SV der HM CCU), dann steuere verwenden.

                            EDIT KORREKTUR: und durch zweites falls ersetzt

                            1 Reply Last reply Reply Quote 0
                            • D
                              daniello last edited by

                              Danke Paul .. das ist ja sehr schlank 🙂

                              1 Reply Last reply Reply Quote 0
                              • D
                                daniello last edited by

                                wenn das mal so schlicht läuft .. bin gespannt 😉

                                1 Reply Last reply Reply Quote 0
                                • J
                                  Jan1 last edited by

                                  Mal ne Frage zum Stop des timeout. Warum stoppe ich was, dass durch die falls Bedingung gar nicht gestartet wurde, oder steh ich gerade auf dem Schlauch?

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

                                    @Jan1:

                                    Warum stoppe ich was, dass durch die falls Bedingung gar nicht gestartet wurde `
                                    Der Timer wird gestoppt, wenn die Falls-Bedingung erfüllt war, aber innerhalb der Verzögerungszeit sie nicht erfüllt bleibt. Beispiel:

                                    Waschmaschine läuft –> Leistung 3 W (Start Timer) --> nach 10 s Leistung 50 W (Stopp Timer) --> nach 20 s Leistung wieder 3 W (Start Timer) --> nach 40 s Leistung 50 W (Stopp Timer) --> nach 50 s 3 W (Start Timer) --> nach 80 s Wachmaschine fertig.

                                    Ohne den Stopp Timer würden nach 20 s und 50 s weitere Timer gestartet, der erste Timer würde weiterlaufen und nach 30 s fertig melden, der zweite Timer nach 50 s und der dritte Timer nach 80 s.

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      daniello last edited by

                                      Zwei Dinge sind blöd .. zum einen steht die Waschmaschine still trotzdem "ist sie fertig" .. kommt grad so alle paar Minuten. Kein einziger Val ist über 0.3. Und die W_kWh und W_Euro sind NaN (Not a Number) .. müssten sie doch aber sein.

                                      17:36:39.598	[info]	javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970444.2.POWER, timerId=0) => {"val":0.25,"ack":true,"ts":1538235399594,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235279350}
                                      17:36:39.599	[info]	javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970444.2.POWER, timerId=0) => {"val":0.25,"ack":true,"ts":1538235399594,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235279350}
                                      17:36:39.599	[info]	javascript.0 script.js.common.waschmaschine_trockner: setTimeout(ms=30000)
                                      17:37:06.963	[info]	javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970432.2.POWER, timerId=0) => {"val":0.28,"ack":true,"ts":1538235426957,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235426957}
                                      17:37:06.964	[info]	javascript.0 script.js.common.waschmaschine_trockner: setTimeout(ms=30000)
                                      17:37:09.599	[info]	javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970444.2.POWER, timerId=0) => {"val":0.25,"ack":true,"ts":1538235399594,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538235279350}
                                      17:37:09.599	[info]	javascript.0 script.js.common.waschmaschine_trockner: setForeignState(id=.eigene.wäschetrockner, state=false)
                                      17:37:36.965	[info]	javascript.0 script.js.common.waschmaschine_trockner: getState(id=hm-rpc.0.KEQ0970432.2.ENERGY_COUNTER, timerId=0) => {"val":2359.5,"ack":true,"ts":1538235426950,"q":0,"from":"system.adapter.hm-rpc.0","lc":1538234215211}
                                      17:37:36.965	[info]	javascript.0 script.js.common.waschmaschine_trockner: sendTo(adapter=email, cmd=send, msg={"text":"Verbrauch heute: NaN kWh. In Euro: NaN","to":"xx@xx.com","subject":"Waschmaschine heute"})
                                      17:37:36.965	[info]	javascript.0 script.js.common.waschmaschine_trockner: setForeignState(id=alexa2.0.Echo-Devices.G090LF107207028R.Commands.speak, state="Die Waschmaschine ist fertig")
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 last edited by

                                        @daniello:

                                        kommt grad so alle paar Minuten. Kein einziger Val ist über 0.3. `
                                        Aber auch nicht konstant. Deshalb die Abfrage erweitern auf

                                        falls Wert < 4 und vorheriger Wert >= 4

                                        EDIT: falls Wert < 4 falls vorheriger Wert >= 4

                                        @daniello:

                                        Und die W_kWh und W_Euro sind NaN (Not a Number) `
                                        Die Variable Wstart wurde sicherlich noch nicht initialisiert, da der sonst-Zweig noch nie erreicht wurde. Initialisiere die Variable <u>zusätzlich</u> außerhalb des Triggerblocks:

                                        setze Wstart auf Wert vom Objekt Waschmaschine:2.ENERGY_COUNTER

                                        1 Reply Last reply Reply Quote 0
                                        • J
                                          Jan1 last edited by

                                          @paul53:

                                          @Jan1:

                                          Warum stoppe ich was, dass durch die falls Bedingung gar nicht gestartet wurde `
                                          Der Timer wird gestoppt, wenn die Falls-Bedingung erfüllt war, aber innerhalb der Verzögerungszeit sie nicht erfüllt bleibt. Beispiel:

                                          Waschmaschine läuft –> Leistung 3 W (Start Timer) --> nach 10 s Leistung 50 W (Stopp Timer) --> nach 20 s Leistung wieder 3 W (Start Timer) --> nach 40 s Leistung 50 W (Stopp Timer) --> nach 50 s 3 W (Start Timer) --> nach 80 s Wachmaschine fertig.

                                          Ohne den Stopp Timer würden nach 20 s und 50 s weitere Timer gestartet, der erste Timer würde weiterlaufen und nach 30 s fertig melden, der zweite Timer nach 50 s und der dritte Timer nach 80 s. `

                                          OK, jetzt weiß ich auch warum sich einige meiner Blocklys komisch verhalten, eigentlich logisch.

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            daniello last edited by

                                            > falls Wert < 4 und vorheriger Wert >= 4

                                            Wie macht mann denn das mit dem vorherigen Wert? Ist das "letzte Änderung" ?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            504
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            42
                                            4181
                                            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