GIGU
Lieutenant
- Registriert
- Juli 2005
- Beiträge
- 758
Guten Tag
Ich habe einige Jahre ein Raspi 2 in Betrieb. verbaut in einer Elektriker Abzweigdose mit Temperaturfühler, Kamera und kleinem Webserver wo das Ganze angezeigt wird. In der Dose habe ich noch ein L2C Display verbaut um vor Ort die Aussentemperatur zu sehen.
Letzten Herbst habe ich nach Jahre langem Dauerbetrieb den Raspi 2 ausgewechselt weil er Probleme machte (wieder ein Raspi 2) und gleichzeitig ein Update von RaspiOS 10.X auf (Debian) 11.X gemacht.
Seither friert mein Display in zufälligen Abständen ein. Das heisst, die Temperatur und Uhr bleibt einfach stehen. Manchmal nach Stunden, manchmal erst nach Wochen. Nach einem Neustart läuft es dann wieder weiter.
Auf dem Webserver wird alles richtig angezeigt. Es geht nur um das Display.
Ich bin kein Informatiker ich habe das damals alles nach Anleitungen zusammengestellt![Lächeln :) :)](/forum/styles/smilies/smile.gif)
Von V 10.X auf 11.X musste ich damals eine kleine Anpassung machen damit es überhaupt funktionierte. Ich glaube es war in der zweitletzten Spalte mit chr etwas.
Meine Frage: Ist der Code ok? Ich habe in den letzten Monaten immer wieder versucht etwas heraus zu finden. Oder könnte es sein, dass das Display beim wechseln vom PI auch einen Schaden abbekommen hat?
Danke für die Hilfe![Lächeln :) :)](/forum/styles/smilies/smile.gif)
Code:
Ich habe einige Jahre ein Raspi 2 in Betrieb. verbaut in einer Elektriker Abzweigdose mit Temperaturfühler, Kamera und kleinem Webserver wo das Ganze angezeigt wird. In der Dose habe ich noch ein L2C Display verbaut um vor Ort die Aussentemperatur zu sehen.
Letzten Herbst habe ich nach Jahre langem Dauerbetrieb den Raspi 2 ausgewechselt weil er Probleme machte (wieder ein Raspi 2) und gleichzeitig ein Update von RaspiOS 10.X auf (Debian) 11.X gemacht.
Seither friert mein Display in zufälligen Abständen ein. Das heisst, die Temperatur und Uhr bleibt einfach stehen. Manchmal nach Stunden, manchmal erst nach Wochen. Nach einem Neustart läuft es dann wieder weiter.
Auf dem Webserver wird alles richtig angezeigt. Es geht nur um das Display.
Ich bin kein Informatiker ich habe das damals alles nach Anleitungen zusammengestellt
![Lächeln :) :)](/forum/styles/smilies/smile.gif)
Von V 10.X auf 11.X musste ich damals eine kleine Anpassung machen damit es überhaupt funktionierte. Ich glaube es war in der zweitletzten Spalte mit chr etwas.
Meine Frage: Ist der Code ok? Ich habe in den letzten Monaten immer wieder versucht etwas heraus zu finden. Oder könnte es sein, dass das Display beim wechseln vom PI auch einen Schaden abbekommen hat?
Danke für die Hilfe
![Lächeln :) :)](/forum/styles/smilies/smile.gif)
Code:
import os
import glob
import time
import I2C_LCD_driver
mylcd = I2C_LCD_driver.lcd()
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28-00000833bb04')[0]
device_file = device_folder + '/w1_slave'
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
#CELSIUS CALCULATION
def read_temp_c():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = int(temp_string) / 1000.0 # TEMP_STRING IS THE SENSOR OUTPUT, MAKE SURE IT'S AN INTEGER TO DO THE MATH
temp_c = str(round(temp_c, 1)) # ROUND THE RESULT TO 1 PLACE AFTER THE DECIMAL, THEN CONVERT IT TO A STRING
return temp_c
#FAHRENHEIT CALCULATION
def read_temp_f():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_f = (int(temp_string) / 1000.0) * 9.0 / 5.0 + 32.0 # TEMP_STRING IS THE SENSOR OUTPUT, MAKE SURE IT'S AN INTEGER TO DO THE MATH
temp_f = str(round(temp_f, 1)) # ROUND THE RESULT TO 1 PLACE AFTER THE DECIMAL, THEN CONVERT IT TO A STRING
return temp_f
while True:
mylcd.lcd_display_string("Temp: " + read_temp_c() + chr(223) + "C", 1)
mylcd.lcd_display_string("Zeit: %s" %time.strftime("%H:%M:%S"), 2)