«Еще до начала войны открыл для себя Scriptable — iOS-приложение для создания виджетов на JavaScript. А поскольку нам Тим Кук еще и разрешил создавать виджеты для домашнего экрана, то этим нужно пользоваться!» — объясняет Вадим.
Разработчик объясняет, что решил сделать такую штуку, потому что график не сходится с реальным отключением света, и не всегда понятно, пора ли возвращаться домой.
В результате у него получился вот такой виджет:
«Виджет фактически проверяет, доступен ли ваш роутер в интернете. Возможны случаи, что электроэнергия есть, хотя самого интернета нет — в таком случае виджет все еще будет красным. У меня в таких случаях интернет появлялся в течение 5 минут, но могут быть такие проблемы также», — объясняет разработчик.
Как это сделать
Сначала Вадим думал выводить виджет на заблокированном экране, и нашел Any Text, поддерживающий интеграцию с Shortcuts. Их даже можно запускать по расписанию, но минимальная периодичность — день. Если я хочу обновлять каждые 15 минут, то нужно создать 96 автоматизаций и каждую из них вручную. Других вариантов я так и не нашел, потому идея с ноукодом быстро провалилась.
Самый простой способ проверить, есть ли интернет дома — сделать пинг в IP адрес роутера, а Scriptable (читай ES6) не умеет делать запросы по icmp-протоколу. Из доступных ресурсов я нашел API, которое делает пинг, но там достаточно долго нужно ждать результатов — мне достаточно хотя бы одного результата, а не проверять, соответствует ли мой роутер со всех материков. Поэтому нужно было создать свой микросервис! Поднимать сервер для одного запроса — эдакая идея, и я сначала подумал оDigitalOcean Functions(а-ля AWS Lambda), но есть проблема, что сложно ограничивать количество запросов в случае необходимости, вдруг россияне начнут нагружать сервис своими запросами, как и сделали из карты тревог.
Виджет оказался самой простой частью, и на основе других примеров я быстренько сделал виджет, показывающий состояние и дату обновления. Сам код виджета в файле ниже — там один запрос, отображение его и времени генерации, и никакого рокета саенса!
Что нужно еще знать
Дома должен быть всегда статический IP, поскольку с динамическим сложно работать.
Также iOS сама решает, когда ей обновить виджет, и делает это по документации в интервале 15-60 минут, но фактически у меня получалось 15-20 минут. Если топнуть по виджету — он обновится с актуальными данными.
То есть вот ключевые требования, чтобы такой отжен вам не лгал:
Должен быть статический IP. Если роутер выключить-включить, и IP изменится — нужно будет у провайдера заказывать дополнительно услугу статического IP. Виджет постоянно проверяет только один и тот же адрес.
Роутер должен отвечать на ping запросы. Если при нажатии на кнопку «Отправить пинг на мой IP» возвращается ошибка, то нужно гуглить что-то «%router name% Respond to Pings from WAN» и включать на роутере.
Нужно установить Scriptable, загрузить файл ниже, поделиться им в Scriptable и заменить IP в первой строке нужного. Вдруг что, вот видео, как это делается.
Создать виджет и добавить его на домашний экран.
Что дальше?
Вадим говорит, что сейчас есть идея пройтись по заведениям и сделать небольшую краудсорсинг-карту с заведениями и состоянием вайфая в реальном времени. Можно также сделать какого-нибудь телеграмм-бота или отправлять уведомления при изменении состояния света.
Или можно сделать какую-нибудь zapier-интеграцию для слака, чтобы все видели, что у вас нет света, и что возможна какая-то задержка ответов. «Я как-то делал такое для сирен, поэтому должно быть максимально просто и сделать для света тоже», — добавляет разработчик.
УЧАСТЬ В АЗАРТНИХ ІГРАХ МОЖЕ ВИКЛИКАТИ ІГРОВУ ЗАЛЕЖНІСТЬ. ДОТРИМУЙТЕСЯ ПРАВИЛ (ПРИНЦИПІВ) ВІДПОВІДАЛЬНОЇ ГРИ.
Ліцензія видана ТОВ "СЛОТС Ю.ЕЙ." на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 15.09.23 (рішення КРАІЛ №245 від 31.08.2023); ТОВ "СЛОТС Ю.ЕЙ." – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 26.04.2021 (рішення КРАІЛ №150 від 12.04.2021); ТОВ «СПЕЙСИКС» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 08.02.2021 (рішення КРАІЛ №34 від 02.02.2021); ТОВ «ГЕЙМДЕВ» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 16.02.2021 (рішення № 47 від 10.02.2021).
Я не знайшла файл, котрий треба завантажити. Підкажіть, це я не побачила чи його не додали в статтю.