Hallo zusammen,
ich bin gerade dabei p4d mit meiner Home Assistant Installation per MQTT zu verbinden was grundsätzlich auch funktioniert und bin echt begeistert wie gut p4d da hinhaut.
Alle Sensoren wurden dabei per aktiver "Config Topic" p4d Einstellung in der Home Assistant Installation automatisch gefunden und werden zum größten Teil auch korrekt angezeigt.
Jetzt ist mir aufgefallen, dass nur die Textfelder wie "Status" immer der Wert "unbekannt" im Home Assistant angezeigt werden, obwohl die konkreten Werte sauber in der MQTT Nachricht stehen. Nach Ursachenforschung bin ich nun auf das Problem gestoßen, dass bei diesen Felder im config Json das Feld unit_of_measurement angegeben ist und mit "" befüllt wird.
Dabei verschluckt sich der Home Assistant offensichtlich, wenn man die entsprechende MQTT Nachricht ohne das Feld unit_of_measurement übermittelt, funktioniert alles wie erwartet und die Daten tauchen im Home Assistant auf.
Ist dieses Problem eventuell schon bekannt? Ich bin zwar kein C Programmierer, aber für mich scheint auch in der aktuellen Version im File hass.c - wenn ich das richtig sehe - das Feld immer fix generiert, auch wenn sensor.unit.c_str() leer ist:
asprintf(&configJson, "{"
"\"state_topic\" : \"%s\","
"\"unit_of_measurement\" : \"%s\","
"\"value_template\" : \"{{ value_json.value }}\","
"\"name\" : \"%s %s\","
"\"unique_id\" : \"%s_" TARGET "2mqtt\""
"}",
sDataTopic.c_str(), sensor.unit.c_str(), sensor.title.c_str(), myTitle(), sName.c_str());
Hier gibt es übrigens das analoge Problem bei einer anderen Implementierung dieser Funktion
Derzeit habe ich zur Vollständigkeit die Version 0.9.40 im Einsatz die im Arm32 Docker Image n3m3515/docker-p4d enthalten ist.
Herzlichen Dank im Voraus!
Helmut