Skip to content

Write historical data to a mongo database and aggregates it on dynamo

Notifications You must be signed in to change notification settings

Instathings/telemetry-aggregator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telemetry Aggregator

The project implements some logic to allow data gathering from iot devices that send read parameters (like temperatures) separately for each message

Shelly devices tipically send multiple message in a single bulk for each parameter with the following format:

$ mosquitto_sub -t 'shellies/#' -v

shellies/mydevice2/emeter/0/current 2
shellies/mydevice2/emeter/0/voltage 5
shellies/mydevice2/emeter/0/pf -0.01

Some iot devices instead would send tipically a single message with multiple parameters to a different topic and with a json format like this:

topic: emeter/mydevice2/0
{
    "current": 2,
    "voltage": 5,
    "pf": -0.01
}

The aggregator knows what parameters to expect and incrementally fills out a memory object for each device until all parameters are received. After that writes a single historical record for the telemetry to a mongodb broker.

Eventually the historical data is processed and aggregated to be sent to a dynamo database.

Requirements

  • nodejs v16+
  • yarn 1.22.18+
  • docker 18+ (only for containerized installation)
  • docker-compose 1.29.2+ (optional for containerized installation)

Environment variables

TELEMETRY_COLLECTION=mytelemetryCollection
MONGO_CONNECTION_URI=mongodb://user:pass@serverAddress/mytelemetryCollection?authSource=admin
BROKER_CONNECTION_URI=mqtt://brokerUrl

Run without docker

Install node modules and provide the environment variables before the yarn run command

yarn install
yarn build
ENV1=<value> yarn run

Run with docker

Provide the environment variables to the container and use the provided Dockergile to build your container.

The repository contains an example docker-compose.yaml file that runs a local broker and mongo database along with the telemetry aggregator.

Compile the docker image with the following command

docker build -t telemetry-aggregator .

And run with the following command

docker run -d -e ENV=value telemetry-aggregator

Docker compose

If you want to use the docker compose file in this repository, create the .env files referenced by docker-compose.yaml

touch telemetry.env mongo.env

and write the environment variables in those files.

Enjoy!

About

Write historical data to a mongo database and aggregates it on dynamo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published