Як стварыць прыватную сістэму моніторынгу пагоды на аснове Raspberry Pi, RTL-SDR, MQTT і NestJS, якая прымае даньня з датчыкаў 433 МГц і адлюстроўвае іх у Grafana.

Ад сырых радыясигналаў да элегантных дашбораў Grafana

У якісь момант праверка пагоды ў дадатку перастала быць дастаточной. Я хацеў ведаць тэмпературу на балконе — не з якісь хмарнага API, а з сваіх датчыкаў, якія працуюць у рэальным часе. Так нарадзілася ідэя поўнай прыватнай сістэмы моніторынгу пагоды.

📡 1. Захоп сignaлаў з паветра

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

донгл RTL-SDR + raspberry-pi

датчыкі прагнозу 433 МГц

🔧 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. Усё працуе лакальна, хутка і так, як я хачу.