This protocol is meant to be used with IoT and Smart Home Appliances in order to provide additional functionality, both in the local network and over the Internet, offering a FOSS replacement for solutions like Azure IoT Hub.
What it does
ConcentrIoT offers a number of functionalities, thanks to its semi-centralised infrastructure, with the HUB device being responsible for providing communication layer between devices, unifying the settings panel, as well as governing the available resources (for example, if one of the devices needs to download a large resource package, or train a neural network).
One practical example of putting the IoT network into practice is a common appliance – smart garage. Our system allows us to train a neural network to learn to recognize vehicle of the user. It does so by being fed pictures of the car, which then are projected on different backgrounds with different noise and blur.
After being trained the network parameters are being converted to more portable version in tensorflow lite, and uploaded to the raspberry pi via the central Hub. Raspberry pi is equipped with a camera. It regularly records the garage area, and using a separate image processing algorithm detects when a car is nearby. When detected, the neural network is run to determine whether the vehicle is the predefined one. Later, the IoT protocol allows the Pi to take appropriate action, by sending a signal back to the Hub. The functionality can be pretty much anything, whether it’s opening the gate to the garage or starting to make coffee for the user. The system can also be applied to bigger structures. For example, a smart traffic light system could be implemented, with Pi recognizing if vehicles are nearby and sending appropriate signal to the main lights controller. Another element of versatility of the system is the fact that it is also able to detect different objects than cars. It can also differentiate between couple of animals species and everyday items. Pet owners might want to develop some smart functionality in case their dog or cat gets caught leaving the property.
Challenges we ran into
- Unreliable parallel image processing
- UI Design
- Lazy fetching data to training loop
- Some OSs block the broadcast requests
Accomplishments that we're proud of
- Inventing the ConcentrIoT protocol
- Implementing basic protocol functions
- Highly optimised input pipeline for the AI model
- Dynamically generated database (lazy fetching)
- It works (quite!)
What we learned
- Creating a network protocol from scratch is very hard
- None of us can create a working, human friendly UI
- Advanced TensorFlow functions
- RaspberryPi TensorFlow utilisation
- Sharing the computational load in the network
What's next for ConcentrIoT
- Proper protocol definition
- Proper HUB device UI, working with any protocol implementation
- Further implementing protocol
- Generalisation of custom object detection