Александр Рыжов Posted February 26, 2018 Share Posted February 26, 2018 Для пользователей кинетиков звёзды сошлись удачно: набор применяемых в роутере технологий прямо явно намекает на то, что управление роутером может быть автоматизировано. Здесь как раз к месту будет сервис IFTTT.com, позволяющий создавать рецепты из готовых блоков «IF» (событие), «THEN» (действие). За шесть лет развития число доступных блоков перевалило за 500, а число пользовательских рецептов за 20 млн. Пока роутер мало что может предложить для блока «IF», но вот рулить роутером можно в полный рост, т.к. есть весь необходимый набор технологий: Можно организовать удалённый доступ к роутеру по доменному имени даже за серым IP, чуть ниже описано как это сделать, Есть универсальный RESTful интерфейс, позволяющий выполнять любые доступные команды простым POST HTTP-запросом. Если лень копаться в документации, то нужный запрос можно подсмотреть в режиме разработчкика, нажав при открытом веб-интерфейсе в браузере F12. Есть basic-авторизация, позволяющая защитить веб-интерфейс от непрошенных вмешательств. На IFTTT в качестве действия «THEN» надо будет выбрать сервис Webhooks, умеющий отправлять POST-запросы кинетику в JSON-формате, что нам, собственно и требуется для управления. Чтобы организовать удалённый доступ к роутеру из интернета, для прошивок 2.12.B.0.0-1 и позже необходимо: Завести доменное имя KeenDNS, например giga.keenetic.pro, Ниже в разделе «Доступ к веб-приложениям домашней сети» назначить доменное имя четвёртого уровня, например, rci.giga.keeneitc.pro с параметрами «Этот интернет центр», порт TCP79, галка «разрешить доступ». Таким образом, обращения на rci.giga.keeneitc.pro начнут проксироваться на REST API 127.0.0.1:79, где авторизации нет. Включить авторизацию для этого проксирования из CLI: ip http proxy rci auth Завести в WebUI пользователя (например rci), присвоить ему пароль (например, rcipassword) и тэг «HTTP Proxy», Получить SSL-сертификат для домена rci.giga.keeneitc.pro, в дальнейшем он будет обновляться прошивкой автомагически: ip http ssl acme get rci.giga.keenetic.pro Всё. Теперь можно вызывать REST API как и раньше, обращаясь на адрес: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ В конфиге должно получиться что-то похожее на user rci password md5 94b8062cc4e362d45872b22a7c38ede2 password nt 0384e45875e61d6f7d50d934587d1ab1e7 tag http-proxy ! ... ip http proxy rci upstream http 127.0.0.1 79 domain ndns allow public ! ... Эти шаги необходимы для реализации любого из решений, описанных далее. 5 4 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted February 26, 2018 Author Share Posted February 26, 2018 Переход на резервный канал с помощью Telegram Создайте новый апплет, выбрав в качестве «this» сервис Telegram, триггер «New message with key phrase to @IFTTT». В качестве ключевой фразы «выключи основной канал», в шаблоне ответа «готово!» после чего нажмите «create trigger». В качестве «that» выберите сервис Webhooks, выберите его единственное действие «Make a web request». Параметры действия следующие: • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ , • Method: POST • Content type: application/json • Body: [{"interface":{"ISP":{"up":{"no":true} } } }] Нажмите «finish» Цифры в списке выше соответвуют шагам создания апплета на сайте IFTTT, соответствующие скриншоты по номерам прикреплены ко вложению. Для перехода обратно с резервного на основной канал придётся создать аналогичный рецепт, изменив только ключевую фразу, которую вы будете посылать телеграм-боту IFTTT на «включи основной канал», а параметр Body запроса на [{"interface":{"ISP":{"up":{"no":false} } } }] Скрытый текст 4 2 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted February 26, 2018 Author Share Posted February 26, 2018 Обновление прошивки после публикации changelog'а на этом форуме В соседней теме тов. @ndm публикует изменения, вошедшие в прошивку 2.12. Роутер новую прошивку получает, но для того, чтобы изменения вступили в силу, его надо перегрузить. Отслеживать изменения веб-страниц IFTTT не умеет, однако есть способ превратить тему форума в RSS-поток, с которым он работать может. Создайте новый аплет, выбрав в качестве блока «THIS» сервис RSS feed, выберите триггер «New feed item matches», Параметры триггера: • Keyword or simple phrase: 2.12 • Feed URL: http://feed43.com/5528146701453366.xml В качестве «that» выберите сервис Webhooks, выберите его единственное действие «Make a web request». Параметры действия следующие: • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/components/commit , • Method: POST • Content type: application/json • Body: {} Нажмите «finish» Готово! 3 2 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted February 26, 2018 Author Share Posted February 26, 2018 Отключение вайфая, когда ухожу из дома Для этого рецепта используется геолокация в смартфоне, так что придётся установить приложение IFTTT, проверял работу только для Android Создайте новый аплет, выбрав в качестве блока «THIS» сервис Location, триггер «You enter an area», В параметрах триггера укажите на карте точку, где работает ваш кинетик и радиус территории, при покидании которой вайфай будет выключаться В качестве «that» выберите сервис Webhooks, выберите его единственное действие «Make a web request». Параметры действия следующие: • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ , • Method: POST • Content type: application/json • Body: [{"interface":{"WifiMaster0/AccessPoint0":{"up":{"no":true} } } },{"interface":{"WifiMaster1/AccessPoint0":{"up":{"no":true} } } }] Пример Body приведён для двух диапазонного роутера, у кого диапазон один, Body будет выглядить как [{"interface":{"WifiMaster0/AccessPoint0":{"up":{"no":false} } } }] Нажмите «finish» Готово! Для включения вайфая по возвращению домой надо будет создать аналогичный рецепт, триггером которого будет ваше вхождение в зону действия роутера, а команда на включение (поле Body в web request): {"interface":{"WifiMaster0/AccessPoint0":{"up":{"no":false} } } },{"interface":{"WifiMaster1/AccessPoint0":{"up":{"no":false} } } }] 3 3 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted March 12, 2018 Author Share Posted March 12, 2018 Переподключение к интернету, если получен серый IP В некоторых регионах Ростелеком иногда выдаёт серый IP-адрес, что может в ряде случаев вас не устраивать. Можно решить эту проблему не прибегая к установке Entware силами Zapier'а, который в отличие от IFTTT настраивается более гибко. В частности, между блоками «триггер» и «действие» можно вставлять собственные фильтры. В отличие от предыдущих примеров, где роутер лишь воспринимал воздействие от внешнего сервиса, в этом роутер будет выступать и источником события и приёмником события. Перед началом работы с сервисом присвойте роутеру доменное имя, оканчивающееся на keenetic.link или keenetic.pro и разрешите доступ к роутеру по HTTP через облако. Далее привожу по шагам создание необходимого Zap'а, номера скриншотов под катом соответвуют пунктам списка: После регистрации на сервисе создайте новый Zap и выберите в качестве триггера Webhooks by Zapier, действие Catch Hook и нажмите «Continue», На следующем экране введите имя единственного поля, значение которого будет нас интересовать — «ip» и нажмите «Continue», Скопируйте в буфер обмена или текстовой файл предложенный URL вида https://hooks.zapier.com/hooks/catch/3453280/оерdfc/ , при обращении к которому будет срабатывать рецепт, затем нажмите кн. «Ok, I did it», На следующем шаге сервис будет ждать пока вы не протестируете этот URL, просто вставьте его в адресную строку новой вкладки вашего браузера, допишите в конце URL'а «?ip=123» и нажмите Enter. Появится сообщение о том, что URL успешно протестирован и станет доступна кн.«Continue», Добавьте фильтр, нажав «+» на диаграмме рецепта и выбрав «filter», Выберите тип фильтра only if continue, затем «Save+Continue», Задайте параметры фильтра, выбрав из выпадающего списка Querystring ip, условие Text starts with и впишите в оставшееся поле значение «100.». Если серые адреса вашего провайдера отличаются от 100.x.y.z, то впишите подходящее значение. Далее нажимайте «Test&Continue». Вы получите сообщение о том, что тестовый вызов URL не содержал искомое значение (в примере выше в свободной вкладке мы дописывали ip=123, так и должно быть), просто нажимайте «Continue», Будет предложено выбрать приложение-действие, выбирайте снова Webhooks by Zapier и вариант Custom Request, Заполните детали запроса, в частности: — Method: Post, — URL: https://rci.giga.keenetic.pro/rci/ , — Data: [{"interface":{"ISP":{"up":{"no":true}}}},{"interface":{"ISP":{"up":{"no":false}}}}] — Basic Auth: rci|rcipassword, г — Headers: пара значений Content-Type и application/json В следующем окне будет возможность проверить правильность введённых параметров, нажмите «Send Test to Webhooks by Zapier» Если всё сделали правильно, то сервис сможет подключиться к роутеру и выполнить разовое переподключение к интернету. Будет выдано сообщение об успешном выполнении запроса и кнопка «Finish». На последнем шаге будет предложено присвоить имя для созданного рецепта. Вернитесь в веб-интерфейс роутера и на вкладке Доменное имя > DDNS выберите «Сервис: Другой» и вставьте в поле «Адрес сервиса» значение https://hooks.zapier.com/hooks/catch/3453280/оерdfc/?ip=${ip} , это тот URL, что вы копировали в буфер обмена или текстовой файл при создании рецепта. К концу сохранённого URL надо самостоятельно дописать хвост «?ip=${ip}» по образцу. Всё! Контролировать работу рецепта можно вкладки Task History. В ней будет видно какие IP-адреса кинетик сообщал сервису и отвечал ли сервис кинетику, если адрес был серым. В случае, если от провайдера был получен серый IP, Zapier скомандует роутеру переподключиться к интернету. Ограничений на число переподключений здесь нет, а через некоторое время Zapier захочет денег. Пожалуйста это учтите. Скрытый текст 3 1 Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted May 28, 2018 Author Share Posted May 28, 2018 Голосовое управление гостевый вайфаем на русском языке стало возможные благодаря платформе Яндекс.Диалоги, доступной на текущей момент в бета-версии мобильного Яндекса. Платформа Алисы умеет посылать POST-запрос на указанный URL, но не умеет заполнять тело запроса, поэтому схема будет следующей: Алиса посылает пустой POST-запрос определённого вида сервису IFTTT в качестве триггера, а IFTTT уже будет отсылать роутеру сформированный POST-запрос с нужным содержимым. Создайте новый IFTTT апплет, выбрав в качестве «this» сервис Webhooks, Назовите событие именем guest_wifi_on, В качестве «that» выберите сервис Webhooks, выберите его единственное действие «Make a web request». Параметры действия следующие: • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ , • Method: POST • Content type: application/json • Body: [{"interface":{"WifiMaster0/AccessPoint1":{"up":{"no":false} } } } ] Нажмите «finish» Теперь зайдите в документацию WebHooks и перешлите любым удобным способом на мобильный телефон URL, служащий триггером события, он будет иметь вид https://maker.ifttt.com/trigger/guest_wifi_on/with/key/c4fwNrulqpfI4_fze9wpL6 Скажите на мобильнике Алисе «Включи волшебные заклинания», Добавьте пересланный на мобильник URL и ключевую фразу «включи гостям вайфай». Аналогичными шагами добавляется реакция на ключевую фразу «выключи гостям вайфай», результат работы аплета показан в ролике: https://rutube.ru/video/80c124a6c7b84c787268fd0f6923f3ba/ 4 1 Quote Link to comment Share on other sites More sharing options...
Sergey Zozulya Posted May 28, 2018 Share Posted May 28, 2018 (edited) Добавлю, что для Google Assistant настраивается еще проще, т. к. его поддержка есть в IFTTT. В IF добавляем желаемую фразу для ассистента, в THEN все так же, как в посте выше. Работает! P. S. Пока ассистент на русском не доступен, работать все будет, если основной язык телефона английский. Разумеется, фразу задавать тоже на английском. Спасибо @Александр Рыжов за отличную идею! Edited May 28, 2018 by Sergey Zozulya P. S. Quote Link to comment Share on other sites More sharing options...
utya Posted November 11, 2018 Share Posted November 11, 2018 а это всё провернуть с белым ip и своим доменом можно или только keendns? Quote Link to comment Share on other sites More sharing options...
Vik2018 Posted November 22, 2018 Share Posted November 22, 2018 (edited) В 28.05.2018 в 14:45, Александр Рыжов сказал: Скажите на мобильнике Алисе «Включи волшебные заклинания», Добавьте пересланный на мобильник URL и ключевую фразу «включи гостям вайфай». Никак не хочет эта тётя включать заклинания: > > "Волшебные заклинания" это внешний навык Алисы, т.е. навык созданный сторонними разработчиками. > > В настоящее время вызвать этот навык нельзя. > > Но вы можете создать свой собственный навык, аналогичный этому) > > > > С уважением, > > Служба поддержки Яндекса Edited December 4, 2018 by Vik2018 Quote Link to comment Share on other sites More sharing options...
Игорь Белов Posted December 6, 2018 Share Posted December 6, 2018 Здравствуйте! Возник вопрос воспитания младшего поколения. Скажите возможно-ли при появлении в сети смартфона (я или жена) включать доступ в сеть Телевизор (по проводу) и телефон ребенка (по воздуху). Все устройства зарегистрированы и IP прибиты к ним. При отсутствии в сети обоих телефонов (я и жена) - отрубать доступ в сеть телевизору (провод) и телефону ребенка (воздух).В принципе это возможно? Если да то посоветуйте как. Спасибо заранее! Если написал не в ту тему - посоветуйте куда можно постучаться. Quote Link to comment Share on other sites More sharing options...
vasek00 Posted December 6, 2018 Share Posted December 6, 2018 (edited) 1 час назад, Игорь Белов сказал: Здравствуйте! Возник вопрос воспитания младшего поколения. Скажите возможно-ли при появлении в сети смартфона (я или жена) включать доступ в сеть Телевизор (по проводу) и телефон ребенка (по воздуху). Все устройства зарегистрированы и IP прибиты к ним. При отсутствии в сети обоих телефонов (я и жена) - отрубать доступ в сеть телевизору (провод) и телефону ребенка (воздух).В принципе это возможно? Если да то посоветуйте как. Спасибо заранее! Если написал не в ту тему - посоветуйте куда можно постучаться. Если осилите написание скрипта где основная часть ниже - определить устройство по MAC появилось оно или нет, потом есть куча вариантов блокировать/разблокировать (один из них ниже) / # ndmq -p 'show ip hotspot' -x | xml sel -t -m '//host[active="yes"][mac="хх:хх:хх:хх:хх:be"]' -v 'name' хх:хх:хх:хх:хх:be - мас нужного устройства Вариант А через регистрацию устройств, всем зарег.устройствам разрешен выход в интернет, которых нет в списке им блокирован / # ndmq -p 'known host 123 11:22:33:44:55:66' -P message; / # ndmq -p 'no known host 11:22:33:44:55:66' -P message; убрать данное устройство из зарегистрированных устройств по конфигу это "11:22:33:44:55:66 permit" - есть доступ, если эту запись убрать то доступа нет ip hotspot policy Home deny host 11:22:33:44:55:66 permit host aa:bb:cc:dd:ee:ff permit default-policy deny ip hotspot policy Home deny host aa:bb:cc:dd:ee:ff permit default-policy deny Вариант В создать еще один профиль для которого выход в интернет не разрешен и помещать в него устройство Варинт С ...... #!/bin/sh mac_client1=`ndmq -p 'show associations' -x | xml sel -t -m '//station[authenticated="yes"][mac="хх:хх:хх:хх:хх:aa"]' -v 'mac' `; mac_client2=`ndmq -p 'show associations' -x | xml sel -t -m '//station[authenticated="yes"][mac="хх:хх:хх:хх:хх:bb"]' -v 'mac' `; ...... if [ "$mac_client1" = "" ]; then if "$mac_client2" = "" ]; then ...... контроль устройства, должно быть в не разрешенных exit; fi fi ndmq -p 'known host 123 11:22:33:44:55:66' -P message; ....... exit; Как то так Или еще проще есть в WEB установка для клиента времени (confg-hotspot)> host ‹mac› (‹access› | schedule ‹schedule› | policy ‹policy›) (config-hotspot)> host 54:e4:3a:8a:f3:a7 schedule MYSCHEDULE Hotspot::Manager: Schedule "MYSCHEDULE" applied to host "54:e4:3a:8a:f3:a7" указать время в schedule MYSCHEDULE access -permit Разрешить доступ к сети Интернет. -deny Запретить доступ к сети Интернет. Edited December 6, 2018 by vasek00 Quote Link to comment Share on other sites More sharing options...
plagioklaz Posted April 19, 2019 Share Posted April 19, 2019 @Александр Рыжов а таким образом можно сделать голосовое управление mpd из этого поста? Было бы здорово включать нужную песню по названию Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted April 20, 2019 Author Share Posted April 20, 2019 Алиса дёргает веб-хук. На вас ложится обработка реакции на него. Следственно: настраиваете на роутере веб-сервер, пишите CGI-обработчик, разбирающий пришедшее событие и исполняющий нужные команды. Т.е. сложно и не оправданно (IMHO). Quote Link to comment Share on other sites More sharing options...
Igor Puteev Posted June 13, 2019 Share Posted June 13, 2019 В 26.02.2018 в 16:07, Александр Рыжов сказал: Таким образом, обращения на rci.giga.keeneitc.pro начнут проксироваться на REST API 127.0.0.1:79, где авторизации нет. Здравствуйте, подскажите, пожалуйста, я верно понимаю, что на устройствах без USB-порта REST API тоже работает? Настраивал все по вашей инструкции, по rci.giga.keenetic.pro/rci прекрасно открывается конфиг, правда по rci.giga.keenetic.pro - веб сервер не доступен Quote Link to comment Share on other sites More sharing options...
Le ecureuil Posted June 17, 2019 Share Posted June 17, 2019 В 13.06.2019 в 17:59, Igor Puteev сказал: Здравствуйте, подскажите, пожалуйста, я верно понимаю, что на устройствах без USB-порта REST API тоже работает? Настраивал все по вашей инструкции, по rci.giga.keenetic.pro/rci прекрасно открывается конфиг, правда по rci.giga.keenetic.pro - веб сервер не доступен Да, все работает на всех устройствах. Этот REST API - это не морда, это именно что API. Потому доступен только URI /rci, все остальное выдает ошибку. Quote Link to comment Share on other sites More sharing options...
Igor Puteev Posted June 17, 2019 Share Posted June 17, 2019 6 часов назад, Le ecureuil сказал: Да, все работает на всех устройствах. Этот REST API - это не морда, это именно что API. Потому доступен только URI /rci, все остальное выдает ошибку. так уже и стал думать. Спасибо большое за подсказку - помогли разобраться быстрее техподдержки. Quote Link to comment Share on other sites More sharing options...
iFinder Posted November 1, 2019 Share Posted November 1, 2019 Здравствуйте ! Поставил себе на Keenetic среду Node-RED, которая может выполнять нечто похожее, что и все описанные сервисы и тоже умеет посылать HTTP-запросы. Но т.к. она находится в локальной сети, собственно говоря на одном и том же адресе, то настройки доступа к rci будут отличаться от тех, что описаны в шапке темы. Подскажите, что нужно сделать на Keenetic, чтобы к нему можно было подключиться, авторизоваться и делать запросы на rci ? Quote Link to comment Share on other sites More sharing options...
iFinder Posted November 1, 2019 Share Posted November 1, 2019 В 26.02.2018 в 16:07, Александр Рыжов сказал: Есть универсальный RESTful интерфейс, позволяющий выполнять любые доступные команды простым POST HTTP-запросом. Если лень копаться в документации, то нужный запрос можно подсмотреть в режиме разработчкика, нажав при открытом веб-интерфейсе в браузере F12. Ссылка доступные команды НЕ работает, что делать ? Quote Link to comment Share on other sites More sharing options...
dmi3gm Posted November 1, 2019 Share Posted November 1, 2019 5 часов назад, iFinder сказал: Здравствуйте ! Поставил себе на Keenetic среду Node-RED, которая может выполнять нечто похожее, что и все описанные сервисы и тоже умеет посылать HTTP-запросы. Но т.к. она находится в локальной сети, собственно говоря на одном и том же адресе, то настройки доступа к rci будут отличаться от тех, что описаны в шапке темы. Подскажите, что нужно сделать на Keenetic, чтобы к нему можно было подключиться, авторизоваться и делать запросы на rci ? по node-red есть отдельная тема с примером но я по нему не смог авторизацию настроить, node-red у меня на отдельном устройстве в локалке, просто пользую 79 порт без авторизации. мониторю хосты, впн клиентов, логи кинетиков и отправляю в телеграмм 1 Quote Link to comment Share on other sites More sharing options...
iFinder Posted November 1, 2019 Share Posted November 1, 2019 1 минуту назад, dmi3gm сказал: просто пользую 79 порт без авторизации. А подробнее можно ? Quote Link to comment Share on other sites More sharing options...
dmi3gm Posted November 1, 2019 Share Posted November 1, 2019 28 минут назад, iFinder сказал: А подробнее можно ? тут Quote Link to comment Share on other sites More sharing options...
emaklav Posted March 15, 2021 Share Posted March 15, 2021 Добрый день! Скажите, возможно-ли решить следующую задачу на базе Keenetic: При подключении к WiFi сети зарегистрированного устройства включить Sonoff розетку, при отключении - выключить? Quote Link to comment Share on other sites More sharing options...
ales1973 Posted November 16, 2021 Share Posted November 16, 2021 В 28.05.2018 в 11:45, Александр Рыжов сказал: Голосовое управление гостевый вайфаем на русском языке стало возможные благодаря платформе Яндекс.Диалоги, доступной на текущей момент в бета-версии мобильного Яндекса. Платформа Алисы умеет посылать POST-запрос на указанный URL, но не умеет заполнять тело запроса, поэтому схема будет следующей: Алиса посылает пустой POST-запрос определённого вида сервису IFTTT в качестве триггера, а IFTTT уже будет отсылать роутеру сформированный POST-запрос с нужным содержимым. Создайте новый IFTTT апплет, выбрав в качестве «this» сервис Webhooks, Назовите событие именем guest_wifi_on, В качестве «that» выберите сервис Webhooks, выберите его единственное действие «Make a web request». Параметры действия следующие: • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ , • Method: POST • Content type: application/json • Body: [{"interface":{"WifiMaster0/AccessPoint1":{"up":{"no":false} } } } ] Нажмите «finish» Теперь зайдите в документацию WebHooks и перешлите любым удобным способом на мобильный телефон URL, служащий триггером события, он будет иметь вид https://maker.ifttt.com/trigger/guest_wifi_on/with/key/c4fwNrulqpfI4_fze9wpL6 Скажите на мобильнике Алисе «Включи волшебные заклинания», Добавьте пересланный на мобильник URL и ключевую фразу «включи гостям вайфай». Аналогичными шагами добавляется реакция на ключевую фразу «выключи гостям вайфай», результат работы аплета показан в ролике: А можно так сделать на голосовом помощнике alexa? Чтобы она отправила WOL на ПК? Quote Link to comment Share on other sites More sharing options...
ivs Posted July 10, 2023 Share Posted July 10, 2023 День добрый, подскажите, а как через webhook настроить уведомления в телеграм-бота событий о подключении к сети только ОПРЕДЕЛЁННЫХ устройств, стандартно только обо всех подключения и отключения приходят - это излишне. Нужно только для конкретных. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.