roncoa / SmartHome

SmartHome: firmware per ESP8266 - Casa domotica
https://github.com/roncoa/SmartHome
GNU General Public License v3.0
37 stars 17 forks source link

Feature Request - LWT retained #6

Closed snakuzzo closed 4 years ago

snakuzzo commented 4 years ago

Ciao, ho dato un'occhiata al tuo firmware e volevo farti i complimenti. Se posso permettermi...sarebbe possibile prevedere un comportamento diverso per il LWT topic ? Mi spiego...ho notato che ad oggi il topic viene pubblicato con cadenza regolare sul broker MQTT. Solitamente si usa pubblicare l'online nel momento in cui il device si connette al broker...mentre l'offline viene pubblicato solo quando il device si disconnette dal broker (es. se passi in modalità configurazione o spegni/riavvii il device). Con il comportamento attuale se viene riavviato Home Assistant ad esempio e se per i vari switch, sensori, etc viene impostato l'availability_topic (com'è giusto che sia), questi risulteranno offline finché il device non pubblicherà nuovamente il topic LWT. Usando invece il comportamento classico di UNA sola pubblicazione con retain, nel momento in cui si riavvia HA si saprà istantaneamente lo stato reale del device.

Grazie e ancora complimenti

roncoa commented 4 years ago

Tutto quello che hai detto e' corretto. In SmartHome non ho mai usato la pubblicazione retained solo perche' non mi piace "sporcare" il broker MQTT, infatti tutti questi messaggi rimangono nel broker e si pubblicano in automatico ad ogni avvio, anche se il dispositivo non esiste piu' o e' stato programmato in modo diverso. La soluzione sarebbe eliminarli "a mano".

Tengo comunque in considerazione la tua proposta ;)

In Home Assistant ho visto anche io il problema del riavvio. Puoi aggirare il problema creando un'automazione che all'avvio di Home Assistant pubblica sul topic "ack" il payload "ack". Questo, fa le veci del LWT Online retained in quanto ad ogni avvio di HA chiede e riceve l'ACK dei nodi SmatHome.

Ciao

snakuzzo commented 4 years ago

Discorso comprensibilissimo quello di non sporcare il broker ed ovviamente ok anche il discorso dell'automazione (che avevo già fatto) allo start di HA e che comunque andrebbe fatta a prescindere così come si fa per altri device configurati via MQTT (come Tasmota e Shelly). Non mi ero accorto che la pubblicazione del topic 'ack' pubblicava anche il LWT...

homeassistant/switch/807d3a3e1d5f_INT0/config {"name":"Interruttore/1","command_topic":"Interruttore/1","payload_on":"on","payload_off":"off","state_topic":"Interruttore/1/ack","state_on":"on","state_off":"off","value_template":"{{value_json.STATO}}","availability_topic":"smarthome-prova-lwt","payload_available":"online","payload_not_available":"offline","unique_id":"807d3a3e1d5f_INT0","device":{"identifiers":["807d3a3e1d5f_INT0"],"name":"Interruttore/1","model":"SmartHome","sw_version":"SmartHome V7.0beta2","manufacturer":"roncoa@gmail.com"}}
ack {"MAC_address":"807d3a3e1d5f","NODO":"INT","Topic":"Interruttore/1","Topic_ACK":"Interruttore/1/ack","availability_topic":"smarthome-prova-lwt"}
smarthome-prova-lwt online
antjnm commented 4 years ago

Ciao, anch'io ho lo stesso problema, all'avvio di Home Assistant tutti i dispositivi Smarthome risultano non disponibili. Mi potresti spiegare meglio questa automazione. Grazie in anticipo.

snakuzzo commented 4 years ago

Usa questa automazione...

- alias: 'Announce SmartHome'
  trigger:
  - platform: homeassistant
    event: start
  action:
  - service: mqtt.pubblish
    data:
      topic: 'ack'
      payload: 'ack'

allo start di homeassistant pubblica un topic 'ack' con payload 'ack' e forza tutti i device smarthome connessi al broker MQTT a pubblicare il proprio stato, incluso il topic LWT

roncoa commented 4 years ago

Usa questa automazione...

- alias: 'Announce SmartHome'
  trigger:
  - platform: homeassistant
    event: start
  action:
  - service: mqtt.pubblish
    data:
      topic: 'ack'
      payload: 'ack'

allo start di homeassistant pubblica un topic 'ack' con payload 'ack' e forza tutti i device smarthome connessi al broker MQTT a pubblicare il proprio stato, incluso il topic LWT

Perfetto, il problema nasce dal fatto che riavviando HA , non viene riavviato Mosquito. Con l'automazione che ti hanno messo aggiri il problema 👍🏻

antjnm commented 4 years ago

ci sono riuscito!!!!!! grazie mille per la vostra disponibilità