Although the project design was modified due to multiple reasons, I did put heart and soul into this entire project. I learned and evolved through time and the suggestions of other community members and the support of everyone involved. The list of blogs and demos is available at:
One of the lessons learnt was when blogging about the project, to keep the posts on single topic. I posted extra long posts at the end of weeks which had a lot of different subject matter and I could not refer them correctly later. Beyond that I am in the process of learning about video editing and will do better in the future. Without further ado, My application is given below for eveyone to see.
v----------------------------- The Application --------------------------------------------v
The Internet Of Things has really gained popularity in the recent years with the advent of the Arduino with ethernet Shield, Netduino plus, RPi, Beaglebone Black, RIOT board and the like. An IOT solution can be implemented in a multitude of ways using any one of the mentioned technologies. IOT applications have found their way into these but the real applications where IOT shines is where the use of connectivity and intelligent use of data is involved. With lots of data available on the internet, the major advantage is that we can have systems that employ rules that not only take local inputs into consideration but also data from the Internet. A good example is weather based systems.
I was one of the finalists for the beyond the phone challenge and I tried implementing an IOT like solution for a logistics problem.(IP: 11 : Wireless Power Sensor Array: Final Presentation Submission) I later realized that the solution, though working was not really the optimum solution. The design was built around a real world problem and the final design has a few issues.
The first issue is the overall maintenance . The price of the power system is quite hefty and even though it seems viable, the cost of battery and it's maintenance is unacceptable by most vendors.
The second problem was the costing of the wireless modem- the XBEE modules work right but they are a bit pricier than expected which makes the entire project less value for money.
Reason For roadtest
My interest in this challenge was sparked due to an array of reasons. I will try an be brief about each.
The Challenge is based on the RPi- It's a proven piece of hardware and runs linux. With the advent of the RPi Compute module, the design can be made commercially viable. (See my blogs at embeddedcode.wordpress.com)
The EnOcean Sensors are using lower frequency radios and NO BATTERIES! That solves one of the problems which was based around the power system.
The EnOcean Sensors use an 8051 core. I have been using the 8051 since yr2002 and have designed a number of automation solutions around the controller. I can hack it to work the way I want it. This will be possible with the Dolphin Suite but I can still try otherwise. Maybe design a new sensor? I can upload my code onto a sensor using the programming interface(datasheet says so)
The Eclipse Smart Home Project. I am not a software guy but for using RPi as a Home Automation tools, I was using WebIOPi which uses the REST API. I have seen some of the seminars by Benjamin Cabe which use MQTT(Paho) and LWM2M(wakaama) and the Eclipse Orion tool and by Kai K on Eclipse Smart Home and OpenHAB. I have started experimenting with OpenHAB and seems like a very powerful tool and would like to get more hands on with enocean pi, the bindings and how it can be expanded to it's full potential.
And lastly, it is an IOT challenge! I am loving it!
EDIT: Well there is one more reason... It's the Raspberry Pi B+! Yes. The lower power consumption means that I can now put it on the battery longer.
My proposal is a two part proposal with
one application which is a Smart home solution in accordance with the theme of the challenge and
the second part is modifying my existing application, incorporating the EnOcean sensors and OpenHAB (Side Project)
Project Proposal -> Forget What!?
There are a lot of mini tasks that everyone performs everyday in the house and with time the regular tasks become a part of our routine and we seldom forget them. It is the not so regular tasks that get us. The tasks that we rush through. A good example was locking the door when you leave the house. There are multiple options to solving such a problem like using a "key only door lock" or even an electronic lock.
So what are the things that we can forget around the house other than the obvious? Below is a list of the ones I will be targeting. A design diagram is given below: (Note with the RPI B+, I have proposed to add a LiPo Battery, LCD, Keyboard and Mouse along with a Wifi Dongle which will make our SmartHome Kiosk Mobile!)
1. Did I put the milk back in the fridge? - IOT Waiting Platform
Large pots of stew and boiled milk cannot be put in refrigerator immediately. They need to be cooled down and I have forgotten to put the milk back in the fridge on more than one occasion. This applies to any leftovers and things you took out of the fridge and need to put back in later. Now people set alarms and timers etc but when you get to bed or leave the house in a hurry, there is a nagging question at the back of your mind... Did I or didn't I? To answer this question, I propose a "WAITING PLATFORM".
The Hardware: The device will use the EnOcean push switch to transmit whether there is something on the platform or not. The platform will be built out of wood and will incorporate a sort of lever arrangement to facilitate the pressing of the EnOcean Power generation bow in order to generate the power necessary for the transmission of the signal. A rough sketch is given below but the actual device will be designed once I have the sensor physically with me and I can see how best to assemble it in the frame.
The Software: The EnOcean Pi will be used to receive the status and updates will be passed onto the user via OpenHAB. The status will also be pushed via MQTT to a Mosquitto Server where clients can subscribe and check. More on this later.
2. Do we need to refill the cooking LPG cylinder? -IOT Weighing Machine
In India, we get cooking gas in the kitchen by the purchase of Liquid Petroleum Gas (LPG) Cylinders. These come by weight and once you exaust one, you place an order of the next. There is usually a waiting period of 5 to 10 days which means we almost always keep one spare. Unfortunately, in times of shortage this waiting time goes up as well and it is standard household practice to place orders for these in advance. The fuel is by weight and we can check if a cylinder is going low. This is also a problem with hotels etc as well. The question to be answered is "Does my Cylinder need refilling and how long is it still going to last?" To answer this question, I propose the "IOT Weighing Machine"
The Hardware: The device will use the EnOcean Temperature Sensor, hacked to take measurements from a loadcell or weight sensor. I think the only way to upload custom code to the module is via the Dolphin Suite and EDK but I will try to figure something out. Worst case, I will map the load cell outputs to the temperature sensor via some glue logic circuitry. The load cell shown below is a 50Kg one and is good enough for our application. It might take an additional battery and a little bit of signal conditioning circuitry to attach this to the existing EnOcean sensor. I will be fabricating a metal hook like structure that will allow me to hang the entire weight on a single cell instead of using a platform with multiple cells which will increase the circuitry.
The Software: The sensor calibration etc will all be done on the RPi. The Data will be passed onto a database to record the level of LPG and determine consumption patterns which can be further used to extrapolate the next time we need to place an order. The extrapolation will all be done in much later stages using either Jquery or something else at client end or NodeJS at server end. Once the cylinder goes empty, an alert will be generated. More on this later.
Figure 3: Load Cell
3. Did I turn off everything in the room? -IOT Appliance Monitor
This problem is the most common when leaving home, but sometimes we just don't need to control a light or AC- That is accomplished some other way. We just need to know if we turned off EVERYTHING! So to answer this question, I propose the IOT Current Sensor. The concept is simple, using a non-invasive AC Current Sensor, we can determine whether current is being drawn on a particular wire or not. If there is a current draw, there must be an appliance left on. The sensor can be simply clipped onto a wire and you are done.
Hardware: The EnOcean Temperature Sensor is hacked and connected to the Current Sensor and some signal conditioning circuitry. Again I might need to figure out a way to modify the existing sensors without the Dolphin Suite and API. Alternatively I will have to build a custom module all together. The values obtained are transmitted to the EnOecan Pi instead of the temperature readings. The Sensor is shown below and can directly be clipped onto the main line into a room or onto the line of a particular appliance like Air Conditioner.
Software: The values of current obtained from the sensor at the EnOcean Pi will be transmitted to a logging server and the alerts are generated at remote client end. That's it!
Figure 4: Non-Invasive Current Sensor
4. Did I bring the clothes back in from the clothes line? - IOT Clothes Line(A) and IOT Meteorological Station(B)
This is part of an ongoing project which solves a regular problem that we have. The summer weather brings high speed winds and sudden showered as a part of pre-monsoons here. We let our clothes out in the sun to dry and if there are high speed winds, there is a possibility of them being blown away. Hence as a part of a classical home automation system, I have under fabrication a clothes line which is motorized and can be retracted electronically. Combine that with an Anemometer(Wind Speed Meter), a Rain detector and temperature sensor we get a MET system in our house. In addition to that if we combine it with weather forecasts, we can separate sudden gusts of winds to oncoming storms and retract clothes lines more intelligently.
Hardware: The hardware has a mechanical part which is already under fabrication according to my house. It consists of a set of pulleys and cables like cable car systems. I have spring based tensioner for the main line and separate steel lines for the motor. The electronics are still on paper. The motor needs a powerful current source since it can run a few horses. I will be supplying it from a custom power supply which has a current limiting circuit to make sure I don't overload the system and blow it up! The control interface is via opto couplers which means I can have anything behind it. I am thinking:
Custom control circuit for the Clothes Line with all the sensors data of the power system and rain detetection with wireless transmitter. (Xbee or something with an 8051 or MSP430)
Use the EnOcean Reed switch and make a custom Anemometer. I can make a custom frame for the anemometer and count the number of rotations by the switch turning on and off. Alternatively I can hack that can use an opto interrupter to make a contact less RPM counting mechanism. No additional circuitry required.
Software: The software will need some customization. For the Clothes line, I need to write the bindings with OpenHAB(experimenting on that right now) which will allow me to control the clothes line inside OpenHAB itself. And for the MET station, I will need to convert the opening and closing of the reed switch into RPMs and into windspeeds. I will also need to read all the temperature and rain sensor data inside OpenHAB as well. There is a facility to write rules for automation in OpenHAB and that is what will be used to control the clothes line automatically. The computed data is update only locally and the status of the clothes line is the only thing that is updated to the MQTT server and Database server for logging. Might have to calculate windspeeds from RPMs but is not that tough.
5. Did I close the Windows? - IOT Windows
I know that there are people already selling these but it made sense to make one of my own. With powerful winds comes a lot of dust and but winds plus rain equals cools air. The device is a simple windows opener and closer which will work according to the weather.
Hardware: Not sure about the mechanical structure right now, but will be getting some expert help on this one to design a device which can be added to our dozen windows!
Software: Will have to write the bindings as well as rules for automatically opening and closing the windows.
6. PLUS Notification to User visually and by audio!- IOT Color Sphere
So with OpenHAB at the back, I need to burn cellphone batteries to be updated? No! I do not have phillips hues, but I can make one! A visual indication system is proposed to generate alerts visually and while I am at it, I add a speaker for audio notifications.
Hardware: Speakers connected to the RPi and an Arduino Nano (USB) with RGB LEDs. Put these in an acrylic box and thats it!
Software: More bindings need to be written to have a particular color generated and the rest is like Phillips hues. The speakers will be used with a set of predefined sound files for alerts on various events. If I get the chance I just might take a peek as Jasper for Text to Speech.
EDIT: The new RPi B+ has larger number of USB ports which means that I can add an Arduino, a WiFi Dongle, attach a small LCD(the one I have already procured has HDMI in 10.1") and Keyboard and Mouse to make our RPi an Internet and Smart Home Kiosk. I can design a suitable housing out of wood for the same which makes the unit wall mounted or table top. With the lower power consumption, I have a battery(LiPo Battery with LiPo Rider Pro) which can make our SmartHome Kiosk Terminal mobile. Yay!
7. Control Appliances with an IR Remote Control
Since I have an Arduino Nano connected, I can have predefined IR protocol Commands that can be transmitted via an IR Led. This will allow the system to switch ON and OFF anything that is controlled via IR Remote like TV or Air Conditioner.
Hardware: An IR LED connected to the Arduino Nano directly or via a transistor is all that is needed
Software: Pre-programmed commands inside the Arduino that are executed on commands from the RPi via the UART Serial Port. Will need to write a binding for that as well.
8. Android Application: - It's an Android Apps for getting alerts over MQTT- mqtt eclipse server?
This is also one thing that I am not sure I can get done in time, but I will definitely get done sooner or later. An app that can talk to the MQTT server to read status of various alerts proposed above. If there is a readymade app somewhere I will find it and use it or write code from scratch. (I used to write Java about 8 years ago- how tough can it be right?)
Challenges and Threats
I have proposed a lot and that itself is a challenge. Additionally I am not sure if the EnOcean modules can be reprogrammed as I am expecting without the Dolphin Suite. It might take a little more reverse engineering to get custom firmware to work but each module can be used even without modifying the firmware. The last foreseeable problem is getting required parts and PCBs in time. I can start work on the PCBs immediately and with regards to the parts, I will learn from my past mistakes and make sure I can get the parts in time here in India.
I initially though this is a bit much but when i saw the webinars and how easy it was getting started at the software end, I was confident enough to submit this proposal. EnOceans Sensors promise to be one of the guiding technologies of IOT electronics while the Eclipse Smart Home and OpenHAB is a fantastic project especially for guys like me who are electronics engineers and not professional software programmers. It would have been a boon to have the EnOcean EDK, at least the software and APIs for customization of the modules. There are a lot of things that can become part of a Home Automation System like Gesture Recognition, RFID interfaces and other automation abilities. The theme here is "Forget me not" but I will be adding these facilities over time, past the challenge.
about me: I am currently an Assistant Professor at Guru Nanak Dev University Amritsar. I have been an electronics hobbyist for more than 20 years and I work on Wireless, DSP and embedded products. I work as a consultant for private companies in India along with working on open source hardware/software products which I blog and share at my blog and github