Ад сырых радыясигналаў да элегантных дашбораў Grafana
У якісь момант праверка пагоды ў дадатку перастала быць дастаточной. Я хацеў ведаць тэмпературу на балконе — не з якісь хмарнага API, а з сваіх датчыкаў, якія працуюць у рэальным часе. Так нарадзілася ідэя поўнай прыватнай сістэмы моніторынгу пагоды.
📡 1. Захоп сignaлаў з паветра
Фундаментам гэтага праекта з’яўляецца RTL-SDR донгл — маленькі радыяпрымальнік, здаольны перахопліваць перадачы з танных датчыкаў 433 МГц. З дапамогай rtl_433 я пераўтораў сырыя радыясигналы ў чытабельныя JSON-даньні. Гэта момант, калі «радыямагія» стае дазейнымі даньнімі.


🔧 2. Разумны фільтр: толькі маё датчыкі, толькі тое, што трэба
Я не хацеў шуму ў сістэме. Таму я стварыў bridge.js — невялікі, хітраны сцэнарый Node.js, які:
Распазнае толькі маё датчыкі (па мадэлі і ID),
Мапіруе іх у зразумелыя назвы: кухня, балкон, сад,
Канвертуе тэмпературу з °F у °C,
Падрыхтоўвае чыстыя, стандартзираваныя даньныя для MQTT (
weather/<name>),Запісуе час астанняга сignaлу,
Паведамляе, калі батарея датчыка пачынае сясці.
Гэта не проста фільтр — гэта мая прыватная «разаведка пагоды».
🧠 3. Бэкэнд, што разумее даньні
Далей даньні пераходзять у бэкэнд на NestJS. Я стварыў свайго MQTT-кліента, які:
Падпісуецца на
weather/#,Прымае гатовыя JSON-даньні з
bridge.js,Абнаўляе кэш апошніх памероў,
Агрэгуе даньні і захоўвае іх у PostgreSQL.
Бэкэнду не трэба ведаць пра радыябротакалы або мадэлі датчыкаў. Ён атрымлівае чыстыя, стандартзираваныя даньні — і рабіць тое, што яна лепшая.
🗄️ 4. Гісторыя пагоды ў PostgreSQL
Кожны датчык гэнэруе некалькі памероў у хвіліну. Замест таго, каб захоўваць усё, бэкэнд:
Буфэруе даньні,
Адучае сярэдняе,
Захаўляе элегантныя запісы ў табліцы
weather_record.
Гэта дазваляе базе даньных быць легкай, хуткай і гатовай да аналізу.
📊 5. Рэальны час пагоды дадому
Наконец, усё трапляе ў Grafana, дзе я стварыў набор дашбораў:
Графікі тэмпературы па датчыках,
Вільготнасць у динаміцы,
Дыягностычная панэль (статус батарэі, апошні сignaл),
Хуткігляд недаўных значэнняў.
Гэта не проста графік — гэта мая прыватная «цэнтр пагоды», якая працуе 24/7.
🎯 Канчатковы вынік
Я стварыў сістэму, якая:
Прымае радыясигналы з датчыкаў 433 МГц,
Фільтруе і нормалізуе даньні,
Падрыхтоўвае іх для MQTT,
Агрэгуе і захоўвае ў бэкэндзе,
Прыгожа адлюстроўвае ў Grafana.
Нуль хмары. Нуль vendor lock-in. Усё працуе лакальна, хутка і так, як я хачу.
