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. Blockly
  5. Event auslösen wenn länger als Zeit X

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    537

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Event auslösen wenn länger als Zeit X

Geplant Angeheftet Gesperrt Verschoben Blockly
37 Beiträge 5 Kommentatoren 3.3k Aufrufe 5 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.
  • G Gerber

    @Asgothian

    Das mit dem False ist mal wieder ein Baufehler - da muss eine 0 rein, damit die Variable einen definierten Wert hat
    Wenn du die Meldung nicht mehr willst würde ich das ganze Intervall weg nehmen - dann hat sich das erledigt
    Ja.
    

    Alles klar, danke.

    Vorsichtig - der Wert 1 wird genutzt um zu erkennen das das Auto frisch angeschlossen wurde. Das ist wichtig für die Situation das du das Auto anschliesst während der Überschuss bereits stabil über 500 ist. In diesem Fall würde das Auto ansonsten nie laden, da die Bedingung "Wechsel von unter 500 auf 500 oder mehr" nicht erfüllt werden kann.
    
    Wenn die Variable direkt vom Auto gelesen wird musst du ggf. für die Situation frisch eingesteckt einen eigenen Marker vergeben.
    

    Alles klar, danke.

    Aber theoretisch könnte ich es wie von dir beschrieben nutzen, auf den Datenpunkt der Wallbox reagieren, wenn sich der Car Datenpunkt ändert.

    Daraufhin wie oben beschrieben Wenn = 3 oder 4, dann laden.

    Natürlich muss ich jetzt die Werte noch so anpassen, dass wenn das Auto lädt die Kapazität für das beenden der Ladung beachtet wird.

    Ich habe es jetzt so mit den Variablen gelöst, denke sollte passen.

    65869790-51cc-40d2-99f9-1ef499997b56-image.png

    AsgothianA Offline
    AsgothianA Offline
    Asgothian
    Developer
    schrieb am zuletzt editiert von
    #28

    @gerber Da passt leider was nicht:

    Screenshot 2023-02-15 at 09.48.36.png

    das "stop CarStatus" wird so nichts bringen, da muss eher ein "stop Timeout" rein.

    Sonst sieht es gut aus.

    A

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

    G 1 Antwort Letzte Antwort
    1
    • AsgothianA Asgothian

      @gerber Da passt leider was nicht:

      Screenshot 2023-02-15 at 09.48.36.png

      das "stop CarStatus" wird so nichts bringen, da muss eher ein "stop Timeout" rein.

      Sonst sieht es gut aus.

      A

      G Offline
      G Offline
      Gerber
      schrieb am zuletzt editiert von
      #29

      @asgothian

      Ahhhhhhhhhhh. Das "STop" Timeout hatte ich zuvor eingefügt und nicht mehr beachtet.
      Muss natürlich angepasst werden, danke.

      Würdest du jetzt ein zweites Script schreiben, zwecks dem Stoppen des Ladevorgangs oder in das jetzige mit einbauen?

      AsgothianA 1 Antwort Letzte Antwort
      0
      • G Gerber

        @asgothian

        Ahhhhhhhhhhh. Das "STop" Timeout hatte ich zuvor eingefügt und nicht mehr beachtet.
        Muss natürlich angepasst werden, danke.

        Würdest du jetzt ein zweites Script schreiben, zwecks dem Stoppen des Ladevorgangs oder in das jetzige mit einbauen?

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von
        #30

        @gerber In das jetzige mit einbauen. Ist effektiver

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

        G 1 Antwort Letzte Antwort
        1
        • AsgothianA Asgothian

          @gerber In das jetzige mit einbauen. Ist effektiver

          G Offline
          G Offline
          Gerber
          schrieb am zuletzt editiert von Gerber
          #31

          @asgothian Alles klar.

          Jetzt ist mir gearde noch ein Gedanke gekommen.
          Wäre es nicht sinnvoller den CarStatus eins drüber zu setzten, damit zuerst geprüft wird ob überhaupt ein Auto verbunden ist und nur dann geladen wird?

          In diesem Fall könnte es ja sein, dass der vorherige Werte < 500 ist und der jetzige Wert >= und somit würde er den Ladebefehl senden.

          BZW eigentlich könnte man den Operator von Oder auf Und drehen und somit würde er nur in das Timeout gehen, wenn ein Überschuss ist und ein Auto verbunden ist, richtig?

          Also so:

          b091f09b-20f3-41b0-9945-bb1ffd5bdbbc-image.png

          EDIT:

          Oder sogar den Carstatus ganz oben abfragen, so dass beide Blöcke nur loslaufen, wenn ein Auto auch wirklich verbunden ist 🤔

          Final dann so:

          7514af4a-eb33-4cb4-afc8-4bfca8f96417-image.png
          5e0d92f0-2721-4e78-ac63-43738e5cdc13-image.png

          Somit würde er den ladenStarten Timeout beenden, wenn kein Überschuss mehr da ist und das Laden nur abbrechen, wenn kein Überschuss mehr da ist und ein Auto momentan lädt.
          Und das ganze könnte ich je Situation ändern. Heißt auch bei einem kleineren Überschuss (auch wenn es für das Auto nicht komplett ausreicht), dass laden starten und wenn es lädt mit anderen Werten das laden beenden.

          Sollte doch eigentlich so passen oder habe ich hier ein Denkfehler? 🤔

          Natürlich noch die Aktion zum Starten des Ladens etc einbauen.

          AsgothianA 1 Antwort Letzte Antwort
          0
          • BananaJoeB Offline
            BananaJoeB Offline
            BananaJoe
            Most Active
            schrieb am zuletzt editiert von
            #32

            Ich setzte so etwas ähnliches auch in einigen Skripten ein - allerdings nicht als Timout.

            Skript 1 reagiert auf Datenpunktänderungen und prüft den Zustand, z.B. ob eine Solarproduktion aktiv ist oder nicht, oder ob ein Gerät eingeschaltet ist oder nicht.
            Und setzt a.) einen entsprechenden Datenpunkt auf True. Und b.) schreibt es den Zeitstempel in einen anderen Datenpunkt (Typ Number). Ist der Zustand dann wieder Aus / False setzte ich auch False und setze den Zeitstempel auf 0
            Zeitstempel sind die Millisekunden seit dem 1.1.1970, 00:00 Uhr.

            Damit kann man nämlich prima Rechnen.

            Für Dinge die dann nach einer gewissen Zeit passieren sollen nutze ich ein 2. Skript welches 1x pro Minute läuft und die Datenpunkte prüft. Zum Beispiel Ob der Zeitstempel nicht 0 ist und wenn ja wie groß ist die Differenz.
            Ich muss natürlich sicherstellen das es nicht mehrmals auslöst, also nicht jede Minute weil die Differenz > 600.000 Milisekunden ist

            Vorteil ist - für mich - das ich das ganze mehrmals mit unterschiedlichen Zeitenräumen verwerten kann, nebenbei habe ich so auch die Einschaltdauer.

            ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

            1 Antwort Letzte Antwort
            0
            • G Gerber

              @asgothian Alles klar.

              Jetzt ist mir gearde noch ein Gedanke gekommen.
              Wäre es nicht sinnvoller den CarStatus eins drüber zu setzten, damit zuerst geprüft wird ob überhaupt ein Auto verbunden ist und nur dann geladen wird?

              In diesem Fall könnte es ja sein, dass der vorherige Werte < 500 ist und der jetzige Wert >= und somit würde er den Ladebefehl senden.

              BZW eigentlich könnte man den Operator von Oder auf Und drehen und somit würde er nur in das Timeout gehen, wenn ein Überschuss ist und ein Auto verbunden ist, richtig?

              Also so:

              b091f09b-20f3-41b0-9945-bb1ffd5bdbbc-image.png

              EDIT:

              Oder sogar den Carstatus ganz oben abfragen, so dass beide Blöcke nur loslaufen, wenn ein Auto auch wirklich verbunden ist 🤔

              Final dann so:

              7514af4a-eb33-4cb4-afc8-4bfca8f96417-image.png
              5e0d92f0-2721-4e78-ac63-43738e5cdc13-image.png

              Somit würde er den ladenStarten Timeout beenden, wenn kein Überschuss mehr da ist und das Laden nur abbrechen, wenn kein Überschuss mehr da ist und ein Auto momentan lädt.
              Und das ganze könnte ich je Situation ändern. Heißt auch bei einem kleineren Überschuss (auch wenn es für das Auto nicht komplett ausreicht), dass laden starten und wenn es lädt mit anderen Werten das laden beenden.

              Sollte doch eigentlich so passen oder habe ich hier ein Denkfehler? 🤔

              Natürlich noch die Aktion zum Starten des Ladens etc einbauen.

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von
              #33

              @gerber sagte in Event auslösen wenn länger als Zeit X:

              Sollte doch eigentlich so passen oder habe ich hier ein Denkfehler?

              So sieht es gut aus.

              @bananajoe sagte in Event auslösen wenn länger als Zeit X:

              Und setzt a.) einen entsprechenden Datenpunkt auf True. Und b.) schreibt es den Zeitstempel in einen anderen Datenpunkt (Typ Number). Ist der Zustand dann wieder Aus / False setzte ich auch False und setze den Zeitstempel auf 0
              Zeitstempel sind die Millisekunden seit dem 1.1.1970, 00:00 Uhr.
              Damit kann man nämlich prima Rechnen.
              Für Dinge die dann nach einer gewissen Zeit passieren sollen nutze ich ein 2. Skript welches 1x pro Minute läuft und die Datenpunkte prüft. Zum Beispiel Ob der Zeitstempel nicht 0 ist und wenn ja wie groß ist die Differenz.
              Ich muss natürlich sicherstellen das es nicht mehrmals auslöst, also nicht jede Minute weil die Differenz > 600.000 Milisekunden ist

              Kann man machen, ist meiner Meinung nach aber ressourcentechnisch nicht so gut. Du machst schon bei jeder Änderung etwas, und nur weil du da nicht noch ein komplexeres Ifthenelse einbauen willst machst du zusätzlich noch etwas per Heartbeat.

              Finde ich doppelt gemoppelt.

              A.

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

              BananaJoeB G 2 Antworten Letzte Antwort
              0
              • AsgothianA Asgothian

                @gerber sagte in Event auslösen wenn länger als Zeit X:

                Sollte doch eigentlich so passen oder habe ich hier ein Denkfehler?

                So sieht es gut aus.

                @bananajoe sagte in Event auslösen wenn länger als Zeit X:

                Und setzt a.) einen entsprechenden Datenpunkt auf True. Und b.) schreibt es den Zeitstempel in einen anderen Datenpunkt (Typ Number). Ist der Zustand dann wieder Aus / False setzte ich auch False und setze den Zeitstempel auf 0
                Zeitstempel sind die Millisekunden seit dem 1.1.1970, 00:00 Uhr.
                Damit kann man nämlich prima Rechnen.
                Für Dinge die dann nach einer gewissen Zeit passieren sollen nutze ich ein 2. Skript welches 1x pro Minute läuft und die Datenpunkte prüft. Zum Beispiel Ob der Zeitstempel nicht 0 ist und wenn ja wie groß ist die Differenz.
                Ich muss natürlich sicherstellen das es nicht mehrmals auslöst, also nicht jede Minute weil die Differenz > 600.000 Milisekunden ist

                Kann man machen, ist meiner Meinung nach aber ressourcentechnisch nicht so gut. Du machst schon bei jeder Änderung etwas, und nur weil du da nicht noch ein komplexeres Ifthenelse einbauen willst machst du zusätzlich noch etwas per Heartbeat.

                Finde ich doppelt gemoppelt.

                A.

                BananaJoeB Offline
                BananaJoeB Offline
                BananaJoe
                Most Active
                schrieb am zuletzt editiert von
                #34

                @asgothian sagte in Event auslösen wenn länger als Zeit X:

                Du machst schon bei jeder Änderung etwas, und nur weil du da nicht noch ein komplexeres Ifthenelse einbauen willst machst du zusätzlich noch etwas per Heartbeat

                Naja, die Timeout-Beispiele reagieren auch auf jede Änderungen und steigen dank Sperrvariable wieder aus. Das ist dann nicht mehr oder weniger. Oder wie oft wird das letzte Beispiel von @Gerber ausgeführt?

                Mehr ist der zusätzliche 1x die Minute Aufruf, richtig.

                ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                AsgothianA 1 Antwort Letzte Antwort
                0
                • AsgothianA Asgothian

                  @gerber sagte in Event auslösen wenn länger als Zeit X:

                  Sollte doch eigentlich so passen oder habe ich hier ein Denkfehler?

                  So sieht es gut aus.

                  @bananajoe sagte in Event auslösen wenn länger als Zeit X:

                  Und setzt a.) einen entsprechenden Datenpunkt auf True. Und b.) schreibt es den Zeitstempel in einen anderen Datenpunkt (Typ Number). Ist der Zustand dann wieder Aus / False setzte ich auch False und setze den Zeitstempel auf 0
                  Zeitstempel sind die Millisekunden seit dem 1.1.1970, 00:00 Uhr.
                  Damit kann man nämlich prima Rechnen.
                  Für Dinge die dann nach einer gewissen Zeit passieren sollen nutze ich ein 2. Skript welches 1x pro Minute läuft und die Datenpunkte prüft. Zum Beispiel Ob der Zeitstempel nicht 0 ist und wenn ja wie groß ist die Differenz.
                  Ich muss natürlich sicherstellen das es nicht mehrmals auslöst, also nicht jede Minute weil die Differenz > 600.000 Milisekunden ist

                  Kann man machen, ist meiner Meinung nach aber ressourcentechnisch nicht so gut. Du machst schon bei jeder Änderung etwas, und nur weil du da nicht noch ein komplexeres Ifthenelse einbauen willst machst du zusätzlich noch etwas per Heartbeat.

                  Finde ich doppelt gemoppelt.

                  A.

                  G Offline
                  G Offline
                  Gerber
                  schrieb am zuletzt editiert von
                  #35

                  @Asgothian

                  So sieht es gut aus.
                  
                  

                  Super, dann habe ich die komplette logik auch mit den Timeouts verstanden.
                  Nochmal vielen Dank für die Hilfe.

                  Das Script hat heute auch super funktioniert.
                  Die Werte mit dem Laden abbrechen muss ich noch ein wenig variieren.

                  @BananaJoe
                  Danke für dein Vorschlag.

                  1 Antwort Letzte Antwort
                  0
                  • BananaJoeB BananaJoe

                    @asgothian sagte in Event auslösen wenn länger als Zeit X:

                    Du machst schon bei jeder Änderung etwas, und nur weil du da nicht noch ein komplexeres Ifthenelse einbauen willst machst du zusätzlich noch etwas per Heartbeat

                    Naja, die Timeout-Beispiele reagieren auch auf jede Änderungen und steigen dank Sperrvariable wieder aus. Das ist dann nicht mehr oder weniger. Oder wie oft wird das letzte Beispiel von @Gerber ausgeführt?

                    Mehr ist der zusätzliche 1x die Minute Aufruf, richtig.

                    AsgothianA Offline
                    AsgothianA Offline
                    Asgothian
                    Developer
                    schrieb am zuletzt editiert von
                    #36

                    @bananajoe sagte in Event auslösen wenn länger als Zeit X:

                    Mehr ist der zusätzliche 1x die Minute Aufruf, richtig.

                    Bedingt. Es ist der Minütliche Aufruf plus die Aufrufe zur Synchronisation an den Minütlichen Aufruf.

                    Nebenbei reagieren die Timeout-Befehle gerade nicht auf jede Änderung. Wenn du mal genau liest reagieren sie nur auf die Änderungen bei denen der Wert von "Vorher unter schwellwert" auf "jetzt über Schwellwert" wechselt. Das heist zu 95% läuft der Timeout nicht. Nur in dem Zeitrahmen wo der Wert um den Schwellwert schwankt gibt es regelmässig Timeouts.

                    Nur das wir uns nicht missverstehen. Das ist nicht viel, da hast du recht. Das kann man so machen - das stimmt auch - für jeden Einzelfall. Aber im grossen und ganzen halte ich es für empfehlenswert sich tiefer mit der Event-Basierten Programmierung zu beschäftigen um weniger regelmässige Skripte zu haben.

                    Gerade das von @Gerber vorgeschlagene Problem lässt sich leicht vollständig ohne Zeitpläne nutzen - wenn man es durchdenkt.

                    A.

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

                    BananaJoeB 1 Antwort Letzte Antwort
                    2
                    • AsgothianA Asgothian

                      @bananajoe sagte in Event auslösen wenn länger als Zeit X:

                      Mehr ist der zusätzliche 1x die Minute Aufruf, richtig.

                      Bedingt. Es ist der Minütliche Aufruf plus die Aufrufe zur Synchronisation an den Minütlichen Aufruf.

                      Nebenbei reagieren die Timeout-Befehle gerade nicht auf jede Änderung. Wenn du mal genau liest reagieren sie nur auf die Änderungen bei denen der Wert von "Vorher unter schwellwert" auf "jetzt über Schwellwert" wechselt. Das heist zu 95% läuft der Timeout nicht. Nur in dem Zeitrahmen wo der Wert um den Schwellwert schwankt gibt es regelmässig Timeouts.

                      Nur das wir uns nicht missverstehen. Das ist nicht viel, da hast du recht. Das kann man so machen - das stimmt auch - für jeden Einzelfall. Aber im grossen und ganzen halte ich es für empfehlenswert sich tiefer mit der Event-Basierten Programmierung zu beschäftigen um weniger regelmässige Skripte zu haben.

                      Gerade das von @Gerber vorgeschlagene Problem lässt sich leicht vollständig ohne Zeitpläne nutzen - wenn man es durchdenkt.

                      A.

                      BananaJoeB Offline
                      BananaJoeB Offline
                      BananaJoe
                      Most Active
                      schrieb am zuletzt editiert von
                      #37

                      @asgothian sagte in Event auslösen wenn länger als Zeit X:

                      Aber im grossen und ganzen halte ich es für empfehlenswert sich tiefer mit der Event-Basierten Programmierung zu beschäftigen um weniger regelmässige Skripte zu haben.

                      Da hast du natürlich Recht. Ich nutze das "1x die Minute" genau genommen auch nur an 2 Stellen für VIS Darstellungen (z.B. Ereignisanzeige auf der verschiedenen Meldungen nacheinander angezeigt werden, neue Meldungen aber sofort erscheinen), der große Rest läuft Eventbasiert - das war ja gerade eines der Dinge die ich genial finde (neben dem Objektebaum) und mich deshalb für ioBroker entschieden hatte.

                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                      1 Antwort Letzte Antwort
                      1
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      395

                      Online

                      32.5k

                      Benutzer

                      81.8k

                      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