NEWS
[Erledigt] Verständnisfrage zu "Änderungen aufzeichnen" im History
-
Hallo
Ich habe ein String Variable, die ich per History aufzeichne - da werden auch manchmal die gleichen Werte hintereinander reingeschrieben und es sollen auch diese Werte (mit den unterschiedlichen Zeitstempeln) gelogged werden.
Beispiel "Waschmaschine fertig!". Heute haben wir 3 Wäschen gemacht, aber nur die erste wurde gelogged (es sind keine zwischenzeitlichen anderen Meldungen reingekommen)
Gleiche Meldungen werden aktuell also leider nicht gelogged. Dafür zuständig scheint mir die Checkbox "Änderungen aufzeichnen" zu sein. Richtig?
Die ist bei mir aber aus und damit sollten eigentlich alle Werte, die reinkommen, gelogged werden, oder?
In der Anleitung http://www.iobroker.net/docu/?page_id=144&lang=de ist noch ein alter(?) Screenshot, der in den Optionen zu der Konfig der Datenpunkte von "Nur Änderungen aufzeichnen" spricht, bei mir steht da nur "Änderungen aufzeichnen". Das verwirrt mich etwas… ist dort nur umbeannt oder ist die Checkbox wirklich anders zu verstehen?
Gruss
-
st dort nur umbeannt oder ist die Checkbox wirklich anders zu verstehen? `
Nein, im Admin3 steht dann nur noch "Änderungen aufzeichen" meint aber auch, dass NUR aufgezeichnet wird, wenn sich der Wert des States auch geändert hat.Ist denn der Timestamp des States zwischenzeitlich geändert gewesen?
Gruß
Rainer
-
Hallo
Ich hatte mir meinen ioBroker komplett zerschossen (siehe anderer Threrad) - nun bin ich zurück auf dem Backup und kann mich auch hier wieder rum kümmern.
Etwas genauer die Situation:
-
Es handelt sich um eine String Variable aus der CCU "LoggerMail". Diese wird, wenn sie gesetzt wird, durch den ioBroker per Telegram und durch die CCU per Mail versendet.
-
Telegram im ioBroker ist einfach ein Javascript, welches durch "on({id: 'hm-rega.0.25695', change: "ne"}, function (obj) {…." getriggert wird.
-
Diverse Programme aus der CCU setzen diese Variable um ihren Status mitzuteilen - z.B. "Waschmaschine fertig".
Was ich gerade probiert habe:
- per Handy / App die Variable mehrfach auf den gleichen Wert "test" setzen - um 13:45, 13:47 und 13:48.
Was passiert ist:
-
in der CCU sehe ich den letzten Zeitstempel 13:48, siehe Anhang
-
Sowohl Mail wie auch Telegram haben ordentlich alle 3 Vorgänge gemeldelt. --> es kommt also schonmal im ioBroker alle 3 Änderungen an.
-
Wenn ich im Admin unter objekte mir das anschaue ...sehe ich den ersten Zeitstempel (13:45), siehe Anhang
-
Und auch die Historie hat nur die erste Änderung mitbekommen, siehe Anhang
Wie kann das sein? Wieso wird die Variable eigentlich gesetzt (sodass Telegram reagieren kann) aber trotzdem ist der Zeitstempel veraltet?
Gruss -
2636_loggermail-ccu.png
2636_loggermail-history.png
2636_loggermail-iobroker.png -
-
Ich hab das Problem noch nicht ganz verstanden.
Vorweg eine Frage:
Du weißt, dass die Systemvariablen standardmäßig nur alle 30 Sekunden abgefragt werden, wenn die sich in der Zeit mehrfach ändern, wird nur der Wert der zum Zeitpunkt der Abfrage existiert bei ioBroker eingetragen. und sollte der identisch mit dem letzten sein, passiert halt nix
Das kann man umgehen, indem man in dem CCU-Programm, das die Sysvar ändert zusätzlich die virtuelle Taste 50 mit press_short anspricht
Gruß
Rainer
-
Hallo
Wusste ich nicht - aber … scheint hier auch nicht das Phänomen zu erklären.
Ursprünglich bin ich ja drauf gekommen, weil bei mehreren Waschmaschinen-Fertig Meldungen, die einen Abstand von ca 3 Stunden haben, das Problem auftritt.
Aber Danke - werde bei allen tests zusehen, dass min 30sek dazwischenliegen.
Gruss -
-
Hallo
Ich probier die Frage mal allgemeiner zu stellen mit folgendem Ablauf:
-
Stringvariable wird von der CCU geholt und per History aufgezeichnet
-
String wird um 12:00 auf "test" gesetzt.
–> Man sieht im Mouseover im iOBroker unter Objects bei der Variable richtigerweise 12:00 sowohl bei "Zeitstempel" und auch "Letzte Änderung". History zeichnet diesen Wert korrekt auf.
-Stringvariable wird um 13:00 wieder auf "test" gesetzt.
--> Man sieht im Mouseover im iOBroker unter Objects IMMERNOCH bei der Variable 12:00 sowohl bei Zeitstempel und auch "Letzte Änderung". Der letzte Eintrag von Hostory ist ebenso noch bei 12:00.
ioBroker hat beide Änderungen mitbekommen, denn ich habe per Telegram bei beiden Vorgängen eine Nachricht bekommen.
--> Warum wird das setzen des gleichen(!) Inhalts anscheinend nicht protokolliert sowohl im Objects-Tab wie auch im History?
Gruss -
-
-
Hallo
Ich hab das nun eingedampft… recht einfach zu reproduzieren bei mir:
-
Ein TestProgramm, was nichts tut als eine Variable zu setzen (in meinem Fall LoggerMail)

-
Diese Variable per iOBroker-History ohne "(Nur) Änderungen aufzeichnen" protokollieren
-
Das TestProgramm triggern.
–> Im WebUI von der CCU sehe ich den Zeitstempel sowie Wert (das Programm wurde also ausgeführt in der CCU)
--> History zeichnet den Wert auf - er ist einsehbar
- Nach ca 2 MInuten das TestProgramm nochmal Triggern
--> Im WebUI von der CCU sehe ich den neuen Zeitstempel sowie immerhnoch den Wert (das Programm wurde also ausgeführt in der CCU)
--> auch nach einigen Minuten: History zeichnet den Wert NICHT ein zweites mal auf; in Objects ist immernoch MouseOver Zeitpunkt sowie Letzte Änderung auf dem Zeitstempel vom ersten Aufruf.
Den History auf Debug setzen führt nur zu solchen Meldungen - mehr seh ich da vom Adapter nicht im Log
history.0 2019-01-15 23:06:15.221 debug system.adapter.admin.0: logging trueKann das jemand nachvollziehen // Hat eine Idee?
Gruss -
-
-
Du machst das mit systemvariablen der ccu? Wie ist werden die von der ccu geholt? Was ist im rega eingetragen?
Änderst finden wert der Variable? Ich weiß gerade nicht ob rega beim Sync bei einem gleichen Wert überhaupt was aktualisiert.
Gesendet vom Handy …
-
Hallo
Ja, es ist eine CCU Systemvariable. DIe Rega.0 Einstellungen sind für mich unauffällig (alles default) - das einzige, was ich mir in dem Zusammenhang vorstellen kann ist, dass ich ein Polling Intervall von 30sec habe (auch default).
Es geht gerade darum, dass sich der Wert der Variable nicht ändert - sondern 2x hintereinander der gleiche String durch das Programm auf die Variable geschrieben wird. Genau diese Situation scheint mir der ioBroker zu vergessen.
Theoretisch mitbekommen könnte er es, da sich der Zeitstempel der Systemvariable in der CCU ja ändert.
Kannst Du das nachschauen / rausbekommen?
Gruss -
-
Du verstehst Das falsch. Er scheint es nicht zu vergessen, er weiss es einfach nicht!!
Systemvariablen werden bei Änderung nicht gemeldet wie alle anderen Gerätr-States. Daher wird der Wert alle x (STandard 30) Sekunden gepollt . heisst abgefragt. Es gibt aber keine Info ob oder wann er sich geändert hat sondern nur den Wert. Wie soll ioBroker, wenn der Wert gleich bleibt, wissen ob es eine Änderung gab? Kann er nicht.
Daher: Gleiche Werte werden im Normalfall nicht getriggert, nur Änderungen
-
Hallo
Danke für die Erklärung…
D.h. ioBroker sieht den Zeitstempel ("Letzte Änderung" in der CCU WebVisu) beim Pollen nicht? Denn das ist ja gerade die Info, dass sich der Wert wirklich geändert hat. Das ist schade ... kann man das nicht ändern? Wäre doch sinnvoll, oder?
Ich nutze diese Variable (daher der Name) aktuell zur Sammlung von diversen Meldungen, die in der CCU auflaufen. Wenn nun mehrere Meldungen gleich sind (z.B. halt "waschmaschine fertig!") möchte ich die auch mehrfach haben -- denn sie sind ja mehrfach aufgelaufen.
Gibts dafür eine andere sinnvolle Möglichkeit?
Gruss -
-
Moin,
Gibts dafür eine andere sinnvolle Möglichkeit? `
„sinnvoll“ kann immer nur der Empfänger definieren, aber es gibt eine Möglichkeit.Du kannst die Änderung auf der CCU mit einem Programm überwachen und im Änderungsfall das Abholen der Daten antriggern.
Auszug aus der Doku (http://www.iobroker.net/docu/?page_id=2825&lang=de#Trigger
~~<link_text text="https://uploads.tapatalk-cdn.com/201901 ... 28ca52.jpg">https://uploads.tapatalk-cdn.com/20190117/3ee59a26d8bb731a4bd373c47d28ca52.jpg</link_text>" />Aber Achtung, die Rega-Schicht der CCU ist etwas empfindlich, was zu häufige Abfragen angeht … sie crashed dann schon mal (daher auch der recht hohe Defaultwert von 30 Sekunden).
Gruß,
Eric
Von unterwegs getippert~~
-
Naja „sinnvoll“ ist ja so eine Sache. ;-) … und liegt im Auge des Betrachters.
Ich persönlich wäre nicht unbedingt bei Texten die ich nutzen würde. Ich würde CuxD und virtuelle Geräte nutzen wie einen Taster quasi.
Bei einer Aktion setzt man die auf true bzw true/false falls es ein ja/nein Status ist.
Das wird in Echtzeit übertragen und kann dann gescheit verarbeitet werden.
Ich bin jetzt im Code nicht tief drin. Keine Ahnung ob der zeitstempel bei systemvariablen verfügbar wäre. Kannst ja ggf im GitHun mal nett ein Feature Request anlegen. Dann kann ggf ein Entwickler da mal rein schauen.
Gesendet vom Handy ...
-
Erledigt im GitHub: