[TEST] mqtt tests

This commit is contained in:
smokyflex
2023-07-24 12:57:32 +02:00
parent 6f76dd58b6
commit ac28344106
3 changed files with 78 additions and 5 deletions

70
src/pe1modbus/mqtt.py Normal file
View File

@@ -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()
#---------------------------------------------------------------------------------------------------------------------------------

View File

@@ -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")

View File

@@ -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()