From f17410b685f6568513fb706ffed35ea75736ff48 Mon Sep 17 00:00:00 2001 From: Karol Bieniaszewski Date: Fri, 20 Jan 2017 09:48:24 +0100 Subject: [PATCH 1/3] Update onewire.py --- lib/onewire/onewire.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/onewire/onewire.py b/lib/onewire/onewire.py index 3b75f51..66ec714 100644 --- a/lib/onewire/onewire.py +++ b/lib/onewire/onewire.py @@ -213,6 +213,9 @@ def convert_temp(self, rom0, data): temp = 100 * temp_read - 25 + (count_per_c - count_remain) // count_per_c return temp elif rom0 == 0x28: - return (temp_msb << 8 | temp_lsb) * 100 // 16 + temp = (temp_msb << 8 | temp_lsb) * 100 // 16 + if (temp_msb & 0xf8) == 0xf8: # for negative temperature + temp -= 0x1000 + return temp else: assert False From ab88d7b264e749a5b6f3a56c0210ec6afa20d9fb Mon Sep 17 00:00:00 2001 From: Karol Bieniaszewski Date: Fri, 20 Jan 2017 09:55:47 +0100 Subject: [PATCH 2/3] Update onewire.py --- lib/onewire/onewire.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/lib/onewire/onewire.py b/lib/onewire/onewire.py index 66ec714..c02dc93 100644 --- a/lib/onewire/onewire.py +++ b/lib/onewire/onewire.py @@ -174,11 +174,14 @@ def start_convertion(self, rom=None): Pass the 8-byte bytes object with the ROM of the specific device you want to read. If only one DS18x20 device is attached to the bus you may omit the rom parameter. """ - rom = rom or self.roms[0] - ow = self.ow - ow.reset() - ow.select_rom(rom) - ow.write_byte(0x44) # Convert Temp + if (rom==None) and (self.length>0): + rom=self.roms[0] + if rom!=None: + rom = rom or self.roms[0] + ow = self.ow + ow.reset() + ow.select_rom(rom) + ow.write_byte(0x44) # Convert Temp def read_temp_async(self, rom=None): """ @@ -187,13 +190,17 @@ def read_temp_async(self, rom=None): """ if self.isbusy(): return None - rom = rom or self.roms[0] - ow = self.ow - ow.reset() - ow.select_rom(rom) - ow.write_byte(0xbe) # Read scratch - data = ow.read_bytes(9) - return self.convert_temp(rom[0], data) + if (rom==None) and (self.length>0): + rom=self.roms[0] + if rom==None: + return None + else: + ow = self.ow + ow.reset() + ow.select_rom(rom) + ow.write_byte(0xbe) # Read scratch + data = ow.read_bytes(9) + return self.convert_temp(rom[0], data) def convert_temp(self, rom0, data): """ From 134fb97cd98b823ef9787eb6e24a737934e6c13b Mon Sep 17 00:00:00 2001 From: Karol Bieniaszewski Date: Fri, 20 Jan 2017 09:58:52 +0100 Subject: [PATCH 3/3] Update onewire.py --- lib/onewire/onewire.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/onewire/onewire.py b/lib/onewire/onewire.py index c02dc93..eeadbd7 100644 --- a/lib/onewire/onewire.py +++ b/lib/onewire/onewire.py @@ -174,7 +174,7 @@ def start_convertion(self, rom=None): Pass the 8-byte bytes object with the ROM of the specific device you want to read. If only one DS18x20 device is attached to the bus you may omit the rom parameter. """ - if (rom==None) and (self.length>0): + if (rom==None) and (len(self.roms)>0): rom=self.roms[0] if rom!=None: rom = rom or self.roms[0] @@ -190,7 +190,7 @@ def read_temp_async(self, rom=None): """ if self.isbusy(): return None - if (rom==None) and (self.length>0): + if (rom==None) and (len(self.roms)>0): rom=self.roms[0] if rom==None: return None