DS18S20 - Volumen Filelog reduzieren

Begonnen von Muschelpuster, 21 Mai 2015, 07:17:53

Vorheriges Thema - Nächstes Thema

Muschelpuster

Moin zusammen,

Ich wollte die Daten in meinem Log etwas reduzieren, indem ich nur schreibe, wenn Änderungen der Temperatur anliegen. Was liegt da erst einmal näher, als das Atribut event-on-change-reading zu setzen? Leider sehe ich dann überhaut keine Events mehr und demzufolge werden auch keine Einträge mehr im Filelog erstellt.
Aber eigentlich war das auch nur der 1. Versuch, denn ich brauche keine Temperaturdifferenzen in der 3. oder 4. Nachkommastelle. Mir würde eine Auflösung von 0,5° ausreichen. Einfacher gerundet also auf 0,1°.
Leider habe ich hier nichts zum Runden gefunden und habe nur eine Idee, die vermutlich aber viel zu kompliziert ist: Ich baue pro Sensor ein Notify und ein Dummy. Mit den Notify's schreibe ich dann die gerundeten Werte in die Dummy's.
Kann ich alternativ auch die Definitionen OWDevice in OWMULTI wandeln, aber auch da kommt bei gesetztem  Atribut event-on-change-reading nix raus.
Oder gibt es da noch einen kürzeren/besseren Weg?

ungekürzte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Starkstrombastler

Attr gemäß commandref gesetzt?
Ohne listing können wir leider nur spekulieren!
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

chris1284

wie sieht den das device von den readings aus und wie deine event-on-change-reading definition?

mit userReadings könntest du zb die werte runden / auf eine nachkommastelle kürzen was auch immer da du auch perl code mit eingebunden werdne kann. dann diese usewrreadings in event-on-change-reading aufnehmen

justme1968

wenn du ds18b20 verwendest  kannst du resolution passend setzen. auf 9 oder 10. das vermindert die anzahl der nachkomma stellen und beschleunigt das auslesen.

der ds18s20 kann das glaube ich nicht und du musst über ein user reading gehen.

du musst event-on-change-reading nicht auf 1 setzen sondern auf den namen des readings um das es geht.

schau dir neben event-on-change-reading auch noch event-min-interval und event-aggregator
an.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Muschelpuster

Danke für Eure Hilfe!
Zitat von: justme1968 am 21 Mai 2015, 09:19:06du musst event-on-change-reading nicht auf 1 setzen sondern auf den namen des readings um das es geht.
OK, hier ist also schon mal mein grundsätzlicher Fehler! Den Rest muss ich nochmal genießen, wenn ich wieder auf meine Büchse komme.

grundsätzlich fehlerhafte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Muschelpuster

#5
Ahh, Dank Eurem Schubs in die richtige Richtung habe ich das dann auch alles gefunden (hoffe ich zumindest):define 1Wire_TerraTemp_RU OWDevice 10.8653B3020800 30
attr 1Wire_TerraTemp_RU IODev localOWServer
attr 1Wire_TerraTemp_RU alias E.T. rechts unten
attr 1Wire_TerraTemp_RU event-on-change-reading Temperatur
attr 1Wire_TerraTemp_RU model DS18S20
attr 1Wire_TerraTemp_RU room OWDevice,Terrarium
attr 1Wire_TerraTemp_RU userReadings Temperatur { int ( 10 * ReadingsVal("1Wire_TerraTemp_RU","temperature",0) + 0.5 ) / 10 }


Aber natürlich wecken diese direkten, einfachen Wege bei mir wieder Begehrlichkeiten  ::)
Nun will ich im Listing der Devices, wenn ich den Raum aufrufe, natürlich auch nicht mehr 'E.T. rechts unten
temperature: 17.8125 alarm: 0' sehen, sondern 'E.T. rechts unten
Temperatur: 17.8'.
Da gibt es doch sicher auch wieder was ganz kurzes Geniales, wo ich nur zu blöd bin, das zu finden  :'(

Ach ja, und auf die unwahrscheinliche Gefahr hin, dass jetzt die Temperatur lange konstant ist, wäre es natürlich noch cool, stündlich ein Event zu erzwingen...

blinde Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

justme1968

#6
dazu gibt es stateFormat (wenn es dir nur um die anzeige geht reicht das übrigens. ganz ohne user reading) und für das trozdem erzeugen event-min-interval.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Muschelpuster

Hey super - Danke  ;D
Ich wusste, dass das viel zu einfach geht  :P <*duckundwech*>
Dabei habe ich jetzt auch gleich noch gelernt, dass man über die Command-Line allen Sensoren ein Attribut mit einem Schlag verpassen kann, wenn man sie vorher vernünftig benannt hat und dann mit einem regulären Ausdruck zu fassen bekommt. Genial!

begeisterte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Muschelpuster

#8
Zitat von: justme1968 am 21 Mai 2015, 15:05:47... und für das trozdem erzeugen event-min-interval.
Da ist die Command-ref alledings andere Meinung:
ZitatDieses Attribut enthält eine durch Kommata getrennte Liste von "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird nur dann generiert, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind.
Oder bedeutet das, dass ein anderer Wert im Event trotzdem das Event auslöst und nur bei gleichem Wert die Auslösung unterdrückt wird? Das kann ich weder in den englischen noch den deutschen Text rein interpretieren...

zitierte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

justme1968

#9
wo siehst du den wiederspruch?

wenn event-on-change-reading gesetzt ist wird ein event nur dann erzeugt wenn sich der wert geändert hat

wenn event-min-interval gesetzt ist wird ein event nur erzeugt wenn seit dem letzen event die minimale zeit vergangen ist

wenn beide gesetzt sind wird ein event erzeugt wenn sich der wert geändert hat oder die minimale zeit vergangen ist. das ist doch genau das was du willst...

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Muschelpuster

Ahh, jetzt ja! Ich hatte erwartet/interpretiert, dass sich die beiden Atribute sozusagen gegenseitig aushebeln, nachdem es nicht funktionierte. Nun habe ich sie wieder drin, mal sehen ob es jetzt klappt. Vielleicht hatte ich erst noch einen Fehler drin...
Dann bin ich jetzt hier angelangt:define 1Wire_TerraTemp_RU OWDevice 10.8653B3020800 240
attr 1Wire_TerraTemp_RU IODev localOWServer
attr 1Wire_TerraTemp_RU alias E.T. rechts unten
attr 1Wire_TerraTemp_RU event-min-interval Temperatur:1200
attr 1Wire_TerraTemp_RU event-on-change-reading Temperatur
attr 1Wire_TerraTemp_RU group Messwerte
attr 1Wire_TerraTemp_RU model DS18S20
attr 1Wire_TerraTemp_RU room OWDevice,Terrarium
attr 1Wire_TerraTemp_RU sortby 60
attr 1Wire_TerraTemp_RU stateFormat Temperatur°C
attr 1Wire_TerraTemp_RU userReadings Temperatur { int ( 10 * ReadingsVal("1Wire_TerraTemp_RU","temperature",0) + 0.5 ) / 10 }


fehlinterpretierte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

justme1968

wie gesagt... wenn es dir nur um die nachkommt stellen bei der anzeige geht würde ich auf das user reading verzichten und die angezeigten nachkommastellen per attr 1Wire_TerraTemp_RU stateFormat{sprintf("%.1f",ReadingsVal($name,"temperature",0))."°C"}formatieren. dann bleibt ansonsten alles beim 'standard' reading temperature.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Muschelpuster

So, jetzt sieht es wohl gut aus  8)
Zitat von: justme1968 am 21 Mai 2015, 20:28:36wie gesagt... wenn es dir nur um die nachkommt stellen bei der anzeige geht würde ich auf das user reading verzichten
JIst gespeichert, aber in diesem Fall sieht die Kurve im Plot auch besser aus, wenn sie nicht so zittert.

geglättete Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Prof. Dr. Peter Henning

Ich kann nicht glauben, dass in in ordentlichen Abständen genommene Temperaturkurve "zittert" - dazu ist die Wärmeträgheit des gemessenen Systems viel zu groß.

Im OWTHERM-Modul ist übrigens ein einigermaßen intelligente Rundung eingebaut.

LG

pah

Muschelpuster

#14
Zitat von: Prof. Dr. Peter Henning am 21 Mai 2015, 21:35:23
Ich kann nicht glauben, dass in in ordentlichen Abständen genommene Temperaturkurve "zittert" - dazu ist die Wärmeträgheit des gemessenen Systems viel zu groß.
Das ist bei genauerer Betrachtung wohl wahr.  Die Linie wird sich nach dem Testlauf definitiv noch relativieren. Ich lasse die Y-Achse automatisch skalieren und im Moment ist die Temperatur recht stabil, da das Terrarium noch im Keller steht und sich im Bau befindet. So reicht die Skala momentan nur von 17°C bis 19°C. Im Betrieb wird diese sich zwischen 20°C und 50°C bewegen. Damit werden die Linien dann natürlich auch extrem glatt gebügelt.
Unterm Strich ist die Reduktion der Log-Informationen und der damit verbundene Performanceschub beim Aufbau des Plots der größte Vorteil der Rundung.

relative Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF