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
    546

  • 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.
  • AsgothianA Asgothian

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

    Was aber, wenn sich dieser Datenpunkt fast sekündlich ändert?

    ganz einfach:

    • Schwelle mit Hysterese festlegen
    • Per prüfen von "aktueller Wert > Ein-Schwelle und vorheriger Wert <= Ein-Schwelle feststellen wann der Schwellwert überschritten wird - merken, Timeout 5 Minuten starten.
    • Per prüfen von "aktueller Wert < Ein-Schwelle - Hysterie - Schwellwert" - Ist das der Fall: Timeout löschen

    Im Timeout die Aktion durchführen.

    Da macht es dann auch wenig wenn der Wert sich sekündlich ändert, da immer nur die 3 Falls Bedingungen laufen.

    A.

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

    @asgothian

    Dann brauchst Du ja irgendwie einen DP, der Dir sagt ob Überschuss vorhanden ist oder nicht.
    Der wird sich dann ja nicht sekündlich ändern.
    

    Tatsächlich ist es so, dass der SunnyManager sekündlich die Werte übermittelt und diese auch ändert.

    @Asgothian

    Danke dir.
    Die Lösung klingt besser.

    Dies werde ich mir genauer ansehen.
    Falls du für solch etwas ein Beispiel hast, kannst du es gerne kurz als Screenshot senden.

    AsgothianA CodierknechtC 2 Antworten Letzte Antwort
    0
    • G Gerber

      @asgothian

      Dann brauchst Du ja irgendwie einen DP, der Dir sagt ob Überschuss vorhanden ist oder nicht.
      Der wird sich dann ja nicht sekündlich ändern.
      

      Tatsächlich ist es so, dass der SunnyManager sekündlich die Werte übermittelt und diese auch ändert.

      @Asgothian

      Danke dir.
      Die Lösung klingt besser.

      Dies werde ich mir genauer ansehen.
      Falls du für solch etwas ein Beispiel hast, kannst du es gerne kurz als Screenshot senden.

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

      @gerber Screenshot 2023-02-13 at 13.30.02.png

      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 Screenshot 2023-02-13 at 13.30.02.png

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

        @Asgothian

        Danke für die schnelle Antwort.
        Sieht erstmal verwirrend aus 😅😁

        1 Antwort Letzte Antwort
        0
        • G Gerber

          @asgothian

          Dann brauchst Du ja irgendwie einen DP, der Dir sagt ob Überschuss vorhanden ist oder nicht.
          Der wird sich dann ja nicht sekündlich ändern.
          

          Tatsächlich ist es so, dass der SunnyManager sekündlich die Werte übermittelt und diese auch ändert.

          @Asgothian

          Danke dir.
          Die Lösung klingt besser.

          Dies werde ich mir genauer ansehen.
          Falls du für solch etwas ein Beispiel hast, kannst du es gerne kurz als Screenshot senden.

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #9

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

          Tatsächlich ist es so, dass der SunnyManager sekündlich die Werte übermittelt und diese auch ändert.

          Aber die Tatsache ob jetzt Überschuss vorhanden ist oder nicht, wird sich nicht sekündlich ändern.
          Da einen passenden DP zu produzieren dürfte ja keine rocket science sein.

          Probier mal die von @Asgothian vorgeschlagene Vorgehensweise.
          Wenn das nicht wie gewünscht funktioniert, können wir da immer noch mal da rangehen.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          G 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

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

            Tatsächlich ist es so, dass der SunnyManager sekündlich die Werte übermittelt und diese auch ändert.

            Aber die Tatsache ob jetzt Überschuss vorhanden ist oder nicht, wird sich nicht sekündlich ändern.
            Da einen passenden DP zu produzieren dürfte ja keine rocket science sein.

            Probier mal die von @Asgothian vorgeschlagene Vorgehensweise.
            Wenn das nicht wie gewünscht funktioniert, können wir da immer noch mal da rangehen.

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

            @codierknecht

            Aber die Tatsache ob jetzt Überschuss vorhanden ist oder nicht, wird sich nicht sekündlich ändern.
            Da einen passenden DP zu produzieren dürfte ja keine rocket science sein.
            

            Naja, leider doch.

            Heute ist es bereits sehr oft zwischen Netzbezug und Überschuss gesprungen.
            Man muss dazu sagen, dass ich auch 100 Prozent im HomeOffice arbeite und es bei solchen Tagen (kein Sommer) schwieriger ist.

            1 Antwort Letzte Antwort
            0
            • G Gerber

              Hi Community,

              ich würde gerne ein Event auslösen (Auto Laden Programm), wenn z.B. ein Überschuss (Datenpunkt) länger als 5 Minuten auf JA steht.
              Dies soll nur bei Sonnenaufgang - Sonnenuntergang passieren und eventuell alle 20 - 30 Minuten geprüft werden ob ein Überschuss (Datenpunkt) vorhanden ist.
              Das Auto Laden Programm steuert die Wallbox über die lokale HTTP API an.

              Leider habe ich hierzu zu wenig Blockly Erfahrung und würde gerne zunächst auf Ideen der Umsetzung oder konkrete Vorschläge von den Profis zurückgreifen.

              Wie würdet ihr dies in Blockly angehen?

              Vielen Dank schon einmal.

              Grüße
              Phil

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

              @gerber sagte: Das Auto Laden Programm steuert die Wallbox

              Soll die Wallbox bei genügend Überschuss einschalten? Dann braucht man eine Hysterese, die etwas größer ist als die Leistungsaufnahme der Wallbox.

              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

              G 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @gerber sagte: Das Auto Laden Programm steuert die Wallbox

                Soll die Wallbox bei genügend Überschuss einschalten? Dann braucht man eine Hysterese, die etwas größer ist als die Leistungsaufnahme der Wallbox.

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

                @paul53

                Soll die Wallbox bei genügend Überschuss einschalten? Dann braucht man eine Hysterese, die etwas größer ist als die Leistungsaufnahme der Wallbox.
                

                yes, genau das ist der Plan.

                Bei den Tagen außerhalb der Sommertage wird es natürlich schwer und man muss es anpassen, dass vllt bei 4000 W Überschuss bereits die Wallbox das laden startet.

                paul53P 1 Antwort Letzte Antwort
                0
                • G Gerber

                  @paul53

                  Soll die Wallbox bei genügend Überschuss einschalten? Dann braucht man eine Hysterese, die etwas größer ist als die Leistungsaufnahme der Wallbox.
                  

                  yes, genau das ist der Plan.

                  Bei den Tagen außerhalb der Sommertage wird es natürlich schwer und man muss es anpassen, dass vllt bei 4000 W Überschuss bereits die Wallbox das laden startet.

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

                  @gerber sagte: genau das ist der Plan.

                  Prinzip, wenn die Wallbox < 5000 W aufnimmt:

                  Blockly_temp.JPG

                  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

                  G 1 Antwort Letzte Antwort
                  1
                  • paul53P paul53

                    @gerber sagte: genau das ist der Plan.

                    Prinzip, wenn die Wallbox < 5000 W aufnimmt:

                    Blockly_temp.JPG

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

                    @paul53
                    Danke dir ebenfalls für deine Antwort.

                    Der Wert "PV-GrenzwertEin" ist ein Datenpunkt, welcher du fest definierst?

                    Wie genau funktioniert das mit dem Stop "delayOn / delayOff".

                    sry für die vllt dummen Fragen.

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • G Gerber

                      @paul53
                      Danke dir ebenfalls für deine Antwort.

                      Der Wert "PV-GrenzwertEin" ist ein Datenpunkt, welcher du fest definierst?

                      Wie genau funktioniert das mit dem Stop "delayOn / delayOff".

                      sry für die vllt dummen Fragen.

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

                      @gerber sagte: Wie genau funktioniert das mit dem Stop "delayOn / delayOff".

                      Der zugehörige Timer wird gestoppt und die Variable (z.B. delayOn) wird auf null gesetzt.

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

                      Der Wert "PV-GrenzwertEin" ist ein Datenpunkt, welcher du fest definierst?

                      Das ist ein eigener Datenpunkt, mit dem der Einschalt-Grenzwert vorgegeben werden kann, z.B. unterschiedlich für Winter / Sommer.

                      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

                      G 1 Antwort Letzte Antwort
                      1
                      • G Offline
                        G Offline
                        Gerber
                        schrieb am zuletzt editiert von
                        #16

                        Vielen Dank an alle.

                        Sorry ich stehe gerade allgemein etwas auf dem Schlauch mit einem einfachen Timeout (diese sind mir noch nicht richtig klar):

                        Eventuell kann jemand nochmal bei Gelegenheit ein BLockly Script mit folgenden Werten senden (wäre sehr dankbar):

                        • Wenn ein Datenpunkt sich aktualisiert
                        • Wenn der Wert länger als 5 Minuten >= 0 ist.

                        Ich komme wie gesagt mit dem Timeout noch nicht ganz klar, wie ich den Wert der sich sekündlich ändert abfragen soll.
                        Vielen Dank.

                        AsgothianA 1 Antwort Letzte Antwort
                        0
                        • G Gerber

                          Vielen Dank an alle.

                          Sorry ich stehe gerade allgemein etwas auf dem Schlauch mit einem einfachen Timeout (diese sind mir noch nicht richtig klar):

                          Eventuell kann jemand nochmal bei Gelegenheit ein BLockly Script mit folgenden Werten senden (wäre sehr dankbar):

                          • Wenn ein Datenpunkt sich aktualisiert
                          • Wenn der Wert länger als 5 Minuten >= 0 ist.

                          Ich komme wie gesagt mit dem Timeout noch nicht ganz klar, wie ich den Wert der sich sekündlich ändert abfragen soll.
                          Vielen Dank.

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

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

                          Ich komme wie gesagt mit dem Timeout noch nicht ganz klar, wie ich den Wert der sich sekündlich ändert abfragen soll.

                          Den fragst du garnicht (explizit) ab. Der Trigger auf "Wert hat sich geändert" liefert den Wert

                          Screenshot 2023-02-14 at 09.10.56.png

                          Wichtig ist das der Baustein "previous value" und der Baustein "state value" aus dem Trigger Bereich stammen - da ist er mit "Objekt ID" vorbelegt und erlaubt Zugriff auf eine Vielzahl von Details zu genau dem Datenpunkt der den Trigger ausgelöst hat:
                          Screenshot 2023-02-14 at 09.11.13.png

                          In diesem Baustein steht im einen Fall der Wert den der DP hatte bevor der trigger aktiviert wurde, im anderen der Wert nachdem der Trigger aktiviert wurde.

                          Letztendlich prüft die 1 Falls Bedingung ob der Wert gerade unter 0 fällt - dann war er vorher höher und es könnte ein Timeout aktiv sein
                          die 2. Falls Bedingung prüft ob der Wert gerade von weniger als 0 auf 0 oder grösser gestiegen ist. Genau in diesem Fall willst du deinen Timeout starten, damit 5 Minuten nachdem der Wert auf 0 oder grösser gestiegen ist deine Aktion ausgelöst wird.

                          Das ganze funktioniert gut - nur wenn der Wert ständig um 0 herum schwankt ist es kritisch. Deswegen wird oft eine Hysterse eingeführt, sprich das Aktivieren findet statt wenn der Wert z.Bsp. über 1 steigt, das deaktivieren wenn der Wert unter 0 fällt.

                          A.
                          Nachtrag: Schreibfehler im Kommentar - das passiert nach 5 Minuten :)

                          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 sagte in Event auslösen wenn länger als Zeit X:

                            Ich komme wie gesagt mit dem Timeout noch nicht ganz klar, wie ich den Wert der sich sekündlich ändert abfragen soll.

                            Den fragst du garnicht (explizit) ab. Der Trigger auf "Wert hat sich geändert" liefert den Wert

                            Screenshot 2023-02-14 at 09.10.56.png

                            Wichtig ist das der Baustein "previous value" und der Baustein "state value" aus dem Trigger Bereich stammen - da ist er mit "Objekt ID" vorbelegt und erlaubt Zugriff auf eine Vielzahl von Details zu genau dem Datenpunkt der den Trigger ausgelöst hat:
                            Screenshot 2023-02-14 at 09.11.13.png

                            In diesem Baustein steht im einen Fall der Wert den der DP hatte bevor der trigger aktiviert wurde, im anderen der Wert nachdem der Trigger aktiviert wurde.

                            Letztendlich prüft die 1 Falls Bedingung ob der Wert gerade unter 0 fällt - dann war er vorher höher und es könnte ein Timeout aktiv sein
                            die 2. Falls Bedingung prüft ob der Wert gerade von weniger als 0 auf 0 oder grösser gestiegen ist. Genau in diesem Fall willst du deinen Timeout starten, damit 5 Minuten nachdem der Wert auf 0 oder grösser gestiegen ist deine Aktion ausgelöst wird.

                            Das ganze funktioniert gut - nur wenn der Wert ständig um 0 herum schwankt ist es kritisch. Deswegen wird oft eine Hysterse eingeführt, sprich das Aktivieren findet statt wenn der Wert z.Bsp. über 1 steigt, das deaktivieren wenn der Wert unter 0 fällt.

                            A.
                            Nachtrag: Schreibfehler im Kommentar - das passiert nach 5 Minuten :)

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

                            @asgothian
                            Vielen Vielen Dank für die Hilfe und ausführliche Antwort.

                            Ich glaube ich komme der Sache näher 😅😅.

                            Kann es sein, dass der zweite IF Block etwas anders lauten muss, da dort < und <= vorhanden ist.
                            Sonst würde er doch nie erkennen, wenn dieser über 0 geht??

                            Das ganze funktioniert gut - nur wenn der Wert ständig um 0 herum schwankt ist es kritisch. Deswegen wird oft eine Hysterse eingeführt, sprich das Aktivieren findet statt wenn der Wert z.Bsp. über 1 steigt, das deaktivieren wenn der Wert unter 0 fällt.
                            

                            Hier würde man dann einfach den Wert "0" auf den Wunsch Wert erhöhen?

                            AsgothianA 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @gerber sagte: Wie genau funktioniert das mit dem Stop "delayOn / delayOff".

                              Der zugehörige Timer wird gestoppt und die Variable (z.B. delayOn) wird auf null gesetzt.

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

                              Der Wert "PV-GrenzwertEin" ist ein Datenpunkt, welcher du fest definierst?

                              Das ist ein eigener Datenpunkt, mit dem der Einschalt-Grenzwert vorgegeben werden kann, z.B. unterschiedlich für Winter / Sommer.

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

                              @paul53
                              Sollten auch in deinem Beispiel nicht die Vergleichsoperatoren gedreht sein??

                              Du gibst doch einen Grenzwert Ein (Über einen Datenpunkt), bei dem der Switch angeschaltet werden soll (z.B. Ladestation).

                              Hier sollte doch dann eigentlich
                              wenn Wert >= Grenzwert ein sein und nicht <= oder?

                              und im zweiten If Block auch umgedreht?
                              Wenn der GrenzwertAus 30 Minuten unterschritten ist, dann soll er den Switch ausschalten?

                              Dann noch ein weiterer Punkt:
                              Wie löst du es, wenn z.B. das Auto nicht angeschlossen ist in diesem Moment in dem der Überschuss erkannt wurde?

                              Angenommen der Überschuss findet um 10 Uhr statt, das Auto wird aber erst um 11 Uhr angeschlossen.
                              Dann wurde ja theoretisch der Überschuss bereits erkannt und der Switch umgelegt.

                              Ist es irgendwie möglich einen Trigger Wert wieder auf 0 zusetzten?

                              AsgothianA 1 Antwort Letzte Antwort
                              0
                              • G Gerber

                                @asgothian
                                Vielen Vielen Dank für die Hilfe und ausführliche Antwort.

                                Ich glaube ich komme der Sache näher 😅😅.

                                Kann es sein, dass der zweite IF Block etwas anders lauten muss, da dort < und <= vorhanden ist.
                                Sonst würde er doch nie erkennen, wenn dieser über 0 geht??

                                Das ganze funktioniert gut - nur wenn der Wert ständig um 0 herum schwankt ist es kritisch. Deswegen wird oft eine Hysterse eingeführt, sprich das Aktivieren findet statt wenn der Wert z.Bsp. über 1 steigt, das deaktivieren wenn der Wert unter 0 fällt.
                                

                                Hier würde man dann einfach den Wert "0" auf den Wunsch Wert erhöhen?

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

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

                                @asgothian
                                Vielen Vielen Dank für die Hilfe und ausführliche Antwort.

                                Ich glaube ich komme der Sache näher 😅😅.

                                Kann es sein, dass der zweite IF Block etwas anders lauten muss, da dort < und <= vorhanden ist.
                                Sonst würde er doch nie erkennen, wenn dieser über 0 geht??

                                Das ganze funktioniert gut - nur wenn der Wert ständig um 0 herum schwankt ist es kritisch. Deswegen wird oft eine Hysterse eingeführt, sprich das Aktivieren findet statt wenn der Wert z.Bsp. über 1 steigt, das deaktivieren wenn der Wert unter 0 fällt.
                                

                                Hier würde man dann einfach den Wert "0" auf den Wunsch Wert erhöhen?

                                Korrekt, in beiden Fällen. Ich hab das halt kurz zusammen gebaut und einmal falsch herum ausgewählt. Aber mit der Erklärung sollte ein Nachbauen möglich sein.

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

                                1 Antwort Letzte Antwort
                                1
                                • G Gerber

                                  @paul53
                                  Sollten auch in deinem Beispiel nicht die Vergleichsoperatoren gedreht sein??

                                  Du gibst doch einen Grenzwert Ein (Über einen Datenpunkt), bei dem der Switch angeschaltet werden soll (z.B. Ladestation).

                                  Hier sollte doch dann eigentlich
                                  wenn Wert >= Grenzwert ein sein und nicht <= oder?

                                  und im zweiten If Block auch umgedreht?
                                  Wenn der GrenzwertAus 30 Minuten unterschritten ist, dann soll er den Switch ausschalten?

                                  Dann noch ein weiterer Punkt:
                                  Wie löst du es, wenn z.B. das Auto nicht angeschlossen ist in diesem Moment in dem der Überschuss erkannt wurde?

                                  Angenommen der Überschuss findet um 10 Uhr statt, das Auto wird aber erst um 11 Uhr angeschlossen.
                                  Dann wurde ja theoretisch der Überschuss bereits erkannt und der Switch umgelegt.

                                  Ist es irgendwie möglich einen Trigger Wert wieder auf 0 zusetzten?

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

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

                                  @paul53
                                  Sollten auch in deinem Beispiel nicht die Vergleichsoperatoren gedreht sein??

                                  Du gibst doch einen Grenzwert Ein (Über einen Datenpunkt), bei dem der Switch angeschaltet werden soll (z.B. Ladestation).

                                  Hier sollte doch dann eigentlich
                                  wenn Wert >= Grenzwert ein sein und nicht <= oder?

                                  und im zweiten If Block auch umgedreht?
                                  Wenn der GrenzwertAus 30 Minuten unterschritten ist, dann soll er den Switch ausschalten?

                                  Dann noch ein weiterer Punkt:
                                  Wie löst du es, wenn z.B. das Auto nicht angeschlossen ist in diesem Moment in dem der Überschuss erkannt wurde?

                                  Angenommen der Überschuss findet um 10 Uhr statt, das Auto wird aber erst um 11 Uhr angeschlossen.
                                  Dann wurde ja theoretisch der Überschuss bereits erkannt und der Switch umgelegt.

                                  Ist es irgendwie möglich einen Trigger Wert wieder auf 0 zusetzten?
                                  Ich wüsste nicht warum du das willst. Du erlaubst der Ladelektronik zu laden, da Überschuss da ist. Wenn dann das Auto angeschlossen wird wird automatisch auch geladen.

                                  Dabei sollte eigentlich egal sein in welcher Reihenfolge das passiert.

                                  Ansonsten bräuchtest Du:

                                  • einen Datenpunkt "Überschuss vorhanden, Laden möglich" unter 0_userdata
                                  • einen Datenpunkt "Auto angeschlossen, Laden möglich" unter 0_userdata

                                  Den Überschuss vorhanden Datenpunkt setzt du automatisch aus dem Skript oben
                                  Den "Auto angeschlossen" Datenpunkt setzt du über eine Erkennung das das Auto zum Laden angeschlossen ist.

                                  Als letztes kommt ein Trigger auf "Auto angeschlossen" UND (gleichzeitig) "Auto Angeschlossen". Da prüfst Du ob beide auf Wahr sind, dann wird das laden gestartet. Sobald einer von beiden auf Falsch geht wird das Laden beendet.

                                  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
                                  0
                                  • AsgothianA Asgothian

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

                                    @paul53
                                    Sollten auch in deinem Beispiel nicht die Vergleichsoperatoren gedreht sein??

                                    Du gibst doch einen Grenzwert Ein (Über einen Datenpunkt), bei dem der Switch angeschaltet werden soll (z.B. Ladestation).

                                    Hier sollte doch dann eigentlich
                                    wenn Wert >= Grenzwert ein sein und nicht <= oder?

                                    und im zweiten If Block auch umgedreht?
                                    Wenn der GrenzwertAus 30 Minuten unterschritten ist, dann soll er den Switch ausschalten?

                                    Dann noch ein weiterer Punkt:
                                    Wie löst du es, wenn z.B. das Auto nicht angeschlossen ist in diesem Moment in dem der Überschuss erkannt wurde?

                                    Angenommen der Überschuss findet um 10 Uhr statt, das Auto wird aber erst um 11 Uhr angeschlossen.
                                    Dann wurde ja theoretisch der Überschuss bereits erkannt und der Switch umgelegt.

                                    Ist es irgendwie möglich einen Trigger Wert wieder auf 0 zusetzten?
                                    Ich wüsste nicht warum du das willst. Du erlaubst der Ladelektronik zu laden, da Überschuss da ist. Wenn dann das Auto angeschlossen wird wird automatisch auch geladen.

                                    Dabei sollte eigentlich egal sein in welcher Reihenfolge das passiert.

                                    Ansonsten bräuchtest Du:

                                    • einen Datenpunkt "Überschuss vorhanden, Laden möglich" unter 0_userdata
                                    • einen Datenpunkt "Auto angeschlossen, Laden möglich" unter 0_userdata

                                    Den Überschuss vorhanden Datenpunkt setzt du automatisch aus dem Skript oben
                                    Den "Auto angeschlossen" Datenpunkt setzt du über eine Erkennung das das Auto zum Laden angeschlossen ist.

                                    Als letztes kommt ein Trigger auf "Auto angeschlossen" UND (gleichzeitig) "Auto Angeschlossen". Da prüfst Du ob beide auf Wahr sind, dann wird das laden gestartet. Sobald einer von beiden auf Falsch geht wird das Laden beendet.

                                    A.

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

                                    @asgothian

                                    Korrekt, in beiden Fällen. Ich hab das halt kurz zusammen gebaut und einmal falsch herum ausgewählt. Aber mit der Erklärung sollte ein Nachbauen möglich sein.
                                    

                                    yes, danke hierfür.

                                    Den Überschuss vorhanden Datenpunkt setzt du automatisch aus dem Skript oben
                                    Den "Auto angeschlossen" Datenpunkt setzt du über eine Erkennung das das Auto zum Laden angeschlossen ist.
                                    
                                    Als letztes kommt ein Trigger auf "Auto angeschlossen" UND (gleichzeitig) "Auto Angeschlossen". Da prüfst Du ob beide auf Wahr sind, dann wird das laden gestartet. Sobald einer von beiden auf Falsch geht wird das Laden beendet.
                                    

                                    Würdest du hier dann auf 3 Scripte setzten?
                                    Datenpunkt "Überschuss "durch den Überschuss- Script aktualisieren.
                                    Datenpunkt "Auto angeschlossen" durch Auto-angeschlossen-Script aktualisieren.

                                    Und als letztens ein Script, dass auf beides triggert?

                                    Ich habe es zum Test einmal den Anfang mit den Timeouts aufgebaut und einfach mit Whatsapp Nachrichten getestet.

                                    341c2743-933e-4a5d-b23b-b6ba6fd9909f-image.png

                                    In dem Script passt alles gut.
                                    Wird das Auto angesteckt und ist auf 1, dann wird zusätzlich der Trigger auf die Einspeisung gestartet und bei einem Überschuss das laden (in dem Fall Whatsapp Nachricht) gestartet.

                                    Nun wollte ich zum Test die WhatsApp Nachrichten nochmal bekommen, wenn der Wert länger als 1 Minute über in diesem Fall 500 bleibt.
                                    Also habe ich zum Test folgendes eingebaut:

                                    9d5e99fc-f78c-4134-bdaa-593ddf473d3a-image.png

                                    Nun bekomme ich aber wenn dieser Block triggert, fast sekündlich Whatsapp Nachrichten, wiesoo??

                                    AsgothianA 1 Antwort Letzte Antwort
                                    0
                                    • G Gerber

                                      @asgothian

                                      Korrekt, in beiden Fällen. Ich hab das halt kurz zusammen gebaut und einmal falsch herum ausgewählt. Aber mit der Erklärung sollte ein Nachbauen möglich sein.
                                      

                                      yes, danke hierfür.

                                      Den Überschuss vorhanden Datenpunkt setzt du automatisch aus dem Skript oben
                                      Den "Auto angeschlossen" Datenpunkt setzt du über eine Erkennung das das Auto zum Laden angeschlossen ist.
                                      
                                      Als letztes kommt ein Trigger auf "Auto angeschlossen" UND (gleichzeitig) "Auto Angeschlossen". Da prüfst Du ob beide auf Wahr sind, dann wird das laden gestartet. Sobald einer von beiden auf Falsch geht wird das Laden beendet.
                                      

                                      Würdest du hier dann auf 3 Scripte setzten?
                                      Datenpunkt "Überschuss "durch den Überschuss- Script aktualisieren.
                                      Datenpunkt "Auto angeschlossen" durch Auto-angeschlossen-Script aktualisieren.

                                      Und als letztens ein Script, dass auf beides triggert?

                                      Ich habe es zum Test einmal den Anfang mit den Timeouts aufgebaut und einfach mit Whatsapp Nachrichten getestet.

                                      341c2743-933e-4a5d-b23b-b6ba6fd9909f-image.png

                                      In dem Script passt alles gut.
                                      Wird das Auto angesteckt und ist auf 1, dann wird zusätzlich der Trigger auf die Einspeisung gestartet und bei einem Überschuss das laden (in dem Fall Whatsapp Nachricht) gestartet.

                                      Nun wollte ich zum Test die WhatsApp Nachrichten nochmal bekommen, wenn der Wert länger als 1 Minute über in diesem Fall 500 bleibt.
                                      Also habe ich zum Test folgendes eingebaut:

                                      9d5e99fc-f78c-4134-bdaa-593ddf473d3a-image.png

                                      Nun bekomme ich aber wenn dieser Block triggert, fast sekündlich Whatsapp Nachrichten, wiesoo??

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

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

                                      @asgothian

                                      Korrekt, in beiden Fällen. Ich hab das halt kurz zusammen gebaut und einmal falsch herum ausgewählt. Aber mit der Erklärung sollte ein Nachbauen möglich sein.
                                      

                                      yes, danke hierfür.

                                      Den Überschuss vorhanden Datenpunkt setzt du automatisch aus dem Skript oben
                                      Den "Auto angeschlossen" Datenpunkt setzt du über eine Erkennung das das Auto zum Laden angeschlossen ist.
                                      
                                      Als letztes kommt ein Trigger auf "Auto angeschlossen" UND (gleichzeitig) "Auto Angeschlossen". Da prüfst Du ob beide auf Wahr sind, dann wird das laden gestartet. Sobald einer von beiden auf Falsch geht wird das Laden beendet.
                                      

                                      Würdest du hier dann auf 3 Scripte setzten?
                                      Datenpunkt "Überschuss "durch den Überschuss- Script aktualisieren.
                                      Datenpunkt "Auto angeschlossen" durch Auto-angeschlossen-Script aktualisieren.

                                      Und als letztens ein Script, dass auf beides triggert?

                                      Ich habe es zum Test einmal den Anfang mit den Timeouts aufgebaut und einfach mit Whatsapp Nachrichten getestet.

                                      341c2743-933e-4a5d-b23b-b6ba6fd9909f-image.png

                                      In dem Script passt alles gut.
                                      Wird das Auto angesteckt und ist auf 1, dann wird zusätzlich der Trigger auf die Einspeisung gestartet und bei einem Überschuss das laden (in dem Fall Whatsapp Nachricht) gestartet.

                                      Nun wollte ich zum Test die WhatsApp Nachrichten nochmal bekommen, wenn der Wert länger als 1 Minute über in diesem Fall 500 bleibt.
                                      Also habe ich zum Test folgendes eingebaut:

                                      9d5e99fc-f78c-4134-bdaa-593ddf473d3a-image.png

                                      Nun bekomme ich aber wenn dieser Block triggert, fast sekündlich Whatsapp Nachrichten, wiesoo??

                                      Weil du Unsinn gemacht hast - an mehreren Stellen:

                                      Jedes mal wenn der Datenpunkt "Auto Angeschlossen" auf den Wert 1 wechselt legst du einen neuen Trigger an.

                                      Du hast da also 2 Trigger ineinander geschachtelt. Das macht man nicht. Der korrekte weg (in diesem einfachen Beispiel) ist ein Falls als erstes im Trigger auf die Wirkleistung:

                                      Falls Wert von AutoAngeschlossen = 1 mache..
                                      darin dann die eigentliche Bearbeitung.

                                      Der Trigger auf das Anstecken des Autos entfällt in diesem Fall.

                                      Nun zur Frage warum du sekündlich die WhatsApp bekommst:

                                      Der Wert ändert sich jede Sekunde.
                                      Solange der Wert und der vorherige Wert über 500 ist sagst du jede Sekunde das in einer Minute eine WhatsApp kommen soll.
                                      Die willst du aber nur jede Minute haben. Dazu gibt es 2 einfache Wege.

                                      Option 1: da wo du auch den 30 Sekunden Timeout setzt setzt du zusätzlich noch ein Intervall alle 1 Minute. Darin dann die WhatsApp Meldung, allerdings musst du dann an stelle des "Wert" Baustein im Text den "Wert von Objekt ID P-Active power / Wirkleistung -" einsetzen. In diesem Fall muss unter den stop timeout noch ein stop Intervall Baustein
                                      Option 2: Definiere eine Variable "timestamp". In dem sonst Falls Zweig den du aktuell hast schaust du nach ob "Zeitstempel letzte Änderung" - "timestamp" > 60000 ist (60 Sekunden in ms). Wenn ja, dann "timestamp = Zeitstempel letzte Änderung", WhatsApp schicken. In diesem Fall gibt es keinen Timeout2

                                      Ich hoffe das ist so verständlich.

                                      A.
                                      ps. Ich bau mal was zusammen wie ich das lösen würde :
                                      Screenshot 2023-02-14 at 13.08.46.png

                                      Auch hier wieder ein Trick: Die Variable CarStatus wird auf 1 gesetzt wenn das Auto angesteckt wird. im "SonstFalls" sorgt dieser Wert dann dafür das wenn die Wirkleistung schon länger über 500 war direkt der 5 Minuten Timeout zum Freischalten des Ladens gestartet wird, und nicht erst wenn die Wirkleistung zwischendurch mal auf unter 500 gefallen ist.

                                      Das Hochzählen der Variable auf 2 sorgt dafür das diese Bedingung genau 1 mal - bei der ersten Änderung der Wirkleistung nach Anstecken des Autos - relevant wird.

                                      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 sagte in Event auslösen wenn länger als Zeit X:

                                        @asgothian

                                        Korrekt, in beiden Fällen. Ich hab das halt kurz zusammen gebaut und einmal falsch herum ausgewählt. Aber mit der Erklärung sollte ein Nachbauen möglich sein.
                                        

                                        yes, danke hierfür.

                                        Den Überschuss vorhanden Datenpunkt setzt du automatisch aus dem Skript oben
                                        Den "Auto angeschlossen" Datenpunkt setzt du über eine Erkennung das das Auto zum Laden angeschlossen ist.
                                        
                                        Als letztes kommt ein Trigger auf "Auto angeschlossen" UND (gleichzeitig) "Auto Angeschlossen". Da prüfst Du ob beide auf Wahr sind, dann wird das laden gestartet. Sobald einer von beiden auf Falsch geht wird das Laden beendet.
                                        

                                        Würdest du hier dann auf 3 Scripte setzten?
                                        Datenpunkt "Überschuss "durch den Überschuss- Script aktualisieren.
                                        Datenpunkt "Auto angeschlossen" durch Auto-angeschlossen-Script aktualisieren.

                                        Und als letztens ein Script, dass auf beides triggert?

                                        Ich habe es zum Test einmal den Anfang mit den Timeouts aufgebaut und einfach mit Whatsapp Nachrichten getestet.

                                        341c2743-933e-4a5d-b23b-b6ba6fd9909f-image.png

                                        In dem Script passt alles gut.
                                        Wird das Auto angesteckt und ist auf 1, dann wird zusätzlich der Trigger auf die Einspeisung gestartet und bei einem Überschuss das laden (in dem Fall Whatsapp Nachricht) gestartet.

                                        Nun wollte ich zum Test die WhatsApp Nachrichten nochmal bekommen, wenn der Wert länger als 1 Minute über in diesem Fall 500 bleibt.
                                        Also habe ich zum Test folgendes eingebaut:

                                        9d5e99fc-f78c-4134-bdaa-593ddf473d3a-image.png

                                        Nun bekomme ich aber wenn dieser Block triggert, fast sekündlich Whatsapp Nachrichten, wiesoo??

                                        Weil du Unsinn gemacht hast - an mehreren Stellen:

                                        Jedes mal wenn der Datenpunkt "Auto Angeschlossen" auf den Wert 1 wechselt legst du einen neuen Trigger an.

                                        Du hast da also 2 Trigger ineinander geschachtelt. Das macht man nicht. Der korrekte weg (in diesem einfachen Beispiel) ist ein Falls als erstes im Trigger auf die Wirkleistung:

                                        Falls Wert von AutoAngeschlossen = 1 mache..
                                        darin dann die eigentliche Bearbeitung.

                                        Der Trigger auf das Anstecken des Autos entfällt in diesem Fall.

                                        Nun zur Frage warum du sekündlich die WhatsApp bekommst:

                                        Der Wert ändert sich jede Sekunde.
                                        Solange der Wert und der vorherige Wert über 500 ist sagst du jede Sekunde das in einer Minute eine WhatsApp kommen soll.
                                        Die willst du aber nur jede Minute haben. Dazu gibt es 2 einfache Wege.

                                        Option 1: da wo du auch den 30 Sekunden Timeout setzt setzt du zusätzlich noch ein Intervall alle 1 Minute. Darin dann die WhatsApp Meldung, allerdings musst du dann an stelle des "Wert" Baustein im Text den "Wert von Objekt ID P-Active power / Wirkleistung -" einsetzen. In diesem Fall muss unter den stop timeout noch ein stop Intervall Baustein
                                        Option 2: Definiere eine Variable "timestamp". In dem sonst Falls Zweig den du aktuell hast schaust du nach ob "Zeitstempel letzte Änderung" - "timestamp" > 60000 ist (60 Sekunden in ms). Wenn ja, dann "timestamp = Zeitstempel letzte Änderung", WhatsApp schicken. In diesem Fall gibt es keinen Timeout2

                                        Ich hoffe das ist so verständlich.

                                        A.
                                        ps. Ich bau mal was zusammen wie ich das lösen würde :
                                        Screenshot 2023-02-14 at 13.08.46.png

                                        Auch hier wieder ein Trick: Die Variable CarStatus wird auf 1 gesetzt wenn das Auto angesteckt wird. im "SonstFalls" sorgt dieser Wert dann dafür das wenn die Wirkleistung schon länger über 500 war direkt der 5 Minuten Timeout zum Freischalten des Ladens gestartet wird, und nicht erst wenn die Wirkleistung zwischendurch mal auf unter 500 gefallen ist.

                                        Das Hochzählen der Variable auf 2 sorgt dafür das diese Bedingung genau 1 mal - bei der ersten Änderung der Wirkleistung nach Anstecken des Autos - relevant wird.

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

                                        @asgothian
                                        Vielen Dank.

                                        Ich verstehe jetzt, wieso die Whatsapp mehrfach verschickt wird.
                                        Die von dir beschriebenen Optionen werde ich mir genauer ansehen, damit ich diese genauer verstehe.


                                        Ich wäre dir hierfür natürlich sehr sehr dankbar, wenn du dir die Mühe machst und solch ein Szenario einmal aufbauen könntest.
                                        Lass dir soviel Zeit wie du benötigst😊.

                                        G 1 Antwort Letzte Antwort
                                        0
                                        • G Gerber

                                          @asgothian
                                          Vielen Dank.

                                          Ich verstehe jetzt, wieso die Whatsapp mehrfach verschickt wird.
                                          Die von dir beschriebenen Optionen werde ich mir genauer ansehen, damit ich diese genauer verstehe.


                                          Ich wäre dir hierfür natürlich sehr sehr dankbar, wenn du dir die Mühe machst und solch ein Szenario einmal aufbauen könntest.
                                          Lass dir soviel Zeit wie du benötigst😊.

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

                                          @Asgothian

                                          Wow vielen Dank dafür.
                                          Ich denke ich habe das ganze jetzt weitestgehend verstanden 👍👍.


                                          Ich würde dann die CarStatus Variable bei "Else-If" auf

                                          Else-if Carstatus = 3 oder 4 setzten (da dies einmal 3= bereit für laden und 4 = Finished aber noch connected) bedeutet
                                          Zusätzlich dann die darunterliegende Carstatus Variable beim "do" auf z.B. 5 setzten.

                                          Ich hoffe, dass es so richtig ist.

                                          Folgende Fragen hätte ich noch zu deinem Script:

                                          • Ganz oben setzt du die CarStatus Variable auf False.
                                            Ist das, damit diese Variable einen anderen Wert beim Neustart des Scripts bekommt?

                                          • Du schreibst bei Execution "Interval", dass die Nachricht wieder weg kann. Heißt hier muss direkt danach noch der Intervall gestoppt werden?
                                            Sonst würde ja alle 1 min eine Whatsapp verschickt werden oder?

                                          • Das gleiche müsste ich jetzt eigentlich noch für den oberen Teil bauen, dass nicht direkt bei einem State Value unter 500 das Laden abgebrochen wird, sondern auch hier nur wenn der State Value länger als z.B. 10 Minuten unter 500 ist...

                                          AsgothianA 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

                                          838

                                          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