Victor-Mo / IRT-ESP

Nefit / Buderus iRT protocol encoder / decoder for ESP8266
GNU Lesser General Public License v3.0
22 stars 6 forks source link

iRT-ESP without Moduline 30? #6

Closed jperquin closed 3 years ago

jperquin commented 3 years ago

Question Can the iRT-ESP be used without a room thermostat, ie. Moduline 30?

Device information Set-up: Nefit Ecomline HR from 1997, keesbbq's ift modified complete kit, zwave radiator thermostats for individual zone control and home assistant for the boiler / radiator logic. Current non-domotica install depends on a Honeywell Chronotherm III (just on/off control connected to ports 1 and 2 of the UBA 4000) and I am not sure if buying a Nefit Moduline 30 makes sense for me. Instead I was thinking to just install the iRT_EMS to ports 5 and 6.

Am I on the right track?

Victor-Mo commented 3 years ago

@jperquin That is what the active mode is for. That will allow you the request a certain water temperature from the boiler.

The irt board should be connected to connections 3 and 4 on the UBA and a wire between 1 and 2. (See attached picture). There should not be any other devices on the bus. (The iRT bus is very sensitive). The iRT board should be externally powered (USB bus).

I am running a similar setup. I have the older Conrad FHT-80 devices for controlling the radiators. I use a Culfw USB dongle to pickup the communication to the FHT-80 devices (opening percentage of the radiators) and combine that with the outside temperature to calculate the requested water temperature. The iRT board then requests this from the UBA.

active_mode_small

jperquin commented 3 years ago

Hi Victor,

Thanks for your quick response.

Looking at the package (corresponds to the pic below, except mine is V 1.6), will I be using the mini board (4 pins), 100k resistor and 3-lead cable (yellow/blk/red)?

Suppose the whole unit is powered via the wemos micro-usb port?

ems-gw-irt-2

Victor-Mo commented 3 years ago

Hi,

The complete board will be powered by the USB connector on the wemos. You need to connect the iRT bus to the two blue screw terminals. The rest (the 100k, 4 pin mini PCB, the 3 wire lead and 3.5 mm lead) are not necessary. They are used if you convert the board back to EMS.

Just to double check, you did order the board as iRT board ? It should then be ready to go.

bbqkees commented 3 years ago

@jperquin If you purchased an iRT modified board its ready to go. The resistor, buck and jack cable are included to revert back to EMS in case you replace the old boiler for a new Nefit boiler.

jperquin commented 3 years ago

Thanks Kees.

Had connected the board "as received" but did not get it to communicate with the boiler, so soldered the provided 100k Ohm resistor and no luck either.

Will try again after removing the resistor and advise.

jperquin commented 3 years ago

..we have lift-off!

Currently getting following string via MQTT Explorer on boiler data: {"wWSelTemp":88,"selFlowTemp":0,"selBurnPow":0,"pumpMod":0,"outdoorTemp":0,"wWCurTmp":63,"curFlowTemp":58,"retTemp":58,"boilTemp":0,"wWActivated":"on","wWOnetime":"off","burnGas":"off","heatPmp":"on","fanWork":"off","ignWork":"off","heating_temp":88,"wWHeat":"off","burnStarts":0,"burnWorkMin":0,"ServiceCode":"0y","ServiceCodeNumber":7}

Could use some guidance on which parameters to control and what the exact MQTT publish command should look like.

Help much appreciated.

jperquin commented 3 years ago

Had a look at the original tweakers post here and have copied the HA sensors and climate logic from @mafradon. Apparently mafradon has made some changes to the logic and I was wondering if those have been incorporated in the latest FW build, as I am getting this error: Screenshot 2020-08-25 at 17 19 28

Victor-Mo commented 3 years ago

@jperquin Great news that it is working !

There are two things you can actively control via MQTT. If the warm water production is on or off and the requested flow temperature (for heating).

Below some example, adjust the topic to your setup:

Warm water on: topic: home/irt-esp/boiler_cmd_wwactivated data: on

Warm water of: topic: home/irt-esp/boiler_cmd_wwactivated data: off

Request flow temp topic: home/irt-esp/boiler_cmd data: {"cmd":"flowtemp",data:45}

If you request a flow temperature of more than 10 degrees celsius the boiler will start and try to reach the requested flow temperature. if you request a flow temperature less the 10 degrees the boiler will stop. The firmware will try to optimise the burnerpower of the boiler to reach and maintain the request flow temperature. If the requested temperature is lower then the current flow temperature the boiler will stop but keep the pump running until the temperature is below the requested temperature and then it will start again. The PID controller in the firmware will try to optimise the burner power to prevent the boiler from stopping and starting.

I have not seen the changes @mafradon made, but I also have not tried his home assistant configuration.

jperquin commented 3 years ago

Thanks Victor.

For HA to publish the correct MQTT command to set the desired flowtemp it can only send a number, not json template data (like {"cmd":"flowtemp",data:45}).

I tried publishing the desired number to "ems-esp/boiler_cmd_flowtemp" but that's not doing anything..

Victor-Mo commented 3 years ago

I use a custom piece of c code on an old NLSU2 to publish/control flow temp (long story). I am not a HA expert, but I googled a bit and this topic: publish-mqtt-message-in-json-format explains how to publish a HA value in a JSON format.

The topic 'ems-esp/boiler_cmd_flowtemp' does not exist.

jperquin commented 3 years ago

I ended up with the following config for climate.yaml:

- platform: mqtt
  name: Cv Ketel
  modes:
    - "auto"
    - "off"
  min_temp: 0
  max_temp: 80
  temp_step: 1
  current_temperature_topic: "ems-esp/boiler_data"
  temperature_state_topic: "ems-esp/boiler_data"
  mode_state_topic: "ems-esp/boiler_data"
  current_temperature_template: "{{ value_json.curFlowTemp }}"
  temperature_state_template: "{{ value_json.selFlowTemp }}"
  mode_state_template: "{% if value_json.wWActivated == 'off' %} off {% else %} auto {% endif %}"
  temperature_command_topic: "ems-esp/setpoint"
  mode_command_topic: "ems-esp/boiler_cmd_wwactivated"

and an automation that gets triggered by the (dummy) ems-esp/setpoint topic, which then fires the correctly formatted json to ems-esp/boiler_cmd

automations.yaml:

- id: '1598377832108'
  alias: EMS-ESP setpoint converter
  description: ''
  trigger:
  - entity_id: sensor.setpoint_flow_temperature
    platform: state
  condition: []
  action:
  - data:
      payload_template: '{"cmd":"flowtemp",data:{{ states.sensor.setpoint_flow_temperature.state
        | int }}}'
      retain: true
      topic: ems-esp/boiler_cmd
    service: mqtt.publish
  mode: single
jperquin commented 3 years ago

Would be nice if the warmwater temp could also be set to a specific target temperature, not just on or off..

Victor-Mo commented 3 years ago

I have not been able to find a message that can set the target warm water temperature. I think it can only be set on the boiler itself. Closing this issue (it can always be reopened).