workshop solutions.html

Lösungen

Es gibt immer viele verschiedene Lösungen für die Aufgaben.

Hier eine Liste von Beispiellösungen.

Beispiel Subscribe, LED

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.

Beispiellösung

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’.

Beispiel Button, ON

Wenn Button gedrückt, dann soll die LED der Nachbargruppe an und wieder abgeschaltet werden.

Bei jeder Gruppe sollte das Programm “Subscribe, LED” laufen.

Beispiellösung

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.

Beispiel Button, Button, Switch

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.

Beispiellösung