diff --git a/.env b/.env index 38dc012..3d4bdae 100644 --- a/.env +++ b/.env @@ -11,5 +11,6 @@ MQUSER= MQPWD= MQTOPIC_CUR= MQTOPIC_SUM= +BLOCK_ZERO_READS= PYTHONUNBUFFERED=1 diff --git a/lge320reader.py b/lge320reader.py index da72efd..632d10c 100755 --- a/lge320reader.py +++ b/lge320reader.py @@ -1,6 +1,7 @@ #!/usr/local/bin/python3 import sys import serial +from time import sleep class bcolors: HEADER = '\033[95m' @@ -68,6 +69,11 @@ class LGE320: "T2": read_buffer[read_buffer.find(b'\x07\x01\x00\x02\x08\x00\xFF'):read_buffer.find(b'\x01\x77\x07\x01\x00\x10\x07\x00')], # 2.8.0 "P": read_buffer[read_buffer.find(b'\x07\x01\x00\x10\x07\x00\xFF'):read_buffer.find(b'\x01\x01\x01\x63')], # current power } + + if block_zero_reads and (float(energy_values["T1"]) == 0.0 or float(energy_values["T2"]) == 0.0): # zero reads may happen when the read head is taken from the meter + sleep(1) + return self.read() + return self._get_energy_value(energy_values) @@ -105,7 +111,8 @@ if __name__ == "__main__": # if run from cli (not imported as a module) port = "/dev/ttyUSB0" # default to /dev/ttyUSB0 if READER_PORT env var is not set, and print a warning print(bcolors.WARNING + f"No serial port specified, trying {port}" + bcolors.ENDC) lge320 = LGE320(port) - + + block_zero_reads = os.getenv('BLOCK_ZERO_READS', False) ## define the clients def on_connect(client, userdata, flags, reason_code, properties):