/meteodata

MQTT aggregator for weather station data with SQL support and an HTTP API

Primary LanguageJavaScript

meteodata

meteodata е агрегатор за данни от метеостанции, който събира избрани показатели в реално време и предоставя интерфейс за заявка на обощени стойности.

Основните компоненти са

  • MQTT клиент, който се свързва към същия брокер (сървър) както и метеостанцията
  • SQLite база данни, в която се записват показателите и отговаря за обобщаването
  • Koa app сървър, който приема HTTP заявки и връща отговор в JSON формат

Инсталация

Файлове и ъпдейти

В най-добрия случай инсталацията ще е в локално git repository, свързано към GitHub за по-лесни ъпдейти

$ git clone https://github.com/supernes/meteodata meteodata

За обновяване на файловете при нова версия

[meteodata]$ git pull

Node.js

Минималната нужна версия на Node.js e v16, препоръчителната - v18. Съвместима версия може най-лесно да се инсталира с nvm

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
$ nvm install v16 # или v18
$ nvm use v16

Допълнителни пакети

След инсталация или ъпдейт е добре да се обновят и необходимите допълнителни пакети:

[meteodata]$ npm install

Настройка

Всички настройки се намират във файла config.json в основната папка на repository-то. Някои съществено важни полета не са попълнени по подразбиране (username, password и други). Промени в настройките се отразяват след рестарт на приложението, ако има вървящ процес.

Подробно описание на настройките

mqtt

host Име или IP адрес на MQTT брокера
port Порт на WebSocket интерфейса
secure Дали връзката да използва TLS
endpoint "mqtt" или според конфигурацията на брокера
username Потребител за автентикация
password Парола на потребителя
topic MQTT ключ, където метеостанцията публикува данни

database

path Име на файл, в който се съхранява SQLite базата данни
filter_fields Списък с ключове, които съдържат валидни данни от метеостанцията

webapp

port HTTP порт, на който се получават заявки

log

level Минимално ниво на докладване на грешки или съобщения

Стартиране

[meteodata]$ node run serve

или

[meteodata]$ NODE_ENV=production node src/main.js