Huh, come again? Sending data from microcontrollers to an ingestion platform, storing the data in the cloud and presenting it on a website?
Yip; but it is not that difficult… In fact, transmitting data by radio technology is old, microcontrollers are old, the cloud is…..Something different then we are used to 😉
What do we want to do? Measuring tempature, humidity and / or other things, sending the data trough our Internet of things device, store the data and make some graphs of it (or give an alert, trigger some other actions, etc etc). Of course this goes automatically keeping the dashboard up to date each time new data comes in.
So, to visualize things;
Step 1. Out IoT device, in this case an Arduino Autonomo with a lithium battery, solar panel and a few sensors send data through a lora module (microchip RN2483, 868 MHz)* Let’s go through the simplified “code” (Written in C).
So, at the end of the loop we get de sensor data in an array of bytes which we send trough as one single string of hexadecimal values. For example FF16FF23. We know that the second byte (16 hex) is the value of our temperature sensor, the 4th byte is the humidity in hexadecimal.
* US friends; you have to the use RN2903 model on 915 MHz.
Step 2. The data is transmitted by LoRa (low power, long range). LoRa is a radio technology developed by Semtech and it enables communication between lora (end) devices and LoRa sites. Because of it’s long range (max.) 15 km and low power consumption (remember, it sends only bytes), it is very useful in areas where no connectivity / energy source is available: ideal for IoT.
Step 3. The data received by the LoRa Sites is transferred to the ‘operator’ in this case KPN. The data can be transferred directly to the customer (without seeing the ‘payload’) or ‘decrypted’. The result is a JSON template with information -> including our payload: FF16FF23.
The picture above shows the Octolu trigger where the data is ‘delivered’.
Step 4. We need to check if our payload is correct and readable before we do anything else; that is where Citrix Octoblu comes in place: Check 1 – Is there any data in our payload? 2 – Get the right value for each sensor (new variable) 3 – convert the hex values to decimal values. 4 Make a new JSON with the added sensor values. 5 Send it to Azure (rest api / http post).
Step 5. There are many how to’s to capture IoT data in Azure; what I used is an Event Hub with a Stream Analytics job. Tip; use the Reddog service bus executable to create the SAS signature.
The streaming job gets the data out of the Event hub and pushes it to my KPN Power BI environment… The last thing doesn’t need explanation.
That’s all, I know, there is much more to it… But I hope that this article gives you a little more insight. Maybe, if there is enough animo & I have some time left, I could blog some more about each step.
Hope you liked it & thanks for reading!