(Python & MQTT)
Grundlagen
Jeder Kunde kann über MQTT auf die Daten der ihm zugewiesenen Sensoren zugreifen. Bitte teilen Sie uns mit, ob Sie auf Ihre Daten über MQTT zugreifen möchten!
Für den MQTT-Broker gelten die folgenden Daten:
- mqtts://data.sentinum.de:8883 für gesicherten (empfohlen), mqtt://data.sentinum.de:1883 für ungesicherten Verkehr.
- Jeder Client muss sich mit einem Benutzernamen und einem Passwort authentifizieren. Diese werden von Sentinum auf Anfrage vergeben und sind unabhängig von den my.sentinum. de-Benutzerkonten. Falls eine Authentifizierung mit privatem Schlüssel gewünscht wird, kann dies angefordert werden.
- QoS = 0, bis zu QoS = 2 sind erlaubt
- Benutzername und Passwort oder Schlüssel können für mehrere Clients verwendet werden. Allerdings sollte für jeden Mandanten eine eindeutige ClientID verwendet werden.
- Es gibt zwei Möglichkeiten, auf Ihre Daten zuzugreifen (Python, Node Red)
Telemetriedaten
Telemetriedaten werden nach den folgenden Themenschemata veröffentlicht:
devices/<customerTransformedName>/<deviceBaseType>/<deviceType>/<deviceId>/up
- customerTransformedName: entspricht den MQTT-Benutzernamen.
- deviceBaseType: Basisgerätetyp. Dieser Typ stellt den Produktnamen dar, z. B. "apollon", "febris" oder "neptun".
- deviceType: Gerätetyp. Dieser Typ umfasst spezifische Untervarianten von Sensoren. Bei den meisten Sensoren spiegelt deviceType den deviceBaseType wider. Im Allgemeinen empfehlen wir hier die Verwendung des Platzhalters "+" im Thema
- deviceId: Eindeutige Gerätekennung. Normalerweise eine Kombination aus Gerätetyp und EUI (z.B. IMEI für Cellular, Dev.-EUI für LoRaWAN/MIOTY).
devices/musterfirma/febris/+/+/up
devices/musterfirma/apollon/+/+/up
Abonnement für alle Sensoren (z. B. febris + apollon)
devices/musterfirma/+/+/+/up or devices/musterfirma/#
Python-Skript
Der einfachste Zugang zu Ihren Daten ist die Verwendung eines Python-Skripts.
Im Beispielcode verwenden wir Paho MQTT, das Sie mit
pip install paho-mqtt
Im folgenden Beispielcode müssen Sie den Benutzernamen und das Passwort eingeben, die Sie von uns erhalten.
Wahlweise: Sie können das Thema angeben .
import paho.mqtt.client as mqtt
import ssl
# MQTT broker address and port
broker_address = "data.sentinum.de"
broker_port = 8883
# MQTT credentials
username = "" # we will provide you with the information
password = "" # we will provide you with the information
# MQTT topic to subscribe to
topic = "devices/" + username + "/#"
# TOPIC EXAMPLES
# topic = devices/USERNAME/febris/+/+/up
# topic = devices/USERNAME/apollon/+/+/up
# MQTT topic to publish to (if required)
publish_topic = "my/publish/topic"
# QoS level to use when subscribing and publishing
# QoS 0 (at most once): The message will be delivered at most once, and the broker will not send any confirmation that the message has been received.
# QoS 1 (at least once): The message will be delivered at least once, and the broker will send a confirmation when the message has been received.
# QoS 2 (exactly once): The message will be delivered exactly once, and the broker will send a confirmation when the message has been received and processed.
# ONLY 0 AND 2 ARE ACCEPTABLE
qos_level = 0
#--------------------------------------------------------------------------------#
#-------------------------------- CHANGE AT YOUR --------------------------------#
#---------------------------------- OWN RISK! -----------------------------------#
#--------------------------------------------------------------------------------#
# Path to the client certificate and key files (if required)
cert_file = None
key_file = None
# Create an SSL context and load the client certificate and key files (if required)
ssl_context = ssl.create_default_context()
if cert_file is not None and key_file is not None:
ssl_context.load_cert_chain(cert_file, key_file)
receivedMessage = ""
# Callback function that will be called when a new message is received
def on_message(client, userdata, message):
receivedMessage = str(message.payload.decode())
print("Received message: " + receivedMessage)
# Create a new MQTT client instance
client = mqtt.Client()
# Set the username and password (if required)
if username is not None and password is not None:
client.username_pw_set(username, password)
# Set the callback function for new messages
client.on_message = on_message
# Set the SSL context for secure connection
client.tls_set_context(context=ssl_context)
# Connect to the MQTT broker
client.connect(broker_address, broker_port)
# Subscribe to the topic
client.subscribe(topic, qos=qos_level)
# Publish a message to the topic with QoS 1
client.publish(publish_topic, receivedMessage, qos=qos_level)
# Start the MQTT client loop to listen for new messages
client.loop_forever()
Node-RED
Wählen Sie den Knoten "mqtt in" und verbinden Sie ihn mit einem "Debug" -Knoten
MQTT IN-Knoten Konfiguration
Server-Konfiguration
Konfiguration für TLS mit öffentlichem Zertifikat
Sie können die eingehenden Nachrichten im Debug-Bereich auf der rechten Seite sehen
Das Feld "deviceId" gibt Aufschluss darüber, welcher Sensor die Nachricht gesendet hat. Ein Beispiel: apollon_lora_FCA84A0123456789 oder neptun_cellular_123123123123
Anmerkungen
- Derzeit werden nur Telemetriedaten zugänglich gemacht. Falls eine Downlink-Konfiguration der Sensoren erforderlich ist, kann diese von Sentinum vorgenommen werden.
- Eine umfassende API mit Gerätemanagement und -konfiguration ist derzeit in Arbeit und wird den Kunden unmittelbar nach Fertigstellung zur Verfügung gestellt.