Häufig fallen in Projekten, die rund um die Uhr laufen, eine Menge Daten an. Um diese dauerhaft zu speichern ist ein Weg, die Daten in einer lokalen Datenbank zu speichern. Jedoch gibt es auch einige Gründe, die dagegen sprechen. Um die gemessenen Daten (z.B. aus einer Wetterstation) auch in Zukunft verfügbar zu halten, kann man auch verschiedene Online Dienste ausweichen.
Einer dieser Anbieter ist ThingSpeak. Hier kann man für kleinere Anwendungen einen kostenlosen Account erstellen und seine Daten sehr einfach übertragen. Und genau darum geht es in diesem Tutorial: Wie man Sensordaten zu ThingSpeak überträgt und diese später auswertet.
Zubehör
Alles was du benötigst ist einen Raspberry Pi mit Internetanschluss und einen Sensor, dessen Daten du misst. Aber selbst die CPU Aktivität kann protokolliert werden. In diesem Tutorial nutze ich einen DHT22, mit Hilfe dessen ich die Temperatur und Luftfeuchtigkeit messe und logge.
Für eine Wetterstation wären folgende Sensoren und Module sinnvoll:
- DHT22 (Tutorial)
- BMP180 (Tutorial)
- Fotowiderstände
- normale Widerstände
- Female – Female Jumper Kabel
- ggf. eine wasserdichte Plastikbox
Eine Auflistung von weiteren Komponenten findest du in diesem Artikel: 50 der wichtigsten Raspberry Pi Sensoren und Module
ThingSpeak Account einrichten
Bevor wir loslegen, wird ein Account bei ThingSpeak benötigt. Erstelle dir dazu hier einen Account, sofern du noch keinen hast. Anschließend erstellst du unter https://thingspeak.com/channels einen neuen Channel.
Hier vergibst du einen Namen für den Channel sowie welche Felder du nutzen willst. Insgesamt können bis zu 8 Felder genutzt werden. Die vergebenen Namen haben keinen Einfluss auf die Übertragung der Daten, da wir nur „field1“, „field2“, usw. angeben. Alle diese vergebenen Namen sind auch später noch veränderbar.
Nachdem du den Channel unten gespeichert hast, wirst du automatisch in den Reiter „Private View“ weitergeleitet. Hier werden die vergebenen Felder als Diagram angezeigt. Etwas weiter oben findest du die „Channel ID„. Diese werden wir gleich noch brauchen.
Anschließend wechseln wir noch in den Reiter „API Keys“. Die beiden Werte von „Write API Key„, sowie „Read API Key“ werden ebenso gleich benötigt, damit wir Daten schreiben bzw. abrufen können.
Temperatursensor anschließen und einrichten
Falls du den DHT11 bzw. DHT22 nicht nutzen willst, kannst du dieses Kapitel überspringen.
Auf die beiden Sensoren bin ich im Detail bereits hier eingegangen, daher nur noch einmal die Verbindung als Erinnerung (10kΩ Widerstand):
Sofern du den Sensor vorher nie benutzt hast und auch die entsprechende Bibliothek noch nicht installiert ist, müssen wir erst einmal diese installieren. Dafür sind einige Pakete vonnöten:
sudo apt-get update sudo apt-get install build-essential python-dev python-openssl git
Nun installieren wir noch die Bibliothek zum Auslesen des DHT11/22 Sensors:
git clone https://github.com/adafruit/Adafruit_Python_DHT.git && cd Adafruit_Python_DHT sudo python setup.py install
Ist alles ohne Fehler durchgelaufen, können wir bereits fortfahren.
Raspberry Pi ThingSpreak Bibliothek nutzen
Um den Service nutzen zu können ist ein einfaches Senden der Daten per „POST“ bzw. abrufen per „GET“ möglich. Funktionen dazu sind in so gut wie jeder Programmiersprache vorhanden und mit ein wenig Kenntnis sollte die Datenübertragung schnell gebaut sein. Die Antworten sind prinzipiell in JSON.
Wer (noch) nicht über genug Erfahrung dazu besitzt oder einfach keine Lust hat es selbst zu schreiben kann auch die ThingSpeak Bibliothek nutzen. Dazu installieren wir sie einfach per pip:
sudo pip install thingspeak
Hierbei wird einerseits eine Python Bibliothek erstellt und zusätzlich eine Terminal-Anwendung. Du kannst thingspeak
also auch über die Konsole aufrufen (bzw. aus einem anderen C++/Java Programm).
Fangen wir also an. Unser kleines Python Skript soll alle 15 Sekunden die Temperatur und Luftfeuchtigkeit des DHT22 auslesen und diese an unseren Channel senden. Außerdem sollen die Daten danach nochmal abgefragt werden (dies wird in Anwendungen, die nur Daten senden, nicht nötig sein; daher ist es nur ein Demonstrationsbeispiel).
Wir erstellen eine neue Datei,
sudo nano thingspeak_example.py
welche folgenden Inhalt bekommt (Speichern und Beenden mit STRG+O, STRG+X):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import thingspeak import time import Adafruit_DHT channel_id = 206897 # PUT CHANNEL ID HERE write_key = '24GJQV17H7H4XGJ5' # PUT YOUR WRITE KEY HERE read_key = '9EZ7E0918UVVAGAY' # PUT YOUR READ KEY HERE pin = 4 sensor = Adafruit_DHT.DHT22 def measure(channel): try: humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) # write response = channel.update({'field1': temperature, 'field2': humidity}) # read read = channel.get({}) print("Read:", read) 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) |
Die Zeilen 5 bis 7 musst du entsprechend anpassen. Zeile 8 muss lediglich verändert werden, sofern du einen anderen GPIO für den Sensor nutzt.
Falls du den DHT22 Sensor nicht nutzt, so muss der Code natürlich ein wenig angepasst werden.
Daten im Webpanel und per API abrufen
Die Daten des Panels werden mit wenigen Sekunden Verzögerung „quasi live“ angezeigt. Du kannst die Panels individualisieren (Aussehen und Datenanzeige) und sogar eigene Ansichten für die Daten schreiben. Für diese sogenannten Apps musst du lediglich ein wenig HTML, CSS und Javascript beherrschen. Alternativ kannst du dir auch Plugins aus dem Forum laden.
Falls du die Daten per API aufrufen möchtest, kannst du dies auch einfach per JSON. Dabei musst du deine Channel ID (bei mir: 206897) sowie deinen „Read API Key“ (bei mir: 9EZ7E0918UVVAGAY) in folgendem Link ersetzen:
https://api.thingspeak.com/channels/206897/feeds.json?api_key=9EZ7E0918UVVAGAY
Darüber hinaus gibt es noch eine Menge weiterer Parameter, die du zur Eingrenzung, Summierung oder Filterung der Daten angeben kannst. Du findest sie im MathWorks Wiki.
Als Schlusswort möchte ich dennoch darauf hinweisen, dass man sich immer bewusst sein sollte, was genau man überträgt. Auch wenn es sich bei ThingSpeak um einen seriösen Anbieter handelt, sollte man besonders sensible Daten u.U. selbst speichern, auch wenn dies etwas umständlicher und weniger ausfallsicher ist. Für unkritische Projekte wie Wetterstationen oder bspw. die Überwachung eines Aquariums sehe ich jedoch keine Gefahr.
175 Kommentare
Habe jetzt mal die Links zu den Modulen usw. angesehen.
Muss man die von Amazon benutzen, oder gehen die Breadboards, Sensoren , Jumpwires usw.
von diesem Shop auch?
ramser-elektro.at/shop/
Wenn nein: Was ist da der Unterschied?
Irgendwie sehen die Teile gleich aus, wie bei Amazon.
könntest du mal zeigen wie man dies ohne einen externen anbieter macht ? also sqlite db auf dem raspberry und dann einbindung auf eine onlineoberfläche.
Da ein Internetanschluss bei einem pi der außen am Haus oder gar im Garten als Wetterstation seinen Dienst tut, wohl eher selten vorkommt, ist dieses Tuturial wohl eher als Hilfe beim Speichern von Daten gedacht und weniger als Wetterstations-Tutorial.
Lokal auf der Sd Karte des Pi haben solch Daten ja auch nichts verloren, die Karte wird schnell ihr Schreibzyklus-Limit erreicht habe und den Dienst verweigern. Deshalb der Ansatz mit dem externen Cloudspeicher. Als lokale Alternative bietet sich der Einsatz von rrdb oder ähnlichem auf einem usb stick an. Man kann beim Pi aber auch den ganzen Arbeitsbereich von der Sd Karte auf ein usb lauferk (Stick) auslagern, dann wird die Karte nur noch zum Boot benötigt.
Im eigenen Garten ist es nicht so unwahrscheinlich, dass man noch ein WLAN Signal empfängt. Und mit einem Pi 3 braucht man auch keinen Wifi Adapter mehr. Aber du hast dennoch Recht: Die Wetterstation dient nur als Beispiel zum loggen der Daten.
Ich empfehle influxdb als Datenbank für die lokale Speicherung der Messwerte, die ist speziell für die Speicherung von Zeitreihen ausgelegt und bietet einige Features, die für genau diesen Anwendungsfall besonders nützlich sind. So kann man z.B. einstellen, dass die Einzelmesswerte nach zwei Wochen zu z.B. Tagesmittelwerten aggregiert werden und nach einem halben Jahr dann ganz gelöscht werden, sodass der Speicherplatz nicht ausgeht.
Vielen Dank für das Tutorial. Da ich ein ziemlicher Laie bin, habe ich folgende Fragen:
Ich habe 3 Dallas-Sensoren (DS 18B20), die ich alle auf der Konsole einzeln auslesen kann.
1.)Wie binde ich sie in die Datei „thingspeak_example.py“ ein ?
2.)Was bedeutet „pin“ in dieser Datei (Pin-Ziffer od. GPIO-Ziffer)?
vermutl. ja GPIO
3.)In welches Verzeichnis wird diese Datei gelegt?
Klar, das ist möglich. Ich habe hier ja am Hand des DHT11 Beispiels das Loggen gezeigt. Um den DS18B20 zu nutzen müsstest du es entsprechend anpassen. Ein Tutorial zum DS18B20 habe ich hier veröffentlicht: Raspberry Pi Temperatursensor (1-Wire): Temperatur messen
Hallo Felix,
Danke erst einmal für das Tutorial. Ich habe ebenfalls wie Friedel den DS18B20 Sensor im Einsatz. Wie müsste jetzt die “ thingspeak_example.py“ dafür angepasst aussehen?
Was müsste zum Beispiel hier stehen „import Adafruit_DHT“ oder hier “ sensor = Adafruit_DHT.DHT22″. Was müsste noch alles wie genau abgeändert werden? Der Verweiss auf dein Tutorial zum DS18B20 hilft da an der Stelle leider nicht weiter.
Gruß Christian
Hi… Ich bin durch Zufall hierauf gestoßen und erst einmal großes Lob für diese Seite.
Ich bin was „Python“ bzw. programmieren angeht ein absoluter Laie und bräuchte ebenfalls wie die beiden anderen hier kurze Unterstützung.
Das Auslesen der Temperatur (DS18B20) funktioniert anhand deiner anderen Anleitung hervorragend. Nun war ich immer auf der Such nach einer Möglichkeit die Temperatur „auf dem Smartphone“ anzeigen zu lassen. (So das die Gattin keine Shell benutzen muss… 😉 )
Thingspeak-Account ist da, nur benötige ich mal Unterstützung, was in deinem o.g. Script (zum DH22/11) für ein DS18B20 angepasst werden muss. Bekomme beide Scripte irgendwie nicht zusammen… Wäre top. Vielen Dank
Hallo.
Ich bekomme beim Aufruf von der thingspeak python Lib folgende Fehlermeldung:
AttributeError: ‚module‘ object has no attribute ‚Channel‘
Auch wenn ich direkt in der python commandozeile nur „import thingspeak“ eingebe kommt dieselbe Meldung
Hast du eine Idee?
Danke & LG
Reinhard
Hallo Reinhard,
hm klingt komisch, da der import ja nichts läd – esseidenn in der aktuellen Version hat sich ein Fehler eingeschlichen. Versuch doch evtl mal die Installation direkt aus der Source: https://github.com/mchwalisz/thingspeak
Hallo nochmals.
auf „sudo pip install thingspeak“ bekomme ich folgende Ausgabe:
http://pastebin.com/pHgEhD1b
Habe fast dasselbe problem. Wenn ich das script in python 2.7.9 (rasp pi 3) laufen lasse bekomme ich auch die Fehlermeldung ´module` object has no attribute `Channel`
@Felix: Vielleicht kannst du das nochmals mit einem neu aufgesetztem Raspberry versuchen?
Vielleicht tritt dann der Fehler bei Dir auch auf?
Danke & LG
Reinhard
Hallo.
Ich habe das Problem gefunden: Ich testete zuerst mit einem python Script mit Namen „thingspeak.py“. Dieses wurde zu thingspeak.pyc kompiliert und das folgende Testscript
importierte genau dieses file anstelle des regulären thingspeak Moduls
Sprich: Man darf sein Script nicht(!) „thingspeak.py“ nennen!
LG
Ihr seid ja schneller, als ich es selbst noch einmal testen konnte 🙂
Freut mich, dass es nun bei euch funktioniert!
Hallo, ich habe die gleiche Fehlermeldung und bin neu auf diesem Gebiet. Also was genau darf ich nicht machen, damit diese Fehlermeldung nicht nochmal auftritt?? Habe es immer noch nicht so ganz verstanden…
Liebe Grüße
Musste ich leider heute auch Feststellen 😉
Hallo, ich habe die gleiche Fehlermeldung und bin neu auf diesem Gebiet. Also was genau darf ich nicht machen, damit diese Fehlermeldung nicht nochmal auftritt?? Habe es immer noch nicht so ganz verstanden…
Liebe Grüße
Ich schäme mich so, aber wenn man nachdenkt „ja, nee, ist klar“
Und die Fehlermeldung macht (im Nachhinein) auch Sinn….. 😉
Hi Felix,
echt tolle Seite von dir es funktioniert voll geil – stay tuned
Cool, genau sowas habe ich gesucht.
Hat sofort geklappt…
Nur der A2302 hat ne Macke und zeigt 100% Luftfeuchte an…
Da muss ich wohl noch mal ran… ?
Gruß Ingo
Hallo,
Ich habe ein Problem beim installieren von Thingspeak wenn ich „pip install thingspeak“ eingebe kommt nach kurzer Zeit Cleaning up… und dann in rot ein langer Fehler Code.
Vielen Dank für die Hilfe im vorraus.
Gruß Nicolas
Und davor steht: „error: could not create ‚/usr/local/lib/python2.7/dist-packages/thingspeak‘: Per mission denied“
Gruß Nicolas
versuch es mal mit:
sudo pip install thingspeak
Das ist ein Fehler im Tutorial. Da wurde der command „sudo“ vergessen. Das die benötigten Adminrechte gibt
Das Tutorial hat Prima funktioniert hab aber drei versuche gebraucht, hab es zweimal über SSH versucht wo es nicht geklappt hat und einmal direkt am Pi da hat es hin gehauen.
Wenn ich das Script ausführen möchte bringt er mir in der Linie 13 einen Fehler.
Folglich hab ich auch keine Auswertung bei thingspeak 🙁
irgendwo dort hab ich nen Hacken drin ich hoff hier kann mir wer weiterhelfen
Jo läuft *Formatierung ist kein Kindergarten*
Hab den gleichen Fehler wie Jay vom 1.2.2017 (22:13)
Leider bin ich zu blind um den womöglichen Formatierungsfehler zu erkennen. Bitte um hilfe.
danke für den tollen Thread. Fehler gefunden.
1 tab = 4 leerzeichen ;D
wenn ich „check Module“ eingebe kommt eine Fehlermeldung: There`s an error in your program: invalid syntax
Rot unterlegt ist except:
Ich muß dazu sagen, daß ich mich nicht auskenne und nicht weiter weiß.
Ich bin auf eure Hilfe angewiesen 🙂
Fehler gefunden. Ein paar blanks zuviel vor expect. Nun kommt Error import thingspeak No module named thingspeak.
Jetzt muß ich suchen bzw. wenn einer ein Tipp hat, immer her damit.
Danke
Der Fehler besagt, dass es wahrscheinlich nicht installiert ist.
Genau. Mit sudo pip install thingspeak hat es dann funktioniert. Jetzt kommt aber die Meldung connection failed. Mit demTestprogramm und dem Befehl
sudo ./AdafruitDHT.py 22 4 hat das Auslesen der Daten funktioniert. Wo muß/kann ich noch eingreifen?
Evtl. hast du einen falschen Key o.ä. angegeben. Versuch es mal per URL, so kannst du den Fehler eingrenzen.
Mit URL bin ich nicht weitergekommen. Ich teste das Programm mit einem Raspberry 3 mit Python 2.7.9 . Ruf das Programm /home/pi/Adafruit_Python_DHT/thingspeak_example.py auf und starte das Programm Run Module ( F5). Dann kommt die Meldung connection failed alle 15 sec.
Channel ID und keys hab ich schon xmal überprüft.
Hurra es funktioniert. Fehler war: das Programm war im Ordner Adafruit_Python_DHT. Muß aber anscheinend in den Ordner Adafruit_Python_DHT/Adafruit_DHT.
Probieren geht über studieren 🙂
#Felix danke für die Hilfe
Gruß Hugi
Jetzt muß ich es nur noch hinbekommen, dass das Programm beim Einschalten des Raspis startet. Vielleicht gibt es ein paar Hinweise 🙂
Danke
Entweder könntest du es so lösen, oder per Crontab.
Bei mir funktioniert soweit alles, ich bekomme auch die werte (von meinem DHT11) bei Thingspeak angezeigt, jedoch liegen die alle so bei ca. 600-1200 (und so warm ist es bei mir nun mal nicht)… vllt. hat einer ja das selbe Problem oder kennt eine Lösung. Ich bedanke mich im voraus.
vllt. ist ja auch der Sensor kaputt???
„sensor = Adafruit_DHT.DHT11“ statt „sensor = Adafruit_DHT.DHT22“ dann klappt das
#Felix
Ich hab „so lösen“ gewählt. Leider kommt beim Test „Start “ eine Reihe Fehlermeldungen; z.B. dass „Import… “ usw. nicht gefunden wird. Ruf ich das Programm thingspeak_example.py direkt auf funktionierts. Hast du einen Tipp für mich?
Vielen Dank
Gruß Hugi
Ich habe es mit: @reboot per Crontab gemacht. Das ist eine schnelle, einfache Lösung…
Wird hier erklärt:
https://wiki.ubuntuusers.de/Cron/
#INGO Vielen Dank. Hat ein wenig gedauert bis es lief, aber ich hab auch was dabei gelernt.
Hallo, Vielen Dank für die geniale Anleitung. Auch ich als Laie habe es auf anhieb geschafft und freue mich nun an den Werten auf ThingSpeak. Nun wollte ich noch einen zweiten Sensor anschliessen um Innen / Aussentemperatur anzuzeigen. Da ich jedoch ein py Anfänger bin stehe ich an. Kann mir da jemand weiterhelfen ?
Vielen Dank im voraus !
Gruss Daniel
Wo hakt es denn? Du kannst den zweiten Sensor doch äquivalent zum ersten anschließen (anderer GPIO) und dessen Daten ebenfalls übermitteln. Die Anpassungen sind nur minimal.
Seit 2 Tagen versuche ich mich an dem Projekt Raspberry Pi: Luftfeuchtigkeit.
Ohne Probleme gelang es mit den DHT22 auszulesen.
Danach habe ich mich bei ThingSpeak angemeldet und die nötigen Felder angemeldet, sowie meine Channel-ID und die beiden Keys abgeschrieben.
Danach habe ich
thingspeak_example.py
abgeschrieben und mit meinen Daten modifiziert.
Das Programm läuft auf meinem Pi 3 ab. Zeigt aber leider nur die Meldung „connection failed“.
Da ich absoluter Anfänger bin, vermute ich, das ich einen Fehler gemacht habe.
Den Quellcode habe ich schon mindestens 10x verglichen und mir ist kein Fehler aufgefallen.
Wenn ich meine Daten bei ThingSpeak anschauen will, sehe ich, das keine übertragen wurden.
Wenn ihr mir helfen würdet, wäre das toll!
Dann hast du vermutlich den Falschen GPIO Pin angegeben oder den falschen DHT22. Achte darauf das wenn du zum Beispiel „pin = 4“ verwendest, der DHT22 Data Port auch auf GPIO4 gesteckt ist.
Hallo,
Mir ist aufgefallen, dass im code pin = 4 angesprochen wird. Am Pi ist es aber 7, jedoch GPIO4.
Werden mit pin = x die GPIO Nummern angesprochen.
Ist für mich noch verwirrend, sorry beginner.
Grüße
Pin 7 = GPIO 4. Schau dir am besten diese Tabelle an.
Hallo! In deinem Tutorial sind ja 2 Sensoren angegeben, aber du erklärst nur, wie das mit dem DHT Sensor gemacht wird.
Wie muss die Datei aussehen, wenn ich den DHT22 UND den BMP180 verwenden möchte?
Ist für die Werkstatt und den 3D Drucker gedacht.
Ich nutze nur den DHT Sensor, der aber Temperatur & Luftfeuchte messen kann. Wenn du weitere Sensoren auslesen willst, pack die Abfrage grade darunter und sende sie z.B. danach zusammen an ThingSpeak.
Okay, danke!
Kann den BMP sowieso vergessen, die Anschlüsse sind schon belegt vom 7″ Display, zumindest was die SDA und SDL Pins angeht.
Nur noch eines, ich hab meinen Sensor hier bestellt, kann ich den so anschließen wie er ist oder sollte ich ihn ablöten und den 10k Widerstand normal anlöten?
Du kannst SDA und SCL auch parallel anschließen, da I2C Geräte nur über ihre Adressen identifiziert werden.
Den Sensor kannst du aufgelötet lassen.
Hi Felix,
wenn ich bei dem ThingSpeak Script „field3″ und field4“ angebe, kommen keine Daten in die Felder.
Kannst du mir verraten warum?
Viele Grüße,
Phil
Hast du diese in deinem ThingSpeak Account aktiviert und einen Namen dafür vergeben?
Ja, natürlich. Mit field1 und 2 läuft es. Nur Feld 1 & 2 werden von anderen Daten gefüttert, Datum soll Temp nur in 3 & 4 geschrieben werden.
Und die Daten sind auch richtig (nicht, dass sie leer sind). Hast du sie geloggt? Falls ja, fällt mir gerade kein sinnvoller Grund ein, warum es mit den beiden Feldern nicht funktionieren sollte.
Naja ich hab weil ich dachte ich bin doof, dein Script genommen und nur die Feldnummern geändert. Funktioniert nicht. Ich versteh es auch nicht.
Problem gefunden. Der Free Account lässt ja nur alle 15 Sec einen Eintrag zu … Wenn ich aber mit 2 Python Scripten alle 15 Sec Einträge mache, kann es nicht funktionieren wegen dem Block seitens ThinkSpeak 😉 Also in ein Push zusammengefasst und es funktioniert 😉
Können Sie mit bitte sagen wie Sie das zusammengefasst haben. Ich habe gerade dasselbe Probleme und komme nicht weiter.
The tutorial shown here is possible only with digital sensor.I have to send heart pulse sensor which is an analog sensor.How can we modify line 8 of the program in case of analog sensors??
No, you can send values of digital and analog sensors to ThingSpeak. Because, when you read the value of an analog sensor (eg. with MCP3008) it becomes an digital value, which can be sent. Of course, you have to adjust the code and insert the part for reading the heartbeat sensor.
Hallo! Beim Ausführen der Datei mittels sudo python … .py bekomme ich immer wieder die Meldung:
File „thingspeak.py“, line 21, in
channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)
AttributeError: ‚module‘ object has no attribute ‚Channel‘
Was mache ich falsch? Read/Write Key und Channel-Id habe ich laut Anleitung umgeändert.
Danke!
Hast du es auch mit Kleinschreibung versucht?
Servus, super Seite!
Hat auch alles soweit geklappt. Ist es möglich die Bodenfeuchtigkeit miteinzubinden?
Schönen Gruß, Felix II
Klar, du müsstest nur die Erfassung in dieses Skript mit aufnehmen (anstelle der DHT Messung): Bodenfeuchtigkeit mit dem Raspberry Pi messen
Danke für die schnelle Antwort. Könntest du mir das noch etwas genauer erklären? Das Skript von der „Bodenfeuchtigkeit mit dem Raspberry Pi messen“-Seite in das Skript von dieser Seite aufnehmen oder? Sorry, bin nicht so fit im Programmieren^^
Nur den relevanten Teil. Du solltest es aber erst verstehen, was du tust 🙂
Hallo!
Nein hat leider nicht funktioniert, bekomme jetzt die Meldung:
Traceback (most recent call last):
File „thingspeak.py“, line 27, in
channel = thingspeak.channel(id=channel_id, write_key=write_key, api_key=read_key)
AttributeError: ‚module‘ object has no attribute ‚channel‘
Hast du eventuell noch eine andere Idee?
Danke!
Liebe Grüße!
Hallo Jörg
Konntest du damals das Probelm mit dem Error lösen? Wenn ja, wie ?
Danke & Gruss
Hallo,
ich würde gerne in Field3 die CPU Temperatur ausgeben, wie muss mein Script dafür aussehen?
PS: Super Tutorials haben mich schon weiter gebracht in Elektrotechnik und Programmieren
In diesem Tutorial habe ich bereits einmal die CPU Temperatur ausgelesen. Den entsprechenden Teil kannst du in diesem Skript benutzen.
Ich habe alles so durchlaufen lassen, wie auf der Homepage erklärt, leider werden aber keine Daten übertragen.
An was könnte es liegen. Wo muss ich denn die example Datei speichern. Muss ich sie noch aktivieren. Bin absoluter Neuling.
Danke für die Infos
Der Sensor erhebt aber Daten oder? Was meinst du mit aktivieren? Du musst sie ausführen.
Hallo Felix,
ich bin absoluter Neuling in Sachen Raspi/Datenlogger/Programmierung.
Nun habe ich an einem Rapsberry Pi zwei DS18B20 (später eventeull mehr) angeschlossen und alles läuft soweit. Dein Tutorial habe ich dazu auch verwendet.
Nun möchte ich die Daten auf ThingSpeak loggen. Wie genau muss dein Pythonscript geändert werden, um mehrere Sensoren bei ThingSpeak zu loggen? Die Daten müssen doch aus dem Verzeichnis /sys/bus/w1/… ausgelesen und übertragen werden?
Ich habe davon echt keinen Plan und bitte hier um Hilfe. Eine intensive Suche bei Goolge hat mich auch nicht weitergebracht.
Danke
Wenn du das Skript aus dem anderen Tutorial nimmst, kannst du die Ausgabe ganz einfach mit Python auslesen, indem du
os.system()
nutzt (Doku). Damit kannst du Shell Befehle aufrufen und die die Ausgaben anzeigen lassen.Und nur das Script ändern das es auf die DS18B20 und ThingSpeak funktioniert geht nicht?
Dein Weg ist mir irgendwie zu kompliziert.
Doch, in dem Skript für ThingSpeak rufst du an der gegebenen Stelle eben das andere Skript auf. Ist nicht wirklich kompliziert.
LG, Felix
Hallo Felix,
bin auch neu was python angeht.
Kann die Auslesung und Übertragung von einem DS18B20 wie unten funktionieren, wenn ich dein Skript (habe es nun beispielhaft skriptfür1-wire.py genannt) für die Auslesung über os.system() einfüge?
import thingspeak
import time
import Adafruit_DHT
import os
channel_id = 206897 # PUT CHANNEL ID HERE
write_key = ’24GJQV17H7H4XGJ5′ # PUT YOUR WRITE KEY HERE
read_key = ‚9EZ7E0918UVVAGAY‘ # PUT YOUR READ KEY HERE
#wird nicht benötigt
#pin = 4
#sensor = Adafruit_DHT.DHT22
def measure(channel):
try:
#wird nicht benötigt: temperature = Adafruit_DHT.read_retry(sensor, pin)
temperature = os.system(„sudo /home/pi/skriptfür1-wire“)
# write
response = channel.update({‚field1‘: temperature})
# read
read = channel.get({})
print(„Read:“, read)
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)
Für mich schon 🙂 da ich nicht wirklich `nen Plan davon habe. Deshalb dachte ich an die Bearbeitung des Script ohne andere Scripts aufrufen zu müssen.
So wie du es vor hast ist es komplizierter. Nach meinem vorgeschlagenen Weg rufst du das Skript auf (eine Zeile). Du möchtest die Logik eines Shell Skripts hier rein packen. Das ist auch möglich, aber nicht unbedingt einfacher.
Icch hatte eher an so etwas gedacht, nur eben für mehrere Sensoren.
Hallo,
ich bekomme die Fehlermeldung „ImportError: No module named ‚thingspeak‘ . Die Installation der Bibliothek scheint aber geklappt zu haben.
Nach erneuter Installation klappt es jetzt. Funktioniert der Code unverändert auch mit dem DHT11?
Jein, du musst den Treiber des DHT11 statt 22 laden.
Hatte/ Habe das gleich problem. Gibt eine weitere Fehlerquelle? Habe nun schon mehrfach versucht neu zu installieren, leider ohne Erfolg….
Wie schaffe ich es denn in meinem Channel einen View zu erstellen, der mir auch alte Daten visualisiert? Ich würde gerne eine Grafik erstellen mit einem Temperaturverlauf der letzen Monate. An der Y Achse soll die Temperatur stehen, an der X Achse der Datumsbereich, z.B. Januar 2017 bis Juni 2017.
Komme mit der Doku nicht so ganz zurecht, was die thingsread und plot Funktionen angeht und auch wie ich die Achsen definiere so dass es zu meiner obigen Fragestellung passt.
Kann jemand helfen?
Hallo,
ich habe ein Problem beim Ausführen des scrips.
Mir wird folgendes angezeigt:
NameError:name ‚Adafruit_DHT. is not defined
Was habe ich falsch gemacht?
Erst einmal vielen Dank für die gelungenen Anleitungen, ich habe damit als völliger Raspian Anfänger ohne Probleme die SD Karte bespielen können und einen Sensor 22 anschließen und zum Laufen bringen können.
Das Problem, was ich jetzt habe, ist scheinbar ein Python Problem: Wenn ich das kleine Script zur automatischen Übergabe an thingspeak laufen lasse, scheitert es schon an den ersten Zeilen.
Import Zeile1 findet er nicht
Import Zeile 2 wohl
Import Zeile 3 ebenfalls nicht.
Was mache ich da falsch?
Scheint als wurden die Bibliotheken thingspeak und für den DHT nicht richtig installiert.
Danke für die schnelle Antwort; eine Fehlermeldung konnte ich bei der Installation nicht erkennen,
kann ich irgendwie sehen, ob die Installation geklappt hat?
Der Befehl sudo ./AdafruitDHT.py 22 17 funktioniert zuverlässig, allerdings nur, wenn ich im selben Ordner bin.
Kann es auch an den Pfaden liegen?
Naja, wenn du den Import Befehl in einer Python Konsole aufrufst und nichts importiert wurde, so wurde die Bilbiothek nicht richtig installiert. Das Adafruit Skript kannst du natürlich nur im Ordner aufrufen, da es nur dort vorhanden ist (ist allerdings keine Bibliothek).
Da ich ein ziemlicher Neuling bin, weiß ich nicht, wie ich die Konsole bei Python öffne. Bisher habe ich mit Rechtsklick auf das Python Script die Datei über Thonny Python geöffnet und laufen lassen.
Ich habe etwas herumprobiert und den Ordner Adafruit-DHT in den example Ordner kopiert und das Script thingspeak.py aus dem Ordner usr/local…. ebenfalls.
Erfolg: Die ersten Zeilen gehen jetzt durch, ich bekomme aber eine Fehlermeldung:
connection failed.
Merkwürdig: Der Befehl sudo ./Adafruit_DHT 22 17 produziert jetzt eine Reihe an Fehlermeldungen, lösche ich den Ordner Adafruit_DHT wieder aus dem example Ordner, läuft er wieder, aber das script stoppt bereits in Zeile 3
In der normalen Konsole
sudo python
eingeben öffnet die Python Konsole.Danke, wieder etwas schlauer geworden.
Die import Befehle einzeln eingegeben produzieren jedenfalls keine Fehlermeldungen, zeigt genauer gesagt nichts (falls das so sein soll).
Ich muss morgen weiter probieren, habe jetzt leider keine Zeit mehr.
Danke erst einmal für die Unterstützung!
Es läuft jetzt!
Ich habe die Datendatei in den Ordner Adafruit_DHT kopiert (Tipp hier in den Kommentaren), dann waren die Fehlermeldungen w. import weg, aber eine neue: connection failed.
Problem lag bei mir, ich hatte in der API eine Null statt eines großen O, jetzt läuft es stabil.
Danke für die Tipps und vor allem: Ohne diese Anleitung wäre ich nie soweit gekommen!
Obwohl der Befehl „sudo pip install thingspeak“ über die Konsole korrekt ausgeführt wurde erhalte ich beim Starten des Programms folgende Fehlermeldung:
File „/home/pi/thingspeak_example.py“, line 1, in import thingspeak
Import Error: No module named ‚thingspeak‘
Und nü???
Hast du es evtl. für Python2/3 installiert und importierst es aus einer anderen Version?
Ich habe thingspeak versucht über die Aufforderung ’sudo pip install thingspeak‘ zu installieren!?
Versuche ich die drei Module der ersten Zeilen im Skript einzeln aufzurufen, wird nur das ‚time‘ modul erkannt. Weder ‚thingspeak‘ noch ‚Adafruit_DHT‘ werden erkannt. Dies wundert mich, da ich über die Anweisung ’sudo ./Adafruit.py 11 23′ beide Sensorwerte auslesen kann. Muss dann nicht zumindest das Adafruit_DHT Modul vorhanden sein?
Mir fehlt wohl die Erfahrung und der Überblick; beschäftige mich erst seit 2 Tagen damit.
die Import Module können entweder lokal im Verzeichnis liegen oder global installiert. Wenn du die Python Konsole aus einem anderen Verzeichnis aufrufst, indem lokal nichts drin ist, kann es nur die globalen Bibliotheken laden.
Hallo ich habe ein problem…..
habe das komplette toutorial durchgemacht ohne Fehler!
dann erste fehler meldung „no module name thingspeak“
sudo pip install thingspeak
wurde korrekt ausgeführt!
habe aber keinen ordner gefunden im ordner adafruit_Python_DHT
habe mich auf die suche gemcht und den Ordner „Thingspeak“ in der user system datei gefunden!
dann kopiert und in den ADAFRUIT ORDNER EINGEFÜGT!
nächster fehler:
connection failed
dann laut kommentaren—- thingspeak_example.py in den ordner adafruit_python_DHT,adafruit_DHT kopiert!
nächster fehler:
no module name adafruit_DHT
diesen kopiert und als unterordner im Ordner Adafruit_DHT eingefügt
nächster:
no module name Thingspeak
genauso kopiert un im Ordner Adafruit_Dht eingefügt
jetzt bin ich am ende mit meinem latein…
Jetzt wieder alle 15 sec. fehler connection failed!!!
bitte weis jemand was??
Write code: X mal kontroliert
Read code: X mal kontroliert
Channel code X mal kontroliert
und auch neu generieren lassen!!!
Danke im Voraus
Könnte vill jemand eine auflistung der dateien im ordner Adafruit posten?
Habe jetzt 10x neu aufgesetzt und alles neu instaliert komme einfach nicht weiter.
Hallo,
Habe das gleiche Problem….immer „Connection failed“
Hat jemand eine Lösung?
Vielen Dank
Danke für das gute Tutorial! Ich habe es befolgt und es klappt sehr gut. Da ich allerdings relativ neu im Thema Raspberry Pi und Linux bin komme ich nicht weiter über deine Anleitung hinaus. Ich habe wie schon gesagt den DHT zum laufen gebracht, und auch den BMP180 aber bei diesem fällt es mir schwer die Daten an Thinkspeak zu senden. Wenn ich das Scipt wie du es für den DHT benutzt hast umschreibe , so dass es für den BMP funktioniert sagt er mir, dass er thinkspeak nicht findet(Datei liegt im Ordner der BMP installation). Wenn ich die Date nun in den Ordner in der die DHT Datei liegt verschiebe sagt er mir, dass er BMP nicht findet.
Hast du die Thingspeak Bibliothek über pip installiert?
Hallo ich bekomme folgende Fehlermeldung für Line1
ModuleNotFoundError: No module named ‚thingspeak‘ ..
Bin ein Anfänger und verwende Python3.7.3
Meine Vermutung ist das es die falsche Bibliothek für die Pythonversion ist. Aber woher bekomme ich die richtige Bibliothek für meine Version? Ich habe in den Kommentaren und im Netz leider noch keine Antwort finden können.
Hallo,
ich möchte einen A2302 auslesen und würde gerne wissen wie ich in der „thingspeak_example.py“ die Zeile 9 verändern muss. Wie rufe ich dann dieses Script auf? Wenn ich ./thingspeak_example eingebe kommt die Meldung: „keine Berechtigung“.
Hast du es mit sudo gestartet?
habe es auch mit sudo probiert. klappte auch nicht. jetzt habe ich in der Datei in die erste Zeile „#!/usr/bin/python“ eingefügt und das Script ausführbar gemacht. Jetzt kann ich es starten.
Ich bin mit Putty auf dem Raspberry und wenn ist das Python-Script gestartet habe werden die Befehle sichtbar. Wie kann ich das Script im Hintergrund starten und automatisch gestartet lassen. Schließe ich Putty wird das Script nicht mehr ausgeführt.
Hallo
Ich habe das ganze script auf meinen Nanopi Neo AIR gespielt und entsprechnend angepast.
allerdings erhalte ich immer dei meldung „connection failed“ als echo.
Auf was bezieht sich die meldung ?
Keine verbindung zu thingspeak oder keine verbindung zum sensor?
Könnte beides sein, dafür musst du die Exception im Catch Block noch ausgeben lassen.
Hallo, ich bekomme beim ausführen des scripts den Fehler: ImportError: No module named ‚thingspeak‘
Ich habe versucht wie oben schon beschrieben die Datei im anderen Ordner abzulegen und von dort zu starten. Jedoch mit selbigem Fehler…
Was kann hier noch falsch sein?
Anbei mein Code:
Hier noch der Eintrag aus dem Shell:
Python 3.5.3 (/usr/bin/python3)
>>> %cd /home/pi/Adafruit_Python_DHT/Adafruit_DHT
>>> %Run thingspeak_example.py
Traceback (most recent call last):
File „/home/pi/Adafruit_Python_DHT/Adafruit_DHT/thingspeak_example.py“, line 1, in
import thingspeak
ImportError: No module named ‚thingspeak‘
>>>
Öffne nur mal die Pythonkonsole in dem Verzeichnis und importier das Package. Falls es nicht importiert werden kann, wurde es nicht richtig installiert (z.B: für Python2 statt 3) oder ist aus dem Pfad nicht verfügbar.
Erstmal Danke für den Hinweis mit der Python version… Wenn ich im Phyton 2 starte bekomme ich nun den Fehler „connection failed“.
Über sudo etc… bekomme ich die Daten vom DHT22 jedoch angezeigt…
An was kann das noch liegen?
Hast du das Skript davor mit Python 3 gestartet und evtl die Bibliothek dafür nicht installiert?
Ja habe es mit python3 gestartet.
Und auch für Python3 installiert?
Habe über sudo pip install thingspeak==0.1.1 die ältere Bibliothek installiert.
Jetzt läuft der script in einen Fehler:
== RESTART: /home/pi/Adafruit_Python_DHT/Adafruit_DHT/thingspeak_example.py ==
Traceback (most recent call last):
File „/home/pi/Adafruit_Python_DHT/Adafruit_DHT/thingspeak_example.py“, line 26, in
channel = thingspeak.channel(id=channel_id, write_key=write_key, api_key=read_key)
TypeError: __init__() got an unexpected keyword argument ‚api_key‘
>>>
== RESTART: /home/pi/Adafruit_Python_DHT/Adafruit_DHT/thingspeak_example.py ==
Traceback (most recent call last):
File „/home/pi/Adafruit_Python_DHT/Adafruit_DHT/thingspeak_example.py“, line 26, in
channel = thingspeak.channel(id=channel_id, write_key=write_key, api_key=read_key)
TypeError: __init__() got an unexpected keyword argument ‚api_key‘
>>>
cool… line 26 war Channel klein geschrieben… jetzt bekomme ich jedoch einen „connection fieled“
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170124] on linux2
Type „copyright“, „credits“ or „license()“ for more information.
>>>
== RESTART: /home/pi/Adafruit_Python_DHT/Adafruit_DHT/thingspeak_example.py ==
Warning (from warnings module):
File „/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py“, line 1294
warnings.warn(msg, UserWarning)
UserWarning: /home/pi/.cache/Python-Eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
connection failed
connection failed
Ich habe alles wie in der Anleitung beschrieben gemacht, jedoch bekomme ich den Fehlercode: There’s an error in your program: invalid syntax. Und es ist mein Read-API-Key rot markiert ( ich benutze die Version 2.7.9)
Vllt. kann mir ja jemand helfen
Hi,
viele Dank für das super Tutorial. Es hat alles super geklappt. Dennoch habe ich eine Frage: Wie müsste das Skript aussehen, wenn man einen zweiten DHT22 Sensor anschließt und die Daten ebenfalls auslesen und sich in zwei weiteren Feldern, field 3 und field 4 anzeigen lassen möchte? (z.B. Sensor 1 für Innen und Sensor 2 draußen).
Das jeweilige Skript für die Sensoren (unterschiedliche GPIOs: 4 und 21) funktioniert problemlos, nur wenn ich versuche beide Sensoren mithilfe eines Skrips auszulesen, dann bekomme ich nur die Daten für Field 1 und 2. Bei Field 3 und 4 wird nur „null“ geschrieben.
Dachte daran das Skript wie folgt zu erweitern:
channel_id…
write_key…
read_key…
pin = 4
pin2 = 21
sensor = Adafruit_DHT.DHT22
def measure (channel): … und so weiter
Die nachfoglenden Zeilen habe ich für den zweiten Sensor kopiert und entsprechend die Pin (pin2) angepasst.
Bisher konnte ich meinen Denkfehler nicht finden.
Schonmal vielen Dank für deine Hilfe,
Beste Grüße
Hallo
der Fehler liegt darin das nur alle 15 sek Daten auf das Portal gesendet werden können. Das Senden muß in einer Zeile erfolgen mit allen Feldern!
War auch mal weiter oben zu lesen.
Grüße Andreas
Nach etwas Fehlersuche zu „connection failed“ habe die Zeile 21 und 22 etwas angepasst
Statt:
except:
print(„connection failed“)
habe ich mir etwas mehr Informationen zu dem Fehler ausgeben lassen:
except OSError as err:
print („I got this error: “ + err)
Die Ausgabe war dann das folgende:Traceback (most recent call last):
File „thingspeak_dht22.py“, line 28, in
measure(Channel)
File „thingspeak_dht22.py“, line 13, in measure
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
File „/home/pi/Adafruit_DHT/Adafruit_DHT/common.py“, line 94, in read_retry
humidity, temperature = read(sensor, pin, platform)
File „/home/pi/Adafruit_DHT/Adafruit_DHT/common.py“, line 80, in read
platform = get_platform()
File „/home/pi/Adafruit_DHT/Adafruit_DHT/common.py“, line 55, in get_platform
from . import Raspberry_Pi_2
File „/home/pi/Adafruit_DHT/Adafruit_DHT/Raspberry_Pi_2.py“, line 22, in
from . import Raspberry_Pi_2_Driver as driver
ImportError: cannot import name Raspberry_Pi_2_Driver
Recherche zum „ImportError: cannot import name Raspberry_Pi_2_Driver“ brachte mich darauf, das Skript aus dem Ordner „Adafruit_DHT“ zu verschieben und schon klappte es sofort.
Hallo, was meinst du genau mit „Skript verschoben“? Welchen Skript genau und wohin? Den ganzen Ordner?
Hallo zusammen, bin noch ein Newbi im Thema und,habe das Tutorial ebenfalls mal Schritt für Schritt mitgemacht, aber ich bekomme keine Daten zu Thingspeak.
Wenn ich das Skript in der Shell starte bekomme ich die Ausgabe:
>> %Run thingspeak_beispiel.py
Traceback (most recent call last):
File „/home/pi/thingspeak_beispiel.py“, line 1, in
import thingspeak
ImportError: No module named ‚thingspeak‘
Wie kann ich den Fehler finden?
Hallo
habe das python script auf meinen Raspi 3 gepackt und bekomme ebenfalls die meldung connection failed.
jetz habe ich auch mal den gesammten Fehler mit OSError as err ausgeben lassen und bekomme folgende Thingspeak-Fehlermeldung:
[code]400 Client Error: Bad Request for url: https://api.thingspeak.com//update.json?field2=40.0999984741&api_key=xyz&field1=21.0%5B/code%5D
laut Thingspeak muss der api-key an erster stelle stehen und dann die felder die upgedatet werden sollen…
Wie wäre es möglich mehrere Sensoren gleichzeitig bzw. nacheinander auszulesen?
Ich müsste die Lüftfeuchtigkeit in mehreren Gefäßen kontrollieren. besten Dank!
Hallo, diese Fehlermeldung gab es schon öfter…
>>> %Run thingspeak_example.py
Traceback (most recent call last):
File „/home/pi/Adafruit_Python_DHT/examples/thingspeak_example.py“, line 1, in
import thingspeak.py
ImportError: No module named ‚thingspeak‘
bis jetzt habe ich keine Lösung gefunden, da ich absoluter Neuling bin, bitte ich um Hilfe
Danke schon mal im vorraus
Dear friends,
it is possible to use this way CO2 sensor? It is MH-Z19 CO2 sensor – air quality (very useful for Heat Recovery Ventilation). There are python scripts for RPi, but how to upload the data to thingspeak.com?
https://www.circuits.dk/testing-mh-z19-ndir-co2-sensor-module/
#Zum Thema: ImportError: No module named ‚thingspeak‘:
cd Adafruit_Python_DHT
sudo apt-get install build-essential python-dev python-openssl git
sudo python setup.py install –force
#Dann kann wie folgt das script gestartet werden:
cd examples
python thingspeak_example.py
sorry der setup befehl lautet: sudo python setup.py install –force
Hallo souljacker
Deine beiden Befehle sind immer noch identisch. Ich bekomme bei der Ausführung des Befehls (sudo python setup.py install –forcefolgende) Fehlermeldung:
invalid command name ‚–force‘
Oder kann es sein, dass ich irgendwo einen groben Fehler in meiner Programmierung vorher gemacht habe?
Gruß
Spike
Hallo
das Tutorial hat super funktioniert. Alles auf Anhieb geklappt.
Nun möchte ich für eine Wetterstation mehrere DHT22 Sensoren anschließen und messen.
Da ich selbst im programmieren total unerfahren bin, würde ich gerne wissen wie das Script geändert werden müsste um 2 oder 3 DHT22 abzugreifen? Hoffe mir kann jemand helfen.
Kann es sein, dass seit dem letzten Update für Raspbian irgendetwas geändert wurde? Bei der Abfrage benötigt er fast 10 Sekunden und die Daten bei thingspeak werden auch nicht mehr hochgeladen!?
Ich habe den Fehler bei mir gefunden. Durch das Update/Patch wurde der Autostart nach dem Reboot wohl nicht richtig ausgefühert. Ich habe mittels croentab jetzt eine Verzögerung von 3 Minuten eingebaut, jetzt läuft es wieder mit thingspeak!
cronetab -e
@reboot sleep 180: python /home/pi/thingspeak_example.py
Per crontab „@reboot“ hat es bei mir auch seit einigen Monaten nicht mehr funktioniert.
Habe dann mal deinen Tipp mit der Wartezeit ausprobiert und siehe da, es klappt wieder.
Danke für den Tipp!
Bei mir haben auch 60 Sekunden Wartezeit ausgereicht.
eine Kleinigkeit noch: Müsste nach der Wartezeit nicht ein ; statt dem : stehen?
@reboot sleep 60; /usr/bin/python /home/pi/Adafruit_Python_DHT/examples/thingspeak_example.py
Hallo zusammen,
habe den Tutorial (nach meinem Wissen) wie beschrieben umgesetzt.
Hatte zu Beginn das Problem, dass das Modul Thingspeak und danach Adafruit nicht gefunden wurde. Nachdem ich das Behoben hatte bekomme ich die Fehlermeldung „AttributeError: module ‚thingspeak‘ has no attribute ‚channel'“
Habe auch schon die ältere thingspeak installiert – aber ohne Erfolg.
Wie wird das attribute definiert?
Wie behoben?
Versuche jetzt schon seit zwei abenden diesen fehler zu beheben.
versucht mal den befehl
sudo pip3 install thingspeak
danach müsste es gehen
ich bekomme diese fehlermedlung, hat jemand ideen wie ich diese behebe?
python3 thingspeak_example.py
Traceback (most recent call last):
File „thingspeak_example.py“, line 26, in
channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)
TypeError: __init__() got an unexpected keyword argument ‚write_key‘
Hallo David,
ich bekomme die selbe Fehlermeldung. Hast du schon eine Lösung gefunden?
Beste Grüße
Hallo zusammen,
ich möchte auch die Daten in den Channels loggen und habe nach den oben genannten Installationsproblemen mit der Busterumgebung die Lösung – über ‚pip3‘ statt ‚pip‘ in der Instalaltionszeile von thingspeak zu nehmen – gefunden.
Jetzt stehe ich vor genau vor dem hier behandelten Problem, unexpected keyword argument ‚write_key‘.
Hat da jemand einen Ansatz? Liegt es evtl. auch an der anderen thingspeak-Version?
Bei Raspbian Buster Lite benötigt es noch das Paket
sudo apt-get install python-pip
sonst kommt der Fehler
sudo: pip: command not found
Hallo Markus, Hallo David,
habt ihr das Problem lösen können? Ich stehe vor dem selben Problem.
Vg
Hallo,
ich nutze Python 3 und bekomme diesen Fehler seit 2 Tagen nicht behoben:
__init__() got an unexpected keyword argument ‚write_key‘
Habe alles Lösungsansätze aus den Comments probiert:
– Verschieben der Ordner von thingspeak und Adafruit zu Adafruit_DHT
– pip3 Installation von thingspeak
Aber die thingspeak library macht weiterhin Problem und ich weiß nicht weiter.
Danke für die tolle Anleitung!
Diese Website hat mir schon sehr viel geholfen 😀
Die API hat sich leider etwas geändert.
Ich habe ihn aber korrigiert 🙂
Hier werden auch die Zahlen abgerundet, damit es nicht ewig lange Kommazahlen sind.
——————–
import thingspeak
import time
import Adafruit_DHT
channel_id = 1048324 # PUT CHANNEL ID HERE
write_key = ‚xxxxxxx‘ # PUT YOUR WRITE KEY HERE
pin = 4
sensor = Adafruit_DHT.DHT22
def measure(channel):
try:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
# write
response = channel.update({‚field1‘: round(temperature, 2), ‚field2‘: round(humidity, 2)})
# print
print(„Temp: {:.1f}°C Humidity: {}% „.format(round(temperature, 2), round(humidity, 2)))
except:
print(„connection failed“)
if __name__ == „__main__“:
channel = thingspeak.Channel(id=channel_id, api_key=write_key)
while True:
measure(channel)
# free account has an api limit of 15sec
time.sleep(15)
Vielen Dank für die aktualisierte Version mit dem geänderten Aufruf von thingspeak.Channel, hatte auch die Fehlermeldung „TypeError: __init__() got an unexpected keyword argument ‚write_key'“ und bin erst nicht auf das Problem gekommen, damit läufts 🙂
Vielen Dank @Mato für die aktualisierte Version mit dem neuen Aufruf von thingspeak.Channel, hatte auch erst die Fehlermeldung „TypeError: __init__() got an unexpected keyword argument ‚write_key'“ und hab das Problem nicht gefunden, mit dem neuen Aufruf läufts 🙂
Dabei benötigt man gar keinen Raspberry dafür.
Mit einen ESP 8266 ALLEINE und ein paar Zeilen Code funkt das genau so.
Keiner behauptet das Gegenteil 🙂
Hallo
Wie funktioniert das ganze mit einem bme680 sensor über i2c? Komme da nicht weiter.
Gruss
Hallo Felix,
ich hatte ebenfalls den fehler __init__() got an unexpacted keyword argument ´write_key´. Daraufhin habe ich den obenstehenden code von Mato genutzt. Daraufhin habe ich jedoch diese Fehlermeldung bekommen:
SyntaxError: invalid character in indentifier in zeile 6 bekommen. Danach wurden mir aber auch noch andere fehlermeldungen angezeigt, wie z.B. expected an indented block (zeile 11).
Kann mir jemand da weiterhelfen?
(übrigens: Ich nutze einen Raspberry 3b+ und habe erst vorgestern damit begonnen. Mein DHT11 Modul habe ich aus dem Elegoo Starterset für den Arduino. Ich nutze Python 3 und habe alle richtigen Bibliotheken heruntergeladen.)
Danke im voraus.
Hallo Felix,
ich nutze den code von Mato, da ich auch dieses Problem hatte. Jedoch scheint er noch Lehrzeichen zu erwarten und manche zeichen mag er nicht. Ich nutze übrigens Python version 3.8.4 und nutze den Raspberry erst seit vorgestern. Was kann ich tun?
Hallo,
Und zwar nutze ich Python 3.7.3 und versuche einen 3-Pin DHT 11 Sensor anzusteuern und diesen über Thingspeak auszulesen. Ich habe bereits den abgewandelten Code von einem anderen Kommentar hier benutzt, da ich den selben Fehler hatte wie die anderen. Allerdings habe ich immer noch einen Fehler:
Traceback (most recent call last):
File „/usr/lib/Python3.7/ast.py“, line 35, in parse
return compile (source, filename, mode, PyCF_ONLY_AST)
File „/home/pi/Adafruit_Python_DHT/DHT11-TS.py“, line 21
try:
^
IndentationError: expected an indented block
Ich hoffe jemand kann mir hier weiterhelfen.
Hallo,
danke für die Anleitung und das Skript.
Mit der Themperaturanzeige hat alles geklappt, aber wie bekomme ich das Skript bei ThingSpeak zum Laufen ? Welchen Befehl benötigt es noch…ich habe mich damit noch nicht beschäftigt und mir fehlt auch die Grundkenntnis dafür. Ich finde es aber eine tolle Sache und möchte so die Temperatur im Gewächshaus, über WLAN kontrollieren.
Vielleicht wäre jemand so nett und könnte mir bei der Fertigstellung behilflich sein. Ich würde mich sehr freuen, es wäre für mich sehr hilfreich. Danke !!!
Moin,
ganz herzlichen Dank für Deine Anleitung, Felix. Und auch wenn ich es jetzt länger versucht habe, habe ich immer Verbindungsprobleme. Die Situation findest Du zusammengefasst hier: https://www.dropbox.com/s/zx54ouhqib0278y/Log.png?dl=0 Was mache ich falsch ? Der Sensor spielt, die Dateien liegen in einem Ordner, der RasPi hat Zugriff auf ThingSpeak. Für Hinweise wäre ich sehr, sehr dankbar.
Viele Grüße
Markus
For whoever get so far as to the error „No module named Raspberry_Pi_2_Driver“
I just found the solution if you’re using Python 3:
sudo python setup.py install <- installs the Adafruit Clone for python2.
sudo python3 setup.py install <- installs it for python 3.
Hat jemand dieses Projekt mit dem Raspi 4b umsetzen können? Ich habe nämlich Probleme bei der Umsetzung und möchte den Fehler finden. Ich habe gelesen, dass es im Gegensatz zu Raspi 3 etc. Probleme auftreten könnten…
Meine Frage hat sich erledigt. Projekt läuft nun…
Hi,
welche Fehlermeldung hast du bekommen und wie gelöst? Ich nutze ebenfalls einen RPi 4 und erhalte „connection failed“.
Hallo bin noch neu im Thema,
d.h. nutze einen Raspberry 4 und DS18B20, immer wenn ich die Anwendung starte kommt connection failed, gibt es hierfür bereits eine Lösung?
Hey,
zwar schon älter, aber bei mir hat alles geklappt, aber es werden keine Daten übertragen.
Jemand eine Idee?
Habe leider auch keine Idee und stehe gerade vor dem gleichen Problem. Es will einfach keine Connection gelingen. DHT11 Sensor ist im Einsatz und läuft auch.
Hallo,
benötigt das script schreibrechte auf dem lokalen Dateisystem?
Ich nutze eine raspi und habe versucht das root Dateisystem read only zu machen,
leider bekomme ich dann ein connection failed, sobald das system wieder rw ist geht das script.
danke
Hey Rupert,
läuft es bei dir mittlerweile ?
Welchen Pi verwendest du ?
Ich habe einen Pi 4 sind momentan auch am verzweifeln.
ich hab einen älteren Pi, und auch ein älteres raspian.
Irgentwo hab ich gelesen das sich die libraries geändert haben, musst du mal suchen.
Die Anwendung läuft super, nur nicht im readonly Dateisystem.
Okay
lief es gleich auf Anhieb wie in dem Tutorial dargestellt ?
Ich habe folgende Meldung die noch bekomme.
Traceback (most recent call last):
File „./thingspeak_example.py“, line 31, in
channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)
TypeError: _init_() got an unexpected keyword argument ‚write_key‘
Weißt du da eine Lösung ?
Dein Problem mit dem write_key habe ich auch auf meinem Pi Zero W. Vor ein paar Jahren hat der Code tadellos funktioniert und ich stehe jetzt auch wie der Ochs vorm Berg.
Das Tutorial war von ein paar Jahren sehr hilfreich, las ich einen Logger mit einem Pi 3B und einem Pi Zero W gebaut habe. Leider funktioniert das alles nicht mehr; aus Gründen, die ich als Anfänger mit dem Raspi nicht verstehe.
Hallo,
hatte ich auch, aber wenn man in der Zeile nur den Write-key nutzt, dann werden die Daten geschrieben.
channel = thingspeak.Channel(id=channel_id, api_key=write_key).
Ich habe eher das Problem, das ich aus Bequemlichkeit in meiner Windows-Umgebung entwickeln möchte.
Dazu würde ich gerne VisualStudio Code nutzen.
aber wie bekomme ich dann hier die Libs importiert (unter Windows)?
Hallo, ich bekomme mit Python 3.7.3 beim Ausführen des Scripts immer den Connection failed Fehler. Was kann ich tun? Danke für Unterstützung.
Anbei ein Screenshot und die Fehlermeldung
https://drive.google.com/file/d/1aFM4iRKDTLJlBA7EwU5lbZIUEpZDx-ut/view?usp=drivesdk
Sensor ist ein DHT22 und an einer Pi Model b+ v1 2 angeschlossen
Hi, ich bin leider ein absoluter Anfänger.
Dein Tutorial bzgl. des Auslesens eines DS18B20 hab ich gemacht und (dank Deiner top Beschreibung) hat es auch prima geklappt.
Jetzt würde ich gerne gemäß dieses Tutorials insgesamt 4 DS18B20 verwenden und in einer DB protokollieren, aber ich bekomme dein o. g. Skript einfach nicht richtig umgeschrieben.
Kannst Du mir bitte helfen und sagen wie die Lösung ist?
Du schreibst:
…
import Adafruit_DHT #Das muss doch nicht rein, wenn ich den DS18B20 verwende?
…
channel_id = XXX # Die sind natürlich auf meine DB angepasst
write_key = XXX # Die sind natürlich auf meine DB angepasst
read_key = XXX # Die sind natürlich auf meine DB angepasst
…
pin = 4
sensor = Adafruit_DHT.DHT22 # Das muss natürlich raus, aber schreibe ich da nun: Sensor = DS18B20?
…
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) # Hier bin ich komplett raus. Ich habe keine Luftfeuchte zu messen, aber dafür 4x den gleichen Temperaturfühler
…
response = channel.update({‚field1‘: temperature, ‚field2‘: humidity}) # Hier auch so. Kann ich diese Felder einfach umbenennen?
…
Ich denke mal, dass der Rest so bleiben kann, oder?
Und noch eine Frage:
Bei dem Projekt „Raspberry Pi Temperatursensor (1-Wire)“ wird die Datei ohne *.py gespeichert und einfach nur mit „Temperature“ im Terminal aufgerufen. Hier geht das aber nicht.
Wenn ich es so ein gebe, kommt diese Meldung:
jim@raspberrypi:~ $ thinspeak_example.py
bash: thingspeak_example.py: Kommando nicht gefunden.
jim@raspberrypi:~ $
Sorry, wie gesagt, ich bin ein blutiger Anfänger, der gerade einen Knoten ins Hirn bekommt. 😉