That’s what I am working on, but if the old component works you could use that to read out extra entities/sensors.
The new one adds climate device to home assistant. So you can easily set room temp with Lovelace thermostat panel
Understand. So currently I´m using the Lovelace panel and the old style to display sensors and values.
Two feature requests/ideas:
- Add the presence button to Lovelance panel. BSBlan ID S701 / S1001 to switch between “comfort” and “reduced” heating mode
- Assign Lovelace panel buttons to all (more) heating circuits (e.g. Radiator and Floorheating…)
To design Lovelace ui for the other sensors is yet not in my current scope. If you want to do it:)
My plan is support all devices there are in Home-Assistant. So Climate, Water Heater Switch and Binary Sensors, Sensors.
But this will take some time. What is connected to bsblan board are all different type of heating systems. So not all heating systems support all sensors etc. If the logic in my library is OK the development will pick up speed. (I am not a programmer)
There is no option yet to put the backend of the heating system in a device/platform. Would be cool though. So all the other sensors will be seperate entities. I am not sure if it’s possible to create your own platform?
Hi there,
since i have updated to 0.117, rest sensor is not working anymore.
Is it the same for you guys?
Hi tiger42
can you share homeassitant configuration Rest sensor ?
I try to configure the sensor rest to extract value but not work.
Thank you in advance
Marco
Ok, this is the REST sensor part from my configuration.yaml:
sensor:
- platform: rest
name: BSB-LAN Status
resource: "http://192.168.0.95/JQ=700,1600,8000,8003,6705,710,712,720,721,1610,1612,5400"
method: POST
username: !secret bsb_lan_user
password: !secret bsb_lan_pass
scan_interval: 5
value_template: "{{ value_json['6705'].value }}"
json_attributes:
- "700"
- "1600"
- "6705"
- "8000"
- "8003"
- "710"
- "712"
- "720"
- "721"
- "1610"
- "1612"
- "5400"
headers:
Content-Type: application/json
- platform: template
sensors:
bsb_lan_betriebsart:
friendly_name: BSB-LAN Betriebsart
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '700')['value'] }}{% else %}{{ states('sensor.bsb_lan_betriebsart') }}{% endif %}"
attribute_templates:
desc: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '8000')['desc'] }}{% else %}{{ state_attr('sensor.bsb_lan_betriebsart', 'desc') }}{% endif %}"
bsb_lan_trinkwasserbetrieb:
friendly_name: BSB-LAN Trinkwasserbetrieb
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '1600')['value'] }}{% else %}{{ states('sensor.bsb_lan_trinkwasserbetrieb') }}{% endif %}"
attribute_templates:
desc: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '8003')['desc'] }}{% else %}{{ state_attr('sensor.bsb_lan_trinkwasserbetrieb', 'desc') }}{% endif %}"
bsb_lan_komfortsollwert:
friendly_name: BSB-LAN Komfortsollwert
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '710')['value'] }}{% else %}{{ states('sensor.bsb_lan_komfortsollwert') }}{% endif %}"
unit_of_measurement: °C
device_class: temperature
bsb_lan_reduziertsollwert:
friendly_name: BSB-LAN Reduziertsollwert
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '712')['value'] }}{% else %}{{ states('sensor.bsb_lan_reduziertsollwert') }}{% endif %}"
unit_of_measurement: °C
device_class: temperature
bsb_lan_kennlinie_steilheit:
friendly_name: BSB-LAN Kennlinie Steilheit
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '720')['value'] }}{% else %}{{ states('sensor.bsb_lan_kennlinie_steilheit') }}{% endif %}"
bsb_lan_kennlinie_verschiebung:
friendly_name: BSB-LAN Kennlinie Verschiebung
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '721')['value'] }}{% else %}{{ states('sensor.bsb_lan_kennlinie_verschiebung') }}{% endif %}"
unit_of_measurement: °C
device_class: temperature
bsb_lan_tww_nennsollwert:
friendly_name: BSB-LAN TWW Nennsollwert
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '1610')['value'] }}{% else %}{{ states('sensor.bsb_lan_tww_nennsollwert') }}{% endif %}"
unit_of_measurement: °C
device_class: temperature
bsb_lan_tww_reduziertsollwert:
friendly_name: BSB-LAN TWW Reduziertsollwert
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '1612')['value'] }}{% else %}{{ states('sensor.bsb_lan_tww_reduziertsollwert') }}{% endif %}"
unit_of_measurement: °C
device_class: temperature
bsb_lan_tww_dle_komfortsollwert:
friendly_name: BSB-LAN TWW DLE Komfortsollwert
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_attr('sensor.bsb_lan_status', '5400')['value'] }}{% else %}{{ states('sensor.bsb_lan_tww_dle_komfortsollwert') }}{% endif %}"
unit_of_measurement: °C
device_class: temperature
bsb_lan_temperaturspreizung:
friendly_name: BSB-LAN Temperaturspreizung
value_template: "{{ (states('sensor.bsb_lan_vorlauftemperatur') | float - states('sensor.bsb_lan_rucklauftemperatur') | float) | round(1) }}"
unit_of_measurement: °C
device_class: temperature
As the HTTP query is quite slow on the Arduino (the more values you read out, the slower it gets), I use MQTT to acquire all constantly changing values (mainly temperatures). You need to have a MQTT broker of course and the Arduino configured to use it:
sensor:
- platform: mqtt
state_topic: "bsb-lan/10004"
name: BSB-LAN Außentemperatur
unit_of_measurement: °C
device_class: temperature
- platform: mqtt
state_topic: "bsb-lan/8703"
name: BSB-LAN Außentemperatur gedämpft
unit_of_measurement: °C
device_class: temperature
- platform: mqtt
state_topic: "bsb-lan/8704"
name: BSB-LAN Außentemperatur gemischt
unit_of_measurement: °C
device_class: temperature
- platform: mqtt
state_topic: "bsb-lan/8310"
name: BSB-LAN Vorlauftemperatur
unit_of_measurement: °C
device_class: temperature
- platform: mqtt
state_topic: "bsb-lan/8314"
name: BSB-LAN Rücklauftemperatur
unit_of_measurement: °C
device_class: temperature
- platform: mqtt
state_topic: "bsb-lan/8830"
name: BSB-LAN Trinkwassertemperatur 1
unit_of_measurement: °C
device_class: temperature
- platform: mqtt
state_topic: "bsb-lan/8832"
name: BSB-LAN Trinkwassertemperatur 2
unit_of_measurement: °C
device_class: temperature
- platform: mqtt
state_topic: "bsb-lan/8326"
name: BSB-LAN Brennermodulation
unit_of_measurement: "%"
icon: "mdi:fire"
For setting parameters I use a parameterizable REST ccommand. Just let me know if you want to have the code for that too.
Hi
Have you got a climate card with your rest commands ? what is your code ?
I want to use 2 heating circuits (floor and etage) and heating water circuit so if I understand correctly, it’s not possible with the actual integration ?
Thanks
I do not use a climate card, but individual input fields instead. This is what it looks like:
This is the corresponding lovelace config:
cards:
- entities:
- entity: sensor.bsb_lan_betriebsart
filter:
include:
- key: sensor.bsb_lan_betriebsart.desc
name: Status
heading_name: ' '
heading_state: ' '
type: 'custom:entity-attributes-card'
- entity: input_number.bsb_lan_komfortsollwert
name: Komfortsollwert
- entity: input_number.bsb_lan_reduziertsollwert
name: Reduziertsollwert
- entity: input_number.bsb_lan_kennlinie_steilheit
name: Kennlinie Steilheit
- entity: input_number.bsb_lan_kennlinie_verschiebung
name: Kennlinie Verschiebung
- type: divider
- entity: sensor.bsb_lan_vorlauftemperatur
name: Vorlauftemperatur
- entity: sensor.bsb_lan_rucklauftemperatur
name: Rücklauftemperatur
show_header_toggle: false
type: entities
- entities:
- entity: sensor.bsb_lan_vorlauftemperatur
name: Vorlauftemperatur 6h
- entity: sensor.bsb_lan_rucklauftemperatur
name: Rücklauftemperatur 6h
- entity: sensor.bsb_lan_temperaturspreizung
name: Temperaturspreizung 6h
hours_to_show: 6
refresh_interval: 30
type: history-graph
- entities:
- entity: sensor.bsb_lan_vorlauftemperatur
name: Vorlauftemperatur 24h
- entity: sensor.bsb_lan_rucklauftemperatur
name: Rücklauftemperatur 24h
- entity: sensor.bsb_lan_temperaturspreizung
name: Temperaturspreizung 24h
hours_to_show: 24
refresh_interval: 30
type: history-graph
title: Heizkreis
type: vertical-stack
cards:
- entities:
- entity: sensor.bsb_lan_trinkwasserbetrieb
filter:
include:
- key: sensor.bsb_lan_trinkwasserbetrieb.desc
name: Status
heading_name: ' '
heading_state: ' '
type: 'custom:entity-attributes-card'
- entity: input_number.bsb_lan_tww_nennsollwert
name: Nennsollwert
- entity: input_number.bsb_lan_tww_reduziertsollwert
name: Reduziertsollwert
- entity: input_number.bsb_lan_tww_dle_komfortsollwert
name: Durchl'erhitzer Komfortsollwert
- type: divider
- entity: sensor.bsb_lan_trinkwassertemperatur_1
name: Trinkwassertemperatur 1
- entity: sensor.bsb_lan_trinkwassertemperatur_2
name: Trinkwassertemperatur 2
show_header_toggle: false
type: entities
- entities:
- entity: sensor.bsb_lan_trinkwassertemperatur_1
name: Trinkwassertemperatur 1 6h
- entity: sensor.bsb_lan_trinkwassertemperatur_2
name: Trinkwassertemperatur 2 6h
- entity: switch.gosund_zirkulationspumpe
name: TWW Zirkulationspumpe 6h
hours_to_show: 6
refresh_interval: 30
type: history-graph
- entities:
- entity: sensor.bsb_lan_trinkwassertemperatur_1
name: Trinkwassertemperatur 1 24h
- entity: sensor.bsb_lan_trinkwassertemperatur_2
name: Trinkwassertemperatur 2 24h
- entity: switch.gosund_zirkulationspumpe
name: TWW Zirkulationspumpe 24h
hours_to_show: 24
refresh_interval: 30
type: history-graph
title: Trinkwasser
type: vertical-stack
This is the automations.yaml part (the input fields have to be defined before for this to work, of course):
- id: bsb_lan_set_komfortsollwert
alias: BSB-LAN Komfortsollwert setzen
description: ''
trigger:
- platform: state
entity_id: input_number.bsb_lan_komfortsollwert
condition: []
action:
- data_template:
parameter: 710
value: "{{ states('input_number.bsb_lan_komfortsollwert') }}"
service: rest_command.bsb_lan_set_parameter
- id: bsb_lan_get_komfortsollwert
alias: BSB-LAN Komfortsollwert auslesen
description: ''
trigger:
- platform: state
entity_id: sensor.bsb_lan_komfortsollwert
condition: []
action:
- data_template:
entity_id: input_number.bsb_lan_komfortsollwert
value: "{{ states('sensor.bsb_lan_komfortsollwert') | float }}"
service: input_number.set_value
- id: bsb_lan_set_reduziertsollwert
alias: BSB-LAN Reduziertsollwert setzen
description: ''
trigger:
- platform: state
entity_id: input_number.bsb_lan_reduziertsollwert
condition: []
action:
- data_template:
parameter: 712
value: "{{ states('input_number.bsb_lan_reduziertsollwert') }}"
service: rest_command.bsb_lan_set_parameter
- id: bsb_lan_get_reduziertsollwert
alias: BSB-LAN Reduziertsollwert auslesen
description: ''
trigger:
- platform: state
entity_id: sensor.bsb_lan_reduziertsollwert
condition: []
action:
- data_template:
entity_id: input_number.bsb_lan_reduziertsollwert
value: "{{ states('sensor.bsb_lan_reduziertsollwert') | float }}"
service: input_number.set_value
- id: bsb_lan_set_kennlinie_steilheit
alias: BSB-LAN Kennlinie Steilheit setzen
description: ''
trigger:
- platform: state
entity_id: input_number.bsb_lan_kennlinie_steilheit
condition: []
action:
- data_template:
parameter: 720
value: "{{ states('input_number.bsb_lan_kennlinie_steilheit') }}"
service: rest_command.bsb_lan_set_parameter
- id: bsb_lan_get_kennlinie_steilheit
alias: BSB-LAN Kennlinie Steilheit auslesen
description: ''
trigger:
- platform: state
entity_id: sensor.bsb_lan_kennlinie_steilheit
condition: []
action:
- data_template:
entity_id: input_number.bsb_lan_kennlinie_steilheit
value: "{{ states('sensor.bsb_lan_kennlinie_steilheit') | float }}"
service: input_number.set_value
- id: bsb_lan_set_kennlinie_verschiebung
alias: BSB-LAN Kennlinie Verschiebung setzen
description: ''
trigger:
- platform: state
entity_id: input_number.bsb_lan_kennlinie_verschiebung
condition: []
action:
- data_template:
parameter: 721
value: "{{ states('input_number.bsb_lan_kennlinie_verschiebung') }}"
service: rest_command.bsb_lan_set_parameter
- id: bsb_lan_get_kennlinie_verschiebung
alias: BSB-LAN Kennlinie Verschiebung auslesen
description: ''
trigger:
- platform: state
entity_id: sensor.bsb_lan_kennlinie_verschiebung
condition: []
action:
- data_template:
entity_id: input_number.bsb_lan_kennlinie_verschiebung
value: "{{ states('sensor.bsb_lan_kennlinie_verschiebung') | float }}"
service: input_number.set_value
- id: bsb_lan_set_tww_nennsollwert
alias: BSB-LAN TWW Nennsollwert setzen
description: ''
trigger:
- platform: state
entity_id: input_number.bsb_lan_tww_nennsollwert
condition: []
action:
- data_template:
parameter: 1610
value: "{{ states('input_number.bsb_lan_tww_nennsollwert') }}"
service: rest_command.bsb_lan_set_parameter
- id: bsb_lan_get_tww_nennsollwert
alias: BSB-LAN TWW Nennsollwert auslesen
description: ''
trigger:
- platform: state
entity_id: sensor.bsb_lan_tww_nennsollwert
condition: []
action:
- data_template:
entity_id: input_number.bsb_lan_tww_nennsollwert
value: "{{ states('sensor.bsb_lan_tww_nennsollwert') | float }}"
service: input_number.set_value
- id: bsb_lan_set_tww_reduziertsollwert
alias: BSB-LAN TWW Reduziertsollwert setzen
description: ''
trigger:
- platform: state
entity_id: input_number.bsb_lan_tww_reduziertsollwert
condition: []
action:
- data_template:
parameter: 1612
value: "{{ states('input_number.bsb_lan_tww_reduziertsollwert') }}"
service: rest_command.bsb_lan_set_parameter
- id: bsb_lan_get_tww_reduziertsollwert
alias: BSB-LAN TWW Reduziertsollwert auslesen
description: ''
trigger:
- platform: state
entity_id: sensor.bsb_lan_tww_reduziertsollwert
condition: []
action:
- data_template:
entity_id: input_number.bsb_lan_tww_reduziertsollwert
value: "{{ states('sensor.bsb_lan_tww_reduziertsollwert') | float }}"
service: input_number.set_value
- id: bsb_lan_set_tww_dle_komfortsollwert
alias: BSB-LAN TWW DLE Komfortsollwert setzen
description: ''
trigger:
- platform: state
entity_id: input_number.bsb_lan_tww_dle_komfortsollwert
condition: []
action:
- data_template:
parameter: 5400
value: "{{ states('input_number.bsb_lan_tww_dle_komfortsollwert') }}"
service: rest_command.bsb_lan_set_parameter
- id: bsb_lan_get_tww_dle_komfortsollwert
alias: BSB-LAN TWW DLE Komfortsollwert auslesen
description: ''
trigger:
- platform: state
entity_id: sensor.bsb_lan_tww_dle_komfortsollwert
condition: []
action:
- data_template:
entity_id: input_number.bsb_lan_tww_dle_komfortsollwert
value: "{{ states('sensor.bsb_lan_tww_dle_komfortsollwert') | float }}"
service: input_number.set_value
My rest command has already been posted here:
https://community.home-assistant.io/t/bsb-lan-integration/113501/38?u=tiger42
I tiger42 thank you so much for the code.
it’s possible to share the code for setting parameters whit REST COMMAND?
Thanks
Marco
The code has already been posted… Look at the action:
parts in my automations.yml.
Hi,
the rest command work now thanks you !
can we create a HomeKit thermostat with rest command in HA ?
Hi
can we explain me how integrate my second heating system via BSB LAN integration ?
Thanks
Hi
Iam very new at BSB Lan. I use a ESP32 with the BSB-Lan adapter and first off all: It works!
Now I triy to integrate it in my HomeAssistant. I needed to flash the newest Version of BSB Lan, because for the ESP32 I need the wifi integration. SO the HA BSB integration does not work. I tried, buit it doesn’t
Now I want to use mqtt like tiger42 did.
What do I have to configure in the BSB-LAN adapter to gett mqtt working
MQTT verwenden: Plain text, JSON, Rich Json ???
MQTT IP Adress, Passwort, Username, GeräteID, Topic Prefix – got it!
SOmething else? In the logging section?
Hi Marc,
BSBLan has changed a lot the last few months. So I have to pick up where it is and what is best for HA integration. For now you could follow @tiger42 instructions to get the most out of it.
When I have some time available I am planning te rewrite the integration.
This will be more mqqt based because it will work like local push.
The plan is to have support for the platforms climate , hot water, and maybe some customs stuff.
If someone has interest to get things started let me know. I will enjoy to watch it from the sideline.
I’ve updated the BSB-Lan in Arduino and HA to the latest version, and now I am getting the negative amounts for this component… I’ve tried to sniff the network, and it seems the BSB-Lan itself return the correct values. Where can be the issue? Thanks!
Bsblan firmware has changed a lot so I cannot tell what’s broken.
For example they shuffled the parameters around.
That’s why it’s documented the version number of the firmware you have to install to be able to use this integration. You can still download the firmware version on GitHub that works with the integration.
Version 1.0 is the latest tested
I am spending time once in a while to overhaul the integration. But progress is slow.
Im using also the latest github surce to get it working with esp32.
It would be great if you could update the integration
Super, nice! Dont you have documents for the board layout(PCB layout) for BSB-LAN adapter? I saw only schematic, but I dont know ho to design it
My BSB-lan adapter is on it’s way and I’ll be using an ESP32, so I’m not sure version 1.0 will work for me. Can I help in getting the integration updated so it’ll work with the current version of the firmware?
I hope to start soon. I think I am going to start a custom component and will make it available on hacs first. This makes development and iterations a bit faster than doing pull request on the core. A lot need to be changed.