RRD in FHEM einbinden (auslesen)?

Begonnen von ausserirdischesindgesund, 13 Dezember 2013, 16:28:30

Vorheriges Thema - Nächstes Thema

ausserirdischesindgesund

Wie kann man am einfachsten die jeweils letzten geloggten Daten aus einer RRD-Datenbank auslesen
und in FHEM z.B. in einen Dummy übertragen?

RRD: http://oss.oetiker.ch/rrdtool/

Ich habe z.B. eine RRD-Datenbank mit:
root@tau:~# rrdtool lastupdate   /var/lib/rrd/sensorlog0.rrd
btemp pressure temp0 humidity0 light0

1386948133: 24.2 1027.1 23.2 57.0 9


Wo Temperatur, Luftdruck, anderer Temperatursensor, relative Feucht und Helligkeit drinstehen.
Kann ich das direkt aus der RRD-Datenbank in FHEM reinkriegen? Oder muß ich mir ein
Skript schreiben, das die Werte aus dem RRD ausliest und dann z.B. mit

fhem.pl localhost:7072 "set dummy 24.2"

"einfüttert"?

UliM

Hi,
das kommt drauf an, was Du mit "in fhem reinkriegen" meinst.
Willst Du das logfile einsehen können? Oder ein fileplot anzeigen? Oder...
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

ausserirdischesindgesund

In erster Linie möchte ich es im Webinterface/Handyinterface anzeigen, und davon Bedingungen ableiten können (wenn variable-aus-rrd < 10, dann ...), in zweiter Linie in Graphen plotten (obwohl ich da natürlich auch direkt aus dem RRD was machen kann).

Also im Prinzip wie einen direkt an FHEM angebundenen Sensormeßwert verwenden.

Macht es einen Unterschied, was man damit machen möchte, bzw. warum?

UliM

Hi,
nen Unterschied macht's schon, denn Du könntest evtl ein Fileplot direkt auf die bereits existierende Logdatei loslassen.
Wenn Du aber auch auf events reagieren können möchtest, ist der von Dir bereits genannte Weg
fhem.pl localhost:7072 "set dummy 24.2"
wohl der beste Weg.
Auf den dummy musst Du dann ein Filelog definieren, damit auch in fhem ein log vorhanden ist und v.a. jeweils ein event ausgelöst wird.

Du kannst dieses script auch in perl schreiben, in 99_myUtils unterbringen und zB per fhem-at jede Minute einmal loslaufen lassen. Ist aber nur ne Option, welchen Weg Du wählst ist dann wohl fast egal.

Interessant wäre zu wissen, woher denn die Werte kommen, due in Deiner RRD-Datenbank landen. Vll kann man ja diese Werte stattdessen/zusätzlich nach fhem schreiben.

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

ausserirdischesindgesund

Danke, UliM!

Die derzeit bestehende Lösung bekommt die Sensormeßdaten über mehrere WLAN-Clients als UDP-Paket,
das im Prinzip die Meßwerte als String hintereinander enthält, und am Schluß jeweils eine CRC-Prüfsumme
pro Paket bzw. Zeile. Alle 2 Minuten schicken die Sensoren so ein Paket durchs WLAN.

Das Paket wird derzeit von einem selbstgeschriebenen Python-Skript (läuft als Daemon) empfangen, in die
einzelnen Werte zerlegt, und in die RRD-Datenbank geschrieben. Natürlich könnte ich auch diesen
Python-Daemon dazu verwenden um die Werte in FHEM reinzukriegen (ohne Umweg über RRD), wenn
ich wüßte wie. Aus meinem Python-Skript "fhem.pl" aufrufen finde ich nicht so toll, aus Ressourcengründen
und wegen der Stabilität. Allerdings vielleicht könnte man ja direkt reimplementieren, was man benötigt,
um eine im Python-Skript vorhandene Variable in einen FHEM-Dummy reinzukriegen?

UliM

Hi,
hmm - ohne Aufruf von fhem.pl nach fhem pushen - wüsste nicht wie das gehen soll, zumal wenn Du damit auch fhem-events erzeugen möchtest.

Alternative wäre halt ein pull in fhem zu schreiben und zyklisch aufzurufen, also pollen. Ressourcentechnisch auch nicht schön.

Und wenn Du das Entgegennehmen der Datenpakete von Python nach Perl verlagerst? Dann landen die Daten in einem fhem-Logfile statt RRD.
Dafür reichen meine Perl-Kenntnisse dann aber sicher nicht aus.

Hilft Dir das weiter?  http://forum.fhem.de/index.php/topic,15928.0.html

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.