kairostech-sw / kairoshub-configuration

0 stars 0 forks source link

CdU Sync Preferences 2/3 #12

Closed mfinotti closed 2 years ago

mfinotti commented 2 years ago

Tutti gli eventi preferences ed interni vengono accolti da un nuovo modulo appdaemon che si occupa di smistare gli eventi verso il modulo apprpriato.

Modulo KairoshubEvent

Aggiungere un nuovo modulo che rimane in ascolto dell'evento di sistema INBOUND_EVENT. Questo modulo ha lo scopo di instradare in modo chiaro e preciso i messaggi in arrivo dal cloud. In sostanza all'arrivo di un nuovo messaggio per questo evento verrà elaborato il json e sarà applicata la logica seguente:

Se il contenuto del messaggio contiene per la chiave eventType: SETTINGS allora il messaggio viene forwardato al modulo appropriato anteponendo al nome dell'eventType il prefisso AD_. Ad esempio, se si riceve un event type di tipo SETTINGS_SYNC, viene fatto il fire dell'evento AD_SETTINGS_SYNC con il contenuto del messaggio.

Se l'event type è di tipo diverso allora il messaggio viene, per il momento, solamente loggato a sistema.

Modulo KairoshubSettings

Aggiungere un nuovo modulo appdaemon che risponda agli eventi di tipo *_ADSETTINGS_**. Questo modulo si occuperà solamente della gestione dei settings di tutto il sistema.

syncPreferences

La funzione syncPreferences si occupa di applicare la logica di business alla sincronizzazione delle informazioni tra le entità HA <-> filesystem <-> cloud. Di seguito sono descritti i passi da eseguire:

  1. Recuperare gli stati e tutti gli attributi per le entità contenute nei gruppi homeassistant _USERSETTINGS e _FUNCTIONSETTINGS.
  2. Popolare il dizionario con i dati recuperati al punto precedente. Esempio dizionario: image
  3. Salvare il dizionario in formato json nel filesystem nella folder /home/pi/workspace. nome file kairoshubSettings.json
  4. Dispatch evento HAKAIROS_PRODUCER_PRODUCE sul topic: TECHNICAL messaggio: image