💳 Термінова новина! Trustee Plus — найкраще рішення для розрахунку криптою 👉
Марія БровінськаYalantis
5 січня 2023, 16:27
2023-01-05
Українці створили ще один бот, аби дізнаватися, чи є вдома світло. Ось, як він працює
Software engineer (Android) в Yalantis Дмитро Морозов та Python Full-Stack Developer Богдан Григорович створили Telegram-bot Ukraine_svitlo_bot, що допомагає розуміти, чи є світло вдома.
«Коли почались масовані обстріли української енергетики, українці почали одразу адаптуватися до нової реальності. Якийсь час проблема з електроенергією була найбільш відчутною в Києві. Але після 15го листопада віялові відключення почались по всій території України. Я одразу почав шукати яким чином точно знати чи є світло вдома, чи ні. Також була думка візуалізувати історію відключень, щоб наочно бачити динаміку. Пошукавши вже існуючі рішення знайшов тільки віджет для IOS, але хотілося мати дуже просте рішення, без зайвих рухів. Головною ідеєю було можливість масштабування і перевикористання. Ну і трошки підзадовбали однотипні повідомлення в будинковому чаті від сусідів (Світло є чи нема, Світло є чи нема, Світло є чи нема…)», — розповідає розробник.
Тоді в чоловіка з’явилась думка, що найзручнішим був би бот, який буде кожну хвилину пінгувати статичну айпішку і якщо статус (є світло/нема світла) змінився — надсилати повідомлення.
Складнощі розробки
«Кілер фічею бота є те, що на весь будинок достатньо мати одного „піддослідного“ IP і додати бота з пінгуванням цього IP в будинковий чат. Так 100-1000 людей не питають одне одного по 100 разів чи є світло, чи нема. Також для себе профіт я вбачав у тому, що знаходячись не вдома я маю завжди поточний стан світла в будинку і знаю, чи треба поспішати додому, чи краще не квапитись», — зазначає Дмитро.
Через брак досвіду з бекендом і інфраструктурою на належному рівні, хлопець швидко знайшов друга, який готовий був допомогти з реалізацією.
Разом розробники бот реалізували, використовуючи лібу python-telegram-bot і Django.
«Хоча, на перший погляд, рішення дивне для реалізації Telegram-боту, Django має дуже зручні встроєні інструменти — ORM для роботи з БД і адмін панель, якщо треба щось перевірити в БД на продакшні. Пінгування IP адрес запускається як Django management команда з крони. Враховуючи це, і те, що бота треба було зробити якомога швидше, я вибрав саме такий стек. Python-telegram-bot з версії 20.0 використовує asyncio, що є великим плюсом, бо дає змогу пінгувати ip і розсилати повідомлення в Telegram пачками. Django поки не повністю працює з асинхронністю, але трохи декораторів @sync_to_async, і вони працюють разом!», зазначає Дмитро.
Захостили друзі все на AWS EC2 i RDS.
В планах — додати чергу повідомлень, найімовірніше AWS SQS, для розсилання повідомлень в телеграмі, тому що коли юзерів стане більше, телеграм може тротлити кількість повідомлень через flood control.
Що може бот
Зараз у бота є можливість підписатися на пінгування статичної айпішки, відписатися, показати статус, разово пінганути, додати бота в груповий чат або канал. З основних недоліків — якщо провайдер має мережу з перебоями, то будуть хибні спрацювання.
«Варіанти з ембедед пристроями ми відкинули вже на початкових етапах, бо розуміємо, що далеко не кожен захоче заморочуватись ще окремими пристроями. Але якщо ти ембедед розробник і знаєш, як склепати цікаве рішення, яке втикається в розетку і надсилає, наприклад, смс на IFTT — це була б ще краща і надійна система», — запрошує до співпраці колег Дмитро.
УЧАСТЬ В АЗАРТНИХ ІГРАХ МОЖЕ ВИКЛИКАТИ ІГРОВУ ЗАЛЕЖНІСТЬ. ДОТРИМУЙТЕСЯ ПРАВИЛ (ПРИНЦИПІВ) ВІДПОВІДАЛЬНОЇ ГРИ.
Ліцензія видана ТОВ "СЛОТС Ю.ЕЙ." на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 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).