import paho.mqtt.client as mqtt import socket hostname = socket.gethostname() # Paramètres MQTT mqtt_broker_ip_address = "10.0.0.3" mqtt_port = 1883 mqtt_username = "" mqtt_password = "" # Configuration des entités shutdown_entity = { "availability_topic": f"pilot/{hostname}/shutdown/available", "payload_not_available": "offline", } # battery_entity = { # "availability_topic": f"pilot/{hostname}/battery/available", # "payload_not_available": "offline", # } cpu_temperature_entity = { "availability_topic": f"pilot/{hostname}/cpu_temp/available", "payload_not_available": "offline", } gpu_temperature_entity = { "availability_topic": f"pilot/{hostname}/gpu_temp/available", "payload_not_available": "offline", } gpu_memory_entity = { "availability_topic": f"pilot/{hostname}/gpu_memory_usage/available", "payload_not_available": "offline", } memory_usage_entity = { "availability_topic": f"pilot/{hostname}/memory_used/available", "payload_not_available": "offline", } cpu_usage_entity = { "availability_topic": f"pilot/{hostname}/cpu_usage/available", "payload_not_available": "offline", } # Fonction pour publier l'état "unavailable" pour les entités def publish_unavailability(client): client.publish( shutdown_entity["availability_topic"], shutdown_entity["payload_not_available"], retain=True, ) # client.publish( # battery_entity["availability_topic"], # battery_entity["payload_not_available"], # retain=True, # ) client.publish( cpu_temperature_entity["availability_topic"], cpu_temperature_entity["payload_not_available"], retain=True, ) client.publish( gpu_temperature_entity["availability_topic"], gpu_temperature_entity["payload_not_available"], retain=True, ) client.publish( gpu_memory_entity["availability_topic"], gpu_memory_entity["payload_not_available"], retain=True, ) client.publish( cpu_usage_entity["availability_topic"], cpu_usage_entity["payload_not_available"], retain=True, ) client.publish( memory_usage_entity["availability_topic"], memory_usage_entity["payload_not_available"], retain=True, ) print("Published unavailability for all entities") # Fonction appelée lors de la connexion au broker MQTT def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected with result code {rc}") publish_unavailability(client) client.disconnect() # Déconnecter après la publication # Configuration et démarrage du client MQTT client = mqtt.Client() client.username_pw_set(mqtt_username, mqtt_password) client.on_connect = on_connect client.connect(mqtt_broker_ip_address, mqtt_port, 60) client.loop_forever()