Es gibt immer viele verschiedene Lösungen für die Aufgaben.
Hier eine Liste von Beispiellösungen.
Das Programm subscribiert sich auf das Topic ‘tutorial/<GroupID>/LED’.
Es wird eine gpiozero.LED angelegt.
Die empfangene Payload wird ausgewertet, ‘ON’ bzw. ‘OFF’ schalten die LED.
Das Programm erlaubt in der Payload etwas flexiblere Befehle; so wird z.B. für das Anschalten die Strings ‘ON’, ‘1’, ‘AN’ ausgewertet.
Start entweder direkt mit Thonny oder über die Kommandozeile
cd ~/mqtt_kurs/src/C_120_solutions
python3 subscribe_led.py
Mit dem grafischen mqtt-tool das Topic ‘tutorial/<GroupID>/LED’ abschicken ‘publish’.
Wenn Button gedrückt, dann soll die LED der Nachbargruppe an und wieder abgeschaltet werden.
Bei jeder Gruppe sollte das Programm “Subscribe, LED” laufen.
Der Einfachheit halber wird mit dem Beispielprogramm nur die LED eingeschaltet.
Ausschalten entweder mit dem grafischen Tool, oder im Programm nach dem Einschalten kurz warten mit “time.sleep(1)” und dann die LED wieder ausschalten.
Wenn zwei Button bei verschiedenen Gruppen gedrückt werden soll ein Power Switch angesteuert werden.
Jede Gruppe verwendet ein Programm zum Publish von tutorial<GroupID>/BUTTON bei Tastendruck.
Hierzu das Programm “Button, ON” so abwandeln, dass die eigene GroupID verwendet wird.
Das Kombinieren erfolgt mit einem weiteren Programm, das sich auf die beiden Topic subscribiert und wenn beide jeweils ‘ON’ melden wird ein Publish für den Power Switch abgesetzt.
Die beiden Ereignisse kommen jedoch nacheinander in beliebiger Reihenfolge beim Programm an. Deshalb werden die Ereignisse zwischengespeichert so daß der letzte Wert der Topic zur Verfügung steht.