Road flooding is a very classic problem in Bangkok. The road can turns to canel in 15 minutes from heavy rain. People always ran to that area and get stucked for many hours with no way out. See in the news
What it does
This project use IoT sensor to monitor
floodLevel along the road. People can access the data using LINE messenger (because it is very popular in Thailand), and subscribe any road. When flooding happen, PUSH notification will be sent to subscribers and ask them to avoid that area (then they may find something to do instead of go into that area and stuck on the road)
How I built it
Azure IoT Hub / Azure Functions / CosmosDB / PowerBI / Nodejs
- IoT sensor send data to Azure IoT Hub
- Azure IoT Hub trigs Azure Functions to 2.1 Store data into CosmosDB 2.2. Send notificaiton to LINE subscribers
- LINE messenger connects to Azure Functions (which acts as serverless bot) over HTTPS
- HTTPs trigs Azure Functions to process message from LINE users and reply back
- PowerBI connects to CosmosDB and then Visualize floodingLevel on map in real time
Challenges we ran into
- BOT should work like smart assistant, for example only the important data will be pushed to users and allow them to continue conversation more efficiently (avoid annoying)
Accomplishments that I'm proud of
- Bangkok already have Traffic problem and it is getting worst when the rain comes.
- Since, government already have data, but it is not that easy to access nor user friendly (table format)
- By connect the data to people daily life in the way that they live and adding data visibility and easy to access.
- Policeman subscribe to receive data as well, then they can plan their team to manage the traffic in that area
What I learned
- Sensors are the source of data, but it is only a small part.
- Visualize and translate data into information that people understand is important.
- To make information visible to everyone and connect to their daily life is more important
What's next for Bangkok Road Flooding (IoT + Bot)
- Use Azure Storage queues to handle LINE message - to increase performance
- Use Azure Machine Learning to find the pattern of floodingLevel and try to predict How long will it take for flood waters to drain from the road?
- Listen to Social Networks and try to discover the data, treat them as features to enhance Machine Learning