configure heater
This commit is contained in:
parent
ca4e2b8c58
commit
dc1a70d94f
1 changed files with 61 additions and 13 deletions
66
mqtt/main.py
66
mqtt/main.py
|
@ -1,30 +1,78 @@
|
||||||
|
import time
|
||||||
import paho.mqtt.client as mqtt
|
import paho.mqtt.client as mqtt
|
||||||
|
import json
|
||||||
|
import threading
|
||||||
|
|
||||||
|
# initial scene
|
||||||
|
scene = "default"
|
||||||
|
|
||||||
|
|
||||||
# The callback for when the client receives a CONNACK response from the server.
|
# The callback for when the client receives a CONNACK response from the server.
|
||||||
def on_connect(client, userdata, flags, rc):
|
def on_connect(client, _userdata, _flags, rc):
|
||||||
print("Connected with result code " + str(rc))
|
print("Connected with result code " + str(rc))
|
||||||
|
|
||||||
|
threading.Thread(target=loop_thread, args=(client,), daemon=True).start()
|
||||||
|
|
||||||
# Subscribing in on_connect() means that if we lose the connection and
|
# Subscribing in on_connect() means that if we lose the connection and
|
||||||
# reconnect then subscriptions will be renewed.
|
# reconnect then subscriptions will be renewed.
|
||||||
client.subscribe("control/lights/set")
|
client.subscribe("control/lights/set")
|
||||||
|
|
||||||
|
|
||||||
# The callback for when a PUBLISH message is received from the server.
|
# The callback for when a PUBLISH message is received from the server.
|
||||||
def on_message(client, userdata, msg):
|
def on_message(client, _userdata, msg):
|
||||||
print(msg.topic + " " + str(msg.payload))
|
global scene
|
||||||
|
(topic, payload) = parse_message(msg)
|
||||||
|
print("set scene %s -> %s" % (scene, payload['scene']))
|
||||||
|
scene = payload['scene']
|
||||||
|
publish_heater_depending_on_scene(client)
|
||||||
|
# print(topic + " " + payload['scene'])
|
||||||
|
|
||||||
|
|
||||||
client = mqtt.Client()
|
def parse_message(msg):
|
||||||
client.on_connect = on_connect
|
m_decode = str(msg.payload.decode("utf-8", "ignore"))
|
||||||
client.on_message = on_message
|
payload = json.loads(m_decode) # decode json data
|
||||||
client.username_pw_set("homeassistant", password="password")
|
return msg.topic, payload
|
||||||
|
|
||||||
client.connect("pepe.private", 1883, 60)
|
|
||||||
|
|
||||||
|
mqttClient = mqtt.Client()
|
||||||
|
mqttClient.on_connect = on_connect
|
||||||
|
mqttClient.on_message = on_message
|
||||||
|
mqttClient.username_pw_set("homeassistant", password="password")
|
||||||
|
|
||||||
|
mqttClient.connect("pepe.private", 1883, 60)
|
||||||
|
|
||||||
|
|
||||||
|
def publish_heater(client, temperature=10):
|
||||||
|
payload = {
|
||||||
|
"system_mode": "auto",
|
||||||
|
"current_heating_setpoint": str(temperature),
|
||||||
|
"eurotronic_host_flags": {"window_open": True}
|
||||||
|
}
|
||||||
|
client.publish("zigbee2mqtt/heater1/set", json.dumps(payload))
|
||||||
|
client.publish("zigbee2mqtt/heater2/set", json.dumps(payload))
|
||||||
|
client.publish("zigbee2mqtt/heater3/set", json.dumps(payload))
|
||||||
|
|
||||||
|
|
||||||
|
def publish_heater_depending_on_scene(client):
|
||||||
|
if scene == "night":
|
||||||
|
publish_heater(client, 10)
|
||||||
|
elif scene == "default":
|
||||||
|
publish_heater(client, 26)
|
||||||
|
elif scene == "outside":
|
||||||
|
publish_heater(client, 8)
|
||||||
|
else:
|
||||||
|
publish_heater(client, 8)
|
||||||
|
|
||||||
|
|
||||||
|
def loop_thread(client):
|
||||||
|
while True:
|
||||||
|
publish_heater_depending_on_scene(client)
|
||||||
|
time.sleep(300)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
# Blocking call that processes network traffic, dispatches callbacks and
|
# Blocking call that processes network traffic, dispatches callbacks and
|
||||||
# handles reconnecting.
|
# handles reconnecting.
|
||||||
# Other loop*() functions are available that give a threaded interface and a
|
# Other loop*() functions are available that give a threaded interface and a
|
||||||
# manual interface.
|
# manual interface.
|
||||||
client.loop_forever()
|
mqttClient.loop_forever()
|
||||||
|
|
Loading…
Reference in a new issue