Seite 1 von 1

Sensordaten an Thingspeak übergeben

Verfasst: Samstag 13. November 2021, 19:55
von Sedge
Hallo zusammen!

Ich bin interessierter Laie, bisher hat Google gute Dienste geleistet. Jetzt brauche ich aber Hilfe von Profis ;)

Das Projekt:
Raspberry Pi Zero WH
CO2 mit MH-Z19b (https://tutorials-raspberrypi.de/raspbe ... -tutorial/)
Luftdruck/Temperatur mit DHT22, die Daten sollen mittels Thingspeak geloggt/angezeigt werden (https://tutorials-raspberrypi.de/raspbe ... auswerten/)

Zum testen habe ich zwei Skripte:

Code: Alles auswählen

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import Adafruit_DHT

humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, 17)
print("%.2f °C  %.2f %%" % (temperature, humidity))
pi@RasPi-Zero1:~ $ sudo python temp.py
16.20 °C 62.60 %

Code: Alles auswählen

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import mh_z19
print(mh_z19.read())
pi@RasPi-Zero1:~ $ sudo python co2.py
{'co2': 575}


So weit, so gut!

Also Thingspeak-Account eingerichtet und die Anleitung (aus dem Link oben) befolgt. Das Skript habe ich (mit meinen ergoogelten Py-Skills :? ) um die CO2-Werte ergänzt:

Code: Alles auswählen

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import thingspeak
import time
import Adafruit_DHT
import mh_z19

channel_id = xxxx # PUT CHANNEL ID HERE
write_key  = 'xxx' # PUT YOUR WRITE KEY HERE
read_key   = 'xxx' # PUT YOUR READ KEY HERE
pin = 17
sensor = Adafruit_DHT.AM2302

def measure(channel):
    try:
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
        co2 = mh_z19.read()
        # write
        response = channel.update({'field1': temperature, 'field2': humidity, 'field3': co2})
    except:
        print("connection failed")


if __name__ == "__main__":
    channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)
    while True:
        measure(channel)
        # free account has an api limit of 15sec
        time.sleep(15)
Auf meinem Thingspeak-Channel werden dann in Feldern 1 und 2 die Werte für Temperatur und Luftfeuchtigkeit wie gewünscht angezeigt.

Feld 3 für CO2 bleibt aber leer. Jetzt ist die Frage: warum! Und wo habe ich was falsch gemacht?

Danke im Voraus, ich freu mich auf Hilfe!

Re: Sensordaten an Thingspeak übergeben

Verfasst: Sonntag 14. November 2021, 11:36
von Sirius3
Nackte excepts sind schlecht, weil sie alle Fehler, auch viele Programmierfehler abfangen. Exceptions immer so konkret wie möglich angeben.
Und dann schau Dir mal den Inhalt der Variablen `humidity`/`temperature` gegenüber `co2` an. Was ist da der Unterscheid?

Re: Sensordaten an Thingspeak übergeben

Verfasst: Sonntag 14. November 2021, 20:27
von Sedge
Vom einen Sensor kommt ein reiner Zahlenwert, vom CO2 Sensor nicht. Ich weiß nicht wie ich beim CO2 einen reinen Zahlenwert ausgebe. Habe diverse Beiträge zu dem Sensor, und zur Beeinflussung von Ausgaben (Strip) angeschaut und werde nicht schlau draus...

Was du mit exceptions meinst verstehe ich nicht...

Re: Sensordaten an Thingspeak übergeben

Verfasst: Sonntag 14. November 2021, 20:33
von Sirius3
`mh_z19.read` liefert ein Wörterbuch, wie man damit umgeht, gehört zu den absoluten Grundlagen. Da Du selbst bereits Wörterbücher erzeugst, solltest Du das eigentlich schon kennen.

Re: Sensordaten an Thingspeak übergeben

Verfasst: Sonntag 14. November 2021, 22:22
von Sedge
Nein, kenne ich noch nicht. Bin noch am Anfang meiner Python-Karriere :D Wo liegt der Fehler?

Re: Sensordaten an Thingspeak übergeben

Verfasst: Sonntag 14. November 2021, 22:28
von __blackjack__
@Sedge: Der Fehler liegt darin das Du Python lernen musst um in Python zu Programmieren. Grundlagen werden in Tutorials erklärt, beispielsweise in dem in der Python-Dokumentation. Und Ausnahmen („exceptions“) auch. Solange Du das nicht kennst, benutze es nicht. Das ``try``/``except`` muss da also raus.

Re: Sensordaten an Thingspeak übergeben

Verfasst: Sonntag 14. November 2021, 23:18
von Sedge
Nuja, bin ja beim lernen ;)

Die Zeilen mit try/except hab ich aus einem Tutorial, siehe mein erster Post. Warum wird es dort verwendet?

Mein zweites (eigentliches?) Problem ist die Ausgabe des CO2-Sensors, und warum dieser nicht in Thingspeak landet.

Re: Sensordaten an Thingspeak übergeben

Verfasst: Sonntag 14. November 2021, 23:28
von sparrow
Es wird dir hier niemand sagen können, warum das im Tutorial falsch gemacht wird.

Und das Problem wurde oben bereits gelöst.
Wenn du mit der Aussage von Sirius3 nichts anfangen kannst, dass der Aufruf ein Wörterbuch bzw dict liefert, dann bist du bei den absoluten Grundlagen noch nicht vorbei.

Re: Sensordaten an Thingspeak übergeben

Verfasst: Montag 15. November 2021, 17:00
von Sedge
Ok. Danke.