Cześć, ewidentnie coś mi umyka w tym temacie ponieważ próbuje złapać każdy błąd, Wszystkie z klasy Exception i dodatkowo KeyboardInterrupt do tego jeśli dobrze to zrozumiałem muszę użyć BaseException więc napisałem taki kod
#! /usr/bin/python3
import sys
from time import sleep
from reading_temp import temp_read
from mariadb_connection import connection, add_measurment, create_database, add_sensor
from tables import measurments, sensors
from pumps import initPins, clean, pumpOn, pumpOff
def main():
list_of_devices = '/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves'
universal_path = '/sys/bus/w1/devices/'
try:
initPins()
conn = None
while(conn == None):
conn = connection()
create_database(conn)
while(True):
current_tempratures = temp_read(list_of_devices, universal_path)
print(current_tempratures)
for temp, sensor in current_tempratures:
conn.execute(f'''insert into `{sensor}`(sensor_id, temprature)
values((select id from sensors where sensor_name = '{sensor}'), {temp})''')
if sensor == '28-5a1993d983ff':
tempCWU = temp
maxTemp = 50.0
hysteresis = 2.0
minTemp = maxTemp - hysteresis
if tempCWU <= minTemp:
pumpOn('CWU')
if tempCWU >= maxTemp:
pumpOff('CWU')
print('pump off')
sleep(30)
clean()
except BaseException as e:
print(e)
clean()
if __name__ == '__main__':
main()
Chciałbym żeby błędy zapisywały się do pliku ale nie mogę zapisywać jeśli nie mam żadnej wiadomości z błędem, i tutaj moje pytanie co źle zrozumiałem i co muszę zrobić aby dostać moją upragnioną wiadomość. Używam BaseExcaeption żeby zapisywać ręczne wyłączenie programu.
EDIT: Tak mnie jeszcze naszło, czasami read_temp zwróci głupotę (niestety taki urok podpiętej elektroniki) czyli wartość np 12667 która nie mieści się w widełkach temperatury w bazie max 4 cyfry, czy jest możliwość złapania takiego błędu, zapisać do jakiegoś log'a i kontynuować z kodem?