With this project, i intend to develop a house-scale network of interconnected nodes (mostly sensors and acuators) in order to create a smart domotics platform. Rather than just changing the color of led bulbs, the network will pilot the house, with cooling, venting rooms, automated lighting switching, anticipation of the weather in order to maintain an enjoyable temperature, etc.
The system is intended to be as automated as possible, with simple user interface to overide the automated actions if needs be.
Modules are planed to be autonomous, i.e. with the ability to handle it's own tasks even if the network is down. The network will however provide more elaborated functions, with the ability for a central node to issue commands to other nodes.
For this project, i will also be using a sub-project, Milapli that i posted here, which is a environemental station that i am developping. This will provide environemental and meterological sensors to exploit.
In the previous log, i described the general concept, and my vision of the user interface. Today, i will present a few design choices that i made for this project. My goal is to keep costs low, and use open hardware as much as possible, as well as free software. Furthermore, i will try to use standard stuff as much as possible. Not necessarily for the node itself, but for the devices controlled by the system. Indeed, i do not want to have a system that is only able to control very specific, rare, complex and expensive pieces of equipement.
If the system has to control a light, it should be able to control a standard light socket. Same for fans : a house fan should be controllable. In order to acomplish this, i will be controlling mains suply for these devices. I will thus use relays to activate or deactivate standard power plugs. The idea behind this is that if one needs to change a device, any other similar device should be a drop in replacement. Of course, power usage will have to be considered, but for now i'm planing on controlling low power devices such as lights and fans, so it is well below the power rating of my relays and wires.
I tend to prefer developping my own systems for most things, but in this case, it should be servicable by a user with no electronics knowledge. Of course, if the node itself is fryed, it would have to be replaced. But no programming for the user :)
This design choice may however reduce the amount of functionalities that could be implemented. As an example, for fans, if i were to use DC fans, i could drive it with PWM and have a fine speed tuning. With a mains AC fan, i can have it on or off. However, the PWM fan would require a more expensive system, and would be more complex to replace if needs be.
Living in a tropical country, rooms that are not air conditioned can get very hot. Considering this, the kitchen is a good place to start using domotics, since it does not have conditioned air. In this room, i want to manage two things : lights and temperature.
Air conditioning is not an option in this room, so i will have to rely on ventilation for two tasks : i am looking forward to use a fan to push hot air outside, and fans oriented toward the user to refresh him/her. For the lights, there is a main light on the ceiling, but i want to add lights in various locations (kitchen sink, etc).
Now, on the automation of this.
-Automation of the lights : the goal here is to turn on the lights according to the user activity. The lights should turn and off in an automated fashion. For the sink lights, the system should detect when a user is in front of the sink, or when hands are over the sink. I will try a PIR sensor to detect the user, and depending on the size of the things that can be detected, to detect hands over the sink. Lights will be turned off if no user was detected for a fixed amount of time (something like 1 minute, to be determined, may be something that can be specified by the user).
-Temperature control : depending on the room temperature, fans should activate automatically to exhaust hot air. If an user is present, and the temperature is over a user set value, fans will be sending air towards the user.
The user will have manual control over all those fonctions. However, i want to keep the interface simple, with few buttons, and simple controls. I thus plan to have 3 buttons with a LED each. One red, one blue, and one white. White is for lights, blue for cooling, and red is a general control.
The idea is the following : if the user pushes the white button, it enables lights. if he pushes again, lights are off. If the user holds the white button, automated mode is enabled. If held again, it goes back to manual mode. The button led will signal the state. If the system is off, and in manual mode, it will be slightly lit, or blink discretely, every second or so. The goal is to be able to locate the buttons in the dark. If on, it may be lit fully. At last, if the system is in auto mode, the led will be PWM driven to fade in and out, in a "breathing" pattern.
The same goes for the temperature control switch; and the general switch works in the same way, but controlling the whole system (if you push the red button, it will turn on/turn off all systems).
General disposition of the user interface
Later on, i may include other "codes" to control specific parameters. However, all simple actions must be used to activate/de-activate the most important functions.
I may also include a small LCD screen to display temperature and date, and maybe other parameters. However, the system will be usable without the LCD.