Hallo,
ich habe ein neues Modul für den TSL2561 Helligkeitssensor geschrieben.
Dieser Sensor hat eine I2C Schnittstelle. Das Modul ist momentan nur mit dem Raspberry PI verwendbar, da die HiPi Perl Module für den Zugriff auf dem I2C Bus verwendet werden.
Der Sensor enthält zwei einzelne Sensoren aus deren Messwerten eine Helligkeit in Lux errechnet wird.
Darüber hinaus stellt das Modul auch die Werte der Einzelsensoren als Readings zur Verfügung.
Ich habe das Modul sowohl mit einem Standalone Sensor von Adafruit als auch mit dem AddOn-Board von locutus http://forum.fhem.de/index.php/topic,14156.0.html (http://forum.fhem.de/index.php/topic,14156.0.html) getestet.
Weitere Informationen auch zur Nutzung finden sich am Anfang bzw. Ende des Scripts, im einfachsten Fall reicht ein
define Helligkeit I2C_TSL2561 /dev/i2c-1 0x39
FHEM ist für mich neu und perl auch keine Programmiersprache die ich täglich verwende, daher bin ich über Verbesserungshinweise dankbar.
Zitat von: kaihs am 02 März 2014, 18:52:03
FHEM ist für mich neu und perl auch keine Programmiersprache die ich täglich verwende, daher bin ich über Verbesserungshinweise dankbar.
Einen Tipp hab ich:
In _Define solltest Du nicht
$hash->{STATE} = 'Initialized';
verwenden, sondern
readingsSingleUpdate($hash, 'state', 'Initialized',1);
Man sollte (aus verschiedenen Gründen) vermeiden,Werte direkt in $hash->{STATE} zu schreiben.
Per Default wird der Wert aus dem Reading "state" dann automatisch nach STATE übernommen,
solange der Anwender mit stateFormat nichts anderes festgelegt hat.
Ansonsten sieht Dein Modul doch schon ganz gut aus :)
Vielen Dank für den Hinweis, habe ich geändert.
Was sind eigentlich die Voraussetzungen damit ein Modul offiziell Einzug in fhem nimmt?
Gruß,
Kai
Grundsätze kannst Du hier nachlesen:
http://forum.fhem.de/index.php/topic,20919.msg144381.html#msg144381
http://forum.fhem.de/index.php/topic,18962.0.html
Hallo Kai,
wenn Du Dein Modul an das 00_RPII2C.pm anpasst dann kann Dein Modul grundsätzlich mit allen Linux Systemen verwendet werden auf denen /dev/i2c-x vorhanden ist.
Hier ist der Thread dazu: http://forum.fhem.de/index.php/topic,20452.0.html (http://forum.fhem.de/index.php/topic,20452.0.html)
Das BMP180 Modul ist evtl. ein gutes Beispiel für die Anpassung: http://forum.fhem.de/index.php/topic,20452.msg143682.html#msg143682 (http://forum.fhem.de/index.php/topic,20452.msg143682.html#msg143682)
Grüße
Klaus
Hallo Klaus,
danke für den Hinweis, werde ich mir demnächst mal anschauen.
Momentan arbeite ich gerade an einem anderen Modul.
Planst du denn dein Modul offiziell zu FHEM hinzuzufügen, so dass es automatische mit ausgeliefert wird?
Andernfalls käme bei einer Umstellung meines Moduls eine weitere manuell zu installierende Abhängigkeit hinzu, das fände ich nicht so gut.
Gruß,
Kai
Hallo Kai,
ja das Modul werde ich hinzufügen. Ist nur noch eine Frage von Tagen.
Ich wollte vorher noch eine Anpassung vornehmen.
Ausserdem schreibe ich gerade noch ein weiteres Modul für ein Pic Controllermodul das I2C Befehle über Netzwerk tunnelt. Dieses wäre dann auch automatisch mit Deinem modifizierten Modul kompatibel.
Wenn Fragen zur Implementation sind immer raus damit, gerne auch per PM.
Grüße
Klaus
Das Modul ist im SVN eingecheckt.
Für den SHT21 Feuchtesensor und den BMP180 Luftdrucksensor sind auch funktionierende Beispiele vorhanden.
Hallo kaihs,
ist es dir schon gelungen die Plattformabhängigkeit (HiPi) zu umgehen?
Nein, habe ich leider noch nicht geschafft. Da jetzt aber Bedarf da ist werde ich mich bevorzugt darum kümmern.
Kann aber noch nicht sagen wann ich fertig werde.
Zitat von: kaihs am 09 Februar 2015, 20:25:09
Nein, habe ich leider noch nicht geschafft. Da jetzt aber Bedarf da ist werde ich mich bevorzugt darum kümmern.
Kann aber noch nicht sagen wann ich fertig werde.
Wenn du irgendwo hängst, dann gib bescheid.
Die Übertragung muss halt auf Asynchron umgeändert werden.
Das ist meiner Meinung nach das größte Stück Arbeit.
Ich habe vor den Lichtsensor TSL2561 dafür zu verwenden, in Abhängigkeit eines aufblinkenden lichtes, meinen AV Receiver schnell umzuschalten. daher wäre es notwendig, den Sensor einmal pro Sekunde, ggf. sogar häufiger abzufragen, gibt es eine Möglichkeit das Modul entsprechend umzustellen um dies realisierbar zu machen? Oder ist das über I2C Bus generell nicht möglich?
Ich glaube dafür ist dieser Sensor nicht die beste Wahl. Woran ist der sensor angeschlossen? Hast du da auch einen interruptfähigen Digitaleingang?
Es gibt billige Module mit einer fotodiode und einem OPV die ab einem einstellbaren Schwellwert ein Highsignal ausgeben. Da muss man dann nicht ständig pollen.
Das klingt gut. Was währe das für ein Modul?
Zum Beispiel http://www.ebay.de/itm/282294459088, wahllos herausgegriffen