Zum Inhalt

BMP085 spielt mit Google-Docs

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.

Google-Docs

 

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.

bmp085_gdocs_01

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.

bmp085_gdocs_02

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.

bmp085_gdocs_03

Nun lasse ich den Tabellenkopf schreiben.

bmp085_gdocs_04

Nach dem Initialisieren des Sensors startet hier auch schon die Endlosschleife mit der Messung.

bmp085_gdocs_05

Im sechsten Schritt erweitere ich das Arbeitsblatt um eine Zeile mit vier Spalten und schreibe die gemessen Werte in die Zellen.

bmp085_gdocs_06

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.

 

Published inRaspberry

7 Comments

  1. Dreamoffice Dreamoffice

    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

    • dasI dasI

      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

      • Dreamoffice Dreamoffice

        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

        • dasI dasI

          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

  2. Dreamoffice Dreamoffice

    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

  3. Josef Josef

    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

    • dasI dasI

      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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.