21 апреля 2018 г.

Кто-кто в теремочке

Вторая проблема – надежное определение подключения телефона к WiFi. Прошлый подход (http://myxolove.blogspot.ru/2016/11/jarvis_9.html) завершился использованием ping. Работало оно всегда хреново, но в последнее время стало невыносимо. Новый Андроид после выключения экрана на пинг отвечать перестаёт. Он может пищать, получать сообщения, показывать их на часах, посылать сообщения и вообще жить полной, насыщенной жизнью, но на пинг он не отвечает. Поэтому после прихода домой начинался цирк с конями: Яша меня приветствовал, сообщал всем, что я дома, зажигал свет, выключал камеры, телефон выключался, Яша со мной прощался, сообщал всем, что я ушел, гасил свет, включал камеры, я матерился в темноте, искал телефон, включал его, Яша меня приветствовал… И так полчаса. При этом было понятно, что решение лежит где-то рядом с Address Resolution Protocol (ARP), но ARP адреса кеширует, так что наличие телефона в ARP совершенно не означает, что телефон подключен к WiFi. Более того, сразу после отключения WiFi телефон всегда есть в ARP. Это, кстати, проблема требований и их преобразования в тест-кейсы. Из требования “Определение подключенного телефона” родились тест-кейсы “Телефон подключен – должно быть True”, “Телефон не подключен – должно быть False”. Ping частенько фейлит первый кейс, а ARP – второй. Нет пути. Но раз пинг фейлит иногда, а ARP - всегда, то надо же использовать ping, правда? Нет. Если подумать, что наличие телефона в ARP буквально означает “Недавно телефон был подключен к WiFi”. И это ровно то, что нужно. Пока телефон подключен, он есть в ARP, даже если он не отвечает на ping. Если телефон не подключен, то через некоторое, весьма небольшое, время он из ARP пропадает. И вообще неважно, если отключение телефона обнаружится через 30 секунд. Зато ARP работает безукоризненно, даже менять ничего, кроме скрипта, не пришлось. Я хотел сюда фотку скрипта повесить, то это было бы убого. Так что расскажу, что раз уж есть датчик открытия двери и определение людей в прихожей, то напрашивается. Так что Яша присылает фотку пришедшего. Вот она, радость. Сидишь такой, а Яша: «Дверь открыта», а потом бум – фотка. И сразу все понятно #jarvis (at Moscow, Russia)

Комментариев нет:

Отправить комментарий