Hello,
I was in the same trouble but finally got a nice setup
First of all for getting info from the heating system I used the wonderful physical interface from https://bbqkees-electronics.nl/ a wemos D1 mini https://docs.wemos.cc/en/latest/d1/d1_mini.html with the code from Proddy https://github.com/proddy/EMS-ESP
It was then very easy to get all sensor values to HA
However it was impossible to set values as TC100 consider itself as “Master”
The workaround is using this command line utility created by Robert Klep https://github.com/robertklep/nefit-easy-cli
Then I created a input_number.slider in configuration.yalm
input_number:
slider1:
name: Target Temperature
initial: 21
min: 14
max: 24
step: 0.5
unit_of_measurement: C°
a shell command:
shell_command:
set_temperature: /config/set-temp.sh "{{ value }}"
The bash script:
#! /bin/bash
easy --serial=*** --access-key=*** --password=*** set temperature $1
Then some automation rules to manage the slider:
- id: '1585238482440'
alias: Set_Temp1
description: Set target temperature HA slider from EMS/ESP
trigger:
- entity_id: sensor.current_set_temperature
platform: state
condition: []
action:
- data_template:
entity_id: input_number.slider1
value: '{{ states(''sensor.current_set_temperature'') | float }}'
service: input_number.set_value
- id: '1585239965319'
alias: Set_temp2
description: Set target temperature from HA slider to EMS/ESP
trigger:
- entity_id: input_number.slider1
platform: state
condition: []
action:
- data_template:
value: "{{ states('input_number.slider1') }}"
service: shell_command.set_temperature
TADAAAA !
It’s working like a charm
BTW: nefit-easy-cli command line utility can already return lot’s of information like for example:
{"user mode":"clock","clock program":"auto","in house status":"ok","in house temp":20.7,"hot water active":true,"boiler indicator":"off","control":"room","temp override duration":0,"current switchpoint":27,"ps active":true,"powersave mode":true,"fp active":false,"fireplace mode":false,"temp override":true,"holiday mode":false,"boiler block":null,"boiler lock":null,"boiler maintenance":null,"temp setpoint":16,"temp override temp setpoint":16,"temp manual setpoint":16,"hed enabled":null,"hed device at home":null,"outdoor temp":5.9,"outdoor source type":"physical"}
So, BBkees physical interface to EMS bus is not mandatory, but with this interface you gain access to extra data like: heating running hours, burner starts, selected flow temp, current flow temp, additional info regarding Hot Water etc…
From EMS bus:
boiler_data {"wWComfort":"Hot","wWSelTemp":60,"selFlowTemp":5,"selBurnPow":0,"curBurnPow":0,"pumpMod":0,"outdoorTemp":5.7,"curFlowTemp":41,"wWActivated":"on","burnGas":"off","heatPmp":"off","fanWork":"off","ignWork":"off","wWCirc":"off","wWHeat":"off","burnStarts":3547,"burnWorkMin":147069,"heatWorkMin":147069,"ServiceCode":"0H","ServiceCodeNumber":203}
thermostat_data {"thermostat_hc":"1","thermostat_seltemp":16,"thermostat_currtemp":20.65}
All that stuff took me a bunch of hours, so I wanted to share.
Hope this may help