Based on: Environmental Monitoring of Libraries with MonTreAL
An ever-increasing amount of devices connected over the Internet pave the road towards the realization of the ‘Internet of Things’ (IoT) idea. With IoT, endangered infrastructures can easily be enriched with low-cost, energy-efficient monitoring solutions, thus alerting is possible before severe damage occurs. With the SENSIOT Framework, a sensor monitoring framework which runs on commodity single board computers. In addition, our primary objectives are to enable flexible data collection among a computing cluster by migrating virtualization approaches of data centers to IoT infrastructures.
Beside the source code this repository automatically builds and pushes new versions to the registry and it includes the swarm setup, which contains the whole procedure to deploy the SENSIOT Framework.
This multiarch image supports amd64
, i386
, arm32v6
, arm64v8
, and ppc64le
on Linux.
Mostly for testing purposes this repository contains a docker compose file to just run the SENSIOT Framework out of the box with a sensor mock as sensor.
docker-compose -p sensiot up -d
This repository contains the whole procedure to start the SENSIOT Framework in swarm mode.
docker swarm init
cd swarm-setup
make
Sensor devices can be added afterwards. Files in swarm-setup/
can be adjusted to get an individual setup.
o- NsqReader - InfluxDBWriter - InfluxDB -o- Chronograf, (Kapacitor)
| \
| o- Grafana
USB | /
| o- NsqReader - PrometheusWriter - Prometheus -o- (Alertmanager)
Sensor |
| o- NsqReader - SensorList -o
SocketWriter | |- memcached - Web
| o- NsqReader - SensorData -o
[|] |
| o- NsqAdmin, NsqCli, etc.
SocketReader |
| |\
MetaDataAppender | NsqLookup
| |/
NsqWriter --------- Nsq
(____): not implemented yet
Notice: only the following sensor drivers are currently implemented
"mock": {
"service": "temperature_humidity_sensor",
"type": "mock",
"image": "unibaub/sensiot",
"device": [],
"command": "",
"configuration": {
"sensor_count": <int>,
"temperature": <float>,
"humidity": <float>,
"interval": <int>
}
}
"ash2200": {
"service": "temperature_humidity_sensor",
"type": "ash2200",
"image": "unibaub/sensiot",
"device": ["/dev/ttyUSB0"],
"command": "",
"configuration": {
"device": "/dev/ttyUSB0",
"baudrate": "9600",
"timeout": <int>
}
}
"dht": {
"service": "temperature_humidity_sensor",
"type": "dht",
"image": "unibaub/sensiot",
"devices": ["/dev/mem"],
"command": "",
"configuration": {
"id": <int>,
"gpio": <int>,
"short_type": <11 or 22>,
"interval": <int>
}
}
"open_weather_map": {
"service": "temperature_humidity_sensor",
"type": "openweathermap",
"image": "unibaub/sensiot",
"devices": [],
"command": "",
"configuration": {
"id": <int>,
"key": <string>,
"city": <string>,
"country": <string>,
"interval": <int>
}
}