Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

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

Здесь как раз к месту будет сервис IFTTT.com, позволяющий создавать рецепты из готовых блоков «IF» (событие), «THEN» (действие). За шесть лет развития число доступных блоков перевалило за 500, а число пользовательских рецептов за 20 млн.

Пока роутер мало что может предложить для блока «IF», но вот рулить роутером можно в полный рост, т.к. есть весь необходимый набор технологий:

  • Можно организовать удалённый доступ к роутеру по доменному имени даже за серым IP, чуть ниже описано как это сделать,
  • Есть универсальный RESTful интерфейс, позволяющий выполнять любые доступные команды простым POST HTTP-запросом. Если лень копаться в документации, то нужный запрос можно подсмотреть в режиме разработчкика, нажав при открытом веб-интерфейсе в браузере F12.
  • Есть basic-авторизация, позволяющая защитить веб-интерфейс от непрошенных вмешательств.

На IFTTT в качестве действия «THEN» надо будет выбрать сервис Webhooks, умеющий отправлять POST-запросы кинетику в JSON-формате, что нам, собственно и требуется для управления.

Чтобы организовать удалённый доступ к роутеру из интернета, для прошивок 2.12.B.0.0-1 и позже необходимо:

  1. Завести доменное имя KeenDNS, например giga.keenetic.pro,
  2. Ниже в разделе «Доступ к веб-приложениям домашней сети» назначить доменное имя четвёртого уровня, например, rci.giga.keeneitc.pro с параметрами «Этот интернет центр», порт TCP79, галка «разрешить доступ». Таким образом, обращения на rci.giga.keeneitc.pro начнут проксироваться на REST API 127.0.0.1:79, где авторизации нет.
  3. Включить авторизацию для этого проксирования из CLI:
    ip http proxy rci auth

     

  4. Завести в WebUI пользователя (например rci), присвоить ему пароль (например, rcipassword) и тэг «HTTP Proxy»,

  5. Получить 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
!
...

Эти шаги необходимы для реализации любого из решений, описанных далее.

 

Опубликовано

Переход на резервный канал с помощью Telegram

  1. Создайте новый апплет, выбрав в качестве «this» сервис Telegram, триггер «New message with key phrase to @IFTTT».
  2. В качестве ключевой фразы «выключи основной канал», в шаблоне ответа «готово!» после чего нажмите «create trigger».
  3. В качестве «that» выберите сервис Webhooks,
  4. выберите его единственное действие «Make a web request».
  5. Параметры действия следующие:
    • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ ,
    • Method: POST
    • Content type: application/json
    Body: [{"interface":{"ISP":{"up":{"no":true} } } }]
  6. Нажмите «finish»

Цифры в списке выше соответвуют шагам создания апплета на сайте IFTTT, соответствующие скриншоты по номерам прикреплены ко вложению.

Для перехода обратно с резервного на основной канал придётся создать аналогичный рецепт, изменив только ключевую фразу, которую вы будете посылать телеграм-боту IFTTT на «включи основной канал», а параметр Body запроса на [{"interface":{"ISP":{"up":{"no":false} } } }]

telegram_chat.png


 

Скрытый текст

 

step1_create_recipe.PNGstep2_create_trigger.PNGstep3_choose_action.PNGstep4_pick_web_request.PNG

 

step5_web_request.pngstep6_finish.PNG

 

 

 

 

Опубликовано

Обновление прошивки после публикации changelog'а на этом форуме

В соседней теме тов. @ndm публикует изменения, вошедшие в прошивку 2.12. Роутер новую прошивку получает, но для того, чтобы изменения вступили в силу, его надо перегрузить. Отслеживать изменения веб-страниц IFTTT не умеет, однако есть способ превратить тему форума в RSS-поток, с которым он работать может.

  1. Создайте новый аплет, выбрав в качестве блока «THIS» сервис RSS feed, выберите триггер «New feed item matches»,
  2. Параметры триггера:
    • Keyword or simple phrase: 2.12
    • Feed URL: http://feed43.com/5528146701453366.xml
  3. В качестве «that» выберите сервис Webhooks,
  4. выберите его единственное действие «Make a web request».
  5. Параметры действия следующие:
    • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/components/commit ,
    • Method: POST
    • Content type: application/json
    • Body: {}
  6. Нажмите «finish»

Готово!

Опубликовано

Отключение вайфая, когда ухожу из дома

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

  1. Создайте новый аплет, выбрав в качестве блока «THIS» сервис Location, триггер «You enter an area»,
  2. В параметрах триггера укажите на карте точку, где работает ваш кинетик и радиус территории, при покидании которой вайфай будет выключаться
  3. В качестве «that» выберите сервис Webhooks,
  4. выберите его единственное действие «Make a web request».
  5. Параметры действия следующие:
    • 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} } } }]
  6. Нажмите «finish»

Готово! Для включения вайфая по возвращению домой надо будет создать аналогичный рецепт, триггером которого будет ваше вхождение в зону действия роутера, а команда на включение (поле Body в web request): {"interface":{"WifiMaster0/AccessPoint0":{"up":{"no":false} } } },{"interface":{"WifiMaster1/AccessPoint0":{"up":{"no":false} } } }]

Опубликовано

Переподключение к интернету, если получен серый IP

В некоторых регионах Ростелеком иногда выдаёт серый IP-адрес, что может в ряде случаев вас не устраивать. Можно решить эту проблему не прибегая к установке Entware силами Zapier'а, который в отличие от IFTTT настраивается более гибко. В частности, между блоками «триггер» и «действие» можно вставлять собственные фильтры.

В отличие от предыдущих примеров, где роутер лишь воспринимал воздействие от внешнего сервиса, в этом роутер будет выступать и источником события и приёмником события.

Перед началом работы с сервисом присвойте роутеру доменное имя, оканчивающееся на keenetic.link или keenetic.pro и разрешите доступ к роутеру по HTTP через облако.

Далее привожу по шагам создание необходимого Zap'а, номера скриншотов под катом соответвуют пунктам списка:

  1. После регистрации на сервисе создайте новый Zap и выберите в качестве триггера Webhooks by Zapier, действие Catch Hook и нажмите «Continue»,
  2. На следующем экране введите имя единственного поля, значение которого будет нас интересовать — «ip» и нажмите «Continue»,
  3. Скопируйте в буфер обмена или текстовой файл предложенный URL вида https://hooks.zapier.com/hooks/catch/3453280/оерdfc/ , при обращении к которому будет срабатывать рецепт, затем нажмите кн. «Ok, I did it»,
  4. На следующем шаге сервис будет ждать пока вы не протестируете этот URL, просто вставьте его в адресную строку новой вкладки вашего браузера, допишите в конце URL'а «?ip=123» и нажмите Enter. Появится сообщение о том, что URL успешно протестирован и станет доступна кн.«Continue»,
  5. Добавьте фильтр, нажав «+» на диаграмме рецепта и выбрав «filter»,
  6. Выберите тип фильтра only if continue, затем «Save+Continue»,
  7. Задайте параметры фильтра, выбрав из выпадающего списка Querystring ip, условие Text starts with и впишите в оставшееся поле значение «100.». Если серые адреса вашего провайдера отличаются от 100.x.y.z, то впишите подходящее значение. Далее нажимайте «Test&Continue». Вы получите сообщение о том, что тестовый вызов URL не содержал искомое значение (в примере выше в свободной вкладке мы дописывали ip=123, так и должно быть), просто нажимайте «Continue»,
  8. Будет предложено выбрать приложение-действие, выбирайте снова Webhooks by Zapier и вариант Custom Request,
  9. Заполните детали запроса, в частности:
    — 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
  10. В следующем окне будет возможность проверить правильность введённых параметров, нажмите «Send Test to Webhooks by Zapier»
  11. Если всё сделали правильно, то сервис сможет подключиться к роутеру и выполнить разовое переподключение к интернету. Будет выдано сообщение об успешном выполнении запроса и кнопка «Finish».
  12. На последнем шаге будет предложено присвоить имя для созданного рецепта.

Вернитесь в веб-интерфейс роутера и на вкладке Доменное имя > DDNS выберите «Сервис: Другой» и вставьте в поле «Адрес сервиса» значение https://hooks.zapier.com/hooks/catch/3453280/оерdfc/?ip=${ip} , это тот URL, что вы копировали в буфер обмена или текстовой файл при создании рецепта. К концу сохранённого URL надо самостоятельно дописать хвост «?ip=${ip}» по образцу.

Всё! Контролировать работу рецепта можно вкладки Task History. В ней будет видно какие IP-адреса кинетик сообщал сервису и отвечал ли сервис кинетику, если адрес был серым. В случае, если от провайдера был получен серый IP, Zapier скомандует роутеру переподключиться к интернету.

Ограничений на число переподключений здесь нет, а через некоторое время Zapier захочет денег. Пожалуйста это учтите.

Скрытый текст

 

01_create_trigger.png

02_hook_field.png

03_hook_url.png

04_test_hook.png

05_add_filter.png

06_only_if_continue.png

07_filter_params.png

08_pick_action.png

09_request params1.png

09_request params2.png

10_test_request.png

11_make_test_request.png

12_get_Zap_a_name.png

 

 

16_task_log.png

Опубликовано

Голосовое управление гостевый вайфаем на русском языке стало возможные благодаря платформе Яндекс.Диалоги, доступной на текущей момент в бета-версии мобильного Яндекса.

Платформа Алисы умеет посылать POST-запрос на указанный URL, но не умеет заполнять тело запроса, поэтому схема будет следующей: Алиса посылает пустой POST-запрос определённого вида сервису IFTTT в качестве триггера, а IFTTT уже будет отсылать роутеру сформированный POST-запрос с нужным содержимым.

  1. Создайте новый IFTTT апплет, выбрав в качестве «this» сервис Webhooks,
  2. Назовите событие именем guest_wifi_on,
  3. В качестве «that» выберите сервис Webhooks,
  4. выберите его единственное действие «Make a web request».
  5. Параметры действия следующие:
    • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ ,
    • Method: POST
    • Content type: application/json
    Body: [{"interface":{"WifiMaster0/AccessPoint1":{"up":{"no":false} } } } ]
  6. Нажмите «finish»
  7. Теперь зайдите в документацию WebHooks и перешлите любым удобным способом на мобильный телефон URL, служащий триггером события, он будет иметь вид https://maker.ifttt.com/trigger/guest_wifi_on/with/key/c4fwNrulqpfI4_fze9wpL6
  8. Скажите на мобильнике Алисе «Включи волшебные заклинания»,
  9. Добавьте пересланный на мобильник URL и ключевую фразу «включи гостям вайфай».

Аналогичными шагами добавляется реакция на ключевую фразу «выключи гостям вайфай», результат работы аплета показан в ролике:

https://rutube.ru/video/80c124a6c7b84c787268fd0f6923f3ba/

Опубликовано (изменено)

Добавлю, что для Google Assistant настраивается еще проще, т. к. его поддержка есть в IFTTT. В IF добавляем желаемую фразу для ассистента, в THEN все так же, как в посте выше. Работает!

P. S. Пока ассистент на русском не доступен, работать все будет, если основной язык телефона английский. Разумеется, фразу задавать тоже на английском.

Спасибо @Александр Рыжов за отличную идею!

Изменено пользователем Sergey Zozulya
P. S.
  • 5 месяцев спустя...
  • 2 недели спустя...
Опубликовано (изменено)
В 28.05.2018 в 14:45, Александр Рыжов сказал:
  • Скажите на мобильнике Алисе «Включи волшебные заклинания»,
  • Добавьте пересланный на мобильник URL и ключевую фразу «включи гостям вайфай».

Никак не хочет эта тётя включать заклинания:
image.png.7f5cdc0886e1559f55d792710bd49bbf.png

> > "Волшебные заклинания" это внешний навык Алисы, т.е. навык созданный сторонними разработчиками.
> > В настоящее время вызвать этот навык нельзя.
> > Но вы можете создать свой собственный навык, аналогичный этому)
> >
> > С уважением,
> > Служба поддержки Яндекса

Изменено пользователем Vik2018
  • 2 недели спустя...
Опубликовано

Здравствуйте! Возник вопрос воспитания младшего поколения. :D Скажите возможно-ли при появлении в сети смартфона (я или жена) включать доступ в сеть Телевизор (по проводу) и телефон ребенка (по воздуху). Все устройства зарегистрированы и IP прибиты к ним. При отсутствии в сети обоих телефонов (я и жена) - отрубать доступ в сеть телевизору (провод) и телефону ребенка (воздух).
В принципе это возможно? Если да то посоветуйте как. Спасибо заранее!  Если написал не в ту тему - посоветуйте куда можно постучаться.

Опубликовано (изменено)
1 час назад, Игорь Белов сказал:

Здравствуйте! Возник вопрос воспитания младшего поколения. :D Скажите возможно-ли при появлении в сети смартфона (я или жена) включать доступ в сеть Телевизор (по проводу) и телефон ребенка (по воздуху). Все устройства зарегистрированы и 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 Запретить доступ к сети Интернет.

 

Изменено пользователем vasek00
  • 4 месяца спустя...
Опубликовано

Алиса дёргает веб-хук. На вас ложится обработка реакции на него. Следственно:

  • настраиваете на роутере веб-сервер,
  • пишите CGI-обработчик, разбирающий пришедшее событие и исполняющий нужные команды.

Т.е. сложно и не оправданно (IMHO).

  • 1 месяц спустя...
Опубликовано
В 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 - веб сервер не доступен

Опубликовано
В 13.06.2019 в 17:59, Igor Puteev сказал:

Здравствуйте, подскажите, пожалуйста, я верно понимаю, что на устройствах без USB-порта REST API тоже работает?

Настраивал все по вашей инструкции, по  rci.giga.keenetic.pro/rci прекрасно открывается конфиг, правда по rci.giga.keenetic.pro - веб сервер не доступен

Да, все работает на всех устройствах.

Этот REST API - это не морда, это именно что API. Потому доступен только URI /rci, все остальное выдает ошибку.

Опубликовано
6 часов назад, Le ecureuil сказал:

Да, все работает на всех устройствах.

Этот REST API - это не морда, это именно что API. Потому доступен только URI /rci, все остальное выдает ошибку.

так уже и стал думать. Спасибо большое за подсказку - помогли разобраться быстрее техподдержки.

  • 4 месяца спустя...
Опубликовано

Здравствуйте !

Поставил себе на Keenetic среду Node-RED, которая может выполнять нечто похожее, что и все описанные сервисы и тоже умеет посылать HTTP-запросы.

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

Подскажите, что нужно сделать на Keenetic, чтобы к нему можно было подключиться, авторизоваться и делать запросы на rci ?

Опубликовано
В 26.02.2018 в 16:07, Александр Рыжов сказал:

Есть универсальный RESTful интерфейс, позволяющий выполнять любые доступные команды простым POST HTTP-запросом. Если лень копаться в документации, то нужный запрос можно подсмотреть в режиме разработчкика, нажав при открытом веб-интерфейсе в браузере F12.

Ссылка доступные команды НЕ работает, что делать ?

Опубликовано
5 часов назад, iFinder сказал:

Здравствуйте !

Поставил себе на Keenetic среду Node-RED, которая может выполнять нечто похожее, что и все описанные сервисы и тоже умеет посылать HTTP-запросы.

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

Подскажите, что нужно сделать на Keenetic, чтобы к нему можно было подключиться, авторизоваться и делать запросы на rci ?

по node-red есть отдельная тема с примером

но я по нему не смог авторизацию настроить, node-red у меня на отдельном устройстве в локалке, просто пользую 79 порт без авторизации.
мониторю хосты, впн клиентов, логи кинетиков и отправляю в телеграмм




 

  • 1 год спустя...
Опубликовано

Добрый день!

Скажите, возможно-ли решить следующую задачу на базе Keenetic:

При подключении к WiFi сети зарегистрированного устройства включить Sonoff розетку, при отключении - выключить?

  • 8 месяцев спустя...
Опубликовано
В 28.05.2018 в 11:45, Александр Рыжов сказал:

Голосовое управление гостевый вайфаем на русском языке стало возможные благодаря платформе Яндекс.Диалоги, доступной на текущей момент в бета-версии мобильного Яндекса.

Платформа Алисы умеет посылать POST-запрос на указанный URL, но не умеет заполнять тело запроса, поэтому схема будет следующей: Алиса посылает пустой POST-запрос определённого вида сервису IFTTT в качестве триггера, а IFTTT уже будет отсылать роутеру сформированный POST-запрос с нужным содержимым.

  1. Создайте новый IFTTT апплет, выбрав в качестве «this» сервис Webhooks,
  2. Назовите событие именем guest_wifi_on,
  3. В качестве «that» выберите сервис Webhooks,
  4. выберите его единственное действие «Make a web request».
  5. Параметры действия следующие:
    • URL: https://rci:rcipassword@rci.giga.keenetic.pro/rci/ ,
    • Method: POST
    • Content type: application/json
    Body: [{"interface":{"WifiMaster0/AccessPoint1":{"up":{"no":false} } } } ]
  6. Нажмите «finish»
  7. Теперь зайдите в документацию WebHooks и перешлите любым удобным способом на мобильный телефон URL, служащий триггером события, он будет иметь вид https://maker.ifttt.com/trigger/guest_wifi_on/with/key/c4fwNrulqpfI4_fze9wpL6
  8. Скажите на мобильнике Алисе «Включи волшебные заклинания»,
  9. Добавьте пересланный на мобильник URL и ключевую фразу «включи гостям вайфай».

Аналогичными шагами добавляется реакция на ключевую фразу «выключи гостям вайфай», результат работы аплета показан в ролике:

 

А можно так сделать на голосовом помощнике  alexa? Чтобы она отправила WOL на ПК?

  • 1 год спустя...
Опубликовано

День добрый, подскажите, а как через webhook настроить уведомления в телеграм-бота событий о подключении к сети только ОПРЕДЕЛЁННЫХ устройств, стандартно только обо всех подключения и отключения приходят - это излишне. Нужно только для конкретных.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.