Hallo Dirk, Hallo Rudi,
wenn man gerade das define für den Drucksensor 51_I2C_BMP180 gemacht hat, der BMP180 aber noch nicht stabil über I2C zu erreichen ist, kann FHEM wegen unvollständig empfangener Kalibrierdaten beim Berechnen von Temperatur oder Druck wegen Division durch Null abstürzen (hier ist der BMP180 an einem Arduino mit Firmata über LAN angeschlossen gewesen):
2015.12.14 19:24:39 5: onI2CMessage address: '119', register: '246' data: [111,117,0]
Illegal division by zero at ./FHEM/51_I2C_BMP180.pm line 485
main::I2C_BMP180_calcTrueTemperature('HASH(0x34b0060)', 28533) called at ./FHEM/51_I2C_BMP180.pm line 342
main::I2C_BMP180_GetPress('HASH(0x34b0060)', '111 117 0') called at ./FHEM/51_I2C_BMP180.pm line 289
main::I2C_BMP180_I2CRec('HASH(0x34b0060)', 'HASH(0x3ae9bf0)') called at fhem.pl line 3110
main::CallFn('Luftdruck', 'I2CRecFn', 'HASH(0x34b0060)', 'HASH(0x3ae9bf0)') called at ./FHEM/10_FRM.pm line 704
main::FRM_i2c_update_device('HASH(0x34b0060)', 'HASH(0x3a61e78)') called at ./FHEM/10_FRM.pm line 471
main::FRM_forall_clients('HASH(0x34a8358)', 'CODE(0x35a9548)', 'HASH(0x3a61e78)') called at ./FHEM/10_FRM.pm line 697
main::FRM_i2c_observer('HASH(0x3a61e78)', 'HASH(0x34a8358)') called at FHEM/lib/Device/Firmata/Platform.pm line 325
Device::Firmata::Platform::sysex_handle('Device::Firmata::Platform=HASH(0x3a97b78)', 'HASH(0x3a97590)') called at FHEM/lib/Device/Firmata/Platform.pm line 211
Device::Firmata::Platform::messages_handle('Device::Firmata::Platform=HASH(0x3a97b78)', 'ARRAY(0x3ae9ab8)') called at FHEM/lib/Device/Firmata/Platform.pm line 848
Device::Firmata::Platform::poll('Device::Firmata::Platform=HASH(0x3a97b78)') called at ./FHEM/10_FRM.pm line 254
main::FRM_Read('HASH(0x2e8d788)') called at fhem.pl line 3110
main::CallFn('FRM:192.168.177.200:49153', 'ReadFn', 'HASH(0x2e8d788)') called at fhem.pl line 652
Der beiliegende Patch stellt sicher, dass vor allen Berechnungen erst auf das Vorhandensein des letzten Werts der Kalibrierdaten geprüft wird und ansonsten die Berechnung abgebrochen wird.
Gruß,
Jens
ZitatHallo Dirk, Hallo Rudi,
Sollte ich was unternehmen?
Soweit ich es sehe, ist nur Dirk betroffen.
Hallo Rudi,
wahrschrinlich nicht, aber die letzte Änderung am Modul hat klausw eingecheckt, deshalb bin ich mir unsicher, wer sich aktuell das Modul kümmert. Wenn du es nicht zufällig weißt, werde ich Dirk direkt ansprechen.
Danke für die Rückmeldung,
Jens
Zitat von: jensb am 19 Dezember 2015, 17:30:48
deshalb bin ich mir unsicher, wer sich aktuell das Modul kümmert. Wenn du es nicht zufällig weißt, werde ich Dirk direkt ansprechen.
Steht doch im Modul:
=head1 AUTHOR - Dirk Hoffmann
dirk@FHEM_Forum (forum.fhem.de)
modified for use with physical I2C devices by Klaus Wittstock (klausw)
=cut
Also Klaus.
Hallo,
bei weiteren Test habe ich festgestellt, dass es mit Firmata auch möglich ist, dass man vollständige aber ungültige Kalibrierdaten empfangen kann, die Nullen enthalten können.
Anbei die entsprechend erweiterte Version des ursprünglichen Patches inkl. zusätzlicher Doku für die Nutzung mit Firmata.
Grüße,
Jens