Автоматизация Домашнего Моста С Помощью Node-Red

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

Вся автоматизация возложена на домашний центр, которым может быть iPad (подключенный к зарядке), Apple TV или HomePod. Не у всех есть эти устройства, а в HomeKit очень мало автоматизации.

Исправить эту ситуацию можно с помощью Узел-красный .

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

Автоматизация домашнего моста с помощью Node-Red

Кратко: Node-RED — инструмент для соединения оборудования, API и онлайн-сервисов путем построения цепочек связей между различными узлами (блоками).

Определение на официальном сайте:

Node-RED — это инструмент программирования для объединения аппаратных устройств, API и онлайн-сервисов новыми и интересными способами.

Он предоставляет редактор на основе браузера, который позволяет легко объединять потоки, используя широкий спектр узлов в палитре, которые можно развернуть в среде выполнения одним щелчком мыши.

На Raspbian он устанавливается так:
  
  
  
  
   

sudo apt-get install nodered sudo systemctl enable nodered.service sudo service nodered start

По умолчанию Node-Red работает на порту 1880. Существует огромное библиотека модули с наборами блоков различного функционала.

Хоумбридж тоже не остался в стороне.

Установить узел-красный-вклад-homebridge-автоматизация :

cd ~/.

node-red npm install node-red-contrib-homebridge-automation sudo service nodered restart

Попробуем включить лампочку.

Для этого перетащите блок на рабочую область.

hb-контроль , функция (этот блок отправит команду на включение) и вводить (для целей данной статьи он нужен только для ручной активации скрипта).

Впервые для блоки hb должно быть указано ПРИКОЛОТЬ и обновите список устройств.

Затем можно добавить необходимые блоки:

Автоматизация домашнего моста с помощью Node-Red

Теперь, нажав на кнопку в блоке вводить свет должен загореться.

Кстати hb-контроль еще есть блоки hb-событие, hb-статус и hb-резюме .

Подробное описание блоков можно найти в официальном репозитории .

Код функционального блока

var ret_msg={}; ret_msg.payload = {}; ret_msg.payload.On = true; return ret_msg;

Блокировать функция создан для манипулирования данными с использованием возможностей языка JavaScript. Блок принимает переменную в качестве входных данных.

сообщение вместе с параметром полезная нагрузка , по умолчанию большинство блоков в Node-Red работают с параметром полезная нагрузка .

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

MagicCube 90 градусов.

В прошлом статья Я показал, как подключить устройства zigbee с помощью Homebridge. MagicCube, как и другие устройства zigbee, появится в брокере MQTT после сопряжения.

Node-Red поддерживает протокол MQTT «из коробки».

Добавляем блок MQTT, указываем адрес сервера и топику куба.



Автоматизация домашнего моста с помощью Node-Red

Куб может передавать следующие состояния: встряхнуть, проснуться, упасть, коснуться, сдвинуть, перевернуть180, перевернуть90, вращать_влево и вращать_вправо Добавление блока выключатель отделить одно государство от другого.

Давайте определимся в выключатель условия флип90 , трясти И кран .

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

Блокировать hb-статус подключиться к блоку Инвертировать значение инвертировать состояние и подключить его выход к hb-контроль и когда вы поворачиваете куб, свет меняет состояние вкл/выкл.

Это должно выглядеть примерно так:

Автоматизация домашнего моста с помощью Node-Red

Код: инвертировать значение

var ret_msg=msg; ret_msg.payload.On = !msg.payload.On; return ret_msg;

Поток можно импортировать отсюда: Поток

[ { "id": "f0f31eb6.22f16", "type": "tab", "label": "Flow 1", "disabled": false, "info": "" }, { "id": "e0f72465.9e4fb8", "type": "mqtt in", "z": "f0f31eb6.22f16", "name": "", "topic": "zigbee2mqtt/0x00158d00010f0528", "qos": "2", "datatype": "auto", "broker": "8ec472b.e73e29", "x": 160, "y": 80, "wires": [ [ "43f74679.730588" ] ] }, { "id": "8539109.d872ff", "type": "debug", "z": "f0f31eb6.22f16", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "x": 670, "y": 60, "wires": [] }, { "id": "c5db7c5b.399f4", "type": "hb-status", "z": "f0f31eb6.22f16", "name": "Room1", "Homebridge": "HomeBridge", "Manufacturer": "YeeLight", "Service": "Lightbulb", "device": "HomeBridgeA1:23:AD:E3:CD:32YeeLightRoom100000043", "conf": "7948a496.505c2c", "x": 340, "y": 180, "wires": [ [ "9ef696d9.51a378" ] ] }, { "id": "43f74679.730588", "type": "switch", "z": "f0f31eb6.22f16", "name": "CubeActions", "property": "payload", "propertyType": "msg", "rules": [ { "t": "cont", "v": "flip90", "vt": "str" }, { "t": "cont", "v": "tap", "vt": "str" }, { "t": "cont", "v": "shake", "vt": "str" } ], "checkall": "true", "repair": false, "outputs": 3, "x": 150, "y": 240, "wires": [ [ "c5db7c5b.399f4" ], [], [] ] }, { "id": "f476dcba.a6511", "type": "hb-control", "z": "f0f31eb6.22f16", "name": "Room1", "Homebridge": "HomeBridge", "Manufacturer": "YeeLight", "Service": "Lightbulb", "device": "HomeBridgeA1:23:AD:E3:CD:32YeeLightRoom100000043", "conf": "7948a496.505c2c", "x": 700, "y": 180, "wires": [] }, { "id": "9ef696d9.51a378", "type": "function", "z": "f0f31eb6.22f16", "name": "Invert On Value", "func": "var ret_msg=msg;\nret_msg.payload.On = !msg.payload.On;\nreturn ret_msg;", "outputs": 1, "noerr": 0, "x": 520, "y": 180, "wires": [ [ "f476dcba.a6511" ] ] }, { "id": "8ec472b.e73e29", "type": "mqtt-broker", "z": "", "name": "mosquitto", "broker": "127.0.0.1", "port": "1883", "clientid": "", "usetls": false, "compatmode": true, "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "closeTopic": "", "closeQos": "0", "closePayload": "", "willTopic": "", "willQos": "0", "willPayload": "" }, { "id": "7948a496.505c2c", "type": "hb-conf", "z": "", "username": "111-11-111" } ]

Таким способом из блоков можно «лепить» самые сложные схемы автоматики.

В библиотека Можно найти модули с наборами блоков для совершенно разных задач, например, для записи камер видеонаблюдения или работы с файлами.

P.S. Мысли вслух: Меня не дает покоя мысль, что как бы ни развивались технологии, многим еще очень далеко до банальной автоматизации процессов работы и жизни с помощью программирования.

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

Научившись в том же Node-Red строить систему из кубиков, люди наверняка доберутся до блока функция и изучайте JS с интересом, а дальше все произойдет само собой.

Теги: #Интернет вещей #Умный дом #автоматизация #node-red #homekit #homebridge

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.