5
respostas

Sensor reed switch x HA (HASSIO)

Olá,

Estou usando o Home Assistant (HA - HASSIO) para monitorar um tanque de água com 2 sensores de nível de água (interruptor reed) usados:

  • d1 mini
  • switch reed - sensor de nível de água Eu uso o firmware tasmota no d1 mini.

Ele funciona sem problemas, mas se por algum motivo o Home Assistant reiniciar, perco o status que foi enviado para o mqtt para o HA.

Como faço para obter esse status novamente a partir dos sensores de nível?

5 respostas

Oi Leandro,

parece que o Home Assistant não persiste o ultimo estado, tudo fica volatile na memória e se perde ao reiniciar. No entanto achei uma config no MQTT para guardar sempre a ultima mensagem enviada. Na verdade é uma flag na hora de enviar uma mensagem (retainflag):

https://www.hivemq.com/blog/mqtt-essentials-part-8-retained-messages

Isso faz que uma nova conexão automaticamente recebe essa mensagem e não precisa aguardar até o sensor publica uma nova.

Para marcar uma mensagem como "retainable" basta setar o retainFlag como true:

https://www.hivemq.com/blog/mqtt-essentials-part-4-mqtt-publish-subscribe-unsubscribe

Espero que resolva pois nunca testei :)

abs, Nico

Meu amigo, o codigo já tem retain: true

veja:

  - platform: mqtt
    name: "tank1000 relay"
    state_topic: "stat/tank1000/POWER1"
    command_topic: "cmnd/tank1000/POWER1"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

  - platform: mqtt
    name: "tank1000 sensor up"
    state_topic: "stat/tank1000/POWER2"
    command_topic: "cmnd/tank1000/POWER2"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

  - platform: mqtt
    name: "tank1000 sensor down"
    state_topic: "stat/tank1000/POWER3"
    command_topic: "cmnd/tank1000/POWER3"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

  - platform: mqtt
    name: "tank3000 sensor up"
    state_topic: "stat/tank3000/POWER1"
    command_topic: "cmnd/tank3000/POWER1"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true    
  - platform: mqtt
    name: "tank3000 sensor down'"
    state_topic: "stat/tank3000/POWER2"
    command_topic: "cmnd/tank3000/POWER2"
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    retain: true

Oi Leandro,

entao retain nao funcionou :(

eu fiz uma pesquisa sobre "restore state" ou "persistent state" e vi que alguns usam o recorder component:

https://www.home-assistant.io/components/recorder/

eu nunca testei e seria legal se vc pudesse compartilhar aqui a sua experiencia :)

abs e desculpe por não consegui ajudar mais, Nico

resolvido com a seguinte solução alem do retain !!!

apliquei a seguinte solução:

alias: "Checa os sensores tank dagua iniciar Hassio"
id: "che001"
trigger:
  - platform: homeassistant
    event: start
action:
  - service: mqtt.publish
    data:
      topic: "cmnd/tank3000/power1"
      payload: ""
  - service: mqtt.publish
    data:
      topic: "cmnd/tank3000/power2"
      payload: ""
  - service: mqtt.publish
    data:
      topic: "cmnd/tank1000/power2"
      payload: ""
  - service: mqtt.publish
    data:
      topic: "cmnd/tank1000/power3"
      payload: ""

Oi Leandro,

obrigado por compartilhar conosco!!!

E parabéns pela solução.

abs, Nico