Motivation
In the IOT era being connected and informed all the time is the thing that matters.
This platform enables you to make rapid decisions and possibly prevent human or property loss.
My vision implies that we connect existing resources (sensors, data sources) and manage them without any programming knowledge in a simple web interface.
For example using data from gps devices from a fleet of cars minimal or maximal distances car alerts can be emited or maybe maximum speed limits exceded alerts.
So what should the platform do, to enable these things:
- Have a friendly web interface to enable non programmers to use it
- Make rapid decisions from the data of multiple sensors
- Support a large number of sensor data
- Instant alerts (SMS, Email, Push etc)
- Big Data analysis
- Integrate actuator platforms like IFTTT to control the psichical world
Diagrams
Platform overview
Sensors deployment
Internal structure
Screenshots
Add rule
Dashboard
Sensor page
Posible usecases
- Basement / warehouses monitoring
-
Sensors: humidity, flood, gases, presence, noise
-
Purpose: detect intrusion, flood, toxic gases, water infiltration
-
Actions taken: alert, enable ventilation, close gas and water supply
-
Powering: wall power supply, batteries, TEG generator
- VoIP integration usecases:
- SMS alerts
- VOICE alerts
- Calls a list of numbers until ACK given
- Call a number and get the latest alerts (via voice or sms)
- ACTIVATE IFTTT rules using voice or SMS
- Car fleet monitoring
- Sensors: gps, temperature
- Purpose: speed limit exceded, min distance not achieved, max distance exceded, temperature not in range (for trucks with special loads). The GPS monitoring can be implemented using a phone application
- Actions taken: alert
- Powering: car power supply
- Agriculture monitoring
- Sensors: air temperature humidity, soil humidity, PH meter, wind speed, UV, solar light spectrum
- Purpose: detect hazards, enable prevention measurements, predict problems and prevent them before happen with ML
- Actions taken: alert, irrigation, nutrients distribution
- Powering: batteries, solar power
- City environmental monitoring
- Sensors: humidity, temperature, UV, wind speed, particle, gas, radiation
- Purpose: detect hazards, warn the population to stay in doors, wear protective clothing, masks
- Actions taken: alerts, recommendations: mask, suncreme, protective clothing, using a mobile app warn for too much sun exposure, expose the information in a website to raise public awareness
- Powering: wall power supply, batteries, solar
- Smart parking
- Sensors: parking magnetical sensor / visual image processing
- Purpose: detect free parking spots
- Actions taken: design an app / integrate with navigation apps to find free parking spots
- Powering: batteries, solar, power plug
- Water hazard monitoring
- Sensors: pH, nitrates, O2, temperature, turbidity
- Purpose: detect, and prevent water contamination
- Actions taken: warn people and authorities of an problem, very early before it affects public health
- Powering: batteries, power plug
- Healtcare
- Sensors: hart rate, temperature, oxygen level, EKG, accelerometer
- Purpose: prevent and threat medical conditions
- Actions taken: alert doctor, family in case the person vital signs drop, or a mechanical accident occurs leaving the person unconscious, prevent disease before it happens
- Powering: batteries, TEG, solar
All these usecases have something in common, the data they produce.
Data can be visualized manually, and simple algorithms can scan it fast and prevent bad things from happening.
But now with powerful machine learning algorithms we can go even further, we can run algorithms on large sets of gathered data, and they can analyze and learn subtle changes that lead to certain situation that we want to avoid. The algorithms will surpass our own understanding of data and find these helpful patterns.
This means that after a system is deployed and sufficient data is gathered, all the users of the system will benefit from it afterwards. For example we may detect a stroke before it happens or find parking hotspots before they occur.
Manually running project
Start rabbitmq, redis, mongodb
python3 webserver.py --port 8080
python3 consummer.py --task store_momentary_data
python3 consummer.py --task rules_evaluator
Running with docker-compose
cd project-directory/backend
docker-compose -f docker-services.yml -f docker-python.yml up -d
Running ui
cd project-directory/ui
1. npm install
2. npm start - start dev webserver with livereload
Databases
- RedisIo
- for holding "locks"
- MongoDb
- persist user, sensor, rule models
- Cassandra
- long term storage
- run jobs to digest the data