NEWS
History 2.0.0 verfügbar - eine Zusammenfassung
-
@afuerhoff Die Null werte werden erst beim Aggregieren aussortiert. Es werden also count Werte gelesen und dann darauf aussortiert. Was man faktisch ändern müsste ist mir schon klar ...
AM Ende kann der Adapter nur versuchen das sinnvollste aus den Daten zu machen. Wenn diu spezielle Anforderungen hast dann schreib die Abfrage so das es klappt und prozessiere die Daten ggf danach selbst nochmal
Auch eine Option wenn es zu speziell wird.
ALso wegen deinen "Auch letzten Tag vom Vortag" zu nehmen ist einfach: setze Start nicht auf "Tag 0:0:0" sondern auf "Vortag 23:59:59" und du solltest noch einen Wert mehr bekommen (Wenn da einer war)
-
@apollon77
Das ist genau das Problem. Ich weiß nicht, ob es einen Wert am Vortag gab. Daher möchte ich ja auch den count vom aktuellen Tag um eins erhöhen und dann erneut einlesen. Dann ist es egal, wann der Wert gesetzt wurde. Feature Request habe ich eingestellt.Nach altem Verhalten kann man aber nicht davon ausgehen, dass dann auch ein korrekter Wert zurück geliefert wird, da es ja auch ein Null Wert sein könnte. Es ist dann wesentlich aufwändiger den letzten gültigen Wert zu ermitteln.
-
@afuerhoff naja jetzt sind wir aber am Knackpunkt. Wieviel Magie soll der Adapter tun bei allem Millionen möglichen Fällen?
Du entscheidest sich nur sehr rar ändernde Werte zu loggen und erwartest das der Adapter immer weiss wann/ob ein Wert davor geloggt wurde um den auch zurückzugeben wenn ein Zeitraum A bis B abfgefragt wird. Das ist grenzwertig weil halt immer noch ein Datenfile mehr gelesen werden müsste ...
Wenn Du das willst kennst Du die empfohlene Lösung ("gleichen Wert zusätzlich loggen") in einem sinnvollen interval ... dann hast du in der Praxis das Problem nicht/selten.
Ja rest muss ich überlegen
-
Ich weiß, dass es schon speziell ist was ich machen möchte
.
Ich rechne darüber die Anwesenheit und Abwesenheit (Einheit Minuten) in meinem Adapter. Wenn ich jetzt jede Minute einen Wert loggen lassen würde, dann hätte ich keine Probleme allerdings viele unnütze Werte in der Datenbank. Ist das Intervall größer, dann habe ich einen Fehler in der Berechnung. Daher nützt mir das loggen gleicher Werte nichts. -
@afuerhoff sagte in History 2.0.0 verfügbar - eine Zusammenfassung:
allerdings viele unnütze Werte in der Datenbank
Das ist die krux beim "Data logging" ... zuviel vs zu wenig ... Ich persönlich bin bei "Finde den Sweet spot zwischen unnötig und für den Usecase/Anwendungsfall angemessen"
Und Speicherplatz ist billig heutzutage
-
@afuerhoff sagte: Ich rechne darüber die Anwesenheit und Abwesenheit (Einheit Minuten)
Mittels History? Nach dem Motto: Weshalb einfach, wenn es auch kompliziert geht.
-
@paul53 sagte in History 2.0.0 verfügbar - eine Zusammenfassung:
Mittels History? Nach dem Motto: Weshalb einfach, wenn es auch kompliziert geht.
Was wäre dein Vorschlag? Ich wollte mir keine eigene History Funktionalität einbauen.
-
@afuerhoff sagte: Was wäre dein Vorschlag?
Ich kann erst etwas vorschlagen, wenn ich weiß, was Du vorhast.
-
-
@afuerhoff sagte: Adapter ist fb-checkpresence
Den Adapter kenne ich nicht. Geht es hierum?
Objekt member.history, member.historyHtml
Hier finden Sie Informationen zur Historie des aktuellen Tages.Die paar Werte kann man auch in einem Array-Datenpunkt speichern.
-
Nein, darum nicht. Ich bin allerdings ganz zufrieden mit dem History Adapter.
Nur die oben beschriebene spezielle Funktionalität würde mir das Leben einfacher machen.Das eigene Array müsste auch nach Adapter Stopp noch verfügbar sein. Damit würde ich einen kleinen History Adapter nachbauen. Das möchte ich mir nicht antun. Außerdem kann der Anwender die History Werte auch zu anderen Zwecken noch nutzen.
Danke für deinen Vorschlag.
-
@afuerhoff sagte: die oben beschriebene spezielle Funktionalität würde mir das Leben einfacher machen.
Wenn die Werte aus der History vom Typ "boolean" sind und nur bei Änderung aufgezeichnet werden, weiß man, dass wenn der erste Eintrag true ist, der Wert vorher false gewesen sein muss (und umgekehrt). Diese Tatsache kann man im eigenen Adapter berücksichtigen. Die Chart-Adapter tun es allerdings nicht.
-
@paul53
Hab ich auch schon dran gedacht. Problem könnte nur sein, wenn der Anwender das Verhalten am Datenpunkt dass ich vorgebe verstellt hat, dann passt das auch nicht. -
@afuerhoff sagte: wenn der Anwender das Verhalten am Datenpunkt dass ich vorgebe verstellt hat, dann passt das auch nicht.
Dann sollte man den Anwender deutlich darauf hinweisen, dass er dies zu unterlassen hat.
-
@paul53
Die andere Vorgehensweise ist universeller bzgl. der History Einstellungen. Ich möchte die Anwender nicht einschränken.
Ich weiß, mir ist nicht zu helfen -
@apollon77 Bin schon länger auf der 2.1.4 äuft auch stabil
wollte heute dann mal auf die 2.1.7 gehen . ca alle 15min Starte mein IOBroker danach neu. Habe mal den Auszug aus dem Log wenn er neustartet angefügt.
Admin version ist 5.4.9 / Node.js 16.15.12022-07-04 17:52:28.587 - info: history.0 (2043) enabled logging of Außentempeatur (Count=2), Alias=true 2022-07-04 18:06:03.587 - error: host.IOBroker uncaught exception: null must be RESP Buffer value 2022-07-04 18:06:03.588 - error: host.IOBroker TypeError: null must be RESP Buffer value at Function.encodeArray (/opt/iobroker/node_modules/respjs/index.js:62:45) at RedisHandler._sendExecResponse (/opt/iobroker/node_modules/@iobroker/db-base/lib/redisHandler.js:452:62) at RedisHandler._handleMultiResponse (/opt/iobroker/node_modules/@iobroker/db-base/lib/redisHandler.js:472:18) at RedisHandler.sendInteger (/opt/iobroker/node_modules/@iobroker/db-base/lib/redisHandler.js:326:22) at RedisHandler. (/opt/iobroker/node_modules/@iobroker/db-objects-jsonl/lib/objects/objectsInMemServerRedis.js:734:33) at RedisHandler.emit (node:events:527:28) at RedisHandler.emit (node:domain:475:12) at Immediate. (/opt/iobroker/node_modules/@iobroker/db-base/lib/redisHandler.js:145:37) at processImmediate (node:internal/timers:466:21) 2022-07-04 18:06:03.599 - info: telegram.0 (1907) Got terminate signal TERMINATE_YOURSELF
Bin jetzt wieder auf die 2.1.4 und läuft wieder ....
Hast du oder wer anders eine Idee -
@frank579
Welcher js-controller ist das?kannst Du es versuchen bitte nochmals zu reproduzieren? Wir kennen diesen Fehler aus Logs vom js-controller konnten Ihn aber noch nie nachvollziehen und auch in verbindung mit History mir bisher unbekannt. Falls es wieder passsiert bitte setze mal das Loglevel des Hosts (/opt/iobroker/iobroker-data/iobroker.json) auf "silly" und poste mal das log - aber am besten in nem anderen Thread weil für hier an sich off topic
EDIT Und bitte zeige mal was in
/opt/iobroker/node_modules/@iobroker/db-objects-jsonl/lib/objects/objectsInMemServerRedis.js in Zeile 734 steht
UND was in /opt/iobroker/node_modules/@iobroker/db-base/lib/redisHandler.js Zeile 326 steht
-
@frank579
Welche Version vom
js-controller
läuft?Vielleicht mal 'alles' anschauen.
iobroker update -i sudo ln -s /usr/bin/node /usr/bin/nodejs uname -m && which nodejs node npm && nodejs -v && node -v && npm -v && whoami && pwd && sudo apt update &> /dev/null && sudo apt update && apt policy nodejs
-
frank@IOBroker:~$ iobroker update -i sudo ln -s /usr/bin/node /usr/bin/nodejs uname -m && which nodejs node npm && nodejs -v && node -v && npm -v && whoami && pwd && sudo apt update &> /dev/null && sudo apt update && apt policy nodejs Used repository: beta Adapter "admin" : 6.1.9 , installed 5.4.9 [Updatable] Adapter "alarm" : 3.1.1 , installed 3.1.1 Adapter "alexa2" : 3.13.0 , installed 3.13.0 Adapter "alias-manager": 1.2.6 , installed 1.2.6 Adapter "backitup" : 2.4.9 , installed 2.4.9 Adapter "daswetter" : 3.1.3 , installed 3.1.3 Adapter "discovery" : 3.0.5 , installed 3.0.5 Adapter "dwd" : 2.8.3 , installed 2.8.3 Adapter "ecovacs-deebot": 1.4.4 , installed 1.4.4 Adapter "fullybrowser" : 2.1.2 , installed 2.1.2 Adapter "growatt" : 1.1.15 , installed 1.1.15 Adapter "history" : 2.1.7 , installed 2.1.4 [Updatable] Adapter "hm-rega" : 3.0.40 , installed 3.0.40 Adapter "hm-rpc" : 1.15.12 , installed 1.15.12 Adapter "ical" : 1.13.1 , installed 1.13.1 Adapter "icons-icons8" : 0.0.1 , installed 0.0.1 Adapter "icons-mfd-png": 1.1.0 , installed 1.1.0 Adapter "icons-mfd-svg": 1.1.0 , installed 1.1.0 Adapter "icons-open-icon-library-png": 0.1.2, installed 0.1.2 Adapter "influxdb" : 3.1.7 , installed 3.1.7 Adapter "info" : 1.9.19 , installed 1.9.19 Adapter "iot" : 1.11.8 , installed 1.11.8 Adapter "javascript" : 5.7.0 , installed 5.7.0 Controller "js-controller": 4.0.23 , installed 4.0.23 Adapter "klf200" : 1.0.1 , installed 1.0.1 Adapter "lgtv" : 1.1.10 , installed 1.1.10 Adapter "mihome-vacuum": 3.5.0 , installed 3.5.0 Adapter "mqtt" : 4.0.7 , installed 4.0.7 Adapter "net-tools" : 0.2.0 , installed 0.2.0 Adapter "nut" : 1.5.1 , installed 1.5.1 Adapter "parcel" : 0.0.18 , installed 0.0.18 Adapter "pi-hole" : 1.3.4 , installed 1.3.4 Adapter "proxmox" : 1.3.4 , installed 1.3.4 Adapter "shelly" : 5.3.2 , installed 5.3.2 Adapter "shuttercontrol": 1.4.14 , installed 1.4.14 Adapter "simple-api" : 2.7.0 , installed 2.7.0 Adapter "snmp" : 1.0.0 , installed 1.0.0 Adapter "socketio" : 6.1.7 , installed 4.2.0 [Updatable] Adapter "sonoff" : 2.5.1 , installed 2.5.1 Adapter "sourceanalytix": 0.4.14 , installed 0.4.14 Adapter "telegram" : 1.14.1 , installed 1.13.0 [Updatable] Adapter "tr-064" : 4.2.16 , installed 4.2.16 Adapter "trashschedule": 2.0.3 , installed 2.0.3 Adapter "tuya" : 3.6.15 , installed 3.6.15 Adapter "unifi" : 0.6.1 , installed 0.6.1 Adapter "unifi-protect": 0.0.12 , installed 0.0.12 Adapter "vis" : 1.4.15 , installed 1.4.15 Adapter "vis-hqwidgets": 1.2.0 , installed 1.2.0 Adapter "vis-icontwo" : 0.87.0 , installed 0.87.0 Adapter "vis-jqui-mfd" : 1.0.12 , installed 1.0.12 Adapter "vis-material-advanced": 1.7.2, installed 1.7.2 Adapter "vis-materialdesign": 0.5.9, installed 0.5.9 Adapter "vis-timeandweather": 1.1.7, installed 1.1.7 Adapter "weatherunderground": 3.4.2, installed 3.4.2 Adapter "web" : 5.2.3 , installed 4.3.0 [Updatable] Adapter "ws" : 2.1.2 , installed 1.3.0 [Updatable] Adapter "zigbee" : 1.7.5 , installed 1.7.5 [sudo] Passwort für frank: ln: die symbolische Verknüpfung '/usr/bin/nodejs' konnte nicht angelegt werden: Die Datei existiert bereits x86_64 /usr/bin/nodejs /usr/bin/node /usr/bin/npm v16.15.1 v16.15.1 8.11.0 frank /home/frank OK:1 http://deb.debian.org/debian bullseye InRelease OK:2 http://security.debian.org/debian-security bullseye-security InRelease OK:3 http://deb.debian.org/debian bullseye-updates InRelease OK:4 https://deb.nodesource.com/node_16.x bullseye InRelease Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig Alle Pakete sind aktuell. nodejs: Installiert: 16.15.1-deb-1nodesource1 Installationskandidat: 16.15.1-deb-1nodesource1 Versionstabelle: *** 16.15.1-deb-1nodesource1 500 500 https://deb.nodesource.com/node_16.x bullseye/main amd64 Packages 100 /var/lib/dpkg/status 12.22.12~dfsg-1~deb11u1 500 500 http://security.debian.org/debian-security bullseye-security/main am d64 Packages 12.22.5~dfsg-2~11u1 500 500 http://deb.debian.org/debian bullseye/main amd64 Packages
-
@thomas-braun ich denke das ist hier nicht so relevant.
In meinen Augen kann der Fehler nur auf zwei Arten passieren (in Beiden Fällen erklärt das nicht das ein Downgrade es fixt):
- entweder ist es ne SD Karte oder generell im FS ist ein Bit gekippt - Downgrade geht wieder spricht dagegen
- Es ist ein Timeing issue was wir übersehen haben beim handling vopn Multicommands im Redis-Simulator