Rinnai Heating/Cooling Wifi Module

Version 2.3.1 of the plugin has been released. It replaces the “Simple” MQTT format with a “Home Assistant HVAC” specific format.

@David_M, please let me know if this new format is what you are after. I have not yet implemented the ability to publish when states change as I think there may be a bit of work involved. I want to ensure you are happy with the topics & payloads first before I start work on that.

Hi David… you have me thinking about my options…what is the overhead on the RPI if I have HomeBridge running on it or I could go down Mantoroks path and install it on my NAS which is a Synology. What would your recommendation be?

Thanks in advance

Hi John.
Its really hard to say what option is right for you. it depends on so much.
Is it an RPI4? What else are you running on it? how many smart home devices do you have.

Based on your comments, I suspect your relatively new at all of this. So if that’s the case, i’d install the portainer addon, install homebridge as David suggested. Worse case is your RPI runs like a dog and you uninstall it. No big deal, you learnt something.

Hi guys.

Long time. Good to see you have a much better solution since I last dropped by.
Remotely (from Singapore) I installed Homebridge in a Docker container on my NUC. Added the Plugin and boom… kit just works. :slight_smile: Good Job Mantorok

I’ve just upgraded to the 2.3.1 version with the MQTT HVAC integration. However I don’t feel the topic naming will correctly support the Home Assistant MQTT HVAC correctly.

For me I get the following messages every few seconds:

  • [INFO] Publish: ha/action/get, Payload: {“A”:“idle”,“B”:“idle”}
  • [INFO] Publish: ha/fan_mode/get, Payload: “low”
  • [INFO] Publish: ha/mode/get, Payload: “heat”
  • [INFO] Publish: ha/temperature/get, Payload: “18”
    All of which will work except for the JSON format ha/action/get

If i’m not mistaken, I think the only way this can work with the MQTT HVAC, is to have two topics for
ha/action/get as suggested above…

rinnai/action/{zone}/get)

I don’t believe I can use a HA template to correct this. I could be wrong.

I also need a way to pass in an external temperature sensor value as my unit is configured so the current temperature is alway 999. If i’m not mistaken, this results in and ha/current_temperature/get to always be NULL. (similar to David_M above)

Hi thankyou for writing this!

I now have this working with home assistant 0.110.4 via MQTT

the only issue i have found is that the temperature command does not like decimal points i.e

mosquitto_pub -t “homeassistant/brivis/ha/temperature/set” -m “19” works

mosquitto_pub -t “homeassistant/brivis/ha/temperature/set” -m “19.0” fails

i’m currently looking for a way to define the payload that the mqtt hvac intergration sends as a workaround.

below is my configuration if it helps anyone.

climate:
  - platform: mqtt
    name: Ducted Heating
    modes:
      - "off"
      - "heat"
      - "fan_only"
    fan_modes:
      - "high"
      - "medium"
      - "low"
    temperature_command_topic: "homeassistant/brivis/ha/temperature/set"
    temperature_state_topic: "homeassistant/brivis/ha/temperature/get"
    temperature_state_template: "{{ value_json }}"
    fan_mode_command_topic: "homeassistant/brivis/ha/fan_mode/set"
    fan_mode_state_topic: "homeassistant/brivis/ha/fan_mode/get"
    fan_mode_state_template: "{{ value_json }}"
    mode_command_topic: "homeassistant/brivis/ha/mode/set"
    mode_state_topic: "homeassistant/brivis/ha/mode/get"
    mode_state_template: "{{ value_json }}"
    precision: 1

1 Like

Whats your setup Darren? Does it have Zones?

Thanks for the feedback @jsn.forsyth. Are you able to use the “action_template” to extract one of the zones’ values? Maybe something like {{ value_json.A }}. I’ve never used them so not sure if it would work. With respect to the current_temperate, if the module supplies 999 then the “/ha/current_temperate/get” topic won’t be published.

@drmcinnes, I can make a change to the plugin to remove the decimal points if you like. Should be pretty easy.

No zones on mine, just a simple 12 year old brivis ducted unit with nc-6 controller.

The only down side is the nc-6 doesn’t report actual temperature so I’ll move a zigbee environmental sensor near the controller

You would be my eternal hero if you could!

I don’t have debugging enabled in homebridge but if you need some logs I can enable that tomorrow night and run the same commands.

Thanks @Mantorok - I’ve done some brief testing and concur with @jsn.forsyth. There may be a way to template it, but someone else more knowledgeable would need to comment on this. Fantastic I can see the zone states now!

Thanks for supplying the code @drmcinnes - I can see what you mean about the set temperature values not be accepted. I used to have an Ecobee and ZWave thermostat connected to the heater, and it worked fine with 0.5 increments. Must be a limitation of the wifi module, not the heater controller board.

Debug error:

[WARNING] Command failed. Expected state “.0” at HGOM.GSO.SP

Version 2.3.2 has been released which fixes the bug when setting the temperature via HA HVAC MQTT

Works beautifully!, no issues at all.

Thank you again.

Thanks for the feedback @jsn.forsyth. Are you able to use the “action_template” to extract one of the zones’ values? Maybe something like {{ value_json.A }}. I’ve never used them so not sure if it would work. With respect to the current_temperate, if the module supplies 999 then the “/ha/current_temperate/get” topic won’t be published.

Thanks for that. Templates in HA are amazing. I really need to learn them better.

Anyway, all working now. I haven’t tested it exhaustively but i’m very happy with the result. I have two thermostats. 1 for each zone.

I use Xiaomi MiJia temperature sensors to report the current temperature of each zone. So I created an automation that runs the script below every minute reporting the current temp.

script:
  publish_temp:
    sequence:
      - service: mqtt.publish
        data_template:
          topic: 'ha/current_temperature/a'
          payload: '{{ states("sensor.upstairs_temperature") | int }}'
      - service: mqtt.publish
        data_template:
          topic: 'ha/current_temperature/b'
          payload: '{{ states("sensor.living_room_temperature") | int }}'

Thanks again

That’s an interesting way of populating the thermostat current temperature. I’ll have to try that. I’m using a Xiaomi Aqara sensor also for reporting zone temperatures.

Are you still seeing a delay with state updates when you send an MQTT command, or have you increased the publishFrequency? I’ve left it at default (60sec), however I’ve noticed when you do send a command, the unit instantly publishes the status update. However, because of the command delay, the instant status update doesn’t include the new configuration.

e.g. Change of temperature below via MQTT

[6/2/2020, 11:56:42 PM] [Rinnai Touch] [INFO] Received: homeassistant/brivis/ha/temperature/set, Payload: 20
[6/2/2020, 11:56:43 PM] [Rinnai Touch] [INFO] Sending command: N000001{“HGOM”:{“GSO”:{“SP”:“20”}}}
[6/2/2020, 11:56:43 PM] [Rinnai Touch] [INFO] Publish: homeassistant/brivis/ha/action/get, Payload: {“A”:“heating”,“B”:“idle”,“C”:“idle”}
[6/2/2020, 11:56:43 PM] [Rinnai Touch] [INFO] Publish: homeassistant/brivis/ha/fan_mode/get, Payload: “medium”
[6/2/2020, 11:56:43 PM] [Rinnai Touch] [INFO] Publish: homeassistant/brivis/ha/mode/get, Payload: “heat”
[6/2/2020, 11:56:43 PM] [Rinnai Touch] [INFO] Publish: homeassistant/brivis/ha/temperature/get, Payload: “22”
[6/2/2020, 11:56:45 PM] [Rinnai Touch] [INFO] Command succeeded. Took 2000 ms

@Mantorok - Is the instant status publish built in to the plugin, or maybe it is the MQTT broker command response behavior. Maybe it needs a 1-2sec delay?

@David_M. I’m not happy with the way the MQTT publish events work at the moment. That’s why I didn’t implement one of the options. The plugin was never designed to handle MQTT so I think it will require a fair bit of refactoring to handle both the way homebridge works as well as MQTT. I’ve even thought about splitting the plugin into 2:

  • one like the original plugin prior to MQTT support (adds accessories to HomeKit)
  • a 2nd one that is just for MQTT (no accessories)

This would have its own challenges though as both plugins can’t talk to the module at the same time due to the flaky TCP.

I’m not publishing any messages to the touch device at the moment.

I’m actually having issues with the Homebridge connection. In Homebridge log, I get publishing info messages every 20seconds (as configured). However the message are always the same. Currently Zone A & B heating to 18 degrees. However the unit itself is idle with a set point of 19 degrees.

If I restart the Homebridge container, it seems to connect correctly and update once. But gets suck at the new values.

I might have broke something. I think it was working yesterday and broke sometime when I upgraded. This maybe a problem on my side. Not sure.

Are you able to check the status json blob (using the Publish Native option) to see if it shows the correct states?

No the log shows the native payload with the incorrect values. So I feel this is an issue between homebridge and the device. I rebooted my NUC and the touch and same result.

I’ve not seen that sort of thing before. Its like the status from the module it stuck. What about the touch app on your phone, does it show the correct information? Make sure it’s connected via WiFi not the cloud.

EDIT: Another question, is the day and time inside the json blob current for the native payload?

@jsn.forsyth I have followed yours and @David_M advice and installed the:

  • Portainer addon
  • added homebridge (I’m an Android user hence was not across this and learning quick but not there yet)
  • installed the Brivis plug in. Set up the Homke Kit Controller in HA and devices come up. Only problem is it’s not responding and noticed at the HomeBridge logs the following error message
    "[WARNING] Connect failed: connect ECONNREFUSED " so am assuming that I have a parameter in the plugin set incorrectly at the Brivis Plugin level.
1 Like