Compare commits
2 Commits
231d90ece5
...
8509f99483
Author | SHA1 | Date | |
---|---|---|---|
8509f99483 | |||
f23cb435d2 |
1
.env
1
.env
@@ -11,5 +11,6 @@ MQUSER=<USER OF THE MQTT BROKER>
|
|||||||
MQPWD=<PASSWORD OF THE MQTT BROKER>
|
MQPWD=<PASSWORD OF THE MQTT BROKER>
|
||||||
MQTOPIC_CUR=<TOPIC WHERE THE CURRENT STATUS SHALL BE WRITTEN TO>
|
MQTOPIC_CUR=<TOPIC WHERE THE CURRENT STATUS SHALL BE WRITTEN TO>
|
||||||
MQTOPIC_SUM=<TOPIC WHERE THE TOTAL STATUS SHALL BE WRITTEN TO>
|
MQTOPIC_SUM=<TOPIC WHERE THE TOTAL STATUS SHALL BE WRITTEN TO>
|
||||||
|
BLOCK_ZERO_READS=<BLOCK WRITING DATA TO MQTT WHEN THE FEEDIN or CONSUMPTION COUNTERS ARE READ AS 0 (HAPPENS WHEN THE READ HEAD IS TAKEN FROM THE SMARTMETER)>
|
||||||
PYTHONUNBUFFERED=1
|
PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/local/bin/python3
|
#!/usr/local/bin/python3
|
||||||
import sys
|
import sys
|
||||||
import serial
|
import serial
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
class bcolors:
|
class bcolors:
|
||||||
HEADER = '\033[95m'
|
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
|
"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
|
"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)
|
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
|
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)
|
print(bcolors.WARNING + f"No serial port specified, trying {port}" + bcolors.ENDC)
|
||||||
lge320 = LGE320(port)
|
lge320 = LGE320(port)
|
||||||
|
|
||||||
|
block_zero_reads = os.getenv('BLOCK_ZERO_READS', False)
|
||||||
|
|
||||||
## define the clients
|
## define the clients
|
||||||
def on_connect(client, userdata, flags, reason_code, properties):
|
def on_connect(client, userdata, flags, reason_code, properties):
|
||||||
@@ -123,8 +130,6 @@ if __name__ == "__main__": # if run from cli (not imported as a module)
|
|||||||
mqtt_client.connect(mq_broker, mq_port, 60)
|
mqtt_client.connect(mq_broker, mq_port, 60)
|
||||||
mqtt_client.loop_start()
|
mqtt_client.loop_start()
|
||||||
|
|
||||||
influx_client = InfluxDBClient(db_host, db_port, db_user, db_pwd, db_name)
|
|
||||||
|
|
||||||
## define the report functions (to be run in a thread)
|
## define the report functions (to be run in a thread)
|
||||||
def threaded_mqtt_report():
|
def threaded_mqtt_report():
|
||||||
last_data = data
|
last_data = data
|
||||||
@@ -172,6 +177,7 @@ if __name__ == "__main__": # if run from cli (not imported as a module)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
influx_client = InfluxDBClient(db_host, db_port, db_user, db_pwd, db_name)
|
||||||
influx_client.write_points(json_body)
|
influx_client.write_points(json_body)
|
||||||
print(f"{bcolors.OKBLUE}Written data to the {bcolors.BOLD}influx database.{bcolors.ENDC}")
|
print(f"{bcolors.OKBLUE}Written data to the {bcolors.BOLD}influx database.{bcolors.ENDC}")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user