Mittelwert in Readings hinzufügen.

Begonnen von Phill, 05 Mai 2015, 10:06:46

Vorheriges Thema - Nächstes Thema

Phill

Hallo,

ich würde gerne zu meinem Feuchtefühler (OWDevice DS2438) einen Mittelwert hinzufügen. Aber über einen selbst bestimmten Zeitbereich. (1h oder 10h wie auch immer) So wie ich das verstehe fällt hierdurch "statistics" und "average" schon mal raus. Diese geben ja nur Tages/Monats-Werte usw. aus.

attr event-aggregator HIH4000/humidity:3600:linear:mean
Das hier ist eigentlich genau das was ich will, nur hätte ich gerne diesen Wert als extra Reading.

Also habe ich mit UserReading ein neues Reading angelegt  und auf dieses den event-aggregator angewendet.
attr userReadings mean_humidity {ReadingsVal("ow_klima_ht_2","HIH4000/humidity",0)}
attr event-aggregator mean_humidity:3600:linear:mean


In mean-humidity steht jetzt weiterhin der Wert der auch in HIH4000/humidity steht und in der Log wird alle Stunde eine 1 ausgegeben. Was mache ich falsch. Oder kann ich das irgendwie anders lösen?

Hintergrund: ich möchte den Echtzeitwert zur Anzeige bringen, aber von dem Mittelwert Grenzwerte ableiten.

Gruß und Danke schon mal im vorraus.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Phill

#1
OK, habs allein gelöst. Aber wäre schön wenn sich trotzdem zu dem Problem oben jemand äußern könnte.

Nachdem ich festgestellt habe, dass der event-aggregator nur nach Ablauf der Interval-Zeit den Wert aktualisiert wäre das für mich auch wieder nicht das richtige gewesen. Also habe ich es mit dblog gelöst.

Also dblog installiert und ein kleine Perl Funktion welche mir die SQL-Befehle verarbeitet erzeugt. Jetzt kann ich in kombination von UserReading und der Perl Funktion einen echten Mittelwert bilden.
Das sieht dann so aus falls es jemand mal interessiert.
attr ow_klima_ht_3 userReadings mean_humidity {
my @r = getsql("SELECT AVG(VALUE)
  FROM history
  WHERE DEVICE = 'ow_klima_ht_3'
   AND READING = 'HIH4000/humidity'
   AND TIMESTAMP >= (NOW() - INTERVAL 1 HOUR)");
return $r[0][0]}


Wundert mich das einen echten Mittelwert noch keiner benötigt hat. Oder hab ich nur was übersehen.

Gibt es eigentlich eine dblog interne funktion um SQL Befehle an die Datenbank abzusetzen?
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

stromer-12

Steht doch in der Commandref drin:

set <name> userCommand <validSqlStatement>
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Phill

Ich dachte da eher an einen komfortablen Weg die Daten zu bekommen.

Zur Vollständigkeit.
{ my @a = $defs{"LOGDB_DEVICE"}{DBH}->selectrow_array("SQL STATEMENT") }
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

wolfgang99

getsql: ist so eine perl-Funktion irgendwo im Standard? Oder wie sieht das genau aus? Nicht nur für Mittelwerte, sondern für alle möglichen Informationen per sql!

Prof. Dr. Peter Henning