Firmata mit TSL2561

Begonnen von eitschdie, 09 September 2015, 15:54:56

Vorheriges Thema - Nächstes Thema

eitschdie

Hallo zusammen,

ich verzweifel gerade damit, einen TSL2561-Sensor per I2C ans Laufen zu bekommen. Ich habe es zwar schon über den internen Anschluss im Raspberry geschafft, aber über Firmata auf einem Arduino UNO geht es einfach nicht. Die Kommunikation zum Firmata (mit Configurable Firmata) funktioniert auf jeden fall folgendes:

- Analoger Eingang
- Digitaler Eingang
- Onewire

Ich habe das Firmata-Interface folgendermaßen konfiguriert:

define FRM_0 FRM /dev/ttyACM0@57600
attr FRM_0 i2c-config 0
attr FRM_0 sampling-interval 5000

Den Sensor habe ich so konfiguriert:

define TSL2561 I2C_TSL2561 0x39
attr TSL2561 IODev FRM_0
attr TSL2561 floatArithmetics 1
attr TSL2561 poll_interval 1

Ich habe auch schon versucht vom Teilnehmer 0x39 (adresse des TSL2561) Daten zu lesen per FRM_I2C-Device. Das klappt einwandfrei. Das Device hatte ich folgendermaßen konfiguriert:

define FRM_I2C_TSL2561 FRM_I2C 57 0 32

So bekomme ich Daten vom Device zurück. Ich habe das Ganze auch schon mit einem I2C_BMP180 versucht. Das klappt auch nicht über das Firmata-Interface.

Bitte helft mir weiter! Ich werde schon verrückt.

Vielen Dank!

thymjan

i2c-config muss auf 1 stehen. Damit sagst Du der Firmata auf dem Arduino, dass sie die Kommunikation auf dem I2C-Bus aufbauen soll.

Schau auch mal hier:
http://forum.fhem.de/index.php/topic,40927.0.html

Familienpapi

#2
Hallo,

möchte diesen Thread nochmal aufgreifen und fragen, ob bei Dir, eitschdie, der TSL2561 nun funktioniert. Ich schaffe es bei mir nicht.

Hier mein Code für das FRM Device:
define FRMB1 FRM 28500 [global]
attr FRMB1 i2c-config 1
attr FRMB1 sampling-interval 30000
attr FRMB1 stateFormat reading
attr FRMB1 model nano
attr FRMB1 room zConfig
attr FRMB1 group FRM


und das Device für den TSL2561:
define Lux_B I2C_TSL2561 0x39
attr Lux_B IODev FRMB1
attr Lux_B poll_interval 1
attr Lux_B integrationTime 402
attr Lux_B autoGain 0
attr Lux_B gain 1
attr Lux_B room B_Test
attr Lux_B group zConfig_B


Der Nano hat configurable Firmata V2.06 ohne Servo und ohne Stepper für Standard USB Kommunikation drauf. Die Kommunikation selbst erfolgt dann über einen ESP8266-01 per WLAN und das funktioniert auch mit den Tastern und den LEDs an PWM über FHEM (auch mit Slider) ohne Probleme.

Flashe ich den Example Code von Adafruit wird der TSL2561 sauber ausgelesen und per USB ausgegeben. Also sollte man die Verkabelung auch ausschließen können.

Das Modul FRM_I2C gibt auch Werte für den TSL2561 Sensor ohne Fehlermeldung zurück.

Was mache ich falsch? Was fehlt? (Ich gehe davon aus, dass I2C_TSL2561 grundsätzlich funktionieren würde)

Edit: Das habe ich noch im LOG gefunden:
Use of uninitialized value in string eq at ./FHEM/51_I2C_TSL2561.pm line 1360.
Die Zeile sieht aber vom Syntax her oK aus.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

kaihs

Ich habe den TSL2561 noch nie auf diesem Weg benutzt, d.h. der entsprechende Code könnte durchaus noch fehlerhaft sein.

Allerdings scheint es mir verdächtig, dass du als IODev beim TSL2561 das FRM Device (FRMB1) und nicht das FRM_I2C Device eingetragen hast.
Kannst du das bitte mal ausprobieren.
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

Familienpapi

Wenn ich die Reference richtig verstanden habe, ist der FRMB1 mein I2C device, oder? Ich habe auch I2C auf dem Firmata aktiviert.

Oder ich brauche einen kleinen Schubser in die richtige Richtung. Wie hast Du das seither in FHEM definiert?
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

klausw

Das FRM Device ist schon richtig.
FRM_I2C wird meines Wissens nur verwendet um reine I2C Befehle zu senden.
Ist dein System aktuell?
Das I2C_TSL2561 Modul ist erst vor ein paar Wochen ins FRM Modul eingebunden worden.
Was steht denn im Log bei Verbose 5?
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

Familienpapi

System ist absolut aktuell. Habe jetzt auf ein Testsystem mit Ubuntu 15 gewechselt. Alle Updates, Patches installiert. FHEM meldet bei "update check" "nothing to do".

Das kommt bei verbose 5 an Meldungen:

2015.10.20 01:15:09 5: I2C_TSL2561_Poll: start
2015.10.20 01:15:09 5: I2C_TSL2561_Disable: start
2015.10.20 01:15:09 5: I2C_TSL2561_Disable: end
2015.10.20 01:15:09 5: I2C_TSL2561_GetLuminosity: calc state 0 acqui state 0
2015.10.20 01:15:09 5: I2C_TSL2561_GetLuminosity: starting new measurement
2015.10.20 01:15:09 5: I2C_TSL2561_Enable: start
Use of uninitialized value in string eq at ./FHEM/51_I2C_TSL2561.pm line 1360.
2015.10.20 01:15:09 5: I2C_TSL2561_Enable: end
2015.10.20 01:15:09 5: I2C_TSL2561_Disable: start
2015.10.20 01:15:09 5: I2C_TSL2561_Disable: end
2015.10.20 01:15:09 5: I2C_TSL2561_GetLuminosity: calc state 3 acqui state 0
2015.10.20 01:15:09 5: I2C_TSL2561_GetLuminosity: error, aborting
2015.10.20 01:15:09 5: I2C_TSL2561_Poll: 60 s
2015.10.20 01:15:09 3: received String_data: I2C: Too few bytes received


Kannst Du damit was anfangen? Gerne stelle ich weitere Infos zur Verfügung.
FHEM@RPi4, piVCCU3@RPi3 (nur Homematic IP), boot via USB NVME SSD, keine SDs,
FTUI 3, HMCCU, MQTT(Mosquitto), MobileAlerts, JeelinkV3c868 (LaCrosse), ZWAVE(+), TelegramBot, eigene Heizungssteuerung, Configurable Firmata
ESP8266 MQTT mit eigener Firmware / Framework

klausw

Hmm, bei den Logs vom TSL kann dir eher Kai weiterhelfen. Damit habe ich mich noch nicht befasst.
Die letzte Meldung scheint vom FRM zu sein (Verbose 5 hast du global aktiviert?).
Hier könntest du eine Lösung finden.
Es geht zwar um einen anderen Sensor aber in dem Thread liegt das Problem an der Firmata Konfiguration.
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

Sorry, ich muss da momentan passen.
Ich habe Firmata noch nie genutzt. Um den Fehler zu reproduzieren, müsste ich mir erst so eine Konfiguration aufbauen und dazu fehlt mir aktuell die Zeit.
Ich habe aktuell zu viele andere Baustellen.
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

thymjan

#9
Habe bei mir den TSL2561 mit ConfigurableFirmata am Arduino nano (per Ethernet) und Arduino micro (per USB) getestet.
Die Autokonfiguration der Adresse funktioniert nicht, als Adresse wird 10 bzw. 0x0a angenommen.
Mein TSL2561 ist auf 0x39 bzw. 57 eingestellt.

Folgende Konfiguration habe ich vorgenommen:
define Lichtsensor I2C_TSL2561 0x39
attr Lichtsensor IODev FRM_0
attr Lichtsensor floatArithmetics 1
attr Lichtsensor poll_interval 5
attr Lichtsensor verbose 5


FRM_0 habe ich fürs debugging ebenfalls auf verbose 5 gestellt.

Hier das Logfile der Arduino nano / USB-Version (habe das Log etwas gekürzt, da einige 1-Wire Sensoren und ein SHT21 auch am Arduino mit dranhängen):

2015.10.21 11:37:06 1: I2C_TSL2561_Define start: 3/Lichtsensor I2C_TSL2561 0x39
2015.10.21 11:37:06 3: Opening FRM_0 device /dev/ttyACM0
2015.10.21 11:37:06 3: Setting FRM_0 serial parameters to 57600,8,N,1
2015.10.21 11:37:06 3: FRM_0 device opened
2015.10.21 11:37:06 5: FRM:>ff
2015.10.21 11:37:06 5: SW: ff
2015.10.21 11:37:09 3: querying Firmata Firmware Version
2015.10.21 11:37:09 5: FRM:>f079f7
2015.10.21 11:37:09 5: SW: f079f7
2015.10.21 11:37:09 5: FRM:<f079020643006f006e0066006900670075007200610062006c0065004600690072006d006100740061002e0069006e006f00f7
2015.10.21 11:37:09 3: Firmata Firmware Version: ConfigurableFirmata.ino V_2_06
2015.10.21 11:37:09 5: FRM:>f069f7
2015.10.21 11:37:09 5: SW: f069f7
[...]
2015.10.21 11:37:09 5: FRM:>f40a07
2015.10.21 11:37:09 5: SW: f40a07
2015.10.21 11:37:09 1: OWX: 1-Wire bus OWio1: interface Firmata detected in FRM_0
2015.10.21 11:37:17 0: Featurelevel: 5.6
2015.10.21 11:37:17 0: Server started with 49 defined entities (version $Id: fhem.pl 9218 2015-09-09 19:43:43Z rudolfkoenig $, os linux, user fhem, pid 22841)
2015.10.21 11:37:17 5: FRM:>f07640007301f7
2015.10.21 11:37:17 5: SW: f07640007301f7
2015.10.21 11:37:17 5: FRM:>f07640080200f7
2015.10.21 11:37:17 5: SW: f07640080200f7
2015.10.21 11:37:17 5: FRM:>f07640007501f7
2015.10.21 11:37:17 5: SW: f07640007501f7
2015.10.21 11:37:17 5: FRM:>f07640080200f7
2015.10.21 11:37:17 5: SW: f07640080200f7
2015.10.21 11:37:17 5: I2C_TSL2561_Poll: start
2015.10.21 11:37:17 5: I2C_TSL2561_GetLuminosity: calc state 0 acqui state 0
2015.10.21 11:37:17 5: I2C_TSL2561_GetLuminosity: starting new measurement
2015.10.21 11:37:17 5: I2C_TSL2561_Enable: start

2015.10.21 11:37:17 5: FRM:>f07639080a010100f7
2015.10.21 11:37:17 5: SW: f07639080a010100f7
Use of uninitialized value in string eq at ./FHEM/51_I2C_TSL2561.pm line 1360.
2015.10.21 11:37:17 5: I2C_TSL2561_Enable: end
2015.10.21 11:37:17 5: I2C_TSL2561_Disable: start

2015.10.21 11:37:17 5: FRM:>f076390000010000f7
2015.10.21 11:37:17 5: SW: f076390000010000f7
2015.10.21 11:37:17 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/51_I2C_TSL2561.pm line 1396.
2015.10.21 11:37:17 5: I2C_TSL2561_Disable: end
2015.10.21 11:37:17 5: I2C_TSL2561_GetLuminosity: calc state 3 acqui state 0
2015.10.21 11:37:17 5: I2C_TSL2561_GetLuminosity: error, aborting
2015.10.21 11:37:17 1: PERL WARNING: Use of uninitialized value in multiplication (*) at ./FHEM/51_I2C_TSL2561.pm line 574.
2015.10.21 11:37:17 1: PERL WARNING: Use of uninitialized value in multiplication (*) at ./FHEM/51_I2C_TSL2561.pm line 575.
2015.10.21 11:37:17 5: I2C_TSL2561_Poll: 300 s

2015.10.21 11:37:17 5: FRM:<f0774000000058002801f7f0774000000014012a00f7f07739000a015000f7
2015.10.21 11:37:17 5: onI2CMessage address: '64', register: '0' data: [88,168]
2015.10.21 11:37:17 5: empfangen: 88 168
2015.10.21 11:37:17 5: onI2CMessage address: '64', register: '0' data: [148,42]
2015.10.21 11:37:17 5: empfangen: 148 42
2015.10.21 11:37:17 5: onI2CMessage address: '57', register: '138' data: [80]
2015.10.21 11:37:17 5: Lichtsensor RX register 10, 1 byte: 80
2015.10.21 11:37:17 5: I2C_TSL2561_I2CRcvID: sensorId TSL2561 Package T/FN/CL Rev. 0

2015.10.21 11:37:19 5: FRM:>f073400af7
2015.10.21 11:37:19 5: SW: f073400af7
[...]
2015.10.21 11:37:23 5: FRM:<034a7f584c1823316036f7
2015.10.21 11:37:23 1: OWX: 1-Wire devices found on bus OWio1 (OWX_10_9884DE020800,OWX_10_DAC2DE020800,TWand,OWX_10_F7DFDE020800,OWX_10_8FCCDE020800,TDecke)
2015.10.21 11:37:23 5: FRM:>f073010af7
2015.10.21 11:37:23 5: SW: f073010af7
[...]
2015.10.21 11:37:25 5: FRM:>f0732c0a104c32742d0002005213005800402ff7
2015.10.21 11:37:25 5: SW: f0732c0a104c32742d0002005213005800402ff7
2015.10.21 11:37:25 5: FRM:<f073430a0b00
2015.10.21 11:37:25 5: FRM:<68003049517f7f1d404007f7
2015.10.21 11:40:13 5: I2C_TSL2561_Poll: start
2015.10.21 11:40:13 5: I2C_TSL2561_Disable: start

2015.10.21 11:40:13 5: FRM:>f076390000010000f7
2015.10.21 11:40:13 5: SW: f076390000010000f7
2015.10.21 11:40:13 5: I2C_TSL2561_Disable: end
2015.10.21 11:40:13 5: I2C_TSL2561_GetLuminosity: calc state 0 acqui state 0
2015.10.21 11:40:13 5: I2C_TSL2561_GetLuminosity: starting new measurement
2015.10.21 11:40:13 5: I2C_TSL2561_Enable: start

2015.10.21 11:40:13 5: FRM:>f07639080a010100f7
2015.10.21 11:40:13 5: SW: f07639080a010100f7
2015.10.21 11:40:13 5: I2C_TSL2561_Enable: end
2015.10.21 11:40:13 5: I2C_TSL2561_Disable: start

2015.10.21 11:40:13 5: FRM:>f076390000010000f7
2015.10.21 11:40:13 5: SW: f076390000010000f7
2015.10.21 11:40:13 5: I2C_TSL2561_Disable: end
2015.10.21 11:40:13 5: I2C_TSL2561_GetLuminosity: calc state 3 acqui state 0
2015.10.21 11:40:13 5: I2C_TSL2561_GetLuminosity: error, aborting
2015.10.21 11:40:13 5: I2C_TSL2561_Poll: 300 s

2015.10.21 11:40:13 5: FRM:<f07739000a015000f7
2015.10.21 11:40:13 5: onI2CMessage address: '57', register: '138' data: [80]
2015.10.21 11:40:13 5: Lichtsensor RX register 10, 1 byte: 80
2015.10.21 11:40:13 5: I2C_TSL2561_I2CRcvID: sensorId TSL2561 Package T/FN/CL Rev. 0
2015.10.21 11:40:15 5: I2C_TSL2561_Poll: start
2015.10.21 11:40:15 5: I2C_TSL2561_Disable: start

2015.10.21 11:40:15 5: FRM:>f076390000010000f7
2015.10.21 11:40:15 5: SW: f076390000010000f7
2015.10.21 11:40:15 5: I2C_TSL2561_Disable: end
2015.10.21 11:40:15 5: I2C_TSL2561_GetLuminosity: calc state 0 acqui state 0
2015.10.21 11:40:15 5: I2C_TSL2561_GetLuminosity: starting new measurement
2015.10.21 11:40:15 5: I2C_TSL2561_Enable: start

2015.10.21 11:40:15 5: FRM:>f07639080a010100f7
2015.10.21 11:40:15 5: SW: f07639080a010100f7
2015.10.21 11:40:15 5: I2C_TSL2561_Enable: end
2015.10.21 11:40:15 5: I2C_TSL2561_Disable: start

2015.10.21 11:40:15 5: FRM:>f076390000010000f7
2015.10.21 11:40:15 5: SW: f076390000010000f7
2015.10.21 11:40:15 5: I2C_TSL2561_Disable: end
2015.10.21 11:40:15 5: I2C_TSL2561_GetLuminosity: calc state 3 acqui state 0
2015.10.21 11:40:15 5: I2C_TSL2561_GetLuminosity: error, aborting
2015.10.21 11:40:15 5: I2C_TSL2561_Poll: 300 s

2015.10.21 11:40:15 5: FRM:<f07739000a015000f7
2015.10.21 11:40:15 5: onI2CMessage address: '57', register: '138' data: [80]
2015.10.21 11:40:15 5: Lichtsensor RX register 10, 1 byte: 80
2015.10.21 11:40:15 5: I2C_TSL2561_I2CRcvID: sensorId TSL2561 Package T/FN/CL Rev. 0


Da liegt noch was mit der Kommunikation im Argen... Muss man wohl Schritt für Schritt debuggen.

Und so sollte es eigentlich aussehen (direkt am raspi I2C):
2015.10.21 14:35:35 5: I2C_TSL2561_Poll: start
2015.10.21 14:35:35 5: I2C_TSL2561_GetLuminosity: calc state 0 acqui state 0
2015.10.21 14:35:35 5: I2C_TSL2561_GetLuminosity: starting new measurement
2015.10.21 14:35:35 5: I2C_TSL2561_Enable: start
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cwrite|reg: 128|data: 3|i2caddress: 57
2015.10.21 14:35:35 5: PimoroniI2C: HWaccess I2CAddr: 0x39
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cwrite|reg: 128|data: 3|i2caddress: 57
2015.10.21 14:35:35 5: PimoroniI2C: HWaccess block schreiben, Reg: 0x80 Inh(dec):|3|, laenge: |2|
2015.10.21 14:35:35 5: PimoroniI2C ->Client gefunden: TSL2561, I2Caddress: 57 Data: 3
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cread|nbyte: 1|reg: 128|i2caddress: 57
2015.10.21 14:35:35 5: PimoroniI2C: HWaccess I2CAddr: 0x39
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cread|nbyte: 1|reg: 128|i2caddress: 57
2015.10.21 14:35:35 4: PimoroniI2C: HWaccess blockweise lesen setze Registerpointer auf 128
2015.10.21 14:35:35 5: PimoroniI2C ->Client gefunden: TSL2561, I2Caddress: 57 Gelesen: 3
2015.10.21 14:35:35 5: TSL2561 RX register 0, 1 byte: 3
2015.10.21 14:35:35 5: I2C_TSL2561_I2CRcvControl: is enabled
2015.10.21 14:35:35 5: I2C_TSL2561_Enable: end
2015.10.21 14:35:35 5: I2C_TSL2561_GetLuminosity: calc state 1 acqui state 1
2015.10.21 14:35:35 5: I2C_TSL2561_Poll: 0.403 s
2015.10.21 14:35:35 5: I2C_TSL2561_Poll: start
2015.10.21 14:35:35 5: I2C_TSL2561_GetLuminosity: calc state 1 acqui state 1
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cread|nbyte: 2|reg: 172|i2caddress: 57
2015.10.21 14:35:35 5: PimoroniI2C: HWaccess I2CAddr: 0x39
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cread|nbyte: 2|reg: 172|i2caddress: 57
2015.10.21 14:35:35 4: PimoroniI2C: HWaccess blockweise lesen setze Registerpointer auf 172
2015.10.21 14:35:35 5: PimoroniI2C ->Client gefunden: TSL2561, I2Caddress: 57 Gelesen: 220 6
2015.10.21 14:35:35 5: TSL2561 RX register 12, 2 byte: 220 6
2015.10.21 14:35:35 5: I2C_TSL2561_I2CRcvChan0 1756
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cread|nbyte: 2|reg: 174|i2caddress: 57
2015.10.21 14:35:35 5: PimoroniI2C: HWaccess I2CAddr: 0x39
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cread|nbyte: 2|reg: 174|i2caddress: 57
2015.10.21 14:35:35 4: PimoroniI2C: HWaccess blockweise lesen setze Registerpointer auf 174
2015.10.21 14:35:35 5: PimoroniI2C ->Client gefunden: TSL2561, I2Caddress: 57 Gelesen: 19 4
2015.10.21 14:35:35 5: TSL2561 RX register 14, 2 byte: 19 4
2015.10.21 14:35:35 5: I2C_TSL2561_I2CRcvChan1 1043
2015.10.21 14:35:35 5: I2C_TSL2561_Disable: start
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cwrite|reg: 128|data: 0|i2caddress: 57
2015.10.21 14:35:35 5: PimoroniI2C: HWaccess I2CAddr: 0x39
2015.10.21 14:35:35 5: PimoroniI2C: vom client empfangen|direction: i2cwrite|reg: 128|data: 0|i2caddress: 57
2015.10.21 14:35:35 5: PimoroniI2C: HWaccess block schreiben, Reg: 0x80 Inh(dec):|0|, laenge: |2|
2015.10.21 14:35:35 5: PimoroniI2C ->Client gefunden: TSL2561, I2Caddress: 57
2015.10.21 14:35:35 5: I2C_TSL2561_Disable: end
2015.10.21 14:35:35 5: I2C_TSL2561_GetLuminosity: calc state 2 acqui state 0
2015.10.21 14:35:35 5: I2C_TSL2561_Poll: 300 s

doesel

Hallo,
auch ich habe Probleme den TSL2561 über die Firmata zum laufen zu bringen. Im state des Moduls steht: I2C Error, im FRM: I2C: Too few bytes received.
Mit einem einfachen Sketch werden die Werte korrekt ausgelesen, daher kein Verdrahtungsfehler möglich. Tippe auf einen Fehler i.d. Firmata.
Gruß Doesel
(FHEM auf Cubietruck mit Igor-Image, 64GB SSD), seit März 19 FHEM auf NUC im Proxmox-Container, 240GB SSD, div. Homematic, Max Fensterkontakte, Onewire über Firmata und FHEM2FHEM auf Raspberrys, MySensors, Jeelink-Clone mit GSD-Modul, CUL, SDM220Modbus, Logo!8, WS980WiFi

klausw

Zitat von: thymjan am 21 Oktober 2015, 12:04:32
Habe bei mir den TSL2561 mit ConfigurableFirmata am Arduino nano (per Ethernet) und Arduino micro (per USB) getestet.
Die Autokonfiguration der Adresse funktioniert nicht, als Adresse wird 10 bzw. 0x0a angenommen.
Mein TSL2561 ist auf 0x39 bzw. 57 eingestellt.
[...]

Da liegt noch was mit der Kommunikation im Argen... Muss man wohl Schritt für Schritt debuggen.


wenn ich helfen kann gern

Was heißt denn Autokonfiguration?

Für den TSL liefert FRM seltsamerweise auch immer die gleichen Werte zurück.

Die Frage ist, worin der Unterschied zum BMP und SHT besteht. Die Kommunikation funktioniert dort schließlich und die Schnittstelle sollte kompatibel zum RPII2C sein.
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

thymjan

ZitatDefine

define TSL2561 I2C_TSL2561 [<I2C device>] <I2C address>

<I2C device> mandatory for HiPi, must be omitted if you connect via IODev
<I2C address> may be 0x29, 0x39 or 0x49 (and 'AUTO' when using IODev to search for device at startup and after an I2C error)

Examples:
        define TSL2561 I2C_TSL2561 /dev/i2c-0 0x39
        attr TSL2561 poll_interval 5
       
        define TSL2561 I2C_TSL2561 0x39
        attr TSL2561 IODev I2CModule
        attr TSL2561 poll_interval 5
       
        define TSL2561 I2C_TSL2561 AUTO
        attr TSL2561 IODev I2CModule
        attr TSL2561 poll_interval 5

Wenn ich als Adresse bei der Definition "AUTO" angebe, wird bei Anschluß des Moduls direkt am raspi die entsprechende richtige i2c Adresse gefunden. Über die Fimata kommt hier eine Fantasieadresse raus.

Naja, beim BMP180 hat's ja mit der Firmata auch nicht auf Anhieb geklappt. Hängt aber vermutlich ebenfalls nur an Kleinigkeiten.

klausw

Zitat von: thymjan am 09 November 2015, 16:35:57
Wenn ich als Adresse bei der Definition "AUTO" angebe, wird bei Anschluß des Moduls direkt am raspi die entsprechende richtige i2c Adresse gefunden. Über die Fimata kommt hier eine Fantasieadresse raus.
Verstehe, das liegt sicher daran, das überhaupt nix richtig ankommt, dann kann natürlich auch die Adresssuche nicht richtig funktionieren.
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

thymjan

Versuche seit 2 Tagen die knapp 1500 Zeilen Code zu verstehen...  :o

Mit der FRM als I/O-Device funktioniert die ganze Initialisierung nicht. Das Modul I2C_TSL2561 wird aufgerufen, bevor die Kommunikation mit dem Arduino richtig steht. Trotz Scheitern wird die Initialisierung aber nicht wiederholt ...