dogmaster/mqtt.py

46 lines
1.7 KiB
Python
Raw Normal View History

2025-09-11 15:21:03 +02:00
import random
2025-09-11 12:57:12 +02:00
import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, reason_code, properties):
print(f"Connected with result code {reason_code}")
# Subscribing in on_connect() means that if we lose the connection and
# reconnect then subscriptions will be renewed.
2025-09-11 13:54:49 +02:00
#client.subscribe("$SYS/#")
client.subscribe('test/topic')
2025-09-11 12:57:12 +02:00
client.subscribe('homeassistant/status')
2025-09-11 13:54:49 +02:00
publish.single('test/topic', 'Hello, MQTT!', hostname='192.168.188.30', auth={'username': 'mqtt', 'password': 'mqtt'})
2025-09-11 12:57:12 +02:00
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
2025-09-11 15:21:03 +02:00
if str(msg.payload) == "b'temperature'":
publish.single('homeassistant/sensor/temperature/state', str(random.randint(0, 30)), hostname='192.168.188.30', auth={'username': 'mqtt', 'password': 'mqtt'})
2025-09-11 12:57:12 +02:00
mqttc = mqtt.Client(protocol=mqtt.MQTTv5)
mqttc.username_pw_set('mqtt', 'mqtt')
mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.connect("192.168.188.30", 1883, 60)
publish.single('test/topic', 'Hello, MQTT!', hostname='192.168.188.30', auth={'username': 'mqtt', 'password': 'mqtt'})
publish.single('test/topic/temp', '2', hostname='192.168.188.30', auth={'username': 'mqtt', 'password': 'mqtt'})
2025-09-11 15:21:03 +02:00
'''
publish.single(
"homeassistant/sensor/temperature/state",
payload="23.5",
hostname="192.168.188.30",
auth={"username": "mqtt", "password": "mqtt"}
)
'''
2025-09-11 12:57:12 +02:00
# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
mqttc.loop_forever()