Da nun der Channel auf ThingSpeak vorbereitet wurde, muss das Python-Programm entsprechend erweitert werden, damit auch jede Minute die Energiedaten an ThingSpeak gesendet werden. Dies ist im folgenden schrittweise erklärt.

API_KEY = "LOTRO3WVN9028LIB" 
POWER_FIELD = "field1"
CURRENT_FIELD = "field2"
POWER_CONSUMPTION_FIELD = "field3"

Im ersten Schritt werden oben im Block der Konstanten der Kommunikationsschlüssel für ThingSpeak und die drei Felder für Leistung, Strom und Energieverbrauch definiert. Sie dienen der Übersichtlichkeit, da dann beispielsweise der API-Key nicht immer komplett eingegeben werden muss. Achtung: Auch an dieser Stelle solltest Du natürlich den Schlüssel, der Deinem Channel zugewiesen wurde, eingeben.

def main():
    GPIO.setup(LIGHT_SENSOR_PIN, GPIO.IN) #Registrierung des Sensorpins für den Lichtsensor als Input
    
    while(True):
        ticks = readLightOverTime() 
        power = round(calculatePowerFromTicks(ticks), 2)
        current = round(calculateCurrentFromPower(power), 2) 
        powerConsumption = round(calculatePowerConsumptionOverHour(power),2) 
        requests.get("https://api.thingspeak.com/update?api_key=" + API_KEY + "&" + POWER_FIELD + "=" + str(power) + "&" + CURRENT_FIELD + "=" + str(current) +
                     "&" + POWER_CONSUMPTION_FIELD + "=" + str(powerConsumption)) 
        print("Energiedaten an ThingSpeak geschickt!") 

if __name__=="__main__": 
    main()

In den fett gedruckten Zeilen ist die Erweiterung des Programm-Codes in der Main-Methode zu sehen. Durch einen HTTP-GET Request ist es nun möglich, jede Minute die aktuellen Werte von Leistung, Strom und Energieverbrauch an ThingSpeak zu senden. Dazu wird der Befehl "requests.get()" aus der Python Bibliothek genutzt. Als erstes wird der Link der Web-Seite und der vorher definierte API-Key übergeben, sodass die Daten auch wirklich an Ihren Channel gesendet werden und eine eindeutige Zuordnung stattfindet. Nun wird schrittweise immer das jeweilige Feld (bspw. POWER_FIELD) mit dem entsprechenden Inhalt gefüllt (str(power)) also der aktuelle String-Wert der Leistung). Aus Gründen der Überprüfung (ob die Übermittlung auch richtig funktioniert) erscheint in der Raspberry-Konsole jede Minute nach Übermittlung der Energiedaten der Befehl: "Energiedaten an ThingSpeak geschickt!".

Zuletzt geändert: Donnerstag, 5. August 2021, 10:36