FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: jensb am 19 Dezember 2015, 13:00:23

Titel: [PATCH] 51_I2C_BMP180.pm verursacht Absturz bei unvollständigen Kalibrierdaten
Beitrag von: jensb am 19 Dezember 2015, 13:00:23
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
Titel: Antw:[PATCH] 51_I2C_BMP180.pm verursacht Absturz bei unvollständigen Kalibrierdaten
Beitrag von: rudolfkoenig am 19 Dezember 2015, 16:27:49
ZitatHallo Dirk, Hallo Rudi,
Sollte ich was unternehmen?
Soweit ich es sehe, ist nur Dirk betroffen.
Titel: Antw:[PATCH] 51_I2C_BMP180.pm verursacht Absturz bei unvollständigen Kalibrierdaten
Beitrag von: jensb am 19 Dezember 2015, 17:30:48
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
Titel: Antw:[PATCH] 51_I2C_BMP180.pm verursacht Absturz bei unvollständigen Kalibrierdaten
Beitrag von: betateilchen am 19 Dezember 2015, 17:35:02
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.
Titel: Antw:[PATCH] 51_I2C_BMP180.pm verursacht Absturz bei unvollständigen Kalibrierdaten
Beitrag von: jensb am 08 Januar 2016, 19:54:51
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