Jump to content
  • 2
Vyacheslav Anisimov

запуск скрипта при появлении нового клиента wifi

Question

Добрый день!

Подскажите пожалуйста, как реализовать сценарий. Хочется, к примеру, включать освещение частного дома, когда я подъезжаю к нему на машине.

Сотовый регистрируется в сети wi-fi, хочется по этому событию выполнять некий скрипт (проверка мак-адреса девайса, http-запрос к серверу умнодома)

Скрипт я способен написать сам, хочется понять, можно ли как-то сгенерировать его вызов по изменению состава wi-fi клиентов сети?

Желательно не путем вызова в кроне скрипта, сканирующего ARP, а именно событием.

Share this post


Link to post
Share on other sites

Recommended Posts

  • 1

Начиная с 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 для устройства.

Share this post


Link to post
Share on other sites

  • 1

Могу предположить, что топикстартера интересует запуск скрипта из wan.d (или какой там каталог wlan.d? нет доступа к роутеру под рукой что бы посмотреть) который идет в комплекте с opkg.

В этот каталог (который отслеживает появление WiFi устройств) он кладет свой скрипт, далее скрипт проверяет устройство по маку и после удачной проверки шлет на сервер необходимую команду. 

Edited by m__a__l

Share this post


Link to post
Share on other sites

  • 0

Приобретаете IP камеру с внешним доп.интерфейсом - 1DI / 1DO (digital input и output). Цифровые разъемы DI/DO обеспечивают физический интерфейс для отправки и приема цифровых сигналов различных внешних устройств 4 контактный разъем. Про возникновении события сработает оборудование подключенное к данным контактам.
 

Share this post


Link to post
Share on other sites

  • 0
В 09.07.2018 в 09:38, vasek00 сказал:

Приобретаете IP камеру с внешним доп.интерфейсом - 1DI / 1DO (digital input и output). Цифровые разъемы DI/DO обеспечивают физический интерфейс для отправки и приема цифровых сигналов различных внешних устройств 4 контактный разъем. Про возникновении события сработает оборудование подключенное к данным контактам.
 

Это вообще не понятно, зачем здесь. Совсем не то. Вроде и не рядом.

Share this post


Link to post
Share on other sites

  • 0
22 часа назад, m__a__l сказал:

Могу предположить, что топикстартера интересует запуск скрипта из wan.d (или какой там каталог wlan.d? нет доступа к роутеру под рукой что бы посмотреть) который идет в комплекте с opkg.

В этот каталог (который отслеживает появление WiFi устройств) он кладет свой скрипт, далее скрипт проверяет устройство по маку и после удачной проверки шлет на сервер необходимую команду. 

А вот это похоже на то. Но я не смог найти какого-то описания этого хозяйства. Или примеров. 

Можете помочь?

Я кладу туда скрипт и он будет выполняться в какой момент?

Share this post


Link to post
Share on other sites

  • 0
19 минут назад, Vyacheslav Anisimov сказал:

Это вообще не понятно, зачем здесь. Совсем не то. Вроде и не рядом. 

Очень даже рядом, так как задачу умный дом хотелось вам 

Цитата

Хочется, к примеру, включать освещение частного дома, когда я подъезжаю к нему на машине. Сотовый регистрируется в сети wi-fi, хочется по этому событию выполнять некий скрипт (проверка мак-адреса девайса, http-запрос к серверу умнодома).

а не придумывать что-то из подручных средств. Так же для справки любая средняя GSM сигнализация это может делать.

Share this post


Link to post
Share on other sites

  • 0
Только что, vasek00 сказал:

Очень даже рядом, так как задачу умный дом хотелось вам 

Вы предлагаете зажигать свет, когда кто-то в поле зрении камеры проедет, я правильно понял?

Нет, мне такое и близко не нужно. 

Share this post


Link to post
Share on other sites

  • 0
41 минуту назад, Vyacheslav Anisimov сказал:

Вы предлагаете зажигать свет, когда кто-то в поле зрении камеры проедет, я правильно понял? 

Нет, мне такое и близко не нужно. 

Да самое простое к данным входам подключают IR-датчики и сигнальные реле.

Если хотите с телефона управлять (есть android приложения для смарта/планшета или просто через SMS сообщения) то GSM сигнализация удовлетворит любую вашу прихоть (ну почти любую).

Share this post


Link to post
Share on other sites

  • 0
22 минуты назад, vasek00 сказал:

Да самое простое к данным входам подключают IR-датчики и сигнальные реле.

Если хотите с телефона управлять (есть android приложения для смарта/планшета или просто через SMS сообщения) то GSM сигнализация удовлетворит любую вашу прихоть (ну почти любую).

Я выше уже написал, что мне не подходит то, что вы пишите. И gsm-сигнализацию я ставить не собираюсь. Считаю, что сам keenetic прекрасно удовлетворит любую мою прихоть.

Еще раз, для тех, кто не вчитался. Я хочу, что-бы что-то происходило, когда мой смартфон появляется в wi-fi сети. Само происходило, а не по нажатию кнопки. Происходило только при появлении моего смартфона, а не любой проезжающей машины в зоне видимости вашей камеры. Включение света приведено в первом сообщении только для наиболее простого примера. Открытие ворот другой пример.

 

Очень интересно услышать подробностей про wan.d/wlan.d...

Share this post


Link to post
Share on other sites

  • 0
50 минут назад, Vyacheslav Anisimov сказал:

Я выше уже написал, что мне не подходит то, что вы пишите. И gsm-сигнализацию я ставить не собираюсь. Считаю, что сам keenetic прекрасно удовлетворит любую мою прихоть.

Еще раз, для тех, кто не вчитался. Я хочу, что-бы что-то происходило, когда мой смартфон появляется в wi-fi сети. Само происходило, а не по нажатию кнопки. Происходило только при появлении моего смартфона, а не любой проезжающей машины в зоне видимости вашей камеры. Включение света приведено в первом сообщении только для наиболее простого примера. Открытие ворот другой пример.

 

Очень интересно услышать подробностей про wan.d/wlan.d...

Где-то на этом форуме украинские кажись товарищи предлагали готовое решение по этому поводу ))))...поискать надо

 

посмотрите тут )))) ...мож оно?

 

Edited by MDP

Share this post


Link to post
Share on other sites

  • 0

...на вскидку что в голову приходит, написать скрипт постоянно пингующий зарезервированный IP (домашней сети) вашего смартфона, при удачном прохождении пинга вызываете действие какое-либо

Edited by MDP

Share this post


Link to post
Share on other sites

  • 0
1 час назад, Vyacheslav Anisimov сказал:

И gsm-сигнализацию я ставить не собираюсь. Считаю, что сам keenetic прекрасно удовлетворит любую мою прихоть.

Ваше право, если вы так считаете что сам keenetic прекрасно удовлетворит любую мою прихоть - как говорится хозяин барин.

Share this post


Link to post
Share on other sites

  • 0
7 часов назад, Vyacheslav Anisimov сказал:

А вот это похоже на то. Но я не смог найти какого-то описания этого хозяйства. Или примеров. 

Можете помочь?

Я кладу туда скрипт и он будет выполняться в какой момент?

У меня сейчас нет физического доступа к keenetic роутерам с opkg, вам я правильно понял нужен именно путь к дирректории, которая выполняет скрипты при активации абонента по wifi, это как раз рядом с кроном, но путь я не помню. 

Должно быть в /opt/etc а вот далее, надеюсь подскажут, предлагаю позвать @TheBB и @zyxmon они наверняка сразу поймут о чем идет речи и подскажут, в какой каталог класть свои скрипты. 

Share this post


Link to post
Share on other sites

  • 0
5 часов назад, vasek00 сказал:

Ваше право, если вы так считаете что сам keenetic прекрасно удовлетворит любую мою прихоть - как говорится хозяин барин.

Наверно опять отвечу за топикстартера (на сколько я понял) у него уже есть «умный дом» и управляется с его сайта, ему осталась «простая» вещь, это с роутера скриптом на свой сайт отправить команду, когда по wifi появится устройство с определенным mac. 

Share this post


Link to post
Share on other sites

  • 0
7 часов назад, MDP сказал:

Где-то на этом форуме украинские кажись товарищи предлагали готовое решение по этому поводу ))))...поискать надо

 

посмотрите тут )))) ...мож оно?

похоже на то, что я своими руками хочу реализовать )) спасибо, изучу

Share this post


Link to post
Share on other sites

  • 0
7 часов назад, MDP сказал:

...на вскидку что в голову приходит, написать скрипт постоянно пингующий зарезервированный IP (домашней сети) вашего смартфона, при удачном прохождении пинга вызываете действие какое-либо

можно программно логиниться на веб-морду роутера в соотв. вкладку. но хочется как-то проще )) 

Share this post


Link to post
Share on other sites

  • 0
58 минут назад, m__a__l сказал:

Наверно опять отвечу за топикстартера (на сколько я понял) у него уже есть «умный дом» и управляется с его сайта, ему осталась «простая» вещь, это с роутера скриптом на свой сайт отправить команду, когда по wifi появится устройство с определенным mac. 

Бинго! Все правильно. Спасибо ))

Share this post


Link to post
Share on other sites

  • 0
24 минуты назад, TheBB сказал:

Спасибо!

"/opt/etc/ndm/wan.d/ event scripts are executed once a new internet connection is available."

Это ведь исполняется не при появлении нового устройства в сети, а при изменении состояния WAN.

А события при появлении-уходе wi-fi-клиента там в документации нет.

Или я неправильно понял?

Share this post


Link to post
Share on other sites

  • 0
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 by Vyacheslav Anisimov

Share this post


Link to post
Share on other sites

  • 0

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

Share this post


Link to post
Share on other sites

  • 0

Если @Vyacheslav Anisimov не против, могу перенести тему в Развитие NDMS.

IMHO, это частный случай подписки на события прошивки. На все случаи жизни hook-скриптов не напасёшься.

 

Share this post


Link to post
Share on other sites

  • 0
В 09.07.2018 в 06:33, Vyacheslav Anisimov сказал:

Добрый день!

Подскажите пожалуйста, как реализовать сценарий. Хочется, к примеру, включать освещение частного дома, когда я подъезжаю к нему на машине.

Сотовый регистрируется в сети wi-fi, хочется по этому событию выполнять некий скрипт (проверка мак-адреса девайса, http-запрос к серверу умнодома)

Скрипт я способен написать сам, хочется понять, можно ли как-то сгенерировать его вызов по изменению состава wi-fi клиентов сети?

Желательно не путем вызова в кроне скрипта, сканирующего ARP, а именно событием.

Именно событием относительно устойчиво получалось желаемое на DHCP-сервере.

Share this post


Link to post
Share on other sites

  • 0
15 часов назад, Александр Рыжов сказал:

Именно событием относительно устойчиво получалось желаемое на DHCP-сервере.

Выглядит именно тем, что мне нужно.

15 часов назад, Александр Рыжов сказал:

IMHO, это частный случай подписки на события прошивки. На все случаи жизни hook-скриптов не напасёшься.

HTTP-подписка на события выглядит еще более "тем".

Обычно сервер умного дома - отдельный девайс. Тот же расбери, например. И если для получения таких событий не придется лезть в роутер и shell-скрипты писать - это будет сильно удобнее. Инсталляция упрощается у неподготовленных юзеров.

Share this post


Link to post
Share on other sites

  • 0
15 часов назад, Александр Рыжов сказал:

Если @Vyacheslav Anisimov не против, могу перенести тему в Развитие NDMS.

Так как выяснили, что такое сейчас неосуществимо, то конечно я не против переноса.

Очень надеюсь на появление такого функционала любым методом - или скриптами или подпиской.

Share this post


Link to post
Share on other sites

  • 0

Внесу свои 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 by Khaninea
Добавлена информация о необходимости установки утилит

Share this post


Link to post
Share on other sites

  • 0

Огромное спасибо! У меня честно говоря пропал энтузиазм после чтения документации )) Хоть я и оказался предельно удивлен быстрой скоростью внесений изменений в прошивку. Все времени не было такой скрипт написать сесть.

Еще один вопрос "для прошивок начиная с 2.13.A.3.0" что именно означает? Эта фича во всех альфах после этого? В бетах? Или в продакшене уже?

Share this post


Link to post
Share on other sites

Guest
This topic is now closed to further replies.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...