Работа проверена на KINCONY KC868-H32B pro: https://shp.pub/6p2xv2
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
В этой статье опишу кратко, как правильно описать конфиг mqtt в Home Assistant для того, чтобы отслеживать состояния реле (вкл или выкл) и управление этими самыми реле.
Отслеживать состояния понадобится, если вы например используете еще управление с другого места, не только с Home Assistant. В контроллере KC868 pro какраз реализовано управление не только из Home Assistant, но еще и из Tuya smart home.
Для начала, для работы с mqtt нам по хорошему надо скачать программу на компьютер которая называется mqtt explorer: https://github.com/thomasnordquist/MQTT-Explorer/releases
В этой программе надо подключиться к серверу mqtt. В моем случае сервером mqtt является Home Assistant.
Тут собственно вводится адрес порт логин и пароль от mqtt сервера.
Далее подключаетесь, и видите все топики которые имеются на сервере.
Например для контроллера KINCONY топик называется esp32, а подтопик набор цифр и букв. По этому через программу mqtt explorer и легче это все поймать и определить. Так как этот набор цифр и букв уникальный.
Ну и что мы тут видим. А видим, что данные поступают в relay32/4b734209672e6427f49a0572/state – это данные которые показывают состояние реле и они приходят в json формате который мы собственно и будем считывать.
А вот чтоб управлять реле надо отправлять данные в relay32/4b734209672e6427f49a0572/set.
Так просто топик управления не определить. Надо хотябы раз отправить в него команду, чтоб mqtt explorer его считал. Но есть официальная страница kincony где это описано, что топик управления у нас “set”.
Зная эти два топика и видя какие состояния в каком формате у нас получает сервер mqtt о реле, мы можем сделать вот такой конфиг.
binary_sensor:
#kincony_input
- name: "kincony_input-1"
unique_id: kincony_input-1
state_topic: 'relay32/4b734209672e6427f49a0572/state'
value_template: '{{ value_json.input1.on }}'
payload_on: 1
payload_off: 0
#kincony_switch
switch:
- name: "kinckony_output-1"
unique_id: kinckony_output-1
state_topic: 'relay32/4b734209672e6427f49a0572/state'
command_topic: 'relay32/4b734209672e6427f49a0572/set'
payload_on: '{"relay1":{"on":1}}'
payload_off: '{"relay1":{"on":0}}'
value_template: '{{ value_json.relay1.on }}'
state_on: 1
state_off: 0
- name: "kinckony_output-2"
unique_id: kinckony_output-2
state_topic: 'relay32/4b734209672e6427f49a0572/state'
command_topic: 'relay32/4b734209672e6427f49a0572/set'
payload_on: '{"relay2":{"on":1}}'
payload_off: '{"relay2":{"on":0}}'
value_template: '{{ value_json.relay2.on }}'
state_on: 1
state_off: 0
Собственно что у нас тут.
Первый блок это binary_sensor – тут описываются входы Mqtt.
Да помимо управления нагрузкой у контроллера kincony есть пины input к которым можно подключать например выключатель.
Так вот блок в binary_sensor какраз и описан этот пин. Где value_json.input1.on
это какраз уникальное имя пина INPUT и его состояние on.
далее у нас идет блок switch. Вот в нем какраз описано управление реле и считывание его состояния.
Собственно давайте я комментами поопробую все описать. Еще раз добавлю блок управления и подпишу каждую строчку:
#kincony_switch
switch: #блок свитч - это значит, что это будет переключатель.
- name: "kinckony_output-1" # это уникальное имя создаваемого переключателя
unique_id: kinckony_output-1 #уникальный id создаваемого переключателя.
state_topic: 'relay32/4b734209672e6427f49a0572/state' #Сдесь объявляется топик для отслеживания состояний.
command_topic: 'relay32/4b734209672e6427f49a0572/set' #здесь объявляется топик для управления состояниями.
payload_on: '{"relay1":{"on":1}}' # если отправляем {"relay1":{"on":1}} - то реле включается.
payload_off: '{"relay1":{"on":0}}'# если отправляем {"relay1":{"on":0}} - то реле выключается.
value_template: '{{ value_json.relay1.on }}' # Отслеживание состояния реле
state_on: 1 # если получаем 1 то показываем состояние включенной реле.
state_off: 0 # если получаем 0 то показываем состояние выключенного реле.
Ну собственно вот такой код получается. Надеюсь он будет Вам полезен.