Від сирого радіосигналу до елегантних дашбордів у Grafana
У певний момент мені перестало вистачати перевірки погоди в додатку. Я хотів знати, яка температура на балконі — і не з якогось хмарного API, а зі своїх власних датчиків, що працюють у реальному часі. Так народилася ідея створити власну, повністю приватну систему моніторингу погоди.
📡 1. Перехоплення сигналу з ефіру
Основою всього проєкту є донгл RTL-SDR — маленький радіоприймач, який здатен перехоплювати передачі з дешевих датчиків 433 МГц. За допомогою інструменту rtl_433 я перетворив сирий радіосигнал на зрозумілі JSON-об’єкти. Це момент, коли «радіомагія» стає даними.


🔧 2. Інтелектуальний фільтр: тільки мої датчики, тільки те, що важливо
Я не хотів сміття в системі. Тому створив bridge.js — невеликий, розумний скрипт на Node.js, який:
розпізнає тільки мої датчики (за моделлю та ID),
зіставляє їх із зручними назвами: balcony (кут темний) oraz balcony_2 (кут світлий),
конвертує температуру з °F у °C,
публікує чисті, уніфіковані дані в MQTT (
weather/<name>),записує timestamp останнього сигналу,
надсилає сповіщення, коли батарея в датчику починає розряджатися.
Це не просто фільтр — це мій приватний «шар погодного інтелекту».
🧠 3. Бекенд, який розуміє дані
Далі дані потрапляють до бекенду на базі NestJS. Я створив власного клієнта MQTT, який:
підписується на
weather/#,отримує готові JSON-об’єкти з
bridge.js,оновлює кеш останніх показників,
агрегує дані та записує їх у PostgreSQL базі даніх.
Бекенд не мусить знати про радіопротоколи чи моделі датчиків. Він отримує чисті, стандартизовані дані — і робить з ними те, що вміє найкраще.
🗄️ 4. Історія погоди в PostgreSQL
Кожен датчик генерує багато показників за хвилину. Замість того, щоб записувати все, бекенд:
буферизує дані,
обчислює середні значення,
записує акуратні записи до таблиці
weather_record.
Завдяки цьому база легка, швидка й готова до аналізу.
📊 5. Погода у моєму домі — у реальному часі
На завершення все потрапляє до Grafana, де я створив набір дашбордів:
графік температури з розподілом за датчиками,
вологість у динаміці,
діагностична панель (батарея, останній сигнал),
швидкий перегляд останніх значень.
Це не просто графік — це мій приватний «погодний центр», що працює цілодобово.
🎯 Кінцевий результат
Я побудував систему, яка:
отримує радіосигнал з датчиків 433 МГц,
фільтрує та нормалізує дані,
публікує їх у MQTT,
бекенд агрегує та зберігає їх,
Grafana відображає їх у красивий, зрозумілий спосіб.
Жодних хмар. Жодного vendor lock-in. Все працює локально, швидко й саме так, як я хочу.
