Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Український open source для моніторингу повітряних тривог. Що вміє продукт і як його розвивати

Усі статті, обговорення, новини про Mobile — в одному місці. Підписуйтеся на телеграм-канал!

Привіт, мене звати Дмитро Панін, я Delivery Director у Levi9. Якби українців запитали, з чого починається наш день, ймовірно, більшість би відповіли, що оновлюють стрічку новин і перевіряють повідомлення про повітряні тривоги.

Інформації багато, а структурувати та раціонально проаналізувати її не завжди виходить. Як наслідок, турбуючись про фізичну безпеку, ще дужче тривожимося та розхитуємо нервову систему.

Моя родина хаотично моніторила повітряні тривоги, і я вирішив покласти цьому край. Маючи бажання допомогти сім’ї та взагалі українцям, а також любов до мов програмування, я взявся за створення актуального для воєнних часів мобільного рішення — карту повітряних тривог на open source. Вона в режимі реального часу показує ситуацію в Україні.

У цій статті розповідаю, як працює розробка — думаю, буде цікаво усім, хто так само має любов до програмування та open source.

Програмування. Початок

До того як стати Delivery Director, я прийшов у компанію як Java Developer. Інтерес до ІТ з’явився ще в дитинстві. Перший свій код я написав у 8 років і досі продовжую займатися розробкою для себе, щоб підтримувати навички.

Мені подобається працювати з різними мовами програмування. До того ж іноді швидше зробити прототип самому і прийти до команди з базовим рішенням, ніж із нуля пояснити ідею. Тож щойно мені спало на думку зробити карту повітряних тривог — відразу сів писати.

Персональна потреба

Вже майже 3 місяці ми живемо в умовах шаленого напруження, а наша реальність — це постійний моніторинг новин у месенджерах і соцмережах. Телефон розривається — з одного боку зведення про події в Україні та на фронті, а з іншого — десятки сповіщень про повітряні тривоги. Я дивився, як у моїх близьких голова йде обертом від постійного стеження за оновленнями новин, і відчував їхню напругу.

Мені захотілося якось допомогти, заспокоїти та зменшити стрес від моніторингу хоча б повітряних тривог. Незабаром прийшла ідея зробити невеликий девайс, а-ля настільний годинник, який завжди був би в полі зору та показував дані по країні в режимі реального часу.

За 3 дні я зібрав прилад, написав під нього відкритий код і поділився прототипом на Reddit з вузьким колом open-source розробників. Я хотів допомогти українцям, яких теж не влаштовував неструктурований моніторинг повітряних тривог. І оскільки на платформі велика міжнародна аудиторія, це була слушна нагода нагадати їм про серйозність подій в Україні.

Не минуло й кількох днів, як з України та з-за кордону до мене почали звертатися колеги, що хотіли повторити такий пристрій. Навіть технологічний журнал MagPi написав щодо розробки. Я зрозумів, що не лише моя родина та співгромадяни зіткнулися з проблемою, але й міжнародній ІТ-спільноті цікавий такий девайс.

Згодом на платформі я поділився вихідним Python-кодом із покроковою інструкцією зі збирання та адаптації рішення та почав думати над масштабуванням.

Ідея фізичного годинника, що сигналізує про повітряні тривоги, видалася мені перспективною. Проте, в оригінальному виконанні її важко зробити в умовах війни — знайти чи купити запчастини майже неможливо.

Фізичний пристрій

Розвиток до мобільної версії

Я вирішив масштабувати пристрій під мобільний формат. Це зручно, доступно та актуально для воєнних часів. Мобільні рішення не потребують додаткового обладнання крім смартфона чи комп’ютера, які й так зазвичай під рукою.

Розробки на відкритому коді цікаві бізнесу та спеціалістам завдяки своїй захищеності. Майже 90% світових ІТ-лідерів вважають open source програмне забезпечення (OSS) таким же чи навіть безпечнішим за корпоративне. При цьому, рішення з відкритим кодом гнучкі у використанні — дозволяють вільно впроваджувати, змінювати та поширювати програму.

Більшість open source проєктів створюється в галузі кіберзахисту, а також все частіше інфраструктуру з відкритим кодом впроваджують у блокчейн, data science, AI та ІоТ розробках. Тренд зберігається: у 2022 році понад 80% світових компаній хотіли б покращити бізнес-процеси завдяки OSS.

Рішення має бути корисним, репрезентативним і справно працювати. При цьому часу зволікати та сильно розширювати функціонал не було. Поставив планку — зробити його за декілька годин, тож сфокусувався на віджеті для операційних систем MacOS/Windows і mobile-first сайті під смартфон. Щоб виграти цей челендж, за основу взяв логіку, що писав для фізичного пристрою на Python, модифікував код і заклав можливість розділити на клієнт-серверну архітектуру.

Принцип роботи: дані з обраних джерел аналізуються на сервері та конвертуються в готовий для споживання іншими пристроями API-формат. Таким чином прописану на сервері логіку можна розширити та створювати складніші візуальні та функціональні рішення. Наприклад, зробити віджети, карти та програми під інші операційні системи (ОС) і мобільні пристрої.

Архітектура мобільної розробки відрізняється від автономного настільного годинника в першу чергу поданням інформації. Раніше пристрій слухав джерело даних — у моєму випадку, Telegram-канал, що повідомляє про локації тривог, — сам обробляв сповіщення та виводив на екран.

Натомість клієнт-серверна архітектура дозволяє клієнтам отримувати актуальну та вже опрацьовану інформацію за запитом, тобто коли вона їм потрібна.

Проєкт легко й масштабувати. Код для віджетів і мобільного пристрою знаходиться на GitHub і його логікою я можу поділитися з колегами та контриб’юторами.

Скріншоти віджета для трьох ОС: Windows, macOS, Linux та мобільної версії сайту

Бочка меду зі своїми особливостями

Щоб давати правдиву інформацію, потрібно побудувати логіку аналізу вхідних даних з джерела. І це лише одна з технічних особливостей. Далі потрібно вивести сигнал на екран карти та, якщо в одному місті почалася, а в іншому закінчилася повітряна тривога, то швидко зреагувати на зміни.

Технічна розробка зайняла лише третину часу, тоді як пошук релевантних даних продовжується по сьогодні. Знайти ресурс, який давав би реальні дані про повітряні тривоги в країні складно, а у загальновідомих каналах статус показується не повністю.

Так само є проблема з географічною локацією. Наприклад, самостійно зрозуміти з відкритих джерел, до якої області належить певна територіальна громада не завжди можливо. Крім того, частина даних засекречена чи не оновлюється в режимі реального часу, тобто вже застаріла — тривога вже завершилася чи, навпаки, пролунала.

Майбутнє розробки

Поки що розробка працює з одним Telegram-каналом, куди, за моїми спостереженнями, надходять офіційні дані. Наступним кроком планую розширити кількість джерел.

На майбутнє я хочу зберегти основну ідею — віджет, який 24/7 показує карту повітряних тривог. Вже почав робити віджет для Linux, але хочеться рухатися ще далі. Вже маю ідею масштабування та планую зробити версію під smart-годинник, із яким раніше не працював.

Проте все треба робити послідовно. Тренди в ІТ не сильно змінилися через війну в Україні — клієнтів як і 2 місяці тому цікавлять cloud- і serverless-рішення, впровадження елементів штучного інтелекту та робота з даними. Компанії звертаються до нас за вирішенням їхніх бізнес-задач, а спеціалісти мають бути в контексті технічних нововведень і розуміти, як працювати з новими технологіями.

При цьому, завжди має зберігатися баланс між інноваційним і раціональним підходами до розв’язання проблеми — щоб не створювати екзотичні рішення, які важко підтримувати.

👍ПодобаєтьсяСподобалось14
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Віджет запускається, все ок, але як приховати стартове вікно, бо, коли його закрваю, віджет вилітає

А допоможе хтось для школи написати під він 10/64
Щоб бачила не лише область, а й Київ і при перезапуску (автозапуску) пам’ятали налаштування і запускала аудіо (сирену)? Емулятор андроїду не варіант

мапу повітряних тривог в Grafana ніхто ще не робив?

Якщо є у цьому потреба, можно адаптувати існуючи розробки.

а добавьте метрики prometheus? Тогда и Графану кто-нибудь прикрутит.

круто, но откуда данные берутся здесь?
 https://sirens.in.ua/api/v1/ 

В данный момент, данные аккумулируются с оф. Telegram канала.

Круто! Сам розробив карту на ios/android, тому знаю на скільки підводних каменів можна натрапити)

також зробив схожий сервіс та додатки з мапою, алертами, історією та корисною інформацією)
свій сервіс з rest api задеплоїв у хероку. якщо буде корисно для твого проекту / для людей пошарю доступ до апі (данні також на основі телеграм каналу)

(додатки
play.google.com/...​ails?id=com.yefymov.unebo
apps.apple.com/...​us/app/унебо/id1620175017
)

Підписатись на коментарі