Aktuelle Messdaten von DHT22 per Skript auf Webserver anzeigen
Verfasst: Samstag 20. April 2024, 22:21
Hi,
Ich bin neu im Forum, also erst einmal ein herzliches Hallo an alle. Meine Skript- und Programmierkenntnisse sind nicht allzu doll, zum Zusammenkopieren von Code-Schnipseln reicht es in der Regel aber doch.
Ich habe an meinem Pi einen DHT22 an die GPIO-Schnittstelle angeschlossen und erfasse alle 5 Minuten die Temperatur und die relative Luftfeuchtigkeit. Die Messergebnisse füge ich an eine csv-Datei an und das funktioniert alles wunderbar. Nun möchte ich gerne die aktuellsten Daten per Webbrowser einsehen können. Da mir nichts besseres eingefallen ist, lese ich per Python-Skript die letzte Zeile aus der csv-Datei aus und kopiere sie in die index.html meines Apache Webservers.
Leider benötigt das Skript root-Rechte, bzw. mehr Rechte als mein normaler User. Ein manuelles Ausführen mit sudo klappt ohne Probleme.
Dass das Skript root-Rechte braucht und der cronjob in der crontab des root-User liegt, stört mich. Habt ihr Ideen, wie man das eleganter lösen kann? Eventuell ohne root-Rechte?
Mein Skript:
Gruß
Tim
Ich bin neu im Forum, also erst einmal ein herzliches Hallo an alle. Meine Skript- und Programmierkenntnisse sind nicht allzu doll, zum Zusammenkopieren von Code-Schnipseln reicht es in der Regel aber doch.
Ich habe an meinem Pi einen DHT22 an die GPIO-Schnittstelle angeschlossen und erfasse alle 5 Minuten die Temperatur und die relative Luftfeuchtigkeit. Die Messergebnisse füge ich an eine csv-Datei an und das funktioniert alles wunderbar. Nun möchte ich gerne die aktuellsten Daten per Webbrowser einsehen können. Da mir nichts besseres eingefallen ist, lese ich per Python-Skript die letzte Zeile aus der csv-Datei aus und kopiere sie in die index.html meines Apache Webservers.
Leider benötigt das Skript root-Rechte, bzw. mehr Rechte als mein normaler User. Ein manuelles Ausführen mit sudo klappt ohne Probleme.
Dass das Skript root-Rechte braucht und der cronjob in der crontab des root-User liegt, stört mich. Habt ihr Ideen, wie man das eleganter lösen kann? Eventuell ohne root-Rechte?
Mein Skript:
Code: Alles auswählen
#!/usr/bin/env python3
import shutil
import os
with open("/home/tim/Adafruit_Python_DHT/examples/log.csv", "r") as f:
for line in f:
pass
last_line = line
data = [
"<html>\n"
"\t<head>\n"
"\t\t<title>Pi_Data</title>\n"
"\t</head>\n"
"\t<body>\n"
f"\t\t<h1>{last_line}</h1>"
"\n\t</body>\n"
"</html>"
]
file = open("/var/www/data/index.html", "w")
for line in data:
file.write(line + "\n")
file.close()
c = "sudo /etc/init.d/apache2 reload"
os.system(c)
Tim