Goal: Build a modular DIY IoT cloudless framework on the cheap using off the shelf components with Arduino (Nano) at the centre of everything.
The Arduino365 project has been going for some time now and it has grown. Here I will give a general overview of where it all is and what are the next steps to achieve the goal (was not really planned but rather just grew in an organic way aka one thing led to another etc). This will hopefully explain why I post the stuff I post on twitter. It should be a short read for you.
The thing that drives me crazy when it comes to the Arduino projects is the lack of an enclosure (not always) so everything ends up looking like a proof of concept for a school project. So to tackle this I have designed and 3D printed a case that houses everything and allows for some cable management + made it waterproof ish with gaskets and o'rings (my prototype survived outdoors with over 125 days of uptime). The design allows to add modules with different accessories depending on the use case of a node. Yeah, I try to make it as user-friendly as possible.
Hardware without software is just junk. So In the past few months I have been designing and developing a set of commands that will allow me to control the Arduino remotely (via ethernet) once it has been deployed in the wild. This is a game changer as I can change for example: the IP address of the node or the gateway address from the comfort of my browser. No need to go and find the node, open it up, connect to the PC via USB cable and all of that. And yes, I am using EEPROM to achieve this level of convenience. I update the command list often due to the fact that I discover new ways I can control the node to do more and more fancy things with it. Lately I have discovered that I can have a p2p network without a server.
The last very important element of this framework is the web interface (IoT Server). And it is a tricky one. I have done some work on it but due to the fact that I keep changing my mind and adding stuff to the software and remote control functionality of the node it just messes things up for me. I want the web interface to be clean with good user experience but to get there I need to finish toying with the node code first. Obviously the goal here is to not use any of the cloud services that make it easy for Arduino to send data to. What I am thinking is to keep the data collection private and not share it with anyone in the cloud. Also I will be adding reporting for the operator to make sense of the data (obvious right?). This is a move more towards small business that do not have 1500 sensors deployed over 30 sites or something of that magnitude.
And finally the really last thing on the table is the hardware platform for the IoT Server where all the nodes send the data. I have been looking for a proper candidate and so far the most reliable and not crazy expensive is the HP Microserver Gen 7 / 8 series. I was thinking to use the Raspberry Pi but it seems to have issues with stability. So if anyone ever has a good suggestion for a platform (keep in mind that it should be able to operate 24/7) that can run Linux (Debian / Ubuntu would be great) with Apache and PHP on top of it then please do not hesitate to send me a message via email / contact form or twitter.
While working at different phases of this project I have made videos that demonstrate the potential of this framework. The first demo is a standalone setup where the node does not need a server to function while the operator still has the ability to configure it via a browser. The second one is showing two nodes that work in a p2p mode which means that they still don't need a server and are basically in a master / slave relationship. Both examples utilize the temperature sensor as that was the obvious choice initially, however I am thinking to move to a motion sensor as a trigger (other suggestions also welcome).
The journey has been super fun and interesting to me so far. I have learned many things and done even more mistakes when designing the 3D enclosure and the logic for the Arduino Microcontroller. This project will live on and hopefully one day it will be a semi-finished product that I will have the opportunity to deploy somewhere and see how it works and even maybe solves a problem that someone has. Feedback is always welcome as I am not an alpha and omega. Stay humble and remember that ignorance is not bliss.