NEWS
[Erledigt] Verständnisfrage zu "Änderungen aufzeichnen" im History
-
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: