[TEST] mqtt tests
This commit is contained in:
70
src/pe1modbus/mqtt.py
Normal file
70
src/pe1modbus/mqtt.py
Normal 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()
|
||||
#---------------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -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")
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user