Добавляем Google Home в WirenBoard

21 декабря 2020, 15:45

Для решения этой задачи нам потребуется установленный Node-RED. А дальше уже все просто, ставим в Node-RED пакеты: 

node-red-contrib-googlehome 
node-red-contrib-wirenboard 

У нас появятся следующие плиточки:

1600x_image.png?1608552108

Для работы пакета для Google Home, необходимо зарегистрироваться на сайте https://googlehome.hardill.me.uk/

Решение не официальное и работает через сторонний сервер, так что на ваш страх и риск.

В приложении Google Home жмем кнопку «Add».
1600x_image.png?1608482610
1600x_image.png?1608482609
Далее нажимаем кнопку «Настроить устройство».
Дальше выбираем кнопку «Совместимо с сервисами Google».
1600x_image.png?1608482609
1600x_image.png?1608482607
В поиске ищем «NR-GAB».
При добавлении запросит авторизацию, вводим логин и пароль с сайта https://googlehome.hardill.me.uk/.
Вы великолепны!  Осталось добавить виртуальных устройств. Для этого переходим в раздел Devices https://googlehome.hardill.me.uk/user/devices 
и добавляем любые устройства, ничего сложного:
1600x_image.png?1608482612

Добавляем все, что хотим видеть в Google Home, предлагаю использовать те же имена, что и в WirenBoard или других системах, короче говоря, на ваше усмотрение. Устройства есть, но чем они управляют? Правильно, пока ничем.

1600x_image.png?1608482611
Идем в Node-RED.  Вытаскиваем на Flow плитку Google Home.
Конфигурируем плитку, добавляя аккаунт с чудо сервиса прокладки и видим все наши устройства:
1600x_image.png?1608482612

Акцентировать на этом много внимания не буду, плитки WB точно так же настраиваются.

1600x_image.png?1608482615

Далее настраиваем все взаимосвязи. Делаю инвертированными парами, для обеспечения обратной связи. Дело муторное, но возможное.

Бонус – это все работает удаленно, надобности находиться управляющему устройству в сети Wi-Fi нет. 

Проанализировать, что приходит от плитки Google Home, можно добавить плитку Debug, соединить их и потыкать устройством. В случае с лампочкой, получим следующее окно дебага:

msg.payload : Object
object
command: "action.devices.commands.OnOff"
params: object
on: true
online: true

Это означает, что на входе будет тип команды (command) и значение переключателя (params -> on). Значение параметра online нас особо не интересует.

true - включение, false - соответственно, выключение. Для разных устройств в документации рекомендуют еще передавать значение поля command.

Забегая вперед скажу, что плитки WB принимают просто голое значение на msg.payload, для реле это "0" или "1", для диммера - значение от 0 до 255.

Напишем функцию преобразования ответа плитки Google Home для плитки WB:  

if (msg.payload.params.on === true){
    msg.payload = 1;
} else {
    msg.payload = 0;
}
return msg;

Хорошим тоном является чистка лишнего от передающих плиток, но мешать это может только когда параметры имеют одно имя.

Делается кодом JS в функции: 

delete msg._confId;

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

if (msg.payload == "1"){
    msg.payload = {
        command: "action.devices.commands.OnOff",
        params: {
            on: true
        }
    };
} else {
    msg.payload = {
        command: "action.devices.commands.OnOff",
        params: {
            on: false
    }
};
}
return msg;

От плиток WB тоже приходит голое значение в msg.payload, в функции мы его анализируем и формируем запрос для плитки Google Home. 

Совет начинающим в Node-RED: обязательно пользуйтесь плитками Debug, наглядно видно, что происходит в вашей программе. В случае с анализом выводов плиток, у каждого параметра есть кнопка "copy path", при копировании пути параметра, сразу понятны все вложенности (после копирования, в начале пути вставить "msg.").

Флоу для импорта в NR и анализа:

[{"id":"a3eb06c.ce829f8","type":"tab","label":"Google home","disabled":false,"info":""},{"id":"de2b1b39.4b1278","type":"google-home","z":"a3eb06c.ce829f8","conf":"fabf43e4.9cb2e","device":"6348","acknowledge":true,"name":"Реле 1","topic":"","x":390,"y":580,"wires":[["150eaa8f.c0d4f5"]]},{"id":"195d1748.208509","type":"wirenboard-in","z":"a3eb06c.ce829f8","name":"","server":"58c389fc.46d588","channel":["/devices/wb-mr6c_164/controls/K1"],"outputAtStartup":true,"x":360,"y":640,"wires":[["f1451387.f3be6"]]},{"id":"f1451387.f3be6","type":"function","z":"a3eb06c.ce829f8","name":"","func":"if (msg.payload == \"1\"){\n    msg.payload = {\n        command: \"action.devices.commands.OnOff\",\n        params: {\n            on: true\n        }\n    };\n} else {\n    msg.payload = {\n        command: \"action.devices.commands.OnOff\",\n        params: {\n            on: false\n    }\n};\n}\n\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":640,"wires":[["efe5dac6.ac83c8"]]},{"id":"efe5dac6.ac83c8","type":"google-home-response","z":"a3eb06c.ce829f8","conf":"fabf43e4.9cb2e","device":"6348","name":"Реле 1","x":700,"y":640,"wires":[]},{"id":"91369284.c19ce","type":"wirenboard-out","z":"a3eb06c.ce829f8","name":"","server":"58c389fc.46d588","channel":["/devices/wb-mr6c_164/controls/K1"],"command":"/on","commandType":"wb_cmd","payload":"payload","payloadType":"msg","x":730,"y":580,"wires":[]},{"id":"150eaa8f.c0d4f5","type":"function","z":"a3eb06c.ce829f8","name":"","func":"if (msg.payload.params.on === true){\n    msg.payload = 1;\n} else {\n    msg.payload = 0;\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":580,"wires":[["91369284.c19ce"]]},{"id":"93512863.fcf1f8","type":"google-home","z":"a3eb06c.ce829f8","conf":"fabf43e4.9cb2e","device":"6361","acknowledge":true,"name":"Бра","topic":"","x":390,"y":700,"wires":[["130a276c.f4f3c9"]]},{"id":"9406e729.56f088","type":"wirenboard-out","z":"a3eb06c.ce829f8","name":"","server":"58c389fc.46d588","channel":["/devices/wb-mrgbw-d_112/controls/White"],"command":"/on","commandType":"wb_cmd","payload":"payload","payloadType":"msg","x":750,"y":700,"wires":[]},{"id":"dfa77f52.05f66","type":"wirenboard-in","z":"a3eb06c.ce829f8","name":"","server":"58c389fc.46d588","channel":["/devices/wb-mrgbw-d_112/controls/White"],"outputAtStartup":true,"x":340,"y":760,"wires":[["6e0ee3dd.47a71c"]]},{"id":"130a276c.f4f3c9","type":"function","z":"a3eb06c.ce829f8","name":"","func":"var br = msg.payload.params.brightness\nmsg.payload = 255/100*br;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":700,"wires":[["9406e729.56f088"]]},{"id":"ca373ffb.0aea8","type":"google-home-response","z":"a3eb06c.ce829f8","conf":"fabf43e4.9cb2e","device":"6361","name":"Бра","x":690,"y":760,"wires":[]},{"id":"6e0ee3dd.47a71c","type":"function","z":"a3eb06c.ce829f8","name":"","func":"var br = msg.payload;\n    msg.payload = {\n        command: \"action.devices.commands.BrightnessAbsolute\",\n        params: {\n            brightness: br\n        }\n    };\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":760,"wires":[["ca373ffb.0aea8"]]},{"id":"fabf43e4.9cb2e","type":"google-home-conf","z":"","username":"klouner"},{"id":"58c389fc.46d588","type":"wirenboard-server","z":"","name":"WB","host":"192.168.1.46","mqtt_port":"1883","mqtt_username":"","mqtt_password":""}]

На iOS немного криво работает обратная связь, просьба владельцев Android устройств проверить, что все моментально отрабатывается. На iOS нужно перезапускать приложение, чтоб увидеть что статус поменялся. 


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
К списку статей

Устройства в материале

Wiren Board 6

Производитель: WirenBoard

Скидки для сообщества

Wiren Board

+7 495 150-66-19
Промокод:
SPRUTDELIVERY
Размер скидки:
0%
Вы получите бесплатную доставку.

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

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

25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
18 февраля 2020, 17:06
В данной статье описывается сборка слаботочного эл. щита на базе Wiren Board 6, а так же силового щита для небольшой квартиры.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
09 ноября 2020, 19:03
В статье я расскажу о том, как сделать ваши рулонные, в том числе и кассетные шторы, чуточку умнее. Дам ссылки на дешевые аккумуляторные моторы. Расскажу про способы трансляции сигналов 433Мгц в MQTT. И продемонстрирую много фотографий решения и немного видео.
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home
30 июня 2018, 12:17
Добавляем устройства управляемые по ИК через Broadlink RM3 Mini на примере кондиционера.
09 ноября 2018, 17:31
В данной статье рассматривается определенный подход инсталляции и конфигурации базовой среды, для последующей возможности простой, в плане настройки, автоматизации УД с помощью симбиоза HomeAssistant и Node-RED.
20 января 2019, 15:09
Использование ESPHomeLib в связке с Home Assistant