Hallo,
ich habe mit Python3 ein Script geschrieben um meine Heizung zu monitoren.
Das läuft auch wenn ich es aus Phython3 aufrufe.
Python
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re, time, sqlite3, os
#import tkinter
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#SQL anlegen/öffnen
conn = sqlite3.connect("Temperatur.db")
c = conn.cursor()
c.execute('''
CREATE TABLE IF NOT EXISTS heizung (
datenpunkt INTEGER PRIMARY KEY,
date DATE,
time TIME,
temperatur1 INTEGER,
temperatur2 INTEGER,
temperatur3 INTEGER,
temperatur4 INTEGER,
temperatur5 INTEGER,
temperatur6 INTEGER)''')
# function: read and parse sensor data file
def read_sensor(path):
value = "U"
try:
f = open(path, "r")
line = f.readline()
if re.match(r"([0-9a-f]{2} ){9}: crc=[0-9a-f]{2} YES", line):
line = f.readline()
m = re.match(r"([0-9a-f]{2} ){9}t=([+-]?[0-9]+)", line)
if m:
#value = m.group(2)
value = int(m.group(2))/1000
value = int(value)
#value = round(value, 1)
f.close()
except (IOError) as e:
print(time.strftime("%x %X"), "Error reading", path, ": ", e)
return value
uhrzeit = int(time.strftime("%S"))
#print(uhrzeit)
time.sleep(60 - uhrzeit)
try:
while True:
datum = time.strftime("%d.%m.%Y")
uhrzeit = time.strftime("%H:%M:%S")
timer1 = time.time()
temp1 = read_sensor("/sys/bus/w1/devices/28-0316643016ff/w1_slave")
temp2 = read_sensor("/sys/bus/w1/devices/28-0316645a5aff/w1_slave")
temp3 = read_sensor("/sys/bus/w1/devices/28-041663758bff/w1_slave")
temp4 = read_sensor("/sys/bus/w1/devices/28-041663c3e1ff/w1_slave")
temp5 = read_sensor("/sys/bus/w1/devices/28-041663feddff/w1_slave")
temp6 = read_sensor("/sys/bus/w1/devices/28-041663bf56ff/w1_slave")
c.execute("INSERT INTO heizung (date,time,temperatur1,temperatur2,temperatur3,temperatur4,temperatur5,temperatur6) VALUES (?,?,?,?,?,?,?,?);",
(datum, uhrzeit, temp1, temp2, temp3, temp4, temp5, temp6))
conn.commit()
if GPIO.input(26) == GPIO.LOW:
#print("shutdown")
conn.close()
GPIO.cleanup()
os.system("sudo shutdown -h now")
sleeptime = (time.time() - timer1)
time.sleep(30 - sleeptime)
except KeyboardInterrupt:
conn.close()
print("Datenerfassung beendet")
#tkinter.messagebox.showinfo("Test","Temperaturerfassung beendet")
Alles anzeigen
mit
habe ich auch die entsprechenden root Rechte vergeben. Diese sehe ich auch in den Dateieigenschaften.
Inhalte Anzeigen: Jeder
Inhalte ändern: Nur Besitzer
Ausführen: Jeder
in
steht
Versucht habe ich das Shebang zu ändern.
und ich habe in rc.local habe ich folgendes versucht
Code
/usr/bin/python3 /home/pi/Temperatur/TempEinlesen_Shutdown.py &
/usr/bin/python /home/pi/Temperatur/TempEinlesen_Shutdown.py &
python3 /home/pi/Temperatur/TempEinlesen_Shutdown.py &
python /home/pi/Temperatur/TempEinlesen_Shutdown.py &
/home/pi/Temperatur/TempEinlesen_Shutdown.py &
/bin/sleep 15 && /home/pi/Temperatur/TempEinlesen_Shutdown.py &
Alles anzeigen
Es will einfach nicht klappen.
Auch einen, wohl eher kurzen, Versuch mit crontab -e habe ich hinter mir.
Woran kann das liegen?
Ich habe meinen RaPi erst eine Woche und arbeite seit dem auch erst mit Python.
Gruß
Joker