Hallo,
eines meiner ersten kleinen Projekte als Neuling mit dem Raspi 2 ist, ein altes Projekt vom Arduino zu übertragen.
Es handelt sich um eine kleine Wetterstation mit Python programmiert, bei der ich einen DHT22-Sensor (Temp und Feuchte) und einen BMP085 (Druck) auslese und die Messwerte auf einem LCD 16x2 darstelle. Zusätzlich werden die Daten noch in einer Datei auf einem USB-Stick (zum Schutz der SD-Karte) geloggt.
Diese funktioniert super.
Nun würde ich die Daten auch außerhalb des lokalen Netzes z.B. über Smartphone kontrollieren. Dazu sollen die drei Messwerte im Browser alle 30 Sekunden dargestellt werden.
Ich habe schon im Internet und auch hier leider erfolglos nach einem Tutorial / Lösungsansatz gesucht. Da ich sicherlich einen Webserver auf meinem Raspi benötige habe ich als Server lighttpd installiert. Funktioniert.
Getestet habe ich diesen mit einem kleinen Script mit "Formular"-Nutzung. D.h. HTML-Seite fordert zur Eingabe von Daten auf, diese werden an ein Python-Programm zur Auswertung gegeben, dass diese dann auf dem Browser darstellen. Findet man im Internet unter http://mschimmels.de/files/pythonbuch/ch23s08.html
Da meine Daten aber aus dem Python-Programm kommen, brauche ich keine Eingaben des Nutzers. Ich bekomme diesen Transfer einfach nicht hin.
Die aktuellen Messwerte werden von einem anderen Python-Programm erstellt und in 3 Textdateien temp.txt, hum.txt, und pres.txt gespeichert. In der Zeile print temp, hum, pres werden die Daten in der Python-shell richtig angezeigt.
Im HTML-Code habe ich erst die Überschrift. Die formatierte Anzeige folgt, wenn das Problem mit dem Browser gelöst ist. Ist ja dann nur noch HTML-Code.
Wer kann mir dabei helfen, wie ich die Anzeige der Daten auf den Browser umlenken kann?
Ich schicke mal mein Python-Programm mit:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#LESEN
import sys
import time
import cgi
while True:
try:
DateiTemp = open('/media/usb/temp.txt', 'r')
zeile = DateiTemp.readline()
temp = zeile
DateiTemp.close()
DateiHum = open('/media/usb/hum.txt', 'r')
zeile = DateiHum.readline()
hum = zeile
DateiHum.close()
DateiPres = open('/media/usb/pres.txt', 'r')
zeile = DateiPres.readline()
pres = zeile
DateiPres.close()
print temp, hum, pres
time.sleep(5)
# Web-Ausgabe
seite = """
<html>
<head> <title>Messwerte-Ausgabe</title> </head>
<body>
<p>Messwerte: </p>
</body>
</html> """
print("Content-type: text/html\n\n")
print(seite)
except KeyboardInterrupt:
DateiTemp.close()
DateiHum.close()
DateiPres.close()
sys.exit()
Alles anzeigen