Helligkeitswerte aus Fakelog auslesen

Begonnen von flocko, 24 Oktober 2014, 23:48:58

Vorheriges Thema - Nächstes Thema

flocko

Hallo Zusammen,

ich habe ein Brett vorm Kopf und komme nicht weiter.

Folgendes Szenario:
Per PRESENCE wird meine Anwesenheit abgefragt und mit Notify werden LightScenes (Philips Hue+Heizung) gesteuert. Das funktioniert.
Allerdings soll das Licht nicht angenehen, wenn es Hell genug im Raum ist. Ich möchte dies nicht von der Tageszeit abhängig machen, da ich auch Tagsüber die Rolläden teilweise unten habe.

Ich möchte folgendes erreichen: Ich komme nach Hause (egal wie spät) und es ist dunkel = Licht an. Ich komme nach Hause und es ist hell genug im Raum = Licht aus.

Da ich keinen Helligkeitssensor für Homematic gefunden habe, habe ich mir selbst einen gebastelt.
FHEM läuft auf einem Raspberry Pi. Ich habe also eine Fotodiode auf ein Arduino geklemmt und ein kleines Script geschrieben. Der Arduino hängt per USB am RPi.
Ich bin kein Linuxexperte, aber ich frage im Augenblick auf dem Raspberry die Werte vom Arduino mit "cat /dev/ttyACM0 > volker.log" die Helligkeitswerte ab.
Es liegt also eine Datei im FHEM Verzeichnis die "volker.log" heißt und folgende Werte liefert:

Helligkeit Volker 255
Helligkeit Volker 240
Helligkeit Volker 239
Helligkeit Volker 242
Helligkeit Volker 239
Helligkeit Volker 231
Helligkeit Volker 234
Helligkeit Volker 232
Helligkeit Volker 235...

Alle 10 Sekunden wird ein neuer Wert in diese Datei geschrieben.

Jetzt kommen meine Unsicherheiten:
Ich habe ein Fakelog erstellt: /opt/fhem/volker.log SVG_arduino_1:.*|fakelog

1. Wie kann ich mit diesen Werten arbeiten (zum Beispiel eine Notify, wenn Werte höher sind als 200)? Brauch ich dafür ein Dummy Device?
2.Wie übernehme ich die Werte?
3. Brauche ich ein Zeitstempel? Das Arduino hat leider keine Uhrzeit an Board.


Ich habe bereits das Commandref, Wiki und die Suchfunktion bemüht, aber irgendwie hakt es zur Zeit leider. :(

Wenn gewünscht schreibe ich ein kleines Tutorial für den Arduino Lichtsensor.

Vielen Dank für die Hilfe
Volker

justme1968

den umweg über ein log file das dann wieder ausgelesen wird ist glaube ich keine gute idee.

wie wäre es das ganze per firmata einzubinden? das wäre das FRM und das FRM_AD modul und der passende sketch auf dem arduino.

oder mit deinem sketch und so wie das send2fhem.sh script von hier per fhem aufruf in einen dummy schreiben: http://forum.fhem.de/index.php/topic,13166.msg82135.html#msg82135 macht? da gab es das co20 modul noch nicht.

in beiden fällen hättest du ein echtes fhem device mit readings und events auf die du triggern kannst.

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

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

flocko

Vielen Dank für die Antwort.  :)
Ich hab mir das angeschaut, aber bin gescheitert. Ich habe allerdings eine Lösung gefunden. Ich habe ein CustomReadings angelegt.
(https://dl.dropboxusercontent.com/u/7268818/Bildschirmfoto%202014-10-25%20um%2002.00.09.png)

Wenn ich versuche direkt aus FHEM ein cat auf den USB zu machen, hängt sich FHEM auf.  Daher läuft im Hintergrund auf der Shell ein cat usb > volker.log   und in FHEM läuft ein Tail -2.

Nochmals herzlichen Dank für die Hilfe.

Volker