60 lines
2.2 KiB
Python
60 lines
2.2 KiB
Python
# Importeer de paho.mqtt.client module die MQTT-client functionaliteiten biedt.
|
|
import paho.mqtt.client as mqtt
|
|
|
|
def create_client(client_id, on_connect, on_message, broker="localhost", port=1883):
|
|
"""
|
|
Creëert en configureert een MQTT-client.
|
|
|
|
Deze functie initialiseert een MQTT-client met een unieke client_id,
|
|
definieert callback functies voor connect- en message-events, en
|
|
maakt vervolgens verbinding met de MQTT-broker.
|
|
|
|
Parameters:
|
|
client_id (str): Een unieke identifier voor de MQTT-client.
|
|
on_connect (function): Callback functie die wordt aangeroepen
|
|
wanneer de client verbinding maakt met de broker.
|
|
on_message (function): Callback functie die wordt aangeroepen
|
|
wanneer een bericht wordt ontvangen.
|
|
broker (str, optional): Het adres van de MQTT-broker.
|
|
Standaard is dit "localhost".
|
|
port (int, optional): De poort waarop de MQTT-broker luistert.
|
|
Standaard is dit 1883.
|
|
|
|
Returns:
|
|
mqtt.Client: Een geconfigureerde MQTT-clientobject.
|
|
"""
|
|
# Initialiseert een MQTT-client met de opgegeven client_id.
|
|
client = mqtt.Client(client_id)
|
|
|
|
# Stelt de callback functies in voor connect- en message-events.
|
|
client.on_connect = on_connect
|
|
client.on_message = on_message
|
|
|
|
# Maakt verbinding met de opgegeven MQTT-broker en poort.
|
|
client.connect(broker, port, 60) # De keepalive is ingesteld op 60 seconden.
|
|
|
|
# Retourneert het geïnitialiseerde en geconfigureerde client-object.
|
|
return client
|
|
|
|
def start_loop(client):
|
|
"""
|
|
Start de netwerkloop van de MQTT-client.
|
|
|
|
Deze functie start de oneindige loop van de client, waardoor deze
|
|
continu luistert naar berichten van de broker. De loop wordt onderbroken
|
|
bij het ontvangen van een KeyboardInterrupt (Ctrl+C).
|
|
|
|
Parameters:
|
|
client (mqtt.Client): De MQTT-client die de loop zal uitvoeren.
|
|
|
|
Returns:
|
|
None
|
|
"""
|
|
try:
|
|
# Start de oneindige loop die berichten verwerkt.
|
|
client.loop_forever()
|
|
except KeyboardInterrupt:
|
|
# Print een bericht en maakt de verbinding met de broker los
|
|
# als de gebruiker de loop onderbreekt.
|
|
print("Disconnecting from broker")
|