Ereignisse mit PubSub veröffentlichen und abonnieren
Einleitung
Viele Ereignisse an der Materialsortieranlage (MSA) sind interessant in weiteren Anwendungszusammenhängen. Wenn bspw. eine Lichtschranke unterbrochen wird, muss das nicht nur ein wichtiges Ereignis für die Steuerung des Transportbandes sein. Auch andere Systeme können von dieser Information profitieren. So könnte bspw. ein Display an einem Microcontroller (Arduino, ESP8266 o.ä.) die Anzahl der Objekte anzeigen, die die Lichtschranke passiert haben. Dafür ist aber entscheidend, dass die Information von einem System (MSA) zum anderen (Microcontroller) gelangt.
In diesem Abschnitt soll es daher um ein robustes und weit verbreitetes Konzept gehen, das die Kommunikation zwischen Systemen übers Netzwerk ermöglicht: PubSub, für: Publish/Subcribe.
Grundlagen von PubSub verstehen
Eine gute Einführung in das Konzept bietet das folgende Video:
Video “Publisher Subscriber Pattern Real-Life Applications” auf YouTube ansehen
PubSub mit Python implementieren
Für den praktischen Einstieg in die Anwendung von PubSub brauchen Sie zwei Rechner im selben Netzwerk, auf denen Python ausgeführt werden kann.
Auf beiden Rechner ist zunächst die weit verbreitete Python-Unterstützung für PubSub ZMQ zu installieren:
$ pip install pyzmq
Rechner 1: Publisher
Der folgende Code macht den Rechner zu einem Publisher:
|
|
Rechner 2: Subscriber
Der folgende Code macht den Rechner zu einem Subscriber:
|
|
Kommunkation testen
Um die Kommunikation zwischen beiden Rechnern zu testen, müssen Sie im Skript auf Rechner 2 noch die IP-Adresse von Rechner 1 eintragen. Dann starten Sie zunächst das Programm auf Rechner 1 und anschließend das auf Rechner 2.
Rechner 1
$ python publisher.py
Rechner 2
$ python subscriber.py weather
Der Parameter des Topics ist optional, ohne eine Angabe unterschreibt der Client für alle Topics des Publishers. Erfolgreich sind Sie, wenn Rechner 2 Nachrichten zum “weather” empfängt.
Aufgaben und Fragestellungen
- Überlegen Sie: Wie müssen Programme für die MSA geschrieben werden, damit sie Ereignisse an interessierte Subscriber melden?
- Auf welchen beteiligten Rechnern müssen die beiden Skriptteile für Pub und Sub laufen?