Mqtt <-> Lora Gateway (Homeassistant)

Proof Concept Alpha 0.0001

Gateway:

Node:

MQTT:

Boa tarde pessoal.

Estou a desenvolver um projeto que envolver sensores de humidade de solo que usam a tecnologia LoRa e recorro ao MQTT para obter os dados no HA.

Até ao momento tudo a funcionar minimamente bem, mas preciso de ajustar pequenos detalhes.

Um deles tem a ver com o facto do HA assumir os últimos valores do sensor como os atuais e isto causa uma má leitura ao utilizador.

Tenho os sensores configurados com um timeout de 1h:5m pois eles enviam dados de 1/1h caso o envio nao seja feito o sensor no HA fica unavailable e obrigara ao utilizador a ir ao terreno verificar a causa.

Caso eu reinicie o HA o sensor identifica o ultimo valor como atual e terei de aguardar 1h:5m para obter o unavailable.

Terá alguma coisa ligada ao Retain no MQTT ou tenho de fazer algo mais?

    String commonSensorBattInfo =
    commonAvailabilityConfig +
    "\"icon\": \"mdi:battery\","
    "\"expire_after\": \"4200\","
    "\"state_class\": \"measurement\","
    "\"device_class\": \"battery\","
    "\"unit_of_measurement\": \"%\"";

    for (int i = 1; i <= 8; i++) {
        String battConfig = 
            "{\"name\": \"Sector " + String(i) + " Battery\","
            "\"unique_id\": \"sector_" + String(i) + "_battery\","
            "\"state_topic\": \"" + String(mqttTopic) + "/s" + String(i) + "_battery/state\","
            + commonSensorBattInfo + ","
            "\"dev\": " + commonDeviceInfo + "}";

        String topic = "homeassistant/sensor/" + String(mqttTopic) + "/s" + String(i) + "_battery/config";

        mqttClient.publish(topic.c_str(), battConfig.c_str(), false);
    }

Deixo aqui uma pequena parte do meu código e como podem ver eu já estou a usar o RETAIN como false e mesmo assim o problema mantem-se.

Tenho os sensores configurados com um timeout de 1h:5m pois eles enviam dados de 1/1h caso o envio nao seja feito o sensor no HA fica unavailable e obrigara ao utilizador a ir ao terreno verificar a causa.

Tira o timeout.

Envia um counter também, ou mais décimas.

Quando o HA reinicia dá sempre a ideia errada.

Neste momento assim fica tudo unknown:

(Apenas como exemplo)


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade