Vyacheslav Anisimov Posted July 9, 2018 Share Posted July 9, 2018 Добрый день! Подскажите пожалуйста, как реализовать сценарий. Хочется, к примеру, включать освещение частного дома, когда я подъезжаю к нему на машине. Сотовый регистрируется в сети wi-fi, хочется по этому событию выполнять некий скрипт (проверка мак-адреса девайса, http-запрос к серверу умнодома) Скрипт я способен написать сам, хочется понять, можно ли как-то сгенерировать его вызов по изменению состава wi-fi клиентов сети? Желательно не путем вызова в кроне скрипта, сканирующего ARP, а именно событием. Link to comment Share on other sites More sharing options...
1 Le ecureuil Posted July 23, 2018 Share Posted July 23, 2018 Начиная с 2.13.A.3.0 появилось событие neighbour.d. По нему можно отследить появление хоста в сети или его уход. Однако это событие в основном дает только ID. Затем по этому ID нужно сделать запрос в /rci/show/ip/neighbour, оттуда взять L3 адреса, а также mac или via (mac - это mac устройства, via - это mac, под которым оно видно в сети. Они отличаются, если используется повторитель WiFi с MAT: тогда в via стоит MAC повторителя). После этого по mac или по via нужно сделать запрос в /rci/show/associations, и взять оттуда параметры wifi для устройства. Link to comment Share on other sites More sharing options...
1 m__a__l Posted July 9, 2018 Share Posted July 9, 2018 (edited) Могу предположить, что топикстартера интересует запуск скрипта из wan.d (или какой там каталог wlan.d? нет доступа к роутеру под рукой что бы посмотреть) который идет в комплекте с opkg. В этот каталог (который отслеживает появление WiFi устройств) он кладет свой скрипт, далее скрипт проверяет устройство по маку и после удачной проверки шлет на сервер необходимую команду. Edited July 9, 2018 by m__a__l Link to comment Share on other sites More sharing options...
1 Khaninea Posted January 16, 2019 Share Posted January 16, 2019 (edited) Внесу свои 5 копеек. Как указано в посте Le ecureuil, для прошивок начиная с 2.13.A.3.0 можно использовать hook-скрипт neighbour.d. Для этого в каталоге /opt/etc/ndm/neighbour.d (если такого каталога нет - создать с правами на выполнение) создадим скрипт, например 010-neighbour.sh следующего содержания: #!/bin/sh DEV1="a0:86:c6:8e:47:ef" DEV2="74:23:44:bd:8f:86" replacement() { case "$1" in *$DEV1* ) echo "Device 1";; *$DEV2* ) echo "Device 2";; esac } if [[ "$address" = "ipv4" && "$update" = "none" ]]; then #получаем mac устройства по ID mac=$(wget -qO - http://127.0.0.1:79/rci/show/ip/neighbour | jq --arg num "$id" '.[$num].mac') #проверяем mac на принадлежность нужному нам хосту who=$(replacement "$mac") [ -z "$who" ] && exit 0 #публикуем mqtt сообщение типа "Device 1 new" и "Device 1 del" в топик zyxel mosquitto_pub -d -t zyxel -m "$who $action" -h 192.168.1.112 -p 1883 -u login -P password > /dev/null fi Дадим права на выполнение chmod +x 010-neighbour.sh Все. Теперь при появлении / отключении определенных девайсов от сети в mqtt будут публиковаться сообщения типа "Device 1 new" и "Device 1 del". Вместо публикации сообщений mqtt можете запускать выполнение какого-либо скрипта и т.п. на ваше усмотрение. P.s. Утилиты mosquitto-clients и jq должны быть установлены opkg install mosquitto-clients jq Edited January 16, 2019 by Khaninea Добавлена информация о необходимости установки утилит Link to comment Share on other sites More sharing options...
0 TheBB Posted July 9, 2018 Share Posted July 9, 2018 Link to comment Share on other sites More sharing options...
0 vasek00 Posted July 9, 2018 Share Posted July 9, 2018 Приобретаете IP камеру с внешним доп.интерфейсом - 1DI / 1DO (digital input и output). Цифровые разъемы DI/DO обеспечивают физический интерфейс для отправки и приема цифровых сигналов различных внешних устройств 4 контактный разъем. Про возникновении события сработает оборудование подключенное к данным контактам. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 В 09.07.2018 в 09:28, TheBB сказал: Это не про то, о чем я спрашивал. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 В 09.07.2018 в 09:38, vasek00 сказал: Приобретаете IP камеру с внешним доп.интерфейсом - 1DI / 1DO (digital input и output). Цифровые разъемы DI/DO обеспечивают физический интерфейс для отправки и приема цифровых сигналов различных внешних устройств 4 контактный разъем. Про возникновении события сработает оборудование подключенное к данным контактам. Это вообще не понятно, зачем здесь. Совсем не то. Вроде и не рядом. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 22 часа назад, m__a__l сказал: Могу предположить, что топикстартера интересует запуск скрипта из wan.d (или какой там каталог wlan.d? нет доступа к роутеру под рукой что бы посмотреть) который идет в комплекте с opkg. В этот каталог (который отслеживает появление WiFi устройств) он кладет свой скрипт, далее скрипт проверяет устройство по маку и после удачной проверки шлет на сервер необходимую команду. А вот это похоже на то. Но я не смог найти какого-то описания этого хозяйства. Или примеров. Можете помочь? Я кладу туда скрипт и он будет выполняться в какой момент? Link to comment Share on other sites More sharing options...
0 vasek00 Posted July 10, 2018 Share Posted July 10, 2018 19 минут назад, Vyacheslav Anisimov сказал: Это вообще не понятно, зачем здесь. Совсем не то. Вроде и не рядом. Очень даже рядом, так как задачу умный дом хотелось вам Цитата Хочется, к примеру, включать освещение частного дома, когда я подъезжаю к нему на машине. Сотовый регистрируется в сети wi-fi, хочется по этому событию выполнять некий скрипт (проверка мак-адреса девайса, http-запрос к серверу умнодома). а не придумывать что-то из подручных средств. Так же для справки любая средняя GSM сигнализация это может делать. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 Только что, vasek00 сказал: Очень даже рядом, так как задачу умный дом хотелось вам Вы предлагаете зажигать свет, когда кто-то в поле зрении камеры проедет, я правильно понял? Нет, мне такое и близко не нужно. Link to comment Share on other sites More sharing options...
0 vasek00 Posted July 10, 2018 Share Posted July 10, 2018 41 минуту назад, Vyacheslav Anisimov сказал: Вы предлагаете зажигать свет, когда кто-то в поле зрении камеры проедет, я правильно понял? Нет, мне такое и близко не нужно. Да самое простое к данным входам подключают IR-датчики и сигнальные реле. Если хотите с телефона управлять (есть android приложения для смарта/планшета или просто через SMS сообщения) то GSM сигнализация удовлетворит любую вашу прихоть (ну почти любую). Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 22 минуты назад, vasek00 сказал: Да самое простое к данным входам подключают IR-датчики и сигнальные реле. Если хотите с телефона управлять (есть android приложения для смарта/планшета или просто через SMS сообщения) то GSM сигнализация удовлетворит любую вашу прихоть (ну почти любую). Я выше уже написал, что мне не подходит то, что вы пишите. И gsm-сигнализацию я ставить не собираюсь. Считаю, что сам keenetic прекрасно удовлетворит любую мою прихоть. Еще раз, для тех, кто не вчитался. Я хочу, что-бы что-то происходило, когда мой смартфон появляется в wi-fi сети. Само происходило, а не по нажатию кнопки. Происходило только при появлении моего смартфона, а не любой проезжающей машины в зоне видимости вашей камеры. Включение света приведено в первом сообщении только для наиболее простого примера. Открытие ворот другой пример. Очень интересно услышать подробностей про wan.d/wlan.d... Link to comment Share on other sites More sharing options...
0 MDP Posted July 10, 2018 Share Posted July 10, 2018 (edited) 50 минут назад, Vyacheslav Anisimov сказал: Я выше уже написал, что мне не подходит то, что вы пишите. И gsm-сигнализацию я ставить не собираюсь. Считаю, что сам keenetic прекрасно удовлетворит любую мою прихоть. Еще раз, для тех, кто не вчитался. Я хочу, что-бы что-то происходило, когда мой смартфон появляется в wi-fi сети. Само происходило, а не по нажатию кнопки. Происходило только при появлении моего смартфона, а не любой проезжающей машины в зоне видимости вашей камеры. Включение света приведено в первом сообщении только для наиболее простого примера. Открытие ворот другой пример. Очень интересно услышать подробностей про wan.d/wlan.d... Где-то на этом форуме украинские кажись товарищи предлагали готовое решение по этому поводу ))))...поискать надо посмотрите тут )))) ...мож оно? Edited July 10, 2018 by MDP Link to comment Share on other sites More sharing options...
0 MDP Posted July 10, 2018 Share Posted July 10, 2018 (edited) ...на вскидку что в голову приходит, написать скрипт постоянно пингующий зарезервированный IP (домашней сети) вашего смартфона, при удачном прохождении пинга вызываете действие какое-либо Edited July 10, 2018 by MDP Link to comment Share on other sites More sharing options...
0 vasek00 Posted July 10, 2018 Share Posted July 10, 2018 1 час назад, Vyacheslav Anisimov сказал: И gsm-сигнализацию я ставить не собираюсь. Считаю, что сам keenetic прекрасно удовлетворит любую мою прихоть. Ваше право, если вы так считаете что сам keenetic прекрасно удовлетворит любую мою прихоть - как говорится хозяин барин. Link to comment Share on other sites More sharing options...
0 m__a__l Posted July 10, 2018 Share Posted July 10, 2018 7 часов назад, Vyacheslav Anisimov сказал: А вот это похоже на то. Но я не смог найти какого-то описания этого хозяйства. Или примеров. Можете помочь? Я кладу туда скрипт и он будет выполняться в какой момент? У меня сейчас нет физического доступа к keenetic роутерам с opkg, вам я правильно понял нужен именно путь к дирректории, которая выполняет скрипты при активации абонента по wifi, это как раз рядом с кроном, но путь я не помню. Должно быть в /opt/etc а вот далее, надеюсь подскажут, предлагаю позвать @TheBB и @zyxmon они наверняка сразу поймут о чем идет речи и подскажут, в какой каталог класть свои скрипты. Link to comment Share on other sites More sharing options...
0 m__a__l Posted July 10, 2018 Share Posted July 10, 2018 5 часов назад, vasek00 сказал: Ваше право, если вы так считаете что сам keenetic прекрасно удовлетворит любую мою прихоть - как говорится хозяин барин. Наверно опять отвечу за топикстартера (на сколько я понял) у него уже есть «умный дом» и управляется с его сайта, ему осталась «простая» вещь, это с роутера скриптом на свой сайт отправить команду, когда по wifi появится устройство с определенным mac. Link to comment Share on other sites More sharing options...
0 TheBB Posted July 10, 2018 Share Posted July 10, 2018 https://github.com/ndmsystems/packages/wiki/Opkg-Component Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 7 часов назад, MDP сказал: Где-то на этом форуме украинские кажись товарищи предлагали готовое решение по этому поводу ))))...поискать надо посмотрите тут )))) ...мож оно? похоже на то, что я своими руками хочу реализовать )) спасибо, изучу Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 7 часов назад, MDP сказал: ...на вскидку что в голову приходит, написать скрипт постоянно пингующий зарезервированный IP (домашней сети) вашего смартфона, при удачном прохождении пинга вызываете действие какое-либо можно программно логиниться на веб-морду роутера в соотв. вкладку. но хочется как-то проще )) Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 58 минут назад, m__a__l сказал: Наверно опять отвечу за топикстартера (на сколько я понял) у него уже есть «умный дом» и управляется с его сайта, ему осталась «простая» вещь, это с роутера скриптом на свой сайт отправить команду, когда по wifi появится устройство с определенным mac. Бинго! Все правильно. Спасибо )) Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 10, 2018 Author Share Posted July 10, 2018 24 минуты назад, TheBB сказал: https://github.com/ndmsystems/packages/wiki/Opkg-Component Спасибо! "/opt/etc/ndm/wan.d/ event scripts are executed once a new internet connection is available." Это ведь исполняется не при появлении нового устройства в сети, а при изменении состояния WAN. А события при появлении-уходе wi-fi-клиента там в документации нет. Или я неправильно понял? Link to comment Share on other sites More sharing options...
0 Le ecureuil Posted July 12, 2018 Share Posted July 12, 2018 Правильно, такого события (пока?) нет. Распишите подробно, что вы хотите видеть, а я подумаю как это сделать. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 12, 2018 Author Share Posted July 12, 2018 (edited) 3 часа назад, Le ecureuil сказал: Правильно, такого события (пока?) нет. Распишите подробно, что вы хотите видеть, а я подумаю как это сделать. ndm/wlan.d /opt/etc/ndm/wlan.d/ event scripts are executed once a new wlan client is connected/disconnected. Variable Description $mac Mac address $ip IP address $state "connected" or "disconnected" $name Hostname + $registered = 0/1 Кажется, как-то так. Если можно еще и уведомлять про выход конкретного клиента из сети, была бы вообще сказка. Edited July 12, 2018 by Vyacheslav Anisimov Link to comment Share on other sites More sharing options...
0 ICMP Posted July 16, 2018 Share Posted July 16, 2018 Воспроизведение звуковой дорожки при появления определенного клиента, отправка на эл. почту письма например... Link to comment Share on other sites More sharing options...
0 Александр Рыжов Posted July 16, 2018 Share Posted July 16, 2018 Если @Vyacheslav Anisimov не против, могу перенести тему в Развитие NDMS. IMHO, это частный случай подписки на события прошивки. На все случаи жизни hook-скриптов не напасёшься. Link to comment Share on other sites More sharing options...
0 Александр Рыжов Posted July 16, 2018 Share Posted July 16, 2018 В 09.07.2018 в 06:33, Vyacheslav Anisimov сказал: Добрый день! Подскажите пожалуйста, как реализовать сценарий. Хочется, к примеру, включать освещение частного дома, когда я подъезжаю к нему на машине. Сотовый регистрируется в сети wi-fi, хочется по этому событию выполнять некий скрипт (проверка мак-адреса девайса, http-запрос к серверу умнодома) Скрипт я способен написать сам, хочется понять, можно ли как-то сгенерировать его вызов по изменению состава wi-fi клиентов сети? Желательно не путем вызова в кроне скрипта, сканирующего ARP, а именно событием. Именно событием относительно устойчиво получалось желаемое на DHCP-сервере. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 17, 2018 Author Share Posted July 17, 2018 15 часов назад, Александр Рыжов сказал: Именно событием относительно устойчиво получалось желаемое на DHCP-сервере. Выглядит именно тем, что мне нужно. 15 часов назад, Александр Рыжов сказал: IMHO, это частный случай подписки на события прошивки. На все случаи жизни hook-скриптов не напасёшься. HTTP-подписка на события выглядит еще более "тем". Обычно сервер умного дома - отдельный девайс. Тот же расбери, например. И если для получения таких событий не придется лезть в роутер и shell-скрипты писать - это будет сильно удобнее. Инсталляция упрощается у неподготовленных юзеров. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted July 17, 2018 Author Share Posted July 17, 2018 15 часов назад, Александр Рыжов сказал: Если @Vyacheslav Anisimov не против, могу перенести тему в Развитие NDMS. Так как выяснили, что такое сейчас неосуществимо, то конечно я не против переноса. Очень надеюсь на появление такого функционала любым методом - или скриптами или подпиской. Link to comment Share on other sites More sharing options...
0 Vyacheslav Anisimov Posted January 16, 2019 Author Share Posted January 16, 2019 Огромное спасибо! У меня честно говоря пропал энтузиазм после чтения документации )) Хоть я и оказался предельно удивлен быстрой скоростью внесений изменений в прошивку. Все времени не было такой скрипт написать сесть. Еще один вопрос "для прошивок начиная с 2.13.A.3.0" что именно означает? Эта фича во всех альфах после этого? В бетах? Или в продакшене уже? Link to comment Share on other sites More sharing options...
Question
Vyacheslav Anisimov
Добрый день!
Подскажите пожалуйста, как реализовать сценарий. Хочется, к примеру, включать освещение частного дома, когда я подъезжаю к нему на машине.
Сотовый регистрируется в сети wi-fi, хочется по этому событию выполнять некий скрипт (проверка мак-адреса девайса, http-запрос к серверу умнодома)
Скрипт я способен написать сам, хочется понять, можно ли как-то сгенерировать его вызов по изменению состава wi-fi клиентов сети?
Желательно не путем вызова в кроне скрипта, сканирующего ARP, а именно событием.
Link to comment
Share on other sites
31 answers to this question
Recommended Posts