ConCaVa
A functional & technical introduction
by Kukua
Why?
Room for improvement in efficiently sending and storing sensor data.
Several companies doing the same thing.
Common problems require a scalable and generic solution.
Problem
- The current formats (XML, JSON) require a lot of bandwidth
- This costs money
- Calibrating, validating, and storing sensor data is difficult
- Why keep reinventing the wheel?
Use case
LoRa weather station
Constraints
- Limited package size (51 bytes)
- 886Mhz spectrum, with limiting throughput
Attributes
- Wind speed
- Wind direction
- Gust speed
- Gust direction
- Rainfall
- Temperature
- Humidity
- Barometric pressure
- Ultraviolet (UV) light
- Solar radiation
Ways to get the data across
- API url parameters
- XML data
- Binary data
Smaller payload sizes are better.
API url parameters
The traditional way
http://weatherstation.wunderground.com/weatherstation/updateweathers
tation.php?id=KCASANFR5&password=XXXXXX&dateutc=2000-01-01+10%3A32%3
A35&windspeedmph=12&winddir=230&windgustmph=12&windgustdir=230&raini
n=0&tempf=70&humidity=90&baromin=29.1&uvl=20&solarrad=10
~185 bytes of data
XML data
KCASANFR5
XXXXXX
2000-01-01+10%3A32%3A35
12
230
12
12
0
70
90
29.1
20
10
~393 bytes of data
Binary data
- ID = 8 bytes
- Password = ~16 bytes
- Date = 4 bytes
- Wind speed = 2 bytes
- Wind direction = 1 byte
- Gust speed = 1 byte
- Gust direction = 1 byte
- Rainfall = 1 byte
- Temperature = 2 bytes
- Humidity = 1 byte
- Barometric pressure = 1 byte
- Ultraviolet (UV) light = 1 byte
- Solar radiation = 1 byte
41 bytes of data
Binary payload
- Efficient
- Flexible
- Small payload size
Parsing
Which byte(s) contains what data?
- Metadata required to make sense of the data
- Dynamic metadata enables flexible binary payload
Solution
ConCaVa: Convert, calibrate, and validate
- Generic binary payload processor
- Replaceable components
- Token based authentication
- Plug-and-play/custom connectors
- Stores sensor data in Cloud Storage
(the Orion Context Broker, for example)
Source on Github: https://github.com/kukua/
General dataflow
LoRaWAN dataflow
Three simple steps
- Convert: use metadata to parse the binary payload
- Calibrate: transform data to desired format
(e.g. convert Fahrenheit to Celcius)
- Validate: correct sensor misreadings
(e.g. temperatures below −273.15°C)
ConCaVa supports every thinkable rule for converting, calibrating, and validating sensor data.
Example
For example: wind direction of 1 byte (integer value 0-255).
Convert: binary 00011110 = integer value 30
Calibrate: value = 360 * (value / 255)
Validate: 0 ≤ value ≤ 255
Result: 42.4°
Highly customizable
- Dynamic metadata allows any format of binary payload
- Custom calibrate functions
- Replaceable components
- Cloud Storage
- Token-based authenticator
- Connectors
Roadmap
- Open-source components
- Easy setup (Docker containers)
- Documented
- Automated testing (unit-tests)
- Graphical interface, for managing metadata and viewing sensor data