From ac28344106a5ebdfbecebfa60f54fe37ad60b454 Mon Sep 17 00:00:00 2001 From: smokyflex Date: Mon, 24 Jul 2023 12:57:32 +0200 Subject: [PATCH] [TEST] mqtt tests --- src/pe1modbus/mqtt.py | 70 +++++++++++++++++++++++++++++++++++++++ src/pe1modbus/register.py | 6 ++-- src/pe1modbus/test.py | 7 ++-- 3 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 src/pe1modbus/mqtt.py diff --git a/src/pe1modbus/mqtt.py b/src/pe1modbus/mqtt.py new file mode 100644 index 0000000..8b446ae --- /dev/null +++ b/src/pe1modbus/mqtt.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +from struct import * +from datetime import datetime +import time +import subprocess +import paho.mqtt.client as mqtt + +#mqtt_username = "smoky" +#mqtt_password = "smoky" +mqtt_host = "192.168.0.99" +mqtt_port = 1883 + +#****************************************** +# Callback function when the client successfully connects to the MQTT broker +def on_connect(client, userdata, flags, rc): + print("Connected with result code " + str(rc)) + + while True: + item1 = 1000 + item2 = 2000 + + # Publish config?? + config_payload = { + "name": "Power Use General", + "state_topic": "homeassistant/sensor/house/power_use1/state", + "state_class": "measurement", + "unit_of_measurement": "kWh", + "device_class": "energy", + "value_template": "{{ value }}", + "unique_id": "power_use", + "device": { + "identifiers": [ + "thesensor" + ], + "name": "Power Use Sensors", + "model": "None", + "manufacturer": "None" + }, + "icon": "mdi:home-lightning-bolt-outline", + "platform": "mqtt" + } + #client.publish(topic="homeassistant/sensor/house/power_use1/config", payload=str(config_payload), qos=2, retain=False) + + # Publish State1 + topic1 = "homeassistant/sensor/house/power_use1/state" + client.publish(topic=topic1, payload=str(item1), qos=2, retain=False) + + # Publish State2 + #topic2 = "homeassistant/sensor/house/power_use2/state" + #client.publish(topic=topic2, payload=str(item2), qos=2, retain=False) + + + #print("Published '{0}' to '{1}' Published '{2}' to '{3}'".format(str(item1), topic1, str(item2), topic2)) + print("PAck sent") + time.sleep(2) +#****************************************** + +#------------------------------------------------------------------------------------------------------- +# main function +def main(): + client = mqtt.Client() + #client.username_pw_set(mqtt_username, mqtt_password) + client.on_connect = on_connect + client.connect(mqtt_host, mqtt_port) + client.loop_forever() + +#--------------------------------------------------------------------------------------------------------------------------------- +if __name__=="__main__": + main() +#--------------------------------------------------------------------------------------------------------------------------------- diff --git a/src/pe1modbus/register.py b/src/pe1modbus/register.py index 7b84b3d..118af28 100644 --- a/src/pe1modbus/register.py +++ b/src/pe1modbus/register.py @@ -2,13 +2,13 @@ from enum import Enum class InputRegisters(Enum): # adr offset scale dec unit name desc - PE1_TEMPERATURE = (30001, 30001, 2, 0, "°C", "PE1_TEMPERATURE", "Kesseltemperatur") + HEATER_TEMPERATURE = (30001, 30001, 2, 0, "°C", "HEATER_TEMPERATURE", "Kesseltemperatur") SENSOR_1 = (30008, 30001, 2, 0, "°C", "SENSOR_1", "Fühler 1") RETURN_FLOW_SENSOR = (30010, 30001, 2, 0, "°C", "RETURN_FLOW_SENSOR", "Fühler 1") OPERATING_HOURS = (30021, 30001, 1, 0, "h", "OPERATING_HOURS", "Betriebsstunden") FILL_LEVEL_PELLETS_CONTAINER = (30022, 30001, 201, 1, "%", "FILL_LEVEL_PELLETS_CONTAINER", "Füllstand im Pelletsbehälter") - BOILER_STARTS_COUNT = (30023, 30001, 1, 0, "#", "BOILER_STARTS_COUNT", "Anzahl der Brennerstarts") - CALCULATED_BOILER_TARGET_TEMPERATURE = (30028, 30001, 1, 0, "h", "CALCULATED_BOILER_TARGET_TEMPERATURE", "Errechnete Kesselsolltemperatur") + HEATER_STARTS_COUNT = (30023, 30001, 1, 0, "#", "HEATER_STARTS_COUNT", "Anzahl der Brennerstarts") + CALCULATED_HEATER_TARGET_TEMPERATURE = (30028, 30001, 2, 0, "°C", "CALCULATED_HEATER_TARGET_TEMPERATURE", "Errechnete Kesselsolltemperatur") RETURN_FLOW_CONTROL = (30037, 30001, 1, 0, "%", "RETURN_FLOW_CONTROL", "Rücklaufpumpen Ansteuerung") HOURS_SINCE_LAST_MAINTENANCE = (30056, 30001, 1, 0, "h", "HOURS_SINCE_LAST_MAINTENANCE", "Stunden seit letzter Wartung") HOURS_OF_PELLETS_OPERATION = (30063, 30001, 1, 0, "h", "HOURS_OF_PELLETS_OPERATION", "Stunden im Pelletsbetrieb") diff --git a/src/pe1modbus/test.py b/src/pe1modbus/test.py index 195168f..4ac84ef 100644 --- a/src/pe1modbus/test.py +++ b/src/pe1modbus/test.py @@ -22,9 +22,12 @@ status = client.open() if status: - register_response: RegisterResponse = client.get_register_value(InputRegisters.BUFFER_TEMPERATURE_BOTTOM) + for ir in InputRegisters: + + #print(ir.value) + register_response: RegisterResponse = client.get_register_value(ir) - print(vars(register_response)) + print(f"{register_response.name}: {register_response.value} {register_response.unit}") client.close()