Closed mfinotti closed 2 years ago
Non è stato possibile testare.
Sul programma 1,2 sembra tutto funzionare, invece sul 3 si verifica il seguente problema:
2022-09-27 22:49:00.073264 INFO heating_manager: Starting Program 1 2022-09-27 22:49:00.075429 INFO heating_manager: Checking if another program is on 2022-09-27 22:49:00.077725 INFO heating_manager: Checking the heating program state 2022-09-27 22:49:00.084451 INFO heating_manager: Program 1 is not active right now 2022-09-27 22:49:10.061791 INFO heating_manager: Starting Program 2 2022-09-27 22:49:10.063767 INFO heating_manager: Checking if another program is on 2022-09-27 22:49:10.066284 INFO heating_manager: Checking the heating program state 2022-09-27 22:49:10.072126 INFO heating_manager: Program 2 is not active right now 2022-09-27 22:49:20.060455 INFO heating_manager: Starting Program 3 2022-09-27 22:49:20.062630 INFO heating_manager: Checking if another program is on 2022-09-27 22:49:20.064986 INFO heating_manager: Checking the heating program state 2022-09-27 22:49:20.069202 WARNING heating_manager: ------------------------------------------------------------ 2022-09-27 22:49:20.070072 WARNING heating_manager: Unexpected error in worker for App heating_manager: 2022-09-27 22:49:20.072012 WARNING heating_manager: Worker Ags: {'id': '08e67de25694406dbeef17c770efbbab', 'name': 'heating_manager', 'objectid': 'ee749b85ef2343fea213489f8f051d26', 'type': 'event', 'event': 'HA_MANAGE_HEATER', 'function': <bound method HeatingManager.handleHeatingProgram of <heatingManager.HeatingManager object at 0xf55d2c70>>, 'data': {'program': 'prog3', 'temperature': 24.1, 'on_off_heater': 'on', 'target_temp': 25.0, 'on_off_time_monday': {'on_time': '00:00:00', 'off_time': '00:00:00'}, 'on_off_time_tuesday': {'on_time': '19:30:00', 'off_time': '00:35:00'}, 'on_off_time_wednesday': {'on_time': '00:00:00', 'off_time': '00:00:00'}, 'on_off_time_thursday': {'on_time': '00:00:00', 'off_time': '00:00:00'}, 'on_off_time_friday': {'on_time': '00:00:00', 'off_time': '00:00:00'}, 'on_off_time_saturday': {'on_time': '00:00:00', 'off_time': '00:00:00'}, 'on_off_time_sunday': {'on_time': '00:00:00', 'off_time': '00:00:00'}, 'metadata': {'origin': 'LOCAL', 'time_fired': '2022-09-27T20:49:20.044503+00:00', 'context': {'id': '095b3c3696605e583a6abd97f27b115e', 'parent_id': None, 'user_id': None}}}, 'pin_app': True, 'pin_thread': 1, 'kwargs': {'__thread_id': 'thread-1'}} 2022-09-27 22:49:20.073243 WARNING heating_manager: ------------------------------------------------------------ 2022-09-27 22:49:20.074789 WARNING heating_manager: Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/appdaemon/threading.py", line 936, in worker funcref(args["event"], data, self.AD.events.sanitize_event_kwargs(app, args["kwargs"])) File "/conf/apps/heatingManager.py", line 48, in handleHeatingProgram on_time,off_time,status=self.getProgramSchedule(progID, data) File "/conf/apps/heatingManager.py", line 160, in getProgramSchedule self.setProgramSchedule(progID, kwargs) File "/conf/apps/heatingManager.py", line 185, in setProgramSchedule off_time=datetime.strptime(nextdate+off_time,"%Y-%m-%dT%H:%M:%S") TypeError: can only concatenate str (not "datetime.datetime") to str
2022-09-27 22:49:20.076376 WARNING heating_manager: ------------------------------------------------------------
Il file generato dall'applicazione appare nel modo seguente:
{"status": "running", "prog1": {"on_time": "2022-09-27T10:00:00", "off_time": "2022-09-27T11:00:00", "status": "not running"}, "prog2": {"on_time": "2022-09-27T18:25:00", "off_time": "2022-09-27T18:45:00", "status": "not running"}, "prog3": {"on_time": "1900-01-01T00:00:00", "off_time": "1900-01-01T00:00:00"}, "prog4": {"on_time": "1900-01-01T00:00:00", "off_time": "1900-01-01T00:00:00"}}
lo status è correttamente RUNNING
anche se il riscaldamento risulta spento. Programma 3, martedì accensione: 19:40, spegnimento: 00:30
Modificando i valori per programma 1, e 2, si ottiene lo stesso errore di prima, situazione senza uscita.
Abstract
Il modulo appdaemon
heatingManager
è l'unico deputato alla gestione del sistema di riscaldamento e rimane in ascolto di specifici eventi.Passi preliminari
E' necessario includere nel modulo tutte le entità necessarie alla corretta gestione delle funzionalità che si andranno a realizzare.
HEATING_VALVES
ricuperi entità per entità le informazioni e le organizzi in una struttura dati ordinata. denominatavalves
Informazioni da recuperare / organizzare:sensor.temperatura
AD_MQTT_PUBLISH
passando come valore il topic e il valore da pubblicare.Accensione manuale riscaldamento
L'accensione manuale del riscaldamento viene triggerata dall'evento
AD_HEATING_ON
, questo evento è deputato alla gestione e controllo del riscaldamento attraverso la funzione handleHeatingOnEvent che ha il compito di aggregare le informazioni necessarie all'invocazione della funzioneheatingOn
heatingOn function
La funzione in questione prende in input i seguenti parametri:
program:string
(obbligatorio) valori=manual | prog1 | prog2 | prog3 | prog4_trvs:list_
(obbligatorio) lista trv a sistemaLogica di business
targetTemperature
che èpari a 32 per program=manual oppure è uguale al valore della entity temperatura target associata al programma in oggetto. Ad esempio ad esempio:input_number.temperature_period1
per prog1valve= valves[x]
evalue=targetTemperature