Чистим MQTT DB от ненужного хлама в Home Assistant

Чтобы понять, о чем идет речь – внимательно посмотрим на скриншот ниже. Это некий такой $рач, который у нас может остаться после различных mqtt манипуляций данных от наших сенсоров. Их не прибить средствами HA. 

Некие данные он собрал с сенсоров и передал нам через протокол с различными типами топиков. Топики представляют собой символы с кодировкой UTF-8. Иерархическая структура топиков имеет формат «дерева», что упрощает их организацию и доступ к данным. Топики состоят из одного или нескольких уровней, которые разделены между собой символом «/». Данные с топиков устройств могут быть влажность, температура, заряд и т.п. Научимся чистить их весьма аккуратно. Например имеем в системе HA дублирующий или не нужный нам сенсор (он справа внизу на скрине, наш подопытный кролик)

Идем в HA -> Инструменты разработчика – Состояния … ищем, то что нам нужно для удаления

sensor.___battery_15

он имеет данные

entity_id: cover.curtain_158d0001299c3a
mqtt_state_topic: homeassistant/sensor/curtain_158d0001299c3a_battery/state
friendly_name: Шторы в Спальне Battery
mqtt_config_topic: homeassistant/sensor/curtain_158d0001299c3a_battery/config
unit_of_measurement: %
device_class: battery
attribute: battery_level

наша задача прибить эту гадость с главной страницы HA, так как этот сенсор нам более не нужен. Для начала топаем на сайт https://mqttfx.jensd.de/index.php/download и качаем клиент под нужную нам платформу, подключаемся и видим все наши топики в перемешку с действующими. Тут нужно быть аккауратным. С помощью этого клиента изучаем все, что есть в нашей базе брокера (сама база находится в hassbian: /var/lib/mosquitto/mosquitto.db)

все данные для подключения у нас настроены в configuratiom.yaml HA (у меня эт овыглядит вот так)

mqtt:
  broker: 192.168.1.30
  port: 1883
  keepalive: 60
  client_id: home-assistant
  username: mylogin
  password: mypassword
  discovery: true
  discovery_prefix: homeassistant

Чет я шаманил, шаманил … в этом клиенте – в итоге вместо одного сенсора – прибил все. 🙂 поэтому сделайте сразу бэкап базы. А клиент хороший .. 🙂

Теперь топаем в cli нашего Linux. И проделываем с нужными нам топиками процедуру вычищения из базы. Делаем внимательно – медленно и аккуратно 🙂

mosquitto_pub -h 192.168.1.30 -p 1883 -u mylogin -P mypassword -t "homeassistant/sensor/curtain_158d0001299c3a_battery/state" -m '' -r
mosquitto_pub -h 192.168.1.30 -p 1883 -u mylogin -P mypassword -t "homeassistant/sensor/curtain_158d0001299c3a_battery/config" -m '' -r

где: отправить в топик -m ‘‘ (пустое сообщение), то он самоликвидируется. неа. не прохлявило. ключ -r помог. 🙂

заметил, что достаточно прибить такую запись homeassistant/sensor/curtain_158d0001299c3a_battery/config, как сенсор сразу исчезает. Далее если залезть в Интеграции панель HA

можно видеть не очень хорошую картинку

Со временем это исчезнет. У меня как таковых было порядка полсотни, это все что осталось 🙂 Можно ускорить процесс, прибить mqtt discovery

После чего нужно рестартануть сервис Home Assistant.

sudo systemctl restart home-assistant@homeassistant.service

Наш подопытный сенсор исчез 🙂 К сожалению так придется проделать с каждым … Если кто знает, как можно упростить эту процедуру – буду признателен.

PS: полность очистить mqtt базу в hassbian

sudo service mosquitto stop
sudo rm /var/lib/mosquitto/mosquitto.db
sudo service mosquitto start
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x