TOP
SSV Software Systems Register  Register
Log in to check your private messages  Log in to check your private messages
Startseite FAQ Search Mitglieder Profile  Log in 
SSV Support-Forum
MQTT …

 
Post new topic   Reply to topic    SSV-Forum Forum Index >>> IGW/935
<<< Previous topic - Next topic >>>  
Display posts from previous:   
Author Message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 04.09.2014, 15:36    Post subject: MQTT … Reply with quote

Hallo Forum.

Wir portieren gerade einen MQTT-Client in das Linux-Betriebssystem des IGW/935. In Zukunft gehört MQTT dann zum Standardlieferumfang eines IGW/935.

Gruß KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 12.09.2014, 15:27    Post subject: Paho-Client … Reply with quote

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
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 13.09.2014, 07:30    Post subject: Installation … Reply with quote

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
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 13.09.2014, 08:15    Post subject: Hilfreiche Werkzeuge … Reply with quote

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 IGW/935-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 IGW/935 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
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 14.09.2014, 17:04    Post subject: HTTP-to-MQTT Gateway … Reply with quote

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 IGW/935 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 IGW/935.

Gruß KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 25.09.2014, 15:39    Post subject: MQTT direkt aufs Smartphone! Reply with quote

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
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 26.09.2014, 15:48    Post subject: Letzter Wert geht verloren … Reply with quote

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
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 08.01.2016, 11:35    Post subject: MQTT per Node-Red … Reply with quote

Hallo Forum.

MQTT lässt sich mit dem IGW/935 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 IGW/935 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 den 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 IGW/935-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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    SSV-Forum Forum Index >>> IGW/935 All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511  ·  40 000-0
Fax: +49(0)511  ·  40 000-40

sales@ssv-embedded.de


Impressum    ·    Datenschutz    ·    AGB

© 2023 SSV SOFTWARE SYSTEMS GmbH. Alle Rechte vorbehalten.

ISO 9001:2015