Давно уже столкнулся с проблемой отображения сенсоров батарей из «Powerbank для дома«. Обе батареи на базе BMS от Daly, 2 очень похожих прошивки, но для мелкой батареи все сенсоры отображались, а от большой — только несколько штук. Причем, не было самых важных — например, процента заряда батареи. Добавил нужные через mqtt.yaml, потом как-то фокус сместился на новые проекты и батарею на базе JK BMS, поэтому проблему особо не копал.
Сейчас по случаю пересобрал батарею 5-ку — добавил наконец-то проставки между ячейками, а также сделал обжим всех ячеек — соответственно, занимался в том числе перепайкой обвязки и BMS’кой в целом. По мотивам того, что умеет JK — добавил в сенсоры разницу между самым высоким и самым низким значением напряжения, а пока это все стояло и балансировалось — очередной раз задумался насчет сенсоров. Уже и переименовал устройство, и удалял из MQTT-сервера, и из HA — ничего.
В общем. Если заглянуть в MQTT в ветку homeassistant — там есть кнопки / сенсоры / прочее, группированное по устройствам. Какая-то внутренняя кухня у HA при работе с MQTT. Что важно: в описании сенсора есть поле «uniq_id«. Значение — например, «ESPsensornbpu1_cell_voltage_5«, где есть «ESP, тип, имя хоста»_»название сенсора». Так вот, для обоих daly-based-устройств имя хоста отсутствует. В итоге имеем, например, «uniq_id»: «ESPsensorcell_1_voltage«. Для двух устройств — т.е., про уникальность уже речь не идет. В итоге HA работает только с тем устройством, который первый «застолбил» данный uniq_id и все. В конфиге mqtt.yaml id я задавал уже другие (чисто на автомате).
Как решить: в конфиге прошивки устройства в разделе mqtt можно задать принцип генерации этих uniq_id (и кое-что еще — я задал обе опции):
discovery_unique_id_generator: macdiscovery_object_id_generator: device_name
