#!/usr/bin/env python3
import thingspeak
import time
import Adafruit_DHT # Sensoren initialisieren
from gpiozero import CPUTemperature # CPU-Werte initialiseren
import psutil # CPU-Auslastung initialisieren
channel_id = xxxxx # ThingSpeak-Kanal
write_key = 'xxxxxxx' # ThingSpeak write-key
read_key = 'xxxxxxx' # ThingSpeak read-key
pin1 = 12 # Gehaeusetemperatur
pin2 = 16 # Aussentemperatur
sensor1 = Adafruit_DHT.DHT22
sensor2 = Adafruit_DHT.DHT22
cputemp = CPUTemperature()
cpuusage = psutil.cpu_percent(interval=0.5)
textuebertragungsfehler = ' + Daten nicht uebertragen'
datumuebertragungsfehler = time.strftime("%Y.%m.%d %H:%M:%S")
# Verarbeitung aller Werte, Sendung an ThingSpeak
def measure(channel):
try:
humidity1, temperature1 = Adafruit_DHT.read_retry(sensor1, pin1)
humidity2, temperature2 = Adafruit_DHT.read_retry(sensor2, pin2)
# Senden neuer Werte an ThingSpeak
response = channel.update({'field1': round(temperature1, 0), 'field2': round(humidity1, 0), 'field3': round(temperature2, 0), 'field4': round(humidity2, 0), 'field5': round(cputemp.temperature, 0), 'field6': round(cpuusage, 0)})
# Abrufen vorhandener Werte von ThingSpeak
# read = channel.get({})
# print("Read:", read)
except:
print(datumuebertragungsfehler + textuebertragungsfehler)
if __name__ == "__main__":
channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)
while True:
measure(channel)
# Senden neuer Werte wegen free account > 15 Sek. moeglich, standard 3600
time.sleep(3600)