Добавляем кондиционер в HomeKit используя HomeBridge через Broadlink

30 июн. 2018 г.

Я думаю очень актуальная статья в разгар жарких дней. Разберем добавление управляемых по ИК устройств, для этого нам надо:

1) Малинка (Raspberry Pi) или любое другое устройство с установленным хоумбриджом. Инструкцию по установке вы можете найти туттут или тут.

2) Устройство Broadlink для управления техникой по ИК. Подойдет как Broadlink RM3 pro так и Broadlink RM3 mini.

3) Роутер, куда же без него.

4) Устройство которым мы будем управлять и пульт от него.


Часть первая.

Для начала необходимо подключить Broadlink (далее передатчик) к нашей сети wifi, для этого ищем соответствующее родное приложение в Appstore или Google Play, называется оно Broadlink e-control. Учтите, что если у вас 2х диапазонный роутер, то перед сопряжением с передатчиком необходимо переключиться на сеть 2,4 ГГц, потому как в 5-х частотах ничего не получится, сам на это напарываюсь второй раз. После того, как передатчик соединится с роутером на тыльной стороне перестанет мигать индикатор. Далее можно закрывать родное приложение Broadlink и сносить его с телефона, более оно нам не понадобится.

Часть вторая.

Подключаемся к нашему Хоумбриджу по веб интерфейсу (если у вас стоит соответствующий плагин), или к малине по ssh и ставим дополнение для работы с Broadlink:

sudo npm install -g homebridge-broadlink-rm

после завершения процесса установки можем переходить к правке конфига Хоумбриджа.

Часть третья.

Открываем конфиг Хоумбриджа и добавляем в раздел platforms следующие строчки:

{ 

"platform": "BroadlinkRM", 

"name": "Broadlink RM", 

"hideScanFrequencyButton": true, 

"hideWelcomeMessage": true, 

"enableAutoOff": false, 

"hideLearnButton": false

}

Параметр hideWelcomeMessage отвечает за то, что при перезагрузке бриджа у нас в логе не будет высвечиваться приветственное сообщение, полезного в нем ничего нет, но если хотите его видеть, можете поменять true на false или вообще убрать строчку. hideLearnButton отвечает за отображаемую в HomeKit кнопку считывания ИК кодов. После всех проделанных манипуляций сохраняем конфигурированиям и рестартим Хоумбридж. Если вы все сделали правильно, в приложении Дом появится новый аксессуар - выключатель с именем Learn, после этого можно приступать к самой нудной и долгой части - считыванию кодов от пульта и прописке их в конфиг.

Часть четвертая.

К сожалению, в этом плагине нельзя задействовать все режимы кондиционера и регулировать мощность вентилятора. К тому же указать команды для нагрева и для охлаждения по всему диапазону температур, это значит, что для диапазона например 16-25 градусов вы можете указать охлаждение, 25-26 градусов авто режим, 26-30 нагрев. Помним это, выставляем все необходимые параметры, которые работать не будут, будь то управление створкой, всяческие ионизации воздуха и прочее и приступаем к считыванию кодов. Я для себя выставлял режим вентилятора как для нагрева, так и для охлаждения на авто и использовал только режим нагрева и охлаждения, вы можете комбинировать их как захотите. Важно помнить только, что мы по сути можем передать кондиционеру количество команд равное диапазону изменяемой температуры. Для моего кондиционера это 16-30 градусов, то есть 15 команд. Открываем любой текстовый редактор, в который будем временно заносить команды. Советую их подписывать, что бы не запутаться. Открываем приложение Дом и жмем на выключатель "Learn", на Broadlink при этом загорится огонек, после наводим пульт от кондиционера на него и жмем необходимую кнопку. После нажатия кнопки идем смотреть логи Хоумбриджа. Это можно сделать либо в веб интерфейсе, либо в командной строке написав 

tail -f /Путь/к/лог/файлу/хоумбриджа

После того, как вы нажмете кнопку - в логах будет отображен код который пульт посылает. Обычно это длинная длинная строчка из буков и цифр. Копируем ее и вставляем в наш текстовый редактор, подписываем что это было за действие, что бы не забыть. После возвращаемся в приложение Дом, жмем на кнопку "Learn" второй раз, жмем на вторую кнопку, повторяем все то же, что делали в первый раз. И так далее, пока не получим коды всех нужных нам команд. А нам нужны команды: Выключение, включение, 16 градусов в режиме охлаждения, 17 градусов режиме охлаждения и.т.д. Думаю принцип понятен. Маленький совет - либо отключите на это время кондиционер от сети, либо делайте это не в одной с ним комнате, что бы он не сходил с ума от кучи передаваемых команд. После того, как необходимые коды у нас записаны - приступаем к правке конфига.

Часть пятая

Для начала откроем еще раз конфиг Хоумбриджа и добавим аксессуар кондиционер, у вас должно получиться что то вроде этого:

{ 

"platform": "BroadlinkRM", 

"name": "Broadlink RM", 

"hideScanFrequencyButton": true, 

"hideWelcomeMessage": true, 

"enableAutoOff": false, 

"hideLearnButton": false,

"accessories": [ 

{ 

"name": "Air Conditioner", 

"type": "air-conditioner", 

"minTemperature": 10, 

"maxTemperature": 30, 

"defaultCoolTemperature": 24, 

"pseudoDeviceTemperature": 25,

"data": {}

}

]

}

Теперь разберем, за что отвечает каждый параметр.

name - это имя устройства, которое будет отображаться в приложении Дом.

minTemperature - минимальная температура, которую можно задать в хоумките, она не может быть больше 10 градусов, к сожалению это ограничение кита, насколько я понял.

maxTemperature - максимальная температура, которую можно задать в хоумките.

defaultCoolTemperature - температура, которая будет установлена на кондиционере при нажатии кнопки "Охлаждение" в режимах кондиционера в хоумките.

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

Еще есть параметр temperatureFilePath в котором можно указать путь к файлу, в котором лежит значение температуры, если у вас есть другие датчики, которые умеют снимать температуру и писать в файл на малине, можно указать его, вместо pseudoDeviceTemperature.

А вообще там куча разных нужных и не очень параметров, которые можно добавить. Более полный список, с описанием на английском языке вы можете почитать в официальной документации к плагину тут.

Далее приступим к наполнению самого важного, а именно прописыванию кодов управления. В параметре data указываем необходимое:

"data": { 

"on": "xxxxxxxxx", 

"off": "xxxxxxxxx", 

"temperature16": { 

"pseudo-mode": "cool", 

"data": "xxxxxxxxx" }, 

"temperature17": { 

"pseudo-mode": "cool", 

"data": "xxxxxxxxx" },

........

"temperature30": { 

"pseudo-mode": "heat", 

"data": "xxxxxxxxx" }

}

Разберем параметры:

on - команда на включение кондиционера

off - команда на выключение кондиционера

temperatureX - массив данных который указывает какой режим будет включен при выборе температуры Х в хоумките

pseudo-mode - режим для хоумкита. Если у вас была команда на охлаждение до X градусов то пишем cool, если нагрев, то heat

data - команда, которую мы будем передавать.

Более подробное описание на английском так же можно посмотреть по ссылке выше в документации к плагину. После того, как мы внесли все команды в конфиг, сохраняем его, перезапускаем бридж и можем наслаждаться управлением нашего кондиционера с телефона. Так же можно управлять командами "Привет Сири, установи температуру кондиционера 23 градуса".

Важное замечание! Если вы будете регулировать температуру родным пультом кондиционера - в хоумките это не отобразится, т.к. ИК - технология без обратной связи. Свои вопросы и поправки пишите в комментариях!


Мы в Telegram - t.me/soprut
  1. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 7 месяцев назад

    Спасибо за статью, оч актуально ;)

  2. Вячеслав Фетисов (Ziracul)
    Вячеслав Фетисов (Ziracul) 7 месяцев назад

    Отличная статья

  3. Сергей Сафронов (deda)
    Сергей Сафронов (deda) 7 месяцев назад

    Спасибо 👍

  4. Антон Фаюк (LowriderA)
    Антон Фаюк (LowriderA) 7 месяцев назад

    Супер. Спасибо

  5. (AlexPas) 7 месяцев назад

    Класс , мой RM mini как раз скоро придет! 


  6. Артём Суровцев (surovtsev.artyom)
    Артём Суровцев (surovtsev.artyom) 7 месяцев назад

    Подскажите, какая задержка обычно при отправке команды со смартфона до того, как кондер примет сигнал? 

    • Александр Жабунин (OXOTH1K)
      Александр Жабунин (OXOTH1K) 7 месяцев назад

      Около 3х секунд максимум.

      • bandreye bandreye (bandreye@yandex.ru)
        bandreye bandreye ([email protected]) 7 месяцев назад

        Александр, подскажи, у меня homebridge пишет, что версия node слишком старая. Как обновить node, что бы всё не поломать? :)

  7. Геннадий Куракин (Onag)
    Геннадий Куракин (Onag) 7 месяцев назад

    Вот то-же самое под Homey бы

    • Алексей Костаков (partizan) 6 месяцев назад

      так возьмите железку от Aeotec она с кондишками спокойно справляется.

  8. Роман Иванцов (Roman)
    Роман Иванцов (Roman) 7 месяцев назад

    Очень хорошая и актуальная статья. Автору огромное спасибо! 

  9. bandreye bandreye (bandreye@yandex.ru)
    bandreye bandreye ([email protected]) отредактировано 7 месяцев назад
    Комментарий был удален
  10. (zas89) 6 месяцев назад

    Жаль, что нельзя создать пульт кондей целиком, как в шайбе Xiaomi .. но вот она как я понял работает только со шлюзами того же Xiaomi .. =(

  11. Алексей Костаков (partizan) 6 месяцев назад

    было бы здорово если бы Олег настоял на выкладывании фактического конфига(без адресов и паролей конечно) реализованных авторами проектов.

  12. Алексей Костаков (partizan) 6 месяцев назад

    ну вот как и говорил... валидатор json ровно как и сам бридж - сразу же ругаются на параметр в дата

    temperature16

    автор, выложи свой РАБОЧИЙ конфиг!

    • Александр Жабунин (OXOTH1K)
      Александр Жабунин (OXOTH1K) 6 месяцев назад

      Вот вам кусок конфета с броадлинком. 

  13. Алексей Костаков (partizan) 6 месяцев назад

    Александр, спасибо! Но увы... что-то идет не так в логах:

    /usr/lib/node_modules/homebridge/lib/api.js:50 if (name.indexOf('.') == -1) { ^ TypeError: Cannot read property 'indexOf' of undefined at API.accessory (/usr/lib/node_modules/homebridge/lib/api.js:50:12) at Server._loadAccessories (/usr/lib/node_modules/homebridge/lib/server.js:285:42) at Server.run (/usr/lib/node_modules/homebridge/lib/server.js:86:38) at module.exports (/usr/lib/node_modules/homebridge/lib/cli.js:43:10) at Object. (/usr/lib/node_modules/homebridge/bin/homebridge:17:22) at Module._compile (internal/modules/cjs/loader.js:654:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10) at Module.load (internal/modules/cjs/loader.js:566:32) at tryModuleLoad (internal/modules/cjs/loader.js:506:12) at Function.Module._load (internal/modules/cjs/loader.js:498:3) at Function.Module.runMain (internal/modules/cjs/loader.js:695:10) at startup (internal/bootstrap/node.js:201:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:516:3)

    это как раз, когда появляется аксессуар с типом кондиционер :(

  14. Алексей Костаков (partizan) 6 месяцев назад

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

    "pseudoDeviceTemperature": 25,

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

    • Александр Жабунин (OXOTH1K)
      Александр Жабунин (OXOTH1K) 6 месяцев назад

      Можно будет убрать, но температуру для этого плагина надо писать в файл, а по умолчанию это не сделано нигде.

  15. Алексей Костаков (partizan) 6 месяцев назад

    Александр, люто плюсую материал - настроил на свой Midea - работает просто безупречно. Теперь бы разобраться с системой MQTT. Потому как автор плагина Luke Rhodes видимо пока не имеет планов дописать возможность брать температуру из значений в комнате, куда помещаем кондишку и датчик температуры.

  16. Дмитрий Демидов (DDemidov)
    Дмитрий Демидов (DDemidov) 5 месяцев назад

    Спасибо! Настроил и все работает!

    У меня модель Broadlink без термодатчика. Кто-то смог настроить HomeKit на отображение температуры из другого датчика?

  17. Алексей Фролин (plutos)
    Алексей Фролин (plutos) отредактировано 3 месяца назад
    2000x2000x_image.jpg?1542968677

    Подскажите пожалуйста, если использовать broadlink для управления по радио-каналу 433Мгц (тк у меня много таких устройств), будет ли работать обратная связь, если мы что-то нажали с пульта, поменяется ли статус в HomeKit или нужно парсить логи HomeBridge уже подключенного к broadlink через плагин homebridge-broadlink-rm ? Если Второе, и это для кого-нибудь актуально, я могу дописать или написать плагин.

    Я broadlink еще не пользовал, собрал из приемника и передатчика в ручную подобное устройство и написал плагин. Если кому нужна инструкция по прикручиванию, могу помочь с этим.

    Помогите с вопросом про  broadlink?

  18. Александр Жабунин (OXOTH1K)
    Александр Жабунин (OXOTH1K) 3 месяца назад

    Обратной связи не будет, а схему такую я тоже собирал кстати)

  19. (Fandorin) 2 месяца назад

    Отличная статья! Всё получилось спасибо! Но, рекомендую дополнить:

    Если Вы не заполните температуры 10, 11, 12, 13, 14 и 15, то при их выборе в Ките будет включаться дефолтная температура 24 градуса, по этому лучше прописать температуры 10, 11, 12, 13, 14 и 15, и каждой использовать один и тот же код минимального значения на кондиционере 16 градусов.

К списку статей

Похожие статьи

15 нояб. 2018 г.
Xiaomi Mi Remote 360 добавляем Apple HomeKit
9 нояб. 2018 г.
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
4 сент. 2018 г.
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
15 нояб. 2018 г.
Способы автоматизации механических ворот
15 окт. 2018 г.
Прошивка для Sonoff c нативным HomeKit
27 окт. 2018 г.
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
1 окт. 2018 г.
Нативный HomeKit на ESP8266
15 июн. 2018 г.
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
2 окт. 2018 г.
Установка SDK для компиляции прошивок под HomeKit
28 авг. 2018 г.
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.