Страница 1 из 4

[Настройка] Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Пт фев 12, 2016 9:02 pm
VIP_Graff
Помогите реализовать идею. Я честно пытался сам получать гуляющие DHCP пакеты, но увы моя каша не работает. От слова совсем.

Цель:
При появлении телефона в сети, включать свет в подъезде.
Хочу реализовать это на ардуинке подключенной к локальной сети через езернет шилд W5100.
Исполнительное устройство: свет на улице, телефон подключается к Wi-Fi немного раньше попадания в освещаемую зону.

Что имеем:
Телефон при обнаружении WiFi, подключается к сети. Получение IP адреса по DHCP.
Готовая библиотека получения DHCP адреса для W5100, но у меня не получается ее переделать в свою библиотеку, чтобы она принимала все DHCP пакеты и возвращала МАК адреса устройства.

Дополнительный аргумент в пользу парсинга МАКов, охранять безопасность сети.
По принципу как с работой RF приемником.

Чтобы можно было построить выражние типа:

Код: Выделить всё

IF ResivedMAC == 112233445566 OR ResivedMAC == 998877665544 Then
  // включить свет;
ELSEIF ResivedMAC == 998877665544 Then
  // ничего не делать;
ELSE
  // бить тревогу, чужие в сети;
END; 
Для новых заглянувщих в тему краткий FAQ идей по реализации:
  • 1. Для пользователей не должно добавляться активных действий(нажать на кнопку)
  • 2. Читал про приложение Tasker, но хотелось бы обойтись без задействования дополнительного ПО
  • 3. bluetooth и датчик движения - использовать не вариант, из-за большого расстояния, необходимое расстояние только Wi-Fi дает.
  • 4. задать статические адреса и постоянно пинговать - выглядит не совсем правильным, из-за постоянно гуляющих запросов, которые будут долбить пока устройство в сети (будет ли себя хорошо чувствовать устройство под постоянной атакой пинга, знаю что айфоны уходят в энергосбережение и не отвечают на пинг)
  • 5. Дома используется 3G интернет, "снаружи" доступ отсутствует. Сервера дома - нету. Есть роутер с OpenWRT. Сервера с белым IP - нету.
Я рассматривал эти идеи до создании темы, но нету знаний в реализации задуманного:
  • 1. На роутере стоит OpenWRT. Знаю что можно спарсить оттуда МАК. Что бы роутер "скриптом проверял подключившихся" и передавал команды(или МАКи) на ардуину.
  • 2. Парсить МАКи из ARP пакетов, они то всегда ходят в сети. Но информацию для меня понятную, как это делать не нашел.
  • 3. Парсить МАКи из гуляющих DHCP запросов. Запросы в сети появляются когда устройство подключается или продлевает аренду (Что меня устраивает).

Re: Определение из DHCP подключившегося устройства

Добавлено: Сб фев 13, 2016 1:32 am
flair
если телефон андройд - может проще таскером замутить?

Re: Определение из DHCP подключившегося устройства

Добавлено: Сб фев 13, 2016 9:58 am
VIP_Graff
да, сейчас телефон на андроиде. Можно поподробней про таскер?

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

Сначала я вообще хотел из ARP пакетов парсить МАКи. Но информацию для меня понятную как это делать не нашел.

Re: Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Сб фев 13, 2016 11:01 am
flair
http://majordomo.smartliving.ru/Main/ScAndroidTasker почитайте тут... Если что не понятно поясню у меня есть мысль. Что бы унифицировать эту функцию поставить на роутер openwrt... И что бы он скриптом проверял подключившихся

Re: Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Сб фев 13, 2016 1:18 pm
olehs
Не обязательно завязываться на МАС.
Если в DHCP сервере для нужных устройств задать статические адреса, то можно просто их постоянно пинговать
http://arduino.ru/forum/obshchii/arduino-lan-ping-led

Re: Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Сб фев 13, 2016 1:22 pm
flair
Работает через зад... Как и модуль онлайн

Re: Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Сб фев 13, 2016 1:25 pm
olehs
Тут с Вами соглашусь.
Но по DHCP еще менее информативно.
Для включения света лучше, наверное, bluetooth использовать.
А еще лучше - датчик движения.

Re: Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Сб фев 13, 2016 3:52 pm
VIP_Graff
Почитал про таскер. На роутере стоит OpenWRT. Знаю что можно спарсить оттуда МАК, но не знаю как, а что бы он "скриптом проверял подключившихся" своими силами точно не смогу написать.
olehs писал(а):Не обязательно завязываться на МАС.
МАК это единственное уникальный индификатор гуляющий всегда в сети и которое имеется у каждого устройства подключенного к сети.
olehs писал(а):просто их постоянно пинговать
Ну как бы поднимается вопрос, а если таких устройств наберется 20... постоянно гонять трафик в поисках отсутствующего устройства... как-то выглядит некрасиво, да и по надежности непонятно как оно себя будет вести.
olehs писал(а):Но по DHCP еще менее информативно
А можете рассказать почему менее информативно? Я знаю мак адрес моего устройства, если устройство(телефон) попадает в мою сеть - я об этом узнаю, когда устройство получает IP адрес. А если попадет еще и с неизвестным(новым) МАКом, то тут можно уже и тревогу поднимать.
Да, я понимаю, если будет подключение со статикой, аларм не сработает. Поэтому сначала думал дергать МАК из ARP пакетов, они то всегда ходят.
olehs писал(а):Для включения света лучше, наверное, bluetooth использовать. А еще лучше - датчик движения.
bluetooth и датчик движения - не вариант, из-за большого расстояния, только Wi-Fi необходимое расстояние покрывает.
Да, забыл сказать - исполнительное устройство: свет на улице, и желательно включать немного заранее попадания в освещаемую зону.

Re: Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Сб фев 13, 2016 5:33 pm
devoff
У себя реализовал включение света на парковке, через Tasker + AutoLocation.
AutoLocation - мощное дополнение, оно определяет примерно метод движения, пешком, машина, велосипед. Так же можно настроит 2 круга реакции, например, при попадание "в большой круг" модуль отправляет данные о местоположение каждые 15 минут, при попадание из "большого" в "малый" данные уже ходят хоть каждые 30 секунд.
Посмотрите видео в ютубе.

тоесть у меня получается - я на машине въезжаю в радиус 10 км от дачи, AutoLocation переключается в режим малого круга и отправляет данные уже каждую минуту, когда я оказываюсь за 1 км до дома, МЖД включает свет на парковке.

но только Андройд ... *(

WiFi пробовал, но с выключенным экраном к сети может подключатся с задержкой до 10 минут, а если уж включили экран то проще либо кнопку нажать, либо через NFC скрипт запустить.

Re: Как сделать? Вытаскивать МАК адреса из DHCP пакетов

Добавлено: Вс фев 14, 2016 2:20 am
olehs
VIP_Graff писал(а): МАК это единственное уникальный индификатор гуляющий всегда в сети и которое имеется у каждого устройства подключенного к сети.
При статике, айпи - тоже, как бы уникальный идентификатор.
VIP_Graff писал(а): Ну как бы поднимается вопрос, а если таких устройств наберется 20... постоянно гонять трафик в поисках отсутствующего устройства... как-то выглядит некрасиво, да и по надежности непонятно как оно себя будет вести.
Пинг... трафик? Шутите... :D
VIP_Graff писал(а): А можете рассказать почему менее информативно? Я знаю мак адрес моего устройства, если устройство(телефон) попадает в мою сеть - я об этом узнаю, когда устройство получает IP адрес. А если попадет еще и с неизвестным(новым) МАКом, то тут можно уже и тревогу поднимать.
Да, я понимаю, если будет подключение со статикой, аларм не сработает. Поэтому сначала думал дергать МАК из ARP пакетов, они то всегда ходят.
Я имел ввиду, что при нынешнем стремлении мобильных операционок сэкономить заряд батареи, даже пинг - не гарантирует четкого определения нахождения устройства в сети. А надеятся на то, что устройство будет запрашивать адрес всегда, и только при попадании в сеть - я бы не стал.
VIP_Graff писал(а): bluetooth и датчик движения - не вариант, из-за большого расстояния, только Wi-Fi необходимое расстояние дает.
Да, забыл сказать - исполнительное устройство: свет на улице, и желательно включать немного заранее попадания в освещаемую зону.
Да уж, при больших расстояниях не поможет. Тут действительно лучше смотреть в сторону GPS.