На мой взгляд, одним из главных недостатков Homebridge является отсутствие возможности создания продвинутых скриптов.
Вся автоматизация возложена на домашний центр, которым может быть iPad (подключенный к зарядке), Apple TV или HomePod. Не у всех есть эти устройства, а в HomeKit очень мало автоматизации.
Исправить эту ситуацию можно с помощью Узел-красный .
Статья предназначена для пользователей, у которых уже есть установлен и настроен домашний мост.
Кратко: Node-RED — инструмент для соединения оборудования, API и онлайн-сервисов путем построения цепочек связей между различными узлами (блоками).
Определение на официальном сайте:
Node-RED — это инструмент программирования для объединения аппаратных устройств, API и онлайн-сервисов новыми и интересными способами.На Raspbian он устанавливается так:Он предоставляет редактор на основе браузера, который позволяет легко объединять потоки, используя широкий спектр узлов в палитре, которые можно развернуть в среде выполнения одним щелчком мыши.
По умолчанию Node-Red работает на порту 1880. Существует огромное библиотека модули с наборами блоков различного функционала.sudo apt-get install nodered sudo systemctl enable nodered.service sudo service nodered start
Хоумбридж тоже не остался в стороне.
Установить узел-красный-вклад-homebridge-автоматизация : cd ~/.
node-red
npm install node-red-contrib-homebridge-automation
sudo service nodered restart
Попробуем включить лампочку.
Для этого перетащите блок на рабочую область.
hb-контроль , функция (этот блок отправит команду на включение) и вводить (для целей данной статьи он нужен только для ручной активации скрипта).
Впервые для блоки hb должно быть указано ПРИКОЛОТЬ и обновите список устройств.
Затем можно добавить необходимые блоки:
Теперь, нажав на кнопку в блоке вводить свет должен загореться.
Кстати 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, указываем адрес сервера и топику куба.
Куб может передавать следующие состояния: встряхнуть, проснуться, упасть, коснуться, сдвинуть, перевернуть180, перевернуть90, вращать_влево и вращать_вправо
Добавление блока выключатель отделить одно государство от другого.
Давайте определимся в выключатель условия флип90 , трясти И кран .
Верхний выход будет подключен к hb-статус , чтобы получить текущее состояние лампочки.
Блокировать hb-статус подключиться к блоку Инвертировать значение инвертировать состояние и подключить его выход к hb-контроль и когда вы поворачиваете куб, свет меняет состояние вкл/выкл.
Это должно выглядеть примерно так:
Код: инвертировать значение 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
-
Четыре Всадника Инфокалипсиса
19 Oct, 24 -
Цветная Панель Задач В Windows Vista
19 Oct, 24 -
Крупнейший Пиратский Синдикат Китая Закрылся
19 Oct, 24 -
Оригинальный Плагин Для Wordpress
19 Oct, 24 -
Как Студент Нашел Ошибку В Яндекс.музыке
19 Oct, 24