Neues Modul für TSL2561 Helligkeitssensor

Begonnen von kaihs, 02 März 2014, 18:52:03

Vorheriges Thema - Nächstes Thema

kaihs

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 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.

Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

betateilchen

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 :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

kaihs

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
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

klausw

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

Das BMP180 Modul ist evtl. ein gutes Beispiel für die Anpassung: http://forum.fhem.de/index.php/topic,20452.msg143682.html#msg143682

Grüße
Klaus


RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

kaihs

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
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

klausw

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
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klausw

Das Modul ist im SVN eingecheckt.
Für den SHT21 Feuchtesensor und den BMP180 Luftdrucksensor sind auch funktionierende Beispiele vorhanden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

locutus

Hallo kaihs,

ist es dir schon gelungen die Plattformabhängigkeit (HiPi) zu umgehen?

kaihs

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.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

klausw

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.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Diggewuff

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?

kaihs

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.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

Diggewuff

Das klingt gut. Was währe das für ein Modul?

kaihs

Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation