Геолокация и определение людей в умном доме
день 1567 Алекс на связи
Сегодня настраивал гео-локацию на телефоне я использую для того чтобы в умном доме отслеживать нахождение людей то есть находится они у меня в доме или куда-то вышли и есть несколько способов разных для того чтобы оценить есть то дома или нет можно использовать wi-fi Например если телефон человек подключен wi-fi то принципе понятно что находится дома конечно бывают случаи когда телефон не на телефоне не включает wi-fi или забыли специально и тогда система Конечно будет работать неправильно очень важно оценить вообще сколько человек дома находится Кто конкретно и еще важнее чтобы вообще понимать Есть кто дома или нет Если вообще никого нет то желательно конечно переводить весь умный дом в режим отсутствия людей также есть варианты отслеживания например по Bluetooth или каким-то другим образом например часто предлагается использовать NFC для определения Кто дома есть но это все во-первых очень сложно и также допустим Bluetooth и NFC могут не включать на телефоне соответственно это тоже будет не работать поэтому я конечно пробовал разные варианты Например если пользователь находится дома и подключается к wi-fi то есть вариант например система умного дома например Home System Может через предложение установлены на телефоне показывать что пользователь появился в сети также передаются разные параметры полезность телефона такие как заряд батареи подключен телефон к зарядке и еще некоторые параметры например система умного дома которая тоже использую она тоже может передавать данные с телефона Но геолокацию конечно она определить может но это нужно включать тоже настройках но и основная проблема всех приложений в том что им нужно разрешать на телефоне работу фоновом режиме чтобы они могли запрашивать геолокацию постоянно и соответственно ее тогда смогут отправлять на сервера Ну и Home assista например там проблема что она у меня не работает через облако и соответственно отправляйте конечно не сможет Я посмотрел несколько разных приложений для вариантов отслеживания нахождения людей дома нашел неплохое решение Называется он трекер но в принципе работать даже неплохо настройки тоже в него в принципе не очень сложные она может передавать это приложение через mqt запрос либо по сети вызывать какой-то сервер какой-то адрес определенный и передавать туда свои параметры формат Я не использую потому что тогда нужно чтобы брокером этот те которые установлены серверного дома тоже смог выходить в интернет и быть доступен через интернет поэтому либо можно разворачивать на каком-нибудь внешнем ресурсе есть такие сервера где эта услуга оказывается поднять свой брокер и через него передавать параметры в систему умного дома на многих серверах таких есть ограничения они становятся платной либо есть ограничения по количеству передаваемой информации Либо они просто недоступны я использую вариант передачи через запрос в принципе настройки на самом приложении несложное указывается адрес веб-сервера у меня адрес сайта на сайте есть специальная страничка которая может обрабатывать этот запрос формат запроса json отправляется дальше страница она у меня сохраняет специальную базу специальную таблицу базе все полученные сообщения отправка выполняется настройках сделано так что раз 60 минут или если допустим телефон перемещается то в приложении есть такой режим определения перемещения тогда оно начинает отправлять чаще у меня настроены раз в 10 секунд Например если едешь на машине то конечно 60 секунд это большие интервалы и не очень удобно также эта программа передает и некоторые другие параметры Но самое ценное Наверное это заряд на телефоне потому что можно отслеживать Сколько остался осталось батареи и своевременно какой-то сценарий сделать оповещающий том что нужно подзарядить также в приложении есть возможность указывать на какой точность определение координат реагировать она может определять через GSM станции тогда точно довольно низкая либо через GPS Но тогда надо чтобы сигнал был достаточно сильным или телефон находился не где-то внутри квартиры или например в помещении все-таки ближе к окну иначе Конечно Телефон не сможет улавливать и в программе делается настройка что отправка будет выполняться только если точность выше определенной Например если точность 500 метров обычно это GSM станции то в этом случае не отправлять значения если точность выше то тогда значение будет отправляться сервер умного дома приложение можно указать какие-то определенные регионы это локации в радиусе определенному указывается если находится телефон то соответственно можно указать название Тогда через параметры также будет передаваться номер название этой локации эта функция не использую потому что я принципе система умного дома уже могу и сам определить и Да и не надо будет настраивать на каждом телефоне отдельно я настраивал на новом телефоне недавно и там уже версии Android 12 не позволяет автоматически запускать приложения и давать это доступ геолокации этому приложению пока я попробовал в принципе все работает но видимо нужно запускать будет приложение вручную заходить него и тогда до следующей перезагрузки телефона принципе все будет работать корректно но несколько не экспериментов показывать что все работает нормально после того как записалась информация в базу формате json у меня в системе умного дома сделан скрипт который периодически опрашивает эту базу и проверяет Если значение измененные но есть несколько способов опроса значений Можно спрашивать Через несколько секунд например Но тогда например если нет внешних хостинг то он быстро определяет что идет много запросов с одного сервера с одного ip-адреса и соответственно может замедлять работу либо даже вообще полностью блокировать у меня несколько раз такое было когда система умного дома теряла этот сайт этот хостинг и не могла обратиться по адресу для того чтобы отправить или получить значение когда особенно Это заметно когда несколько устройств например по wi-fi подключенных это делают то для внешнего сервера это выглядит как много устройств из одного IP адреса и поэтому она это сайт конечно начинает блокировать такие действия и для того чтобы обойти все-таки нужно сильно ограничивать количество запросов поэтому либо я раньше запрашивал раз в минуту что достаточно принципе нормально если это делается для координат но если например я какую-то команду Передаю то это конечно очень неудобно и очень долго Например у меня так работает через колонку Яндекса когда я а через неё через систему умного дома Яндекса Даю команду у меня отправляется на этот сервер значение записывается базу и из этой базы я должен считывать конечно быстрее чем раз в минуту есть такой формат обмена это называется он пурин такая технология позволяющая не сразу сервер отвечать а с некоторой задержкой в принципе у меня сайт поддерживает такой режим используется очень интересным способом то есть сервер умного дома делает запрос на сервер на сайт Там сайт не отвечает пока не придет значение серверного дома в этот момент ждет этого сообщений по таймаута у меня стоит 60 секунд примерно обычно этот сессии соединение разрывается и снова перезапрашивается Таким образом у меня всегда скрипт находится в режиме ожидания и когда приходит сообщение по геолокации телефона обыкновенно это значение попадает в систему умного дома и дальше я уже могу выполнять разные сценарии например такая же технология используется в Telegram Боте и тоже можно я сделал сначала так что у меня запрашивалась раз секунду в принципе сам Telegram не ограничен количество запросов и можно достаточно часто их делать но в принципе и есть функция которая тоже поддерживает пулин и Можно также указав параметр ожидания около 90 секунд Я жду сообщение телеграмма если не поступали то я перезапрашивал еще раз и эта технология очень сильно разгружает и саму систему и не надо постоянно делать запросы и работает очень быстро То есть даже ожидание В одну секунду не требуется потому что общение приходят мгновенно
Автоматизация в умном доме должна быть полезной и создавать дополнительный комфорт, но иногда всё идет не так… Причины этого, и как всё настроить смотри на моём канале.
Discuss about post