I just finished teaching another iteration of Home and Building Automation at the FH Upper Austria. It is one of my favorite classes - and gaging from student feedback the appreciation goes two ways.
Some of you might know that I have started to develop my own Internet of Things (IoT) framework, still called ulnoiot. It is available on github at http://github.com/ulno/ulnoiot. Teaching Home and Building Automation allowed me to vet the framework the first time in a teaching setting, and I am very pleased by the results.
A key feature for me in teaching IoT, is not only teaching the programming and integration of single devices, but the connection of all these devices into one system. Starting with my PhD on configuring smart home systems, I have always claimed that applications which are based on a network of sensors, actors, and other virtual software components inside the network or in the Internet/cloud only become interesting and an eventual economic opportunity (some have called it the killer app), when they cross several domains: Nobody is interested in replacing their existing lighting at home with smart bulbs if you cannot combine it with the house security (away automation and remote control), entertainment (mood lighting), or data analytics (power consumptions, behavior patterns, prediction). As soon as we cross different domains, applications become interesting.
ulnoiot is designed to allow building such domain spanning automation systems from the ground up for a very low price. It is further designed to lowering the entrance barrier and programming level to a very manageable level, also for beginners and being easy deployable in a class setting.
This class had 19 students. Each of the students received one Raspberry Pi with wireless capabilities (Pi Zero W and Pi 3 have this built in, older Pis need Wifi USB sticks). The students connected these to the local ethernet network or using their tethered cell phones as input wifi and therefore had each their own advanced wifi-router running all necessary IoT gateway software and a simple pre-installed development environment. Students could now use their laptops or tablets to login to their personal wifi-router and then access the installed environment via ssh.
ulnoiot on the respective Pis also allowed the students to flash microcontrollers (we used the Wemos D1 Mini and olimex development board - both based on the esp8266). ulnoiot uses a modified micropython environment which let's you define a networked sensor or actor in just 3 lines of code. This is the program for building a simple networked touch button. This can be entered interactively, while being logged into the microcontroller. All commands can be looked up from a help system, which is installed on the microcontroller.
Inspite of only 3 weeks of teaching, students came up with very compelling final projects, all showing off at least four different domains. One of my student group built a complete simulation of renting out rooms of a big apartment on airbnb with complete diy smart-lock, remote access control, tenant based smart audio, and diffrent levels diy remote security featuring mostly sensors and actors running ulnoiot.
Student commitment did not only stop there, they also filed bug reports (letting me advance ulnoiot) and even programmed their own mqtt drivers (i. e. for reading NFC tags).
A big thanks to my students. I am looking forward to my next project or class, featuring ulnoiot. If you want to try it, get some supported hardware at http://ulno.net/iot/hardware and start downloading http://github.com/ulno/ulnoiot.