openHAB heats my living room when I need it
After I started my smart house project I've had so many ideas about what to fix and what to make, but the most important thing when I started was to make my living room comfier during the norwegian winters. So, after installing my Raspberry PI, my Razberry card and configuring my openHAB to start working I connected my two Fibaro wall plugs.
The advantage with these wall plugs are that they are quite small compared to other such wall plugs, and they can tell me how must energy the connected appliance is using. I'll take advantage of this feature later, as I don't have any temperature sensor just yet.
I've connected one wall plug to my electric radiator. This radiator remembers the temperature between each time it is switched off and on. The other wall plug is connected to my 2000 watt fan oven which I use to quickly heat the living room.
Before writing this, I've put all my openHAB configuration on GitHub, check it out here
So, there's some small challenges:
- How to switch heating of when the living room has reached my desired temperature?
- How can openHAB know when to switch heating on?
Configure the ovens in openHAB to read consumed energy
My two ovens are defined as number-items shown below. This is so that I can read the value in my rules, I'll come back to this.
/* Energy measuring */
Number power_fanoven "Energy fan oven [%.1f W]" (Energy) {zwave="2:command=sensor_multilevel"}
Number power_radiator "Energy radiator [%.1f W]" (Energy) {zwave="3:command=sensor_multilevel"}
Then I've registered the same two plugs as items/switches so that I can easily switch them on or off:
/* Heating */<br />
Switch switch_radiator "Radiator" (Heating){zwave="3:command=switch_binary"}<br />
Switch switch_fanoven "Fan oven" (Heating){zwave="2:command=switch_binary"}<br />
To be able to heat my living room in a "smart" way I'll have to make some rules reading and using the number-values defined above. But first I do want to show how much total energy these ovens are using at this moment, this is from my sitemap-file:
Frame {
Group item=Energy
}
Now I can both see the consumed energy and I can switch my heaters on or off (don't worry about the presence switch just yet, there will be a blog post about it later)
Then I'll have to make some rules to get this working for me, I want the living room to be warm when I get up in the morning:
rule "Heat the living room"
when
Time cron "0 30 5 ? * MON-FRI"
then
sendCommand(Heating, ON)
pushNotification("Varme","Varming av stua har startet")
end
The rule says simply: Switch on all items in the "Heating" group at 5:30 every week day. And the send a push notification to let the user know it is switched on.
So, in the weekends I do the same, but I want it to be switched on a bit later in the morning.
Next thing is to make sure the heating is being switched off at a certain time:
rule "Switch of heating during the week"
when
Time cron "0 0 7 ? * MON-FRI"
then
if (switch_radiator.state == ON || switch_fanoven.state == ON) {
sendCommand(Heating, OFF)
pushNotification("Heating","Heating stopped at: " + Date.state.toString())
}
end
I know that the electric radiator uses less than 10W when the temperature in the room has reached its preprogrammed oven temp, currently 21 degrees celsius.
So, this is the rule to fix that:
rule "Switch of heating if temp for radiator is ok"
when
Time cron "0 0/5 * * * ?"
then
var double t = new Double(power_radiator.state.toString())
if (switch_fanoven.state == ON && t < 10) {
sendCommand(Heating, OFF)
pushNotification("Heating","The living room heating is finished")
}
end
These rules and items is the start of making my living room more comfortable in the winter. So do you have any suggestions on how I can improve it?
Some examples are:
- Leave the raditor on for the time I'm home, and then start or stop the fan oven based on the power consumption of the radiator. This
will make it possible to keep a steady temp during the day when I'm home.
- Check if I'm home or not (more on that later)