Wetterstation Raspberry Pi – Python-Abscheidung und Speicherung mit SQLite

Die Fortsetzung bis zur Herstellung von unserer Wetterstation mit Raspberry Pi. Nach die Konfiguration der Übermittler und Montage der Gehäuse, abrufen Sie Messungen und speichern sie irgendwo.

Wetter

  1. Die Datenbank. Zum Speichern der empfangenen Daten haben wir eine SQLite-Datenbank definieren.In dieser Datenbank haben wir zwei Tabellen :
    Eine Tabelle für die Emittenten. Wir speichern die ID des Emittenten, seine Spannung mit Datum und Uhrzeit der letzten Aktualisierung, die Position des Senders (innerhalb oder außerhalb z.B.), die Häufigkeit der Erhebung von Daten.
  2. Installation von sqlite3 Datenbank steuern
    Install apt - Get install sqlite3
  3. Ntpdate um die genaue Zeit zu installieren
    Install apt - Get install ntpdate

    Dann manuell starten :

    Ntpdate pool.ntp.org

    Von crontab, Fügen Sie die Zeile für ein Update jede Stunde

    0 */1 * * * Ntpdate pool.ntp.org

    mithilfe des Befehls

    Crontab-e
  4. Installieren Sie Python für Skripting der Wiederherstellung für den seriellen port
    Install apt - Get install python
  5. Jetzt können Sie Ihre Datenbank erstellen. :
    Mkdir/Var/Www/Var/Www sqlite3 meteoPi.db cd

    Jetzt senden Sie die folgenden Befehle, um die verschiedenen Tabellen erstellen

    DROP TABLE IF EXISTS-Sender;
    CREATE TABLE Transmitter(TEXT-ID, ECHTE Volt, VoltUpdate TEXT, Lage TEXT, DataFreq TEXT, Typ TEXT);
    DROP TABLE IF EXISTS Maßnahmen;
    CREATE TABLE Maßnahmen(TEXT-ID, ECHTE Messung, DateMesure TEXT);
  6. In dieser Basis werden es nicht vergessen, erstellen Sie einen Eintrag durch Emittenten :
    INSERT INTO VALUES Transmitter('ZZ', 0.0, "2013-01-01 00:00:00.000', 'Garten', ' 0005 MICH, 'Temp');

    Für einen zweiten Sender zum Beispiel :

    INSERT INTO VALUES Transmitter('ZY', 0.0, "2013-01-01 00:00:00.000', "Erdgeschoss", ' 0005 MICH, 'Temp');
  7. Die Datenbank kann jetzt ! Hier ist das Python-Skript, das Fänge der Sonden zu speichern, wird :
    #!/Usr/bin/Env python
    # -*- Codierung: Latin-1 -*-
    
    Importieren von seriellen Import sqlite3 aus Zeit Import Schlaf, gmtime, Strftime Gerät = '/ Dev/ttyAMA0' BAUD = 9600
    
    con = None versuchen:
        Conn = sqlite3.connect('/var/ www/meteoPi.db')
    
        Drucken (strftime("%ein, %d %b %y %h:%M:%S: Start receptionn", gmtime()))
    
        SER = serielle.Serielle(GERÄT, BAUD)
        Während wahr:
            Drucken("%s: Wird überprüft..." % strftime("%ein, %d %b %y %h:%M:%S", gmtime()))
            n = ser.inWaiting()
            Wenn n != 0:
                Daten = ser.read(n)
                Nb_msg = Len(Daten) / 12
                denn ich im Bereich (0, nb_msg):
                    msg = Daten[Ich * 12:(i   1)*12]
                    Gerät = msg[1:3]
                    Date_mesure = Strftime("%Y-%m %-d %H:%M:%S.000", gmtime())
                    Wenn msg[3:7] == "TMPA":
                        Temp = msg[7:]
                        # INSERT De La Mesure Sql_command = "INSERT INTO Mesures VALUES('"+Gerät  "', "+Temp  ", '"+Date_mesure  "');"
                        Drucken("%s" % (sql_command))
                        Conn.Execute(sql_command)
                        Conn.Commit()
                    Wenn msg[3:7] == "BATT":
                        Spannung = msg[7:11]
                        Wenn Spannung == "LOW":
                            Spannung = 0
                        # UPDATE du composant Sql_command = "UPDATE Emetteurs SET Volt ="+Spannung  ", VoltUpdate ='"+Date_mesure  ""Wo Id =""+Gerät  "';"
                        Drucken("%s" % (sql_command))
                        Conn.Execute(sql_command)
                        Conn.Commit()
                    Drucken "Lignes Mist À jour :", Conn.total_changes Schlaf(1 * 30)
    
    außer sqlite3.Fehler, e:
    
        Drucken "Fehler %s:" % e.args[0]
        sys.Exit(1)
    
    Schließlich:
    
        Wenn Conn:
            Conn.Close()

    Der Beobachter bemerkt haben die Nachricht testen “BATT”. Alle die 10 Elemente, die Sie erhalten das Niveau des Akkus per Nachricht als die Temperatur, zum Beispiel 2.74 (auf der 3V Batterie Sender im Lieferumfang).
    Wenn Sie den niedrigen Wert erhalten, ist es Zeit, die Batterie wechseln !

Sie haben nun ein Werkzeug, um alle Maßnahmen zu speichern, die Sie erfassen !

Letzten Schritt : die Anzeige in einer Website (Beau vorzugsweise) !

Sie können auch mögen....