«Ще до початку війни відкрив для себе 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).
Я не знайшла файл, котрий треба завантажити. Підкажіть, це я не побачила чи його не додали в статтю.