Closed snakuzzo closed 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
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
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.
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
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 👍🏻
ci sono riuscito!!!!!! grazie mille per la vostra disponibilità
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