| |||
|
|
Дроны, лампы, шашлыки это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2018/10/08.html Отпраздновали день рождения нашего друга Юры Ильина, снова разжигали шашлык дронами, уже тремя. Из любопытных технических новинок: поизучали «умную лампу» Сяоми-Филипс (полное имя Xiaomi Mi Philips Eyecare Smart Lamp 2). Это настольная лампа, очень милая вещь по доступной цене (около 3000 руб). Немного сложна в настройке: требуется поставить приложение Mi-home, в нем заводить аккаунт (если заведен — вспоминать пароль), но и потом ничего не заработает. И штрих-код с коробки для обнаружения устройства тоже не будет сканироваться. Тогда надо переставить в приложении регион на материковый Китай вместо России, приложение обрастет иероглифами, но работать с этого момента начнет. Видимо, погоня за Телеграмом заставила Роскомнадзор заблокировать и российские сервера Сяоми ;) Лампа управляется с приложения из любого места, в том числе можно давать доступ друзьям, чтоб они включали ее и регулировали яркость из Минска, например. Только не спрашивайте меня, для чего регулировать настольную лампу дистанционно через приложение. Это глобальная интеллектуальная проблема человечества, дело не в лампе — такова сама философия Умного Дома, бессмысленная и беспощадная. Разработчики соединили лампу и приложение просто потому что могут. Но у них нет для вас других идей, как это еще можно использовать. Гораздо интереснее, что у лампы внутри. Мы полезли: Видно, что основное управление берет на себя банальный чип (вот мне подсказывает Паша) новой серии Атмела 32-битный Кортекc М0+ Акоммуникации обеспечиваются чипом WiFi. Мы с Пашей чуть было не поспорили на 100$, там ESP8266 или другое. Уже собирались сдуть термофеном металлические заглушки и посмотреть, но обратили внимание, как устройство получает IP в домашней сетке, и оказалось, что 10.8.0.172 представляется как ESP-0905CB (что-то типа этого, сегодня уже перестал рисовать свое имя в логах dhcp почему-то). Но заинтересовало меня другое, и вот тут хотелось бы вашего совета. Лампа управляется через сервер Mi, в ждущем режиме там что-то мелко ходит: } Если же на приложении (подключенном через другую сеть, например, мобильную) потыкать включение лампы, трафик усиливается:
Поскольку я плохо себе представляю, что означают эти строки и как работает UDP, то сформулирую вопрос так: мне при разработке своих девайсов тоже нужно, чтобы сервер что-то посылал девайсу. Сервер, понятное дело, открыт в сети и там можно установить любой софт, не только Nginx для веба. Девайсы обычно сидят где-то глубоко за NAT (чип WiFi или чип с симкартой), и не существует возможности залезть в настройки NAT и прописать какие-то переадресации портов для этих девайсов. Мои девайсы, разумеется, умеют пингать сервер раз в две секунды по TCP/IP, спрашивая, нет ли новых команд. Но мне все-таки хочется добиться максимальной экономии трафика. В идеале — чтобы сервер сам мог прислать своему девайсу команду, это может случиться раз в час или неделю. Без всяких постоянных пингов. Но чтобы система не висла, не теряла соединение, а приняла эту команду. Для удобства понимания задачи представим, что мы сделали лампу на симкарте в роуминге, где порог тарификации 1мб, и он стоит 100$, а зажигать-тушить ее надо всего несколько раз в сутки ;) Сердцем я чувствую, что это должно быть возможно. Умом понимаю, что такого пока в мире нет, если каждая такая лампа, пока горит, всё равно раз в пять секунд обменивается трафиком с сервером, хотя информации друг для друга у них нет. Что скажете? Есть ли примеры удачных реализаций, когда сервер способен быстро передать девайсу актуальную информацию по своей инициативе без вот такого регулярного обмана пакетами? UPD: Спасибо всем, кто ответил. Вкратце: задача эта известная, считается болезненной и решения не имеет. В качестве костыля применяется пингование сервера с большой регулярностью (что мы наблюдаем и в лампе, и сам я в своих проектах это использую). Пинговать можно по TCP, чуть экономичнее по UDP, а можно держать открытым TCP-соединение, но его тоже придется часто пинговать и переустанавливать, иначе закроется. Ну в качестве надежд — фантазии и прогнозы, что в далеком будущем IPv4 разложился на плесень и на липовый мед, все перейдут на IPv6, и тогда этой проблемы не будет. Но это мы слышим последние 20 лет, из них последние 15 понимаем, что оно никогда не случится ;) это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2018/10/08.html |
|||||||||||||