A2.9b: Klasse für den Cloudservice erstellen-Expertenniveau (45min)
Abschlussbedingungen
Isttemperatur, Solltemperatur, Hysterese und weitere Parameter aus dem Cloudspeicher auslesen oder speichern
Aufgaben
Hilfen
Anzeigen
Abgabe einreichen
Isttemperatur, Solltemperatur, Hysterese und weitere Parameter aus dem Cloudspeicher auslesen oder speichern
Am Beispiel des MQTT-Brokers sollen die beiden Führungsgrößen aus einem Topic ausgelesen werden. Sinnvollerweise schreibt man dann auch gleich Routinen zum Auslesen der GPIO Nummer und der Raumtemperatur. Die Topics im MQTT-Broker dazu sind zum Beispiel
für den Serverraum 1:
serverraum/1/roomtemp
serverraum/1/setpointtemp
serverraum/1/hyst
serverraum/1/gpiofan
Die Klasse, die unseren Cloudservice modelliert, nennen wir "Cloud". In UML-Notifikation kann sie so aussehen:
Der MQTT Hostname
(URL), der Basistopic (hier: "serverraum/1") und ein Temperatursensorobjekt werden beim Konstruktoraufruf als Parameter übergeben.
Hier ein Beispiel, wie je eine setter- und eine getter-Methode aussehen könnte:
``` def get_roomTemp(self): # Serverraumtemperatur aus der Cloud lesen
self.__roomTemp = float((subscribe.simple(self.__topicRoomTemp, hostname=self.__hostname, retained=True)).payload)
return self.__roomTemp
def set_roomTemp(self, temp): # Serverraumtemperatur in Cloud schreiben (macht eigentlich nur Sinn, wenn auf diesem Raspi die Temperaturmessung stattfindet)
publish.single(self.__topicRoomTemp, temp, hostname=self.__hostname, retain=True)
return
```
Die Methode update() soll
- Auslesen der aktuellen Temperatur aus dem Sensor
- Temperatur im Objektattribut speichern
- Temperatur im Cloudspeicher aktualisieren
- Erstellen Sie die Klasse in Python.
- Weisen Sie den privaten Attributen beim Konstruktoraufruf Anfangswerte zu.
- Denken Sie an die oben erwähnte Parameterübergabe an den Konstruktor.
- Implementieren Sie die Methoden.
- Geben Sie die Datei mit den Quellcodes hier ab.