Live Monitoring Simulation
Device2Cloud wit python simulation
In Cameroon we have electric disasters every now and then. Electric pole (lines) fall killing people and destroying property quite often. It's difficult for the electricity distribution company to manage their poles as they don't know which ones are at fault or facing usual conditions like extreme eating which can lead to fire. They are clearly unable to track which ones are aging and need update. They rely sorely on the information that some disaster happened somewhere before the come agitating.
Secondly the electricity distribution company still relies on humans to move around and take readings on consumption of users! This is very ineffective and not a transparent way of billing. Many times the bills sent are estimated (as indicated on their receipts). The process is highly prone to errors, bias and is time consuming. With the use of special line monitoring devices, smart meters and the IoT concept I attempt a solution. The solution may be adapted or extended to help consumers reduce consumption by creating binders that can permit other home devices detect (high) meter consumption.
What it does
The project delivers an infrastructure that connects smart meters (for consumers e.g homes, businesses ...) and observation sensors (equipments) including thermostats, automatic switches, fault detectors and pattern tracking devices to the internet and then to the electricity distribution service and consumers via Azure IoT Hub. This would permit the utility service to easily detect problems like fire, electric shock, falling poles and enable power switch off to minimize damage, providing exact location details for quick intervention. The extension to to other home IoT devices may permit devices to turn off themselves when usage is getting to high and staying on is not critical.
How I built it
Keeping the requirements in mind, I used :
- Azure IoTHub (to send telemetry data)
- Azure Functions (to receive/send notifications)
- Python for device simulation
- Node.js for server side code
- Vue.js + vue-chartjs (based on Chart.js) for visualization
Challenges I ran into
It's my first time on Azure! Most of the tutorials written on the Microsoft blog itself need some tweaking to work properly the underlying libraries also have some bugs.
I found the hackathon two weeks to end while I was writing exams, I had to finish exams and work on this just for a few days. We all know how frustrating working with new tech can be sometimes.
Accomplishments that I'm proud of
I am simply proud that I have built my first "serverless" app and it's problem oriented! It's been in the trends but so many developments are still in the dark. I am now in the light :)
What I learned
- Microsoft Azure portal basics
- More on "serverless" development
- Azure functions
- Finally started out with vue.js and node.js away from traditional server side languages
What's next for ElecHub
Apart from the fact that there are still many functional requirements to be properly implemented, I shall continue looking for ways to improve the project and why not think of building the hardware? Additionally it's publicly available as an open source project for improvement and for purposes of learning tools related to Azure and the involved tech stacks. I shall write blog posts on ElecHub and Azure in the days ahead.