<<< Previous topic - Next topic >>> |
|
Author |
Message |
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 04.09.2014, 15:38 Post subject: MQTT … |
|
|
Hallo Forum.
Wir portieren gerade einen MQTT-Client in das Linux-Betriebssystem des eSOM/3517. In Zukunft gehört MQTT dann zum Standardlieferumfang eines eSOM/3517.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 12.09.2014, 15:30 Post subject: Paho-Client … |
|
|
Hallo Forum.
Wir können inzwischen den MQTT-Python-Client aus dem Eclipse-Paho-Projekt für das IGW/935 zur Verfügung stellen. Siehe https://pypi.python.org/pypi/paho-mqtt
Der Client ist sehr einfach zu handhaben. Ein MQTT-Publish lässt sich z. B. mit zwei Codezeilen erzeugen.
Code: | import paho.mqtt.publish as publish
publish.single("temp/random", "10.5", hostname="test.mosquitto.org") |
Das Ergebnis dieses MQTT-Publish mit dem Topic temp/random an den Broker test.mosquitto.org kann man sehr eindrucksvoll über http://test.mosquitto.org/gauge/ visualisieren.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 13.09.2014, 07:32 Post subject: Installation … |
|
|
Hallo Forum.
Der MQTT-Client steht als Datei mit dem Namen igw935_python-paho.tgz zur Verfügung.
1. Übertragen Sie die Datei per FTP in das Verzeichnis /tmp des IGW/935
2. Verzweigen Sie in einer Konsolen-Sitzung per cd / in das root-Verzeichnis.
3. Führen Sie dann den Befehl tar –xzf /tmp/igw935_python-paho.tgz aus.
Das ist schon alles. Sie können den Client nun per Python benutzen.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 13.09.2014, 08:20 Post subject: Hilfreiche Werkzeuge … |
|
|
Hallo Forum.
Zu dem MQTT-Broker mosquitto gehören mit mosquitto_pub und mosquitto_sub auch zwei sehr hilfreiche Kommandozeilenwerkzeuge. Für Entwickler, die mit dem eSOM/3517-MQTT-Client Anwendungen entwickeln wollen, ist es ratsam, zumindest mosquitto_sub auf dem eigenen PC zu installieren (Downloads unter http://mosquitto.org/download/).
Hierzu ein Beispiel: Führen Sie auf dem PC den Client als Subscriber aus:
Code: | mosquitto_sub -h test.mosquitto.org -t hello/world |
Führen Sie dann auf dem eSOM/3517 die beiden folgenden Zeilen Python-Code aus:
Code: | import paho.mqtt.publish as publish
publish.single("hello/world", "Hello!", hostname="test.mosquitto.org") |
Die zweite Zeile können Sie im Python-Kommandozeileninterpreter beliebig oft mit einer anderen Message wiederholen.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 14.09.2014, 17:07 Post subject: HTTP-to-MQTT Gateway … |
|
|
Hallo Forum.
Gerade in der industriellen Automatisierung wird es wohl Jahre dauern, bis die meisten netzwerkfähigen Produkte eine direkte MQTT-Unterstützung bieten werden.
Das folgende Beispiel bildet ein HTTP-to-MQTT-Gateway. Es erwartet einen HTTP-GET-Request mit einem Query-String der Form „temp=value“. Mit Hilfe dieses Gateways können Systeme, die zumindest einen Sensorwert als HTTP-Request verschicken können, in MQTT-basierte Anwendungen integriert werden.
Code: | import urlparse
from BaseHTTPServer import BaseHTTPRequestHandler
import paho.mqtt.publish as publish
def tempHandler(value):
print 'temp = ' + value
publish.single("temp/random", value, hostname="test.mosquitto.org")
class MyHandler(BaseHTTPRequestHandler):
def do_GET(s):
parsed_path = urlparse.urlparse(s.path)
querystr = parsed_path.query.split('=')
if querystr[0] == 'temp' and len(querystr) == 2:
s.send_response(200)
tempHandler(querystr[1])
else:
s.send_response(400)
s.end_headers()
if __name__ == '__main__':
from BaseHTTPServer import HTTPServer
server = HTTPServer(('', 8080), MyHandler)
print 'Starting server, use <Ctrl-C> to stop'
server.serve_forever()
|
Bringen Sie den Code auf dem eSOM/3517 zur Ausführung. Adressieren Sie mit Ihrem PC-Webbrowser den URI http://test.mosquitto.org/gauge/ und beobachten Sie das virtuelle Instrument.
Rufen Sie auf Ihrem PC cURL auf und schicken Sie einen HTTP-Request an den HTTP-to-MQTT-Gateway. Z. B.:
Code: | curl –v http://192.168.2.161:8080/?temp=31.45 |
Dabei ist “192.168.2.161” die IP-Adresse des eSOM/3517.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 25.09.2014, 15:43 Post subject: MQTT direkt aufs Smartphone! |
|
|
MQTT direkt aufs Smartphone!
Hallo Forum.
Sie können den Temperaturwert aus dem zuvor beschriebenen Beispiel per Internet auch direkt auf ein Android-Smartphone senden. Ändern Sie die folgende Zeile
Code: | publish.single("temp/random", value, hostname="test.mosquitto.org") |
in
Code: | publish.single("temp/random1", value, hostname="test.mosquitto.org") |
Installieren Sie auf Ihrem Android-Smartphone aus dem Google Play Store die kostenlose App MyMQTT.
Konfigurieren Sie die App für den Server test.mosquitto.org und den Topic temp/random1. Beobachten Sie dann das Dashboard. Das ist schon alles.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 26.09.2014, 15:50 Post subject: Letzter Wert geht verloren … |
|
|
Hallo Forum.
Wenn man das zuvor beschriebene Beispiel mit der Android-App benutzt, fällt auf, dass der Wert aus dem letzten Publish für den Subscriber verloren ist, wenn er zum Message-Versendezeitpunkt nicht aktiv war (z. B. Smartphone ausgeschaltet).
So etwas lässt sich mit dem MQTT-Retain-Flag verhindern.
Ändern Sie einfach die folgende Zeile:
Code: | publish.single("temp/random1", value, hostname="test.mosquitto.org") |
in
Code: | publish.single("temp/random1", value, retain=True, hostname="test.mosquitto.org") |
Nun erhält ein Subscriber sofort nach jedem Verbindungsaufbau den letzten Wert vom Broker.
Gruß KDW |
|
Back to top |
|
|
kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 08.01.2016, 11:50 Post subject: MQTT per Node-Red … |
|
|
Hallo Forum.
MQTT lässt sich mit dem eSOM/3517 auch über die Node.js/Node-Red-Laufzeitumgebung nutzen. Man muss dann nichts mehr programmieren, sondern nur noch per Webbrowser konfigurieren.
Erstellen Sie für einen ersten Test in der Node-Red-Weboberfläche des eSOM/3517 den folgenden Flow:
Konfigurieren Sie den Inject Node auf der linken Seite wie folgt:
Konfigurieren Sie dann den MQTT Out Node auf der rechten Seite mit Parametern wie in beiden folgenden Bildern:
Bringen Sie dann den gesamten Flow zur Ausführung und prüfen, ob sich der MQTT Out Node mit dem MQTT-Broker im Internet verbinden kann (grüner Punkt mit Text „connect“ unter dem MQTT Out Node-Symbol).
Für einen Test starten Sie nun bitte auf einem PC einfach einen MQTT-Client als Subscriber. Z.B. per Kommandozeile:
Code: | mosquitto_sub -h test.mosquitto.org -t hello/world |
Klicken Sie in der eSOM/3517-Node-Red-Weboberfläche auf Schaltfläche des Inject Node. Dadurch wird der Text „Hello KDW“ an den MQTT-Broker geschickt. Dieser muss vom Kommandozeilen-Subscriber empfangen werden.
Gruß KDW |
|
Back to top |
|
|
|