added mqtt on message if requests for each topic

Signed-off-by: Ebbe Baß <ebbe@ping-mee.de>
master
Ebbe Baß 2022-07-01 22:26:11 +02:00
parent 3966b98201
commit aa27df6f57
1 changed files with 34 additions and 16 deletions

50
main.py
View File

@ -61,14 +61,11 @@ def setColor(strip, color, wait_ms=10):
def mqtt_on_connect(client, userdata, flags, rc):
#sub to status
client.subscribe("server-rack-led-1/power/status")
client.subscribe("server-rack-led-1/mode/status")
client.subscribe("server-rack-led-1/r/status")
client.subscribe("server-rack-led-1/g/status")
client.subscribe("server-rack-led-1/b/status")
def mqtt_on_message(client, userdata, msg):
print(f"Message received [{msg.topic}]: {msg.payload}")
client.subscribe("server-rack-led-1/power")
client.subscribe("server-rack-led-1/mode")
client.subscribe("server-rack-led-1/r")
client.subscribe("server-rack-led-1/g")
client.subscribe("server-rack-led-1/b")
if __name__ == '__main__':
@ -174,31 +171,52 @@ if __name__ == '__main__':
threading.Thread(target=lambda: app.run(host='0.0.0.0', port=80)).start()
mqttBroker ="homeassistant.ping-mee.local"
client = mqtt.Client("server-rack-led-1")
client = mqtt.Client("server_rack_led_1")
client.username_pw_set("mqtt", "pmMQTT_11!")
debug_print("Connecting to MQTT Broker "+str(mqttBroker))
client.connect(mqttBroker)
client.on_connect = mqtt_on_connect
def mqtt_on_message(client, userdata, msg):
print(f"Message received [{msg.topic}]: {msg.payload}")
if str(msg.topic) == "server-rack-led-1/power":
power = str(msg.payload)
elif str(msg.topic) == "server-rack-led-1/r":
r = str(msg.payload)
elif str(msg.topic) == "server-rack-led-1/g":
g = str(msg.payload)
elif str(msg.topic) == "server-rack-led-1/b":
b = str(msg.payload)
elif str(msg.topic) == "server-rack-led-1/mode":
if str(msg.payload) == "0":
mode = 0
elif str(msg.payload) == "1":
mode = 1
client.on_message = mqtt_on_message
threading.Thread(target=lambda: client.loop_forever())
try:
while True:
if power == "True":
client.publish("server-rack-led-1/power/status","True")
client.publish("server-rack-led-1/power","True")
if mode == 0:
client.publish("server-rack-led-1/mode/status","0")
client.publish("server-rack-led-1/mode","0")
rainbowCycle(strip)
elif mode == 1:
client.publish("server-rack-led-1/mode/status","1")
client.publish("server-rack-led-1/r/status",str(r))
client.publish("server-rack-led-1/g/status",str(g))
client.publish("server-rack-led-1/b/status",str(b))
client.publish("server-rack-led-1/mode","1")
client.publish("server-rack-led-1/r",str(r))
client.publish("server-rack-led-1/g",str(g))
client.publish("server-rack-led-1/b",str(b))
setColor(strip, Color(int(r), int(g), int(b)))
time.sleep(1)
else:
client.publish("server-rack-led-1/power/status","False")
client.publish("server-rack-led-1/power","False")
setColor(strip, Color(0,0,0))
time.sleep(1)
except KeyboardInterrupt: