Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Historie Adapter - Dauer eines Zustandes loggen?

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Historie Adapter - Dauer eines Zustandes loggen?

Scheduled Pinned Locked Moved ioBroker Allgemein
13 Posts 5 Posters 1.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    weimaraner
    wrote on last edited by
    #1

    Ich möchte gerne die Dauer eines Zustandes loggen und dies in einer Grafik darstellen. Ganz konkret wird mein Rasenroboter, wenn er aus seiner Winterstarre 😉 erwacht ist, einen TFK bekommen. Steht er in der Station, ist der TFK geschlossen. Fährt er los -> TFK geöffnet. Ich möchte nun Fahrzeit und Ladezeit loggen und mir die Dauer grafisch darstellen lassen.

    Historie adapter ist installiert. Datenpunkt angelegt und in der Tabelle erscheinen auch erste Werte mit Uhrzeit. 🙂 Grafisch wird mir allerdings logischweise nur 0 und 1, also eine Zickzacklinie dargstellt.

    Muß ich an Hand der Uhrzeiten der Änderung selbst noch die Dauer irgendwie ausrechnen lassen und diese dann ebenso speichern? Brauche ich also einen weiteren Datenpunkt? Oder denke ich viel zu kompliziert?

    Danke und Grüße

    Andreas

    Edit: Ich lege noch einen nach. Wenn die Dauer eines Zustandes einen Wert X überschreitet, möchte ich eine Meldung auf meinem Tablet.

    1 Reply Last reply
    0
    • apollon77A Online
      apollon77A Online
      apollon77
      wrote on last edited by
      #2

      Also das einfachste in meinen Augen ist ein extra Datenpunkt wenn du wirklich die Zeit brauchst (wozu eigentlich? 😉 )

      ich habe bei mir auch einen Kontakt ob er in der Ladestation ist und einen Strommesser am Stromanschluss. Aus der Kombi von beiden Werten kann man sehr verlässlich ableiten ob er gerade mäht, lädt oder pause macht.

      Zusätzlich hab ich noch einen "Timer" der Startet sobald er rausfährt und wenn er nach 90 Minuten noch nicht da ist ein Pushover sendet das er wohl irgendwo hängt.

      Wenn Du das wirklich brauchst dann kleines Skript was sich die Systemzeit beim Start speichert und am Ende die Differenz errechnet …

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • HomoranH Offline
        HomoranH Offline
        Homoran
        Global Moderator Administrators
        wrote on last edited by
        #3

        @apollon77:

        (wozu eigentlich? 😉 ) `
        Kann ich schon nachvollziehen.

        Ich würde so etwas z.B. beim Entfeuchter brauchen, wenn der sich nach einer bestimmten Zeit nicht abstellt ist der Tank voll.

        Und bei Andreas kann ich mir vorstellen, dass er eine Meldung haben will, falls der Roboter sich festgefahren hat (oder geklaut wurde) oder den Akku leergefahren und nicht mehr nach hause kann 😞

        Gruß

        Rainer

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        1 Reply Last reply
        0
        • apollon77A Online
          apollon77A Online
          apollon77
          wrote on last edited by
          #4

          Das mache ich mit den "Timern" … genau: "setTimeout": Beim Start der Aktion (Einschalten, Losfahren was auch immer) wird Timeout gestartet der zeit X läuft und dieser sendet den Notify oder macht was auch immer um mich zu informieren das was blöd ist. Wenn Vorher das "Aus"-Signal kommt wird einfach per "clearTimeout" der laufende Timeout gelöscht und damit das Notify abgebrochen.

          So überwache ich gerade schon Dinge wie "Haustüre länger als 15 Minuten offen", "Robomow seit >90 Mins draussen, festgefahren?" u.ä.

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Reply Last reply
          0
          • W Offline
            W Offline
            weimaraner
            wrote on last edited by
            #5

            @Homoran:

            Und bei Andreas kann ich mir vorstellen, dass er eine Meldung haben will, falls der Roboter sich festgefahren hat (oder geklaut wurde) oder den Akku leergefahren und nicht mehr nach hause kann 😞 `
            Genauso ist es. 🙂 Zudem könnte ich verfolgen, ob die Mähzeit sich verkürtzt und der Akku langsam schlapp macht.

            @apollon77:

            Wenn Du das wirklich brauchst dann kleines Skript was sich die Systemzeit beim Start speichert und am Ende die Differenz errechnet … `

            :shock: Du schaust in zwei leere, verzweifelte Augen.

            :lol:

            Ich habe keine Ahnung von Skripten. :?

            Kann jemand helfen?

            Grüße Andreas

            1 Reply Last reply
            0
            • P Offline
              P Offline
              Pman
              wrote on last edited by
              #6

              Das ginge per Skript oder Szene Adapter. Ich würde einen Datenpunkt erstellen, in dem die Uhrzeit (als Timestamp) beim losfahren gespeichert wird, also wenn der TFK auf offen schaltet. Ein zweiter Datenpunkt wird dann beim schließen des TFK beschrieben und zwar mit dem aktuellen Timestamp minus den vorher gespeicherten. Den zweiten Datenpunkt kannst du dann in der History speichern und so später auf die vergangenen Fahrzeiten zugreifen. Das Skript könnte dann natürlich noch jede Minute überprüfen, ob die Fahrzeit schon einen gewissen Wert überschritten hat und ggf. eine Aktion ausführen.

              1 Reply Last reply
              0
              • M Offline
                M Offline
                moebius
                wrote on last edited by
                #7

                die Zustände werden ja schon mit timestamp abgespeichert. Die Dauer kann man also leicht errechnen.

                Am schönsten wäre es deshalb, wenn man flot ein sql statement übergeben könnte - das wäre eigentlich auch sonst recht praktisch.

                Man könnte auch den datenpunkt überwachen (node-red, script), die Dauer errechnen und diese in einen weiteren DP speichern, den du dann für die Grafik verwenden kannst.

                Durch den Overhead und die Redundanz leider die schlechtere - aber gleich umsetzbare - Lösung.

                Hier als Beispiel ein flow der die Dauer zwischen DP Zuständen speichert (nur Dauer von States > 0 wird gespeichert).

                Der flow kann "beliebig" viele DP auf einmal überwachen, du musst nur einen weiteren Input von ioBroker hinzufügen und in ioBroker einen neuen DP anlegen und seine ID mit "Dauer" hinten ergänzen (Also in diesem Beispiel wird die Dauer dann

                in den DP "admin.0.ws333.Temp3Dauer" gespeichert).````
                [{"id":"8e85cbda.ae3588","type":"tab","label":"Flow 4"},{"id":"5a3935d4.6c5f0c","type":"ioBroker in","z":"8e85cbda.ae3588","name":"","topic":"admin.0.ws333.Temp3","payloadType":"value","onlyack":"","func":"all","gap":"","x":337,"y":175,"wires":[["a512bfbe.1a119"]]},{"id":"a512bfbe.1a119","type":"function","z":"8e85cbda.ae3588","name":"Queue","func":"//how many items in queue?\nvar countmsg = 2;\n\nvar inmsg = msg;\nvar outmsg = { topic: inmsg.topic , payload: ""};\nvar ctx = this.context;\nvar msgs = ctx.get("aggmsgs")||[];\nvar topics = msgs[inmsg.topic]||[];\n\n\nif (topics.length > 0) {\n if (topics[topics.length-1].payload == inmsg.payload)\n return null;\n} \nif (topics.length == countmsg){\n topics.shift()\n}\n\ntopics.push(inmsg);\noutmsg.payload = topics;\n\nmsgs[inmsg.topic] = topics;\nctx.set("aggmsgs",msgs);\n\nif (topics.length == countmsg)\n return outmsg;\nelse\n return null;","outputs":1,"noerr":0,"x":530,"y":201,"wires":[["1a8401.d0d89bff"]]},{"id":"1a8401.d0d89bff","type":"function","z":"8e85cbda.ae3588","name":"calculate diff","func":"//only states > 0\nif(msg.payload[0].payload <= 0)\n return null;\n \nmsg.topic = msg.topic + "Dauer";\nmsg.payload = msg.payload[1].timestamp - msg.payload[0].timestamp;\nreturn msg;","outputs":1,"noerr":0,"x":688,"y":249,"wires":[["1cbf5b2f.f080b5"]]},{"id":"1cbf5b2f.f080b5","type":"ioBroker out","z":"8e85cbda.ae3588","name":"","topic":"","ack":"true","autoCreate":"false","x":857,"y":293,"wires":[]}]

                [1803_clipboard01.jpg](/assets/uploads/files/1803_clipboard01.jpg)
                1 Reply Last reply
                0
                • W Offline
                  W Offline
                  weimaraner
                  wrote on last edited by
                  #8

                  Hi moebius,

                  das gezeigte Bild ist doch node-red, oder? Kannst Du das vielleicht ein bißchen genauer erklären? Ich habe auch schon dran gedacht es darüber zu machen. Installiert ist es, aber es fehlt irgendwie noch der Einstieg für mich. Was muß ich hier wie verknüpfen?

                  Grüße Andreas

                  1 Reply Last reply
                  0
                  • HomoranH Offline
                    HomoranH Offline
                    Homoran
                    Global Moderator Administrators
                    wrote on last edited by
                    #9

                    @weimaraner:

                    Was muß ich hier wie verknüpfen? `
                    moebius hat seinen Flow exportiert.

                    Du musst nur den code kopieren und bei node-red importieren über Clipboard auswählen, den Code in das Clipboard einfügen, ok klicken, deploy klicken und gut ist.

                    Gruß

                    Rainer

                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    1 Reply Last reply
                    0
                    • apollon77A Online
                      apollon77A Online
                      apollon77
                      wrote on last edited by
                      #10

                      Ich denke man muss das nicht unbedingt in Datenpunkte schreiben … Script-variable sollte reichen ... aber am Ende ist es Frage des Ziels ...

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        moebius
                        wrote on last edited by
                        #11

                        @apollon:

                        Es werden hier glaub ich 2 Sachen vermischt:

                        1. grafische Auswertung von Schaltzuständen

                        2. Überwachung derselben

                        Dachte der TS hätte nach 1. gefragt und eine Möglichkeit gezeigt. 2. kann man sicher gut mit Timern lösen.

                        @weimaraner:

                        wie Homoran schon sagte: du musst den flow importieren, dann deinen Lieblingsdatenpunkt

                        im iobroker node auswählen und dazu passend einen neuen DP anlegen der auf "Dauer" endet.

                        Fertig!

                        1 Reply Last reply
                        0
                        • W Offline
                          W Offline
                          weimaraner
                          wrote on last edited by
                          #12

                          Ok. Das werde ich mal probieren.

                          Grüße Andreas

                          1 Reply Last reply
                          0
                          • W Offline
                            W Offline
                            weimaraner
                            wrote on last edited by
                            #13

                            Soo, nachdem ich jetzt mal wieder etwas Zeit habe, möchte ich nochmal das Thema Dauer eines Zustandes loggen angehen und vor allem die Umsetzung verstehen. 😉

                            Meine Gedanken dazu sind folgende:

                            Der Mähroboter hat zwei Zustände, die ich über den TFK darstellen kann

                            0=Laden

                            1=Mähen

                            Bei Änderung des Zustandes wird ein timestamp gesetzt.

                            0

                            |

                            |

                            1 timestamp "Start" wird in eine Variable "timeStart" geschrieben

                            |

                            |

                            0 timestamp "Stop" wird in eine Varibale "timestop" geschrieben

                            Die Dauer zwischen 1 und 0 kann man mit "timestop"minus"timestart" ist gleich "DauerFahrt" berechnen und in eine Variable schreiben.

                            Das Gleiche für die Dauer des Ladevorganges

                            0 timestamp "Stop" wird in eine Varibale "timestop" geschrieben

                            |

                            |

                            1 timestamp "Start" wird in eine Variable "timeStart" geschrieben

                            Die Dauer zwischen 0 und 1 kann man mit "timestart"minus"timestop" ist gleich "DauerLaden" berechnen und in eine Variable schreiben.

                            Ich habe dann die Variable "DauerFahrt" und "DauerLaden"

                            Diese könnte ich mir doch sicherlich graphisch darstellen lassen?

                            Jetzt die zwei großen Fragen: 8-)

                            Ist meine Herangehensweise richtig und umsetzbar?

                            Wie würde man das in blockly umsetzen? Mit rednote konnte ich mich nicht so richtig anfreunden. Skript-Sprachen kann ich nicht und habe nur rudimentäre theoretische Kenntnisse. Die blockly-Anleitung hier und in github habe ich gelesen und würde nun gern versuchen es zu verstehen/umzusetzen.

                            Ich bin auf Eure Meinungen gespannt. 🙂

                            Danke und Grüße

                            Andreas

                            Edit:

                            Ein Javaskript an dem ich mich "langhangeln" kann, um es zu verstehen, würde mir vielelicht auch weiterhelfen.

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            582

                            Online

                            32.4k

                            Users

                            81.4k

                            Topics

                            1.3m

                            Posts
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            ioBroker Community 2014-2025
                            logo
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Recent
                            • Tags
                            • Unread 0
                            • Categories
                            • Unreplied
                            • Popular
                            • GitHub
                            • Docu
                            • Hilfe