0
Answered

Home Assistant

Виталий 4 years ago in General questions updated by Alexey 2 weeks ago 55

How to integrate into Home assistant ? There is also MQTT

GOOD, I'M SATISFIED
Satisfaction mark by Виталий 4 years ago
Answered

Добрый день.

Если Home Assistant работает как MQTT сервер (брокер), то надо знать минимальные данные для подключения клиентов: адрес сервера, порт, логин, пароль.


Пропишите эти данные в настройках устройства и он будет ежеминутно отправлять топики со всеми данными на сервер.
Смотрите инструкцию или статью в Базе Знаний:
https://support.smart-mac.com/knowledge-bases/2/articles/175-mqtt-klient
+1

Начал разбираться и понял что у Вас используется TLS/SSL ..в брокере "home Assistant" почти всё локально и там используют TCP . в логах вижу это-      . во всех примерах mqtt у Вас используются для передачи данных через интернет.  Можно это как то оргнизовать локально через tcp?

1570898669: New client connected from 192.168.1.159 as "серийник счётчика" (p2, c1, k15, u'user').
1570898691: Client "серийник счётчика" has exceeded timeout, disconnecting

Для связи с MQTT используется не шифрованное соединение.

Все, что надо знать, это минимальные данные для подключения клиентов: адрес сервера, порт, логин, пароль.

Посмотрите статью в Базе Знаний.

https://support.smart-mac.com/knowledge-bases/2/articles/175-mqtt-klient

В качестве адреса, можно указать IP адрес вашего сервера.

Сейчас так и указано. по логам видно что он пытается присоединиться но не может . ip port логин пароль я вписал он сервера Home assistant(HA). пока единственная зацепка что у вас в документации указанно что обмен идёт по TLS/SSL а все доступные порты брокера HA это tcp . или это не должно иметь значения ? и сервер и счётчик сидят на одном роутере. В сетях особо не разбираюсь но покупал именно для этой  интеграции...

в логах k15 это время ожидания . У Вас написано что данные отправляются каждую минуту . т.е 45 секунд бездействия может и вызывают разрыв соединения ? сейчас читал про подобную проблему в другой связке устройств . там вышли из положения  добавив задержу на стороне посылающего устройства . https://community.home-assistant.io/t/mqtt-disconnects-tried-keepalive-but-no-go-esp8266-board/124332

может быть как то можно получать новые данные каждые 10 секунд ?  я так понимаю эти 15 секунд (k15) заложены на стороне вашего устройства? 

вы как-то решили проблему 15 секунд? У меня аналогичная проблема на опенхабе

Какой тайм-аут нужен?

Сейчас 15 секунд.

Соединение разрывается, через 45 секунд устанавливается новое соединение с брокером.

подписка на сухой контакт только работает 15 секунд из 60, судя по всему

Если переключение реле попало на период коннекта (15сек), то реле переключится сразу. Иначе, устройство прочтет топик управления реле при следующей сессии в течении <=45сек

+1

эта схема работает только для retain сообщений, по умолчанию они не такие, это бы в мане написать

Мы посмотрим, чтобы увеличить тайм-аут и держать связь с брокером постоянно.

Но для надежности, топики для управления реле отправляйте с флагом retain.

И в мануале добавим информацию по этому поводу, спасибо.

TLS/SSL это шифрованное соединение, а устройство связывается по не шифрованному, как раз по TCP.

Проверьте топики, он может открыть соединение, оставить топик и закрыть соединение.

+7

Вообщем потрачен день но проблема решена. Спасибо за быстрый отклик и отсев неправильных вариантов.

в HA необходимо для каждого топика создать сенсор иначе их никак не увидеть . 

пример-

sensor:

- platform: mqtt
    name: "фаза 1"
    state_topic: "*серийный номер счётчика* .V1"

+5

Супер, день потрачен не зря. Кому-то сохраните этот день :)

+8

Что бы подключить в Homeassistant нужно в HA установить брокер mqtt в интеграции, задать в нем логин пароль, (либо по дефолту это ваш логин и пароль для входа в HA) - как mqtt ставить миллион видео на Youtube.

Советую через интеграции потому что тогда он будет попадать в Snapshot файла бекапа HA.

Далее на самом устройстве smart mac добавить адрес сервера куда ему слать свои показания.

Но это еще не все, просто так в обьектах (entities) счетчики не покажутся, их нужно добавить в sensor.yaml

мой конфиг для sensor.yaml (Внимание форум не поддерживает yaml синтаксис поэтому кривит, при Copy-paste могут лезть ошибки, пробелы нужно подкорректировать)

Название топика у вас будет другое   1728053828.V1   - подчеркнутое это ID счетчика - у вас будет оно другое!

- platform: mqtt
  name: faze1
  state_topic: 1728053828.V1
- platform: mqtt
  name: faze2
  state_topic: 1728053828.V2
- platform: mqtt
  name: faze3
  state_topic: 1728053828.V3
- platform: mqtt
   name: AMPER1
   state_topic: 1728053828.A1
- platform: mqtt
   name: AMPER2
   state_topic: 1728053828.A2
- platform: mqtt
   name: AMPER3
   state_topic: 1728053828.A3
- platform: mqtt
   name: KWATT1
   state_topic: 1728053828.KWh1
- platform: mqtt
   name: KWATT2
   state_topic: 1728053828.KWh2
- platform: mqtt
   name: KWATT3
   state_topic: 1728053828.KWh3
- platform: mqtt
   name: PF1
  state_topic: 1728053828.PF1
- platform: mqtt
  name: PF2
state_topic: 1728053828.PF2
- platform: mqtt
  name: PF3
  state_topic: 1728053828.PF3
## - это добавлены сенсоры которые дает счетчик после этого они появятся как entities в HA с именем как назовете faze1 например у меня##

- platform: template
  sensors:
    kwatttotall:
    friendly_name: "energy kWh (total)"
    unit_of_measurement: 'кВт'
    value_template: "{{ (states('sensor.kwatt1') |float + states('sensor.kwatt2') |float + states('sensor.kwatt3') | float) | round(1) }}"
- platform: template
   sensors:
  kw1:
  friendly_name: "потреблениеФ1"
  unit_of_measurement: 'кВт'
  value_template: "{{ (states('sensor.faze1') | float * states('sensor.amper1') | float /1000 * states('sensor.pf1') | float) | round(1) }}"
- platform: template
  sensors:
  kw2:
  friendly_name: "потреблениеФ2"
  unit_of_measurement: 'кВт'
  value_template: "{{ (states('sensor.faze2') | float * states('sensor.amper2') | float /1000 * states('sensor.pf2') | float) | round(1) }}"
- platform: template
  sensors:
  kw3:
  friendly_name: "потреблениеФ3"
  unit_of_measurement: 'кВт'
  value_template: "{{ (states('sensor.faze3') | float * states('sensor.amper3') | float /1000 * states('sensor.pf3') | float) | round(1) }}"
- platform: template
sensors:
kwall:
friendly_name: "потребление общее"
unit_of_measurement: 'кВт'
value_template: "{{ (states('sensor.kw1') | float + states('sensor.kw2') | float + states('sensor.kw3') | float) | round(0) }}"

##-а это добавлены сенсоры которые получаются из арифметических сложений и умножений тех сенсоров которые дал счетчик, например узнать мощность - Вольты *амперы *коэффициент и потребленное за все время - три показателя засумированы.

а уже после этого в lovelace yaml добавлять

- title: Server
icon: mdi:current-ac

cards:

- type: vertical-stack
cards:

- type: markdown
content: >
**Текущее состояние**

- type: entities
show_header_toggle: false
entities:
- entity: sensor.time
name: Текущее время
icon: mdi:clock-outline
- entity: sensor.date
name: Дата
icon: mdi:calendar-check-outline






- type: vertical-stack
cards:
- type: markdown
content: >
**Электроэнергия**

#напряжение
- type: horizontal-stack
cards:
- type: gauge
name: Фаза 1
unit: 'V'
entity: sensor.faze1
severity:
yellow: 60
green: 220
red: 246
- type: gauge
name: Фаза 2
unit: 'V'
entity: sensor.faze2
severity:
yellow: 60
green: 220
red: 246
- type: gauge
name: Фаза 3
unit: 'V'
entity: sensor.faze3
severity:
yellow: 60
green: 220
red: 246
#Амперы
- type: horizontal-stack
cards:

- type: gauge
name: ТОК 1
unit: 'A'
entity: sensor.amper1
severity:
green: 1
yellow: 8
red: 25

- type: gauge
name: ТОК 2
unit: 'A'
entity: sensor.amper2
severity:
green: 1
yellow: 8
red: 25
- type: gauge
name: ТОК 3
unit: 'A'
entity: sensor.amper3
severity:
green: 1
yellow: 8
red: 25

#КВатты
- type: horizontal-stack
cards:
- type: gauge
name: Нагрузка 1
unit: 'кВт'
entity: sensor.kw1
severity:
green: 1
yellow: 8
red: 25
- type: gauge
name: Нагрузка 2
unit: 'кВт'
entity: sensor.kw2
severity:
green: 1
yellow: 8
red: 25
- type: gauge
name: Нагрузка 3
unit: 'кВт'
entity: sensor.kw3
severity:
green: 1
yellow: 8
red: 25
- type: horizontal-stack
cards:
- type: gauge
name: Нагрузка по всем фазам
unit: 'кВт'
entity: sensor.kwall
severity:
green: 1
yellow: 8
red: 25


#общее потребление - тут нужно поставить модуль multiple-entitiyrow в HACS или через github#

- entity: sensor.kwatttotall
type: custom:multiple-entity-row
name: общее потребление
icon: mdi:current-ac
secondary_info: false
state_header: общее
entities:
- entity: sensor.kwatt1
name: кВт1
- entity: sensor.kwatt2
name: кВт2
- entity: sensor.kwatt3
name: кВт3

в конце получается что то  типа такого

Image 867

Вот такой мануальчик, если бы был мне такой, перед тем как начал, было бы отлично

+4

Спасибо за вашу работу. Мне день (а то и не один) вы уже точно сэкономили.
Сделал все с табуляцией, чтобы следующим не нужно было за пробелами следить

https://gist.github.com/vavsab/3802b4bd9cb7db4cbccde597d5130a1f

Добрый день) 

помогите пожалуйста, как интегрировать  HOME Asisstant-|Smart MAC D 105

MQTT не настраивал в своей жизни и что-то не получается интегрировать устройство

1.Какие интеграции MQTT нужно установить на HA 

2. Какие настройки прописать для  интеграции MQTT брокера

3.Где в HA   в интеграции MQTT брокера прописывать топики и как

Могли бы подробно расписать настройку интеграции MQTT брокера

+1

Здравствуйте. Специально топики прописывать не нужно. Их создает Smart MAC D 105, как только вы ему правильно скажите, где находится MQTT брокер. Ваши шаги в целом такие:
1. Установить MQTT брокер на HA, если у вас его до сих пор нет. У меня такая интеграция стоит.  Проверьте какой у вас логин и пароль. Они понадобятся для Smart MAC D 105

Image 1102

Image 1103


2. Дальше надо указать Smart MAC D 105, где находится MQTT брокер. ОЧЕНЬ ВАЖНО: HA и Smart MAC должны находиться в одной сети, чтобы они могли с друг другом общаться. На роутере узнаете IP адрес HA

Image 1104

У меня он 192.168.2.22. Дальше заходите на Smart MAC и вводите настройки брокера

Image 1105

3. Проверяете, что сообщения действительно доходят до брокера при помощи http://mqtt-explorer.com/

Image 1107

Image 1108

У меня тут правда топики другие, из-за того, что показываю на примере датчика света, но суть не меняется.

4. Настраиваете lovelace, как показано в предыдущих постах

+1

Все получилось) спасибо огромное)

+1

Вообще можно было бы сделать так, чтобы счетчик сам мог отправлять данные о себе в топик /homeassistant, чтобы он автоматически появлялся в системе, тогда не нужно будет прописывать все эти настройки.

это вы разработчикам счетчика говорите?

Так это интеграция должна быть написана быть в ХА

Или предлагаете свой вариант отображения сущностей, так поделитесь как удобнее тогда 

+4

Ну конечно это я сказал разработчикам разработчикам. Никакой интеграции не нужно. Для того, чтобы HomeAssistant автоматически обнаруживал устройство со всеми сенсорами нужно, чтобы устройство при подключении к MQTT брокеру публиковало несколько топиков (по одному на каждый сенсор). Вот пример, как это делаю я в своих устройствах. Код Python, ну смысл я думаю будет понятен.


device_payload = {'device': {
  'identifiers': ['{}'.format(self.identifier)],
  'name': '{}'.format(self.settings['device_name']),
  'model': self.settings['model'],
  'manufacturer': self.settings['manufacturer']
  }
}
payload = {'name': '{} Memory use'.format(self.settings['device_name']),
  'state_topic': self.state_topic,
  'unit_of_measurement': '%',
  'icon': 'mdi:memory',
  'value_template': '{{ value_json.memory_use }}',
  'unique_id': '{}_sensor_memory_use'.format(self.identifier),
  'json_attributes_topic': self.state_topic,
}
payload.update(device_payload)
self.mqtt_client.publish(topic='homeassistant/sensor/{0}/memory_use/config'.format(self.identifier),
  payload=json.dumps(payload),
  qos=1,
  retain=retain
)

Вы мне тоже сэкономили несколько дней копания в настройках. Не догадался, что сенсоры нужно отдельно прописывать. 

Спасибо.

Спасибо. Подсказка ваша помогла. После настроек я перегружал с интерфейса программы и перегружал Home Assistant - сообщения в MQTT брокер так и не приходили. 

Сегодня я  перегрузил устройство с  кнопки на утсройстве и увидел, что сообщения  начали приходить. Не знаю может что-то удаленно подкрутили или помогла перегрузка с кнопки, но проблема решилась.

Подскажите, как через MQTT получить информацию о том, доступно ли устройство или нет? Например, у меня есть подключенный сенсор температуры, который нормально отображается в Home Assistant, но если устройство отключено, то Home Assistant не может понять того, что устройство недоступно, или выключено, и продолжает отображать последнее значение температуры. При конфигурации сенсора в Home Assistant существует возможность задать availability topic, через который происходит опрос устройства на доступность. Посылается пакет с запросом на статус, и устройство должно ответить статусом, или не ответить, тогда система интерпретирует данную ситуацию как такую, при которой устройство недоступно. Подскажите, как можно решить данную проблему. Спасибо.

Понять доступно ли устройство можно по времени последнего обновления.

Обычно MQTT клиент отсчитывает время, когда было последнее обновление топика, и если время более пару минут, значит что-то не так.

К сожалению в Home Assistant нет возможности контролировать доступность устройства по Time Out. Если вы можете подсказать как это сделать буду благодарен.

По Home Assistant не подскажу, не используем.

Подождем, может гуру по HA что-то подскажут.

Но если есть возможность добавлять свои скрипты, например, на JavaScript по аналогии с другими клиентами MQTT, то можно проверять топик JSON парсить TIME и проверять время на давность.

1728053249.JSON
{"TIME":1641284903,"V1":211.58,"A1":2.88,"W1":566,"Wh1":58921044, . . . }

Если давно было, то что-то сделать. :)

+2

Image 1346

В Home Assistant для MQTT sensor есть параметр epire_after

expire_after integer (optional, default: 0)

Defines the number of seconds after the sensor’s state expires, if it’s not updated. After expiry, the sensor’s state becomes unavailable.

Полное описание тут https://www.home-assistant.io/integrations/sensor.mqtt/

Второй вариант, это создание автоматизации, которая с определенной периодичностью запускается и проверяет время последнего обновления сенсора, смотри на картинке. Только тут есть ньюанс, если сенсор обновляется, но его значение не меняется, то Home Assistant будет думать, что сенсор не обновился. Поэтому надо проверять сенсор текущего времени, который можно получить от этого счётчика.

- platform: mqtt
state_topic: "1694499463/JSON"
name: "Счетчик 1 - Время"
value_template: "{{ value_json.TIME }}"
json_attributes_topic: "1694499463/JSON"
unit_of_measurement: s

Огромное спасибо! expire_after отлично работает. Корректно определяет как online так и offline состояние устройства.   

+1

Контроль доступности через MQTT решил  так.В настройках D105 прописал MQTT клиента.На маркете есть приложение MQTT Alert.В нем прописал топик состояния реле.Так как приложение работает в фоне ,то по времени последнего состояния реле легко понять статус счётчика в сети в наст.время , а когда реле D105 включается / выключается  получать об этом уведомление и звуковой сигнал (настраивается в приложении )Топик температуры также прописал и при уходе температуры за заданные значения также получаю уведомления.Все просто и удобно.А для тех у кого внешний статический ip в месте установки D105   или поднят тоннель, посмотрите приложение PingTools .В нем  установил время пинга каждые 30 минут ( можно задать любое время ) и если D105 станет недоступным также получаю уведомление об этом.Разработчик предусмотрел конечно информирование на почту пользователя, если устройство недоступно более 3 суток , но как уменьшить это время так и не нашел.Если тех поддержка подскажет, то буду признателен.

Так же вопрос к разработчику.Сообщите тип и номиналы используемых электролитических конденсаторов в счётчике импульсов D105.Так как устройство работает в режиме 24/7 в диапазоне температур -20 ...+ 30 уже не один год, предположу что скоро потребуется их замена и надо к этому подготовиться,преждевременно не разбирая для этого D105.

Заранее благодарю за обратную связь.



Электролитов на плате, которые можно заменить, нет.

Но они есть в блоке питания, который выполнен отдельным блоком и конденсаторы в нем не поменяете.

Если вдруг начнутся проблемы с питанием, то можно или поменять на плате весь блок, или подать внешнее питание 5В на клеммы (1) GND и (6) +5В.

Для работы D105 внешнее питание +5 вольт может ли быть НЕстабилизированным ?И на  какой номинальный ток д.б.внешний БП +5вольт ?

Answered

Источник питания стабилизированный 5V DC / 0.6A

Но если много датчиков навешиваете на D105, то желательно помощнее БП.

+1

mqtt:

sensor:

- name: smart_maic_voltage

state_topic: 1862271970.V

device_class: voltage

state_class: measurement

unit_of_measurement: V

# entity_category: diagnostic

enabled_by_default: true

- name: smart_maic_current

state_topic: 1862271970.A

device_class: current

state_class: measurement

unit_of_measurement: A

enabled_by_default: true

- name: smart_maic_power

state_topic: 1862271970.W

device_class: power

state_class: measurement

unit_of_measurement: W

enabled_by_default: true

- name: smart_maic_reverse_power

state_topic: 1862271970.rW

device_class: power

state_class: measurement

unit_of_measurement: W

enabled_by_default: true

- name: smart_maic_energy

state_topic: 1862271970.Wh

device_class: energy

state_class: total

unit_of_measurement: Wh

enabled_by_default: true

- name: smart_maic_reverse_energy

state_topic: 1862271970.rWh

device_class: energy

state_class: total

unit_of_measurement: Wh

enabled_by_default: true

- name: smart_maic_power_factor

state_topic: 1862271970.PF

device_class: power_factor

state_class: measurement

# unit_of_measurement:

enabled_by_default: true

+8

Зробив нормальну інеграцію для Home Assistant, можна встановити собі через HACS: https://github.com/krasnoukhov/homeassistant-smart-maic

Підтримуються всі сенсори, також number щоб міняти ватт-години і dry switch. Трьофазний лічильник планую скоро встановлювати, зроблю і для нього підтримку

+1

це просто бімба! як цього не вистачало.. велике дякую автору!

щось не вдалось добавити пристрій в інтеграції. В полі IP адрес потрібно лише ввести IP адресу? Ввожу IP адресу і PIN, але пристрій не добавляється. Помилка "Unknown error occured". Можливо із-за того що в мене трохфайзний пристрій?

+1

можливо краще спитати розробника - створити іш'ю в репозиторії https://github.com/krasnoukhov/homeassistant-smart-maic/issues

+1

Цікаво, наче все правильно робите, так. Якщо є можливість, ввімкнить дебаг логінг і створіть issue з деталями, виправимо: https://github.com/krasnoukhov/homeassistant-smart-maic/issues

Сьогодні оновив версію інтеграції і всеодно нічого не добавляється. Зараз спробую зробити лог і створю issue.

+2

Ок, давайте. Я сьогодні додав підтримку трьофазних пристроїв, у мене на D103 все працює

+1

Дякую! З вашою новою версією інтеграції пристрій без пробем добавився в Home Assistant і показники відображаються. Дальше буду розбиратись, як  в зручному виді відображати дані на дашборді.

Доброго. Помогите, чт не правильно.
На smart прописал все как надо. В mqtt explorere показывает данные. 

Image 1988

При добавлении интеграции выдает следующее

Image 1989

Хелп плиз

Вітаю, а MQTT інтеграція у вас налаштована в самому HA? Вона потрібна щоб створювати конекшен, без неї не буде працювати

спасибо за интеграцию, ее реально не хватало. Вроде и не сложно а вот и не было! А теперь есть, и благодаря Вам!

вопросец, сталкиваюсь постоянно с тем что при отключении питания с СчетчикаСмарт. При включении питания в HA идет регистрация потребления по всей сумме накопленой энергии

А если еще раз отрубить то и задвоиться может


кто сталкивался?

HA и серверная на бесперебойнике. СмартМак конечно скачет по питанию.


автору вопрос-просьба. Может добавить сенсор отдельно накопленную энергию в Квт, без сотых долей. Думаю все обычно переводят с ВаттЧ в Квтч

Image 1996

Image 1997



При включении питания в HA идет регистрация потребления по всей сумме накопленой энергии

А если еще раз отрубить то и задвоиться может

Це ви про розділ Energy, чи у вас ще якийсь сенсор додатковий? Якщо energy, то в мене з цим все ок, дельта собі додається, нічого не скаче. А якщо у вас якийсь сенсор з логікою, то треба дивитись що за логіка.

автору вопрос-просьба. Может добавить сенсор отдельно накопленную энергию в Квт, без сотых долей. Думаю все обычно переводят с ВаттЧ в Квт

Ви можете поміняти юніт через UI самого сенсора. Можете поставити kWh + поставити precision без сотих.

Image 1998

точно, а я и не заглянул туда, где точность и еденица измерения. Спасибо!


я использую Utility Meter в Хелперах, стандартный инструмент ХА


Image 2021

Доброго дня. Не можу розібратись з HA + Smart MAIC...

MQTT сервер на 192.168.1.1,

на лічильнику налаштував MQTT, події шлються.

Встановив вHACS інтеграцію.

Пробую додати інтеграцію в HA: питає IP address та PIn password. Що тут вводити?

 UPD: IP лічильника (D103 G1) та пароль від нього таки підійшли, але тільки до одного ліічильника з двох, хоча MQTT працює (шле дані на брокер) на обох.

Вітаю, добре що один запрацював. Не маю уяви що може бути з другим, як варіант ввімкніть дебаг логінг і надішліть сюди, що там

Доброго дня, d105 плануєте додати до інтеграції?

Доброго, мабуть ні, не планую такий пристрій. Якщо зробите - відкривайте PR

 Всем добра!
 А как быть, если HA в одной сети, а Smart-maic в другой, с серым ip?  Данные по mqtt от него приходят на HA...

Огромное спасибо за интеграцию для HA! Работает отлично! Счетчик D103 G2