remove previous main

This commit is contained in:
2025-11-02 15:03:21 +00:00
parent b664df1c4d
commit 261e3dd27f

View File

@@ -1,238 +0,0 @@
import time
from pytevolve import Tevolve
import paho.mqtt.client as mqtt
import threading
import json
broker_address = "192.168.0.100"
def on_disconnect(client, userdata, rc):
client.connect(broker_address)
def on_connect(client, userdata, flags, rc):
try:
# client.username_pw_set("admin", "bK2F2ZPjyyngmsN6R32s")
# client.username_pw_set(username="admin", password ="bK2F2ZPjyyngmsN6R32s")
client.connect(broker_address)
except:
time.sleep(10)
client.connect(client)
def on_message(client, userdata, message):
new_topic = str(message.topic)
if new_topic == "hallway/heater/settemp":
tevolve.set_temperature("3", str(message.payload.decode("utf-8")))
# Assume set temp success (Prevent debounce)
client.publish("hallway/heater/currentsettemp", payload=str(message.payload.decode("utf-8")), qos=0, retain=False)
if new_topic == "hallway/heater/setmode":
if str(message.payload.decode("utf-8")) == "heat":
mode = "manual"
# client.publish("hallway/heater/idleaction", payload="heating", qos=0, retain=False)
client.publish("hallway/heater/currentmode", payload="heat", qos=0, retain=False)
else:
mode = "off"
client.publish("hallway/heater/currentmode", payload="off", qos=0, retain=False)
client.publish("hallway/heater/idleaction", payload="off", qos=0, retain=False)
if mode == "manual":
if float(Tevolve.hallway_current_temp) > float(Tevolve.hallway_set_temp):
client.publish("hallway/heater/idleaction", payload="idle", qos=0, retain=False)
else:
client.publish("hallway/heater/idleaction", payload="heating", qos=0, retain=False)
Tevolve.setmode = mode
tevolve.set_mode("3")
if new_topic == "livingroom/heater/settemp":
tevolve.set_temperature("2", str(message.payload.decode("utf-8")))
# Assume set temp success (Prevent debounce)
client.publish("livingroom/heater/currentsettemp", payload=str(message.payload.decode("utf-8")), qos=0,
retain=False)
if new_topic == "livingroom/heater/setmode":
# print(str(message.payload.decode("utf-8")))
if str(message.payload.decode("utf-8")) == "heat":
mode = "manual"
client.publish("livingroom/heater/idleaction", payload="heating", qos=0, retain=False)
client.publish("livingroom/heater/currentmode", payload="heat", qos=0, retain=False)
else:
mode = "off"
client.publish("livingroom/heater/currentmode", payload="off", qos=0, retain=False)
client.publish("livingroom/heater/idleaction", payload="off", qos=0, retain=False)
if mode == "manual":
if float(Tevolve.livingroom_current_temp) > float(Tevolve.livingroom_set_temp):
client.publish("livingroom/heater/idleaction", payload="idle", qos=0, retain=False)
else:
client.publish("livingroom/heater/idleaction", payload="heating", qos=0, retain=False)
Tevolve.setmode = mode
tevolve.set_mode("2")
if __name__ == '__main__':
tevolve = Tevolve()
tevolve.post_websocket()
time.sleep(1)
t = threading.Thread(target=tevolve.create_websocket, daemon=True, args=())
t.start()
client = mqtt.Client("ryan-heating")
# client.username_pw_set("admin", "bK2F2ZPjyyngmsN6R32s")
client.connect(broker_address)
client.on_message = on_message
client.on_disconnect = on_disconnect
client.loop_start()
client.subscribe("hallway/heater/settemp")
client.subscribe("hallway/heater/setmode")
client.subscribe("livingroom/heater/settemp")
client.subscribe("livingroom/heater/setmode")
livingroom_status = tevolve.get_status("2")
hallway_status = tevolve.get_status("3")
Tevolve.hallway_active = hallway_status["active"]
Tevolve.hallway_mode = hallway_status["mode"]
Tevolve.hallway_set_temp = hallway_status["stemp"]
Tevolve.hallway_current_temp = hallway_status["mtemp"]
# Tevolve.livingroom_active = livingroom_status["active"]
# Tevolve.livingroom_mode = livingroom_status["mode"]
# Tevolve.livingroom_set_temp = livingroom_status["stemp"]
# Tevolve.livingroom_current_temp = livingroom_status["mtemp"]
if Tevolve.livingroom_mode == "manual":
Tevolve.livingroom_mode = "heat"
if Tevolve.hallway_mode == "manual":
Tevolve.hallway_mode = "heat"
client.publish("hallway/heater/currenttemp", payload=Tevolve.hallway_current_temp, qos=0, retain=False)
client.publish("livingroom/heater/currenttemp", payload=Tevolve.livingroom_current_temp, qos=0, retain=False)
client.publish("hallway/heater/currentmode", payload=Tevolve.hallway_mode, qos=0, retain=False)
client.publish("livingroom/heater/currentmode", payload=Tevolve.livingroom_mode, qos=0, retain=False)
client.publish("hallway/heater/currentsettemp", payload=Tevolve.hallway_set_temp, qos=0, retain=False)
client.publish("livingroom/heater/currentsettemp", payload=Tevolve.livingroom_set_temp, qos=0, retain=False)
# Setup initial hallway heater values
if Tevolve.hallway_mode == "off":
client.publish("hallway/heater/setmode", payload="off", qos=0, retain=False)
# client.publish("hallway/heater/idleaction", payload="idle", qos=0, retain=False)
if Tevolve.hallway_mode == "manual":
if float(Tevolve.hallway_current_temp) >= float(Tevolve.hallway_set_temp):
client.publish("hallway/heater/idleaction", payload="idle", qos=0, retain=False)
if float(Tevolve.hallway_set_temp) > float(Tevolve.hallway_current_temp):
client.publish("hallway/heater/idleaction", payload="heating", qos=0, retain=False)
# Setup initial living room heater values
if Tevolve.livingroom_mode == "off":
client.publish("livingroom/heater/setmode", payload="off", qos=0, retain=False)
if Tevolve.livingroom_mode == "manual":
if float(Tevolve.livingroom_current_temp) >= float(Tevolve.livingroom_set_temp):
client.publish("livingroom/heater/idleaction", payload="idle", qos=0, retain=False)
if float(Tevolve.livingroom_set_temp) > float(Tevolve.livingroom_current_temp):
client.publish("livignroom/heater/idleaction", payload="heating", qos=0, retain=False)
while True:
if Tevolve.websocket_message != "":
if "/api/v2" in Tevolve.websocket_message:
print(Tevolve.websocket_message[30:-1])
m = json.loads(Tevolve.websocket_message[30:-1])
# print(m)
if m["path"] == "/htr/3/status":
Tevolve.hallway_active = m["body"]["active"]
Tevolve.hallway_mode = m["body"]["mode"]
Tevolve.hallway_set_temp = m["body"]["stemp"]
Tevolve.hallway_current_temp = m["body"]["mtemp"]
if Tevolve.hallway_mode == "off":
client.publish("hallway/heater/setmode", payload="off", qos=0, retain=False)
# client.publish("hallway/heater/idleaction", payload="idle", qos=0, retain=False)
if Tevolve.hallway_mode == "manual":
if float(Tevolve.hallway_set_temp) > float(Tevolve.hallway_current_temp):
client.publish("hallway/heater/idleaction", payload="heating", qos=0, retain=False)
client.publish("hallway/heater/currentmode", payload="heat", qos=0, retain=False)
if float(Tevolve.hallway_set_temp) <= float(Tevolve.hallway_current_temp):
client.publish("hallway/heater/idleaction", payload="idle", qos=0, retain=False)
client.publish("hallway/heater/currentmode", payload="heat", qos=0, retain=False)
client.publish("hallway/heater/currentsettemp", payload=m["body"]["stemp"], qos=0, retain=False)
# Publish hallway current temperature
client.publish("hallway/heater/currenttemp", payload=m["body"]["mtemp"], qos=0, retain=False)
if m["path"] == "/htr/2/status":
Tevolve.livingroom_active = m["body"]["active"]
Tevolve.livingroom_mode = m["body"]["mode"]
Tevolve.livingroom_set_temp = m["body"]["stemp"]
Tevolve.livingroom_current_temp = m["body"]["mtemp"]
if Tevolve.livingroom_mode == "off":
client.publish("livingroom/heater/setmode", payload="off", qos=0, retain=False)
if Tevolve.livingroom_mode == "manual":
if float(Tevolve.livingroom_set_temp) > float(Tevolve.livingroom_current_temp):
client.publish("livingroom/heater/idleaction", payload="heating", qos=0, retain=False)
client.publish("livingroom/heater/currentmode", payload="heat", qos=0, retain=False)
if float(Tevolve.livingroom_set_temp) <= float(Tevolve.livingroom_current_temp):
client.publish("livingroom/heater/idleaction", payload="idle", qos=0, retain=False)
client.publish("livingroom/heater/currentmode", payload="heat", qos=0, retain=False)
client.publish("livingroom/heater/currentsettemp", payload=m["body"]["stemp"], qos=0, retain=False)
# Publish hallway current temperature
client.publish("livingroom/heater/currenttemp", payload=m["body"]["mtemp"], qos=0, retain=False)
Tevolve.websocket_message = ""
time.sleep(1)