MQTT and openHAB adventure

Some people asked me to share my MQTT setup in regard to openHAB and I agreed to do so. In this blog post I will explain and describe in more detail my current setup primarily on the heating subject.

But first some background info. A long time ago I installed openHAB 1.6 on a Raspberry Pi 2 and started with some Homematic and Enocean (devkit) devices, but learned there were more interesting alternatives and fell in love with the MySensors project. This project allows you to create your own home automation devices with Arduino and alike hardware and provides a library that will handle all communication between the devices and openHAB. Since I started with MySensors I have used MQTT to connect to openHAB, so I already had a working MQTT setup when the OpenTherm gateway entered the house.

Setting up MQTT is pretty straightforward. Below I describe the steps I took to install and configure MQTT in combination with openHAB.

  1. $ sudo apt-get install mosquitto
    This installs version 0.15 of the software from the default repository. In my recent journey to upgrade MySensors from 1.5 to 2.1 I had to upgrade the mosquitto software to a newer release to make it work again.
  2. Upgrade mosquitto (optional)
    $ cd /etc/apt/sources.list.d/
    $ sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
    $ sudo apt-get update
    $ sudo apt-get install mosquitto
  3. Start the moquitto service
    $ sudo service mosquitto start
  4. Install MQTT openHAB binding (assuming openHAB is installed from the repo).
    $ sudo apt-get install openhab-addon-binding-mqtt
    otherwise place the MQTT addon binding in the right directory
  5. Configure the openHAB MQTT binding
    edit the openHAB main config file: /etc/openhab/configurations/openhab.cfg
    mqtt:mybroker.url=tcp://localhost:1883
    mqtt:mybroker.clientId=openHAB
  6. Restart openHAB
    $ sudo service openhab restart
  7. Check if the addon is loaded and reports an connection:
    $ sudo tailf /var/log/openhab/openhab.log | grep -i mqtt
    2016-11-06 16:40:29.047 [INFO ] [.io.transport.mqtt.MqttService] – MQTT Service initialization completed.
    2016-11-06 16:40:29.050 [INFO ] [o.i.t.m.i.MqttBrokerConnection] – Starting MQTT broker connection ‘mybroker’

Now that openHAB is configured to listen to the MQTT message bus it’s time to hook up the OpenTherm gateway.

I will continue in another post to explain the OpenTherm gateway configuration and openHAB items and rules. Also some useful debugging commands which I use alot. This was drafted pretty quickly, so the layout is not that nice. Hopefully I will find some time to tidy up the styling..

That’s it for now, more to follow on this subject soon!

Fixing runaway setpoint value

It’s not really a fix. It’s better to speak of a workaround to correct the setpoint of the household thermostat which slowly shifts over time (see the graph above). I lack knowledge to fix the source, which is most probably the OTGW software. So I have created a rule in openHAB to check and fix the setpoint every time it gets updated.

If someone else experience this behavior, the rule below works for me!

rule "Correct setpoint"
when
  Item ot_setpoint received update
then
  var float CurrentSetpoint = (ot_setpoint.state as DecimalType).floatValue
  logInfo("home.rules", "ot_setpoint before: " + CurrentSetpoint)

  var float CorrectSetpoint = Math::round(CurrentSetpoint.floatValue*2)/2.0f
  logInfo("home.rules", "ot_setpoint after: " + CorrectSetpoint)

  if (CorrectSetpoint != CurrentSetpoint) {
    postUpdate(ot_setpoint, CorrectSetpoint)
    logInfo("home.rules", "ot_setpoint correction performed")
  }
end

Opentherm Gateway for the win

At the end of last year the central heating system (including hot water) at home started to fail. Luckily it was not directly broken, but it slowly gave less and less heat, which was most noticeable while taking a shower, brrr.
I was not totally unhappy then the maintenance guy told me the pump and three way valve replacement would be very expensive and besides that, the heating unit was nearing it’s expected lifetime. This way it was legit to buy a new one! One that could integrate with the already present home automation solution provided by openHAB.

It took a few hours to learn and decide which system was best for me. I won’t go into much detail about my selection and why, but I eventually came up with the Remeha Tezerra Plus 39c CW5 including Remeha iSense v28 thermostat. The heating system and thermostat are using the OpenTherm protocol to communicate. In the research process I learned there’s a device called the Opentherm Gateway which is capable of monitoring the OpenTherm messages that are passed between the heating unit and the thermostat, but most important, it’s able to set or override the setpoint temperature.

(more…)