Wie man die Temperatur und den barometrischen Druck mit einem BMP085 misst, die Werte in eine RRD-Datei schreibt und sich ein paar Graphen plotten lässt, habe ich hier [KLICK] schon erklärt. Nun wurde der Wunsch geäußert, diese Werte in ein Google-Dokument schreiben zu lassen. Da ich das mit einem DS 18S20 und der 1-wire-Messschaltung zwar mal ausprobiert, jedoch hier nie beschrieben habe, möchte ich das jetzt nachholen.
Alles was man zu benötigt, sind die Bibliotheken von Adafruit für den BMP085, gspread von Anton Burnashev und ein Google-Konto. Ich gehe davon aus, dass man meinen Artikel zum BMP085 [KLICK] durchgearbeitet hat und die Messung schon funktioniert. Somit gehe ich nicht mehr auf das Installieren der nötigen Bibliotheken von Adafruit ein.
Die Google Spreadsheets Python API (gspread) muss auf dem Pi installiert sein. Dazu benötigt es nur die folgenden drei Zeilen, welche ihr über die Konsole ausführt:
- git clone https://github.com/burnash/gspread.git
- cd gspread
- sudo python setup.py install
Danach erstellt ihr euch über euer Google-Konto eine neue Tabellen-Arbeitsmappe [KLICK]. Ich habe mir für meinen Raspberry Pi ein eigenes Google-Konto erstellt. Das empfehle ich euch auch. Meine neue Arbeitsmappe trägt den Namen „Messungen“. Dieser Name ist in sofern wichtig, da ihr ihn im nachfolgenden Script hinterlegen müsst, damit alle aufgenommen Werte in dies Arbeitsmappe in ein Arbeitsblatt (worksheet) geschrieben werden können. Nun wären alle Voraussetzungen für unsere Übung geschaffen und wir können mit dem eigentlichen Script beginnen.
Am Anfang stehen, wie immer, wieder alle nötigen Bibliotheken, welche wir für das Script benötigen. Hier sind, neben den Standardbibliotheken, die Bibliothek für den Sensor und für gspread wichtig.
Darunter stehen alle wichtigen Variablen. Unter Anderen muss hier das Google-Konto und das zugehörige Passwort hinterlegt werden. Ich habe es mir hier erspart, meine Daten hier zu hinterlegen, da mein Raspberry nur ungern Mails empfängt. 🙂 Ich denke die restlichen Variablen werden durch die Kommentare gut erklärt.
Im dritten Teil meldet sich das Script bei Google-Docs an und öffnet die zuvor erstellte Arbeitsmappe (spreadsheet). Hier solltet ihr den richtigen Namen hinterlegen, da das die Basis für alle weiteren Schritte ist. Meine Arbeitsmappe heißt „Messungen“ und wird hier geöffnet, um ein neues Arbeitsblatt zu erstellen. Ich habe den Namen des Arbeitsblattes um das aktuelle Datum und die Uhrzeit erweitert, da sonst – beim mehrmaligen Starten des Scripts und bei Vorhandensein von mehreren Arbeitsblättern mit dem gleichen Namen – das Anfügen neuer Zeilen zu einem Fehler führt.
Nun lasse ich den Tabellenkopf schreiben.
Nach dem Initialisieren des Sensors startet hier auch schon die Endlosschleife mit der Messung.
Im sechsten Schritt erweitere ich das Arbeitsblatt um eine Zeile mit vier Spalten und schreibe die gemessen Werte in die Zellen.
Wenn man den Wert der Variable direkt in die Tabelle schreiben lässt, dann vermutet Google-Docs hinter dem Temperaturwert ein Datum und formatiert das auch entsprechend. Da stehen da plötzlich keine 24,05 °C, sondern der 24.05.2013. Deshalb lasse hier die Messwerte in einen String umwandeln und die Punkte durch Kommas ersetzen.
- str(bmp085_temp).replace(„.“,“,“)
Danach kommt nur noch das typische Warten bis zur nächsten Messung und wir sind am Ende des Scripts angelangt. Damit ihr den Quatsch nicht abtippen müsst und da ich den Code als Bilder hier veröffentlicht habe, gibt es wie immer das Script als Download. [KLICK]
Das Script startet ihr über die Konsole mit:
- sudo python BMP085_googledoc.py
Viel Spaß beim Ausprobieren und ich freue mich immer über Rückmeldungen oder Fragen.
Hallo
danke fuer das tolle tutorial. ich bekomme mit dem adafruit skript alles uebertragen auf Google Docs doch bei dem skript hier kommt immer nur diese Meldung:
-bash: BMP085_googledoc.py: command not found
Ich weiss leider nicht wo das problem liegt
Gruesse Dreamoffice
Hi Dreamoffice! Ich denke das liegt daran, dass ich hier nicht geschrieben habe, dass man das Script mit
sudo python BMP085_googledoc.py
in der Konsole starten muss. Danke für den Hinweis. Ich habe das ergänzt. Gruß, dasI
Hallo DasI
nun schreibt er mir das hier. Zeile 5 ist aber leer
pi@raspberrypi ~/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085 $ sudo python BMP085_googledoc.py
File „BMP085_googledoc.py“, line 5
SyntaxError: Non-ASCII character ‚xc3‘ in file BMP085_googledoc.py on line 5, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Hi Dreamoffice. Python gibt Dir da schon einen Hinweis: Er kommt mit dem Encoding nicht klar. Das hängt mit den ersten zwei Zeilen, den verwendeten Umlauten im Script und Deinem Editor zusammen.
Was nutzt Du für einen Editor auf dem Pi und mit welchen Encoding arbeitet der? Ich arbeite ausschließlich über SSH auf dem Raspberry und nutze als Editor jed oder vim. Wie sieht das Script bei Dir auch dem Bildschirm aus?
Alternative: Ersetze alle Umlaute im Script und entferne die zweite Zeile komplett aus dem Script. Dann sollte es auch gehen. Gruß, dasI
Hallo DasI
danke für den Hinweis. Ich habe jetzt Zeile 3, also die zweite Zeile Text gelöscht und alle Umlaute ersetzt jetzt geht es problem los. zum Editieren deines scripts nehme ich Notepad++ und lade die Datei dann mit WINSCP auf den Raspberry.
Normal nehme ich als Editor auf dem Raspberry den nano editor.
jetzt geht es, vielen dank mal fürs erste jetzt kann ich mich an die weitere einrichtung machen. Mach weiter so deine Seite ist wirklich hilfreich.
Gruss Dreamoffice
Hallo,
bei mir schreibt er die ganze zeit den Fehler in der Konsole „ImportError: No module named Adafruit_BMP085“
Wie kann ich dieses Problem lösen?
mfg Josef
Hi Josef. Dein Script sollte im gleichen Verzeichnis liegen, in dem auch das Modul von Adafruit liegt. Sonst funktioniert das nicht. Alternativ kannst Du auch den Pfad zum Modul in Deinem Script angeben. Versuche mal vor dem Import-Befehl ein sys.path.append(pfad zur Adafruid_Modul) zu schreiben.
Gruß, dasI
Hallo,
ich bekomme bei mir immer die Fehlermeldung:
Traceback (most recent call last):
File „BMP085_googledoc.py“, line 24, in
gc = gspread.login(mail, mailpsw)
AttributeError: ‚module‘ object has no attribute ‚login‘
Bin leider kompletter Anfänger und habe deshalb keine Ahnung 😀
Ich habe vorher die gspread.git runtergeladen und installiert wie beschrieben .
Habe auch die Anmeldedaten und das Passwort meines Gmail accounts angegeben und mittlerweile gefühlt hundert mal kontrolliert.
Wäre super wenn ihr mir helfen könntet 🙂
Gruß Thomas