Title: A2.9b: Klasse für den Cloudservice erstellen-Expertenniveau (45min)
Course: LF07 - Cyber-physische Systeme ergänzen - FI/ITSE - Raspberry Pi > Section: LS7.2: Raumklima temperaturgeführt regeln

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

Aufgaben
1. Erstellen Sie die Klasse in Python.
2. Weisen Sie den privaten Attributen beim Konstruktoraufruf Anfangswerte zu.
3. Denken Sie an die oben erwähnte Parameterübergabe an den Konstruktor.
4. Implementieren Sie die Methoden.
5. Geben Sie die Datei mit den Quellcodes hier ab.

Hilfen

Retained Messages in MQTT

Publish Single in MQTT

Subscribe Simple in MQTT