Daten aus Logfile in Dummy schreiben?

Begonnen von hugo.crank, 04 Januar 2016, 17:47:41

Vorheriges Thema - Nächstes Thema

hugo.crank

Hallo ich suche nun schon 2 Tage nach einer Lösung aus einem Logfile die Daten weiterzugeben. Die grafische Darstellung funktioniert prima.

fehm.cfg:
#######################################################################################
define SVG_FileLog_arduino1_3 SVG FileLog_arduino1:SVG_FileLog_arduino1_3:CURRENT
attr SVG_FileLog_arduino1_3 alias Heizungsraum
attr SVG_FileLog_arduino1_3 label "Heizungsraum    Max: $data{max1} C, Min: $data{min1} C, Aktuell: $data{currval1} C"
attr SVG_FileLog_arduino1_3 room Heizung


Logfile:
Example lines for input:
2016-1-04_17:29:27 DHT11_A0 OK 52.0 13.0
2016-1-04_17:29:27 DHT11_A1 OK 44.0 15.0
2016-1-04_17:29:27 DHT11_A2 OK 24.0 18.0
2016-1-04_17:29:27 DHT11_A3 OK 46.0 18.0
2016-1-04_17:29:27 DHT11_A4 OK 39.0 19.0
2016-1-04_17:29:27 DHT11_A5 TIMEOUT nan nan
2016-1-04_16:55:51 DHT11_A7 OK 40.0 15.0
2016-1-04_17:29:27 DHT11_A7 TIMEOUT nan nan
2016-1-04_17:29:27 DS18B20_AUSSEN 0.00
2016-1-04_17:29:27 DS18B20_HZVL1 0.00
2016-1-04_17:29:27 HC-SR04_1 Entfernung: 35 cm Fuehlhoehe: 97 cm Liter: 3294 l Liter-Neg.: -3294 l
2016-1-04_17:29:27 LIGHT_FLUROG 398


Get filelog beispiel:
get FileLog_arduino1 CURRENT INT 2016-01-03_00:00:00 2016-01-04_00:00:01 5:DHT11_A1.*:: 4:DHT11_A1.*

Wie bekomme ich den Temperaturwert aktuell und den humidywert in einen verwertbaren Zustand um damit Schaltungen durchführen zu können? Das Logfile erzeugt ein Arduino und soll noch um weitere Sensoren erweitert werden. Die Schaltung übernimmt dann ein zweiter Arduino mit Firmata.
Wäre dankbar für einen Denkanstoß

Grüße Holger

Uef

Hallo Holger,

ich schlage mich gerade auch recht erfolglos mit get FileLog rum.

Was mir aber an deinem Post aufgefallen ist (ohne zu wissen, ob das entscheidend ist):

  • Zeitbereich im get-Befehl deckt nicht den geposteten Bereich des Logs ab; dafür müsste TO eher 2016-01-05_00:00:01 lauten; liegt aber vielleicht nur an den Beispieldaten, die Du gewählt hast
  • die letzte COL-Spec scheint unvollständig und besteht nur aus 2 Parametern; ich weiß nicht, ob das FHEM das toleriert ...(

Gruß
Uef
fhem auf Raspberry2 mit MAX! (via CUL f. Raumthermostat, Fensterkontakte und Heizungen) und HM (via LanAdapter für Raumthermostat, 6-fach Taster, 4-fach Hutschiene, Statusanzeige, Stecker m. Leistungsmessung); In Entwicklung: Heizungsüberwachung via Adapter & MQTT; Stromverbrauchsüberwachung (1wire)

kadettilac89

Zitat von: hugo.crank am 04 Januar 2016, 17:47:41

Wie bekomme ich den Temperaturwert aktuell und den humidywert in einen verwertbaren Zustand um damit Schaltungen durchführen zu können? Das Logfile erzeugt ein Arduino und soll noch um weitere Sensoren erweitert werden. Die Schaltung übernimmt dann ein zweiter Arduino mit Firmata.
Wäre dankbar für einen Denkanstoß

Grüße Holger

Du gehst von der falschen Richtung an das Ganze ran. Wenn die Werte in dem Logfile sind musst du umständlich damit einen Dummy oder ein dafür angelegtes Device missbrauchen.

Suche mal nach DHT22. Das sollte das selbe Vorgehen sein. Lese regelmäßig die Werte aus, fülle ein Device damit (Readings) und lasse dir dann davon die Logs für die Plotts füllen. Alles andere ist umständlich, fehleranfällig und bei Erweiterung mehr und mehr eine Bastellösung.

Wie gesagt, Suche bemühen und eine DHT22-Lösung an deine Bedürfnisse anpassen.

kadettilac89

Zitat von: hugo.crank am 06 Januar 2016, 13:54:06
Hallo,
es sind nur Beispiele richtig ;-) das mein get filelog so nicht funktioniert siehst du richtig :-)

Von der falschen Seite gehe ich nicht ran. Die Richtung stimmt schon wie ich es vor habe.
Grund ist ganz einfach: Was der Arduino da noch alles in die Serielle Schnittstelle schreiben soll kann so ziemlich alles mögliche sein was ich noch bauen werde.
Ich habe mir auch Gedanken darüber gemacht die werte in die Firmata zu bringen ohne Erfolg. Es gibt keine Module für DHT11/22 welche funktionieren. Zumindest habe ich keine Lösung gefunden und stecke auch nicht so tief in Programmiersprachen das ich mir ein Modul bauen kann.
Wenn ich es schaffen sollte DHT11 Firmata zum laufen zu bringen stehe ich vor dem nächsten Klotz und humpel als nächstes mit dem Ultraschallsensor der entsprechend den Abstand im Heizungstank misst und anhand von Referenzwerten im Arduino die Liter berechnet --> in die Logfile schreibt.
Ich kann es mir natürlich auch noch schwerer machen und die ganze Berechnung im Fhem machen was erheblich schwerer ist als es einem Arduino beizubringen.

get Filelog sehe ich als einzigste Lösung um Fhem mit aktuellen werten von allen Devices zu füttern die noch folgen. Aber wie funktioniert es? Ich durchblicke die Beschreibungen zu der Funktion nicht und finde auch keine Beispiele um die werte aus dem Logfile in einen Dummy zu bringen. Das Witzige ist ja noch dazu das ich den Wert ja schon in die Überschrift vom Plot ausgeben kann! Nur weiterverwenden kann ich davon NULL.

Ich will einen Dummy missbrauchen!

1) Falsch oder nicht ist Einstellungssache. Egal. Formulieren wir es anders ... ich würde den Weg nicht über Filelogs gehen. Aber viele Wege führen nach Rom, manche sind halt steinig
2) Information zu Firmata und DHT22 gibt es .. GIDF
3) Exotische Hardware / Lösungen ohne Programmierkenntnis bzw. -wille wird schwierig

Ansatz der möglich wäre:

Ich gehe davon aus, dass es ein Script oder Cronjob gibt der in regelmäßigen Abständen den Arduino abfrägt und Werte dann in das Logfile schreibt. Irgendwo muss das File ja Werte bekommen

Angelehnt an dieses Beispiel: http://forum.fhem.de/index.php/topic,25413.0.html
- Cronjob schreibt Werte direkt in einen Dummy statt in dein File ... die Logik an sich muss es irgendwo geben da du ja schon ein File hast
- Events füllen dir dein Log für Plot usw. .Für events das beachten ... http://forum.fhem.de/index.php?topic=20363.0
... ab hier Fhem Standard.

Firmata kann auch direkt in Fhem eingebunden werden, aber da musst auch etwas entwickeln ... http://www.meintechblog.de/2015/08/selbstbau-sensoren-im-smart-home-mit-fhem-nutzen-ein-guide-fuer-einsteiger/

Wenn du an deinem Weg über die bestehenden Files festhalten willst musst du auch irgend wie die Files auslesen und Werte extrahieren. Was mehr Programmieraufwand ist kann ich nicht sagen, der Weg über Dummy und Fhem-Standard ist sicher weniger fehleranfällig und für spätere Fehlerfälle leichter zu warten. ... that's just my 2 cents.

Ich bastle schon ne Weile mit Fhem rum. Hatte damals auch mit Files rumgemacht und DHT22 ausgelesen, in Fhem wieder eingelesen. Nach kurzer Zeit hab ich dann alles weggeworfen und von Null begonnen weil die Frikellösung kaum lesbar, und immer kompliziert wurde.

justme1968

#4
wenn du selber bestimmen kannst was der arduino sendet schau das das KeyValueProtokoll modul an.

damit kannst du beliebig erweiterbar direkt vom arduino readings im zugehörigen FHEM device setzen.

gruss
  andre

der weg rückwärts aus dem log file ist genau das: rückwärts. du verlierst so ziemlich alle möglichkeiten die fhem im hinblick auf das beeinflussen der readings hat und du belastet fhem deutlich mehr als durch das direkte setzen der aktuellen werte.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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