Hallo zusammen,
ich habe einige Pi's Zuhause und habe bisher immer einfache Projekte damit umgesetzt. Nun wollte ich mich ans Thema Klimalogger wagen. Python, PHP, MySql , usw. war bis dahin alles komplett Neuland für mich. Durch learning by doing bin ich bisher auch gut weiter gekommen, doch nun mit dem Latein am Ende und hoffe ihr könnt mir vielleicht ein paar Tips geben die mich weiter bringen.
Was bisher geht:
- Temperatur und Feuchtigkeit über DHT22 Sensor messen
- die Messwerte mit Datum und Zeit in 3 verschiedene Datenbanken schreiben
- Datenbank bzw. Messwerte über PhpLiteAdmin ansehen
Was nicht geht:
- Sich mit der Datenbank zu verbinden um die Werte auf einer PHP Seite anzeigen zu lassen
Was weiter geplant ist:
- Die Messwerte grafisch anzeigen
- diverse Durchschnittswerte bilden und anzeigen
Hier mein Python Code mit dem die Datenbank gefüttert wird.
#!/usr/bin/python
# Bibliotheken importieren
import Adafruit_DHT #Sensor
import time #Zeit
import sqlite3 #Datenbank
#Sensortyp und GPIO festlegen
sensor = Adafruit_DHT.DHT22
gpio = 4
# Daten auslesen
humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)
# Datum und Zeit formatieren
zeit=time.strftime("%H:%M")
datum=time.strftime("%Y.%m.%d")
#Datenbank oeffnen und Tabellen befuellen
conn = sqlite3.connect("/var/www/html/database/sensordaten.db")
conn.execute("INSERT INTO 'D.TEMP' (Datum,Zeit,Temp) \
VALUES ('%s', '%s','%2.1f')" %(datum,zeit,temperature));
conn.execute("INSERT INTO FEUCHTE (Datum,Zeit,Feuchte) \
VALUES ('%s', '%s','%2.1f')" %(datum,zeit,humidity));
conn.execute("INSERT INTO Datenlog (Datum,Zeit,Feuchte,Temp) \
VALUES ('%s', '%s','%2.1f','%2.1f')" %(datum,zeit,humidity,temperature));
#Datenbank schliessen
conn.commit()
conn.close()
Alles anzeigen
Meine Datenbank wurde mit sqlite3 erstellt und mit phpLiteAdmin habe ich die Tabellen definiert. Über MariaDB wird sie nicht angezeigt und ich kann sie dort auch nicht hinzufügen. Probiert habe ich dies über den Befehl
Über diesen PHP Code hab ich mit unterschiedlichsten Benutzernamen und Passwörtern probiert Zugriff zu bekommen. Immer vergeblich
<?php
error_reporting(E_ALL);
// Zum Aufbau der Verbindung zur Datenbank
define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', '' );
define ( 'MYSQL_KENNWORT', '' );
define ( 'MYSQL_DATENBANK', '/var/www/html/database/sensordaten.db' );
$db_link = mysqli_connect (MYSQL_HOST,
MYSQL_BENUTZER,
MYSQL_KENNWORT,
MYSQL_DATENBANK);
if ( $db_link )
{
echo 'Verbindung erfolgreich: ';
print_r( $db_link);
}
else
{
// hier sollte dann später dem Programmierer eine
// E-Mail mit dem Problem zukommen gelassen werden
die('keine Verbindung möglich: ' . mysqli_error());
}
?>
Alles anzeigen
Aber ich denke ich bin nun beim Schreiben von diesem Beitrag hier auf die Lösung gestoßen. Ich habe nebenher noch etwas recherchiert .... und dann fiel mir auf, die Lösung steckt ja schon in meinem Python Code. Dort greife ich ja schon auf meine Datenbank zu um sie dann zu beschreiben . Zum Auslesen und weiter verarbeiten brauche ich dann wohl nur anderen sqlite3 Code... manchmal sieht man den Wald vor lauter Bäumen nicht.
Oder gibt es doch eine Möglichkeit sich über den mysqli_connect Befehl auf die sqlite3 Datenbank zu verbinden?