-
Notifications
You must be signed in to change notification settings - Fork 21
HomeAssistant
HCPY acts as an MQTT bridge between HomeConnect devices. HomeAssistant can integrate this by creating entities using the package
yaml configuration (wrap all sensors under an mqtt:
top-level subject. This can be loaded by the main HA configuration.yaml
with the following entry:
package: !include dishwasher.yaml
package: !include hood.yaml
There is no need to reboot HA after modifying these files. They can be reloaded on the fly within the developer tools menu.
Alternatively include the following directly in mqtt.yaml
and include with:
mqtt: !include mqtt.yaml
The following examples could be used as a basis for the entities in HomeAssistant. Further template sensors may need to be created to retrieve state_attr
attributes.
Neff N90 D96IKW1SOB/04
fan:
- name: "Hood"
unique_id: "hood_fan_SERIAL"
state_topic: "homeconnect/hood/state"
state_value_template: "{{ value_json.PowerState }}"
command_topic: "homeconnect/hood/set"
command_template: "{{ iif(value == 'On', '{\"uid\":539,\"value\":2}', '{\"uid\":539,\"value\":1}') }}"
json_attributes_topic: "homeconnect/hood/state"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/hood/LWT"
availability_mode: all
payload_on: "On"
payload_off: "Off"
device:
identifiers: "extractor_fan_hood_SERIAL"
name: "Hood"
manufacturer: "Neff"
model: "N90"
serial_number: "SERIAL"
light:
- name: "Hood Work Light"
schema: template
state_topic: "homeconnect/hood/state"
state_template: "{{ iif(value_json.Lighting, 'on', 'off') }}"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/hood/LWT"
availability_mode: all
brightness_template: >
brightness_template: >
{% if value_json.AmbientLightEnabled and value_json.AmbientLightColor == "CustomColor" %}
255
{% elif value_json.AmbientLightEnabled %}
{{ value_json.AmbientLightBrightness | float(0) | multiply(2.55) | round(0) }}
{% else %}
0
{% endif %}
command_topic: "homeconnect/hood/set"
command_on_template: >
{%- if brightness is defined -%}
{"uid":53254,"value":{{ [10,brightness | float | multiply(0.39215686) | round(0)]|max }} }
{%- else -%}
{"uid":53253,"value":true}
{%- endif -%}
command_off_template: '{"uid":53253,"value":false}'
device:
identifiers: "extractor_fan_hood_SERIAL"
- name: "Hood Ambient Light"
schema: template
state_topic: "homeconnect/hood/state"
state_template: "{{ iif(value_json.AmbientLightEnabled, 'on', 'off') }}"
availability:
- topic: "homeconnect/LWT"
brightness_template: "{{ value_json.AmbientLightBrightness | float(0) | multiply(2.55) | round(0) }}"
command_topic: "homeconnect/hood/set"
command_on_template: >
{%- if brightness is defined -%}
[{"uid":588,"value":{{ [10,brightness | float | multiply(0.39215686) | round(0)]|max }} }]
{%- elif red is defined -%}
[{"uid":589,"value":1},{"uid":590,"value":"{{ '#%02x%02x%02x' % (red,green,blue) }}"}]
{%- else -%}
[{"uid":587,"value":true}]
{%- endif -%}
command_off_template: '{"uid":587,"value":false}'
# There are multiple preset colours indicated by Color2
red_template: >
{%- if value_json.AmbientLightColor == "CustomColor" -%}
{{ value_json.AmbientLightCustomColor.strip('#')[:2] | int(base=16) }}
{%- else -%}
0
{%- endif -%}
green_template: >
{%- if value_json.AmbientLightColor == "CustomColor" -%}
{{ value_json.AmbientLightCustomColor.strip('#')[2:4] | int(base=16) }}
{%- else -%}
0
{%- endif -%}
blue_template: >
{%- if value_json.AmbientLightColor == "CustomColor" -%}
{{ value_json.AmbientLightCustomColor.strip('#')[4:6] | int(base=16) }}
{%- else -%}
0
{%- endif -%}
device:
identifiers: "extractor_fan_hood_SERIAL"
Neff N50 GU7212FE0G/01
binary_sensor:
- name: "Door"
unique_id: "freezer_door_SERIAL"
state_topic: "homeconnect/freezer/state"
value_template: "{{ value_json.Freezer }}"
payload_on: "Open"
payload_off: "Closed"
device_class: door
json_attributes_topic: "homeconnect/freezer/state"
device:
identifiers: "freezer_SERIAL"
name: "Freezer"
manufacturer: "Neff"
model: "N50 GU7212FE0G/01"
serial_number: "SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/freezer/LWT"
availability_mode: all
switch:
- name: "Eco Mode"
unique_id: "freezer_eco_mode_SERIAL"
state_topic: "homeconnect/freezer/state"
state_off: false
state_on: true
payload_on: '[{"uid":8224,"value":true}]'
payload_off: '[{"uid":8224,"value":false}]'
command_topic: "homeconnect/freezer/set"
value_template: "{{ value_json.EcoMode }}"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/freezer/LWT"
availability_mode: all
device:
identifiers: "freezer_SERIAL"
- name: "Super Mode"
unique_id: "freezer_super_mode_SERIAL"
state_topic: "homeconnect/freezer/state"
state_off: false
state_on: true
payload_on: '[{"uid":8208,"value":true}]'
payload_off: '[{"uid":8208,"value":false}]'
command_topic: "homeconnect/freezer/set"
value_template: "{{ value_json.SuperMode }}"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/freezer/LWT"
availability_mode: all
device:
identifiers: "freezer_SERIAL"
number:
- name: "Set Point Temperature"
unique_id: "freezer_set_point_temperature_SERIAL"
state_topic: "homeconnect/freezer/state"
value_template: "{{ value_json.SetpointTemperature }}"
command_topic: "homeconnect/freezer/set"
command_template: "[{\"uid\":8198,\"value\": {{ value }} }]"
min: -26
max: -16
icon: mdi:snowflake-thermometer
unit_of_measurement: "°C"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/freezer/LWT"
availability_mode: all
device:
identifiers: "freezer_SERIAL"
Neff N90 KI8815OD0/01
binary_sensor:
- name: "Fridge Door"
state_topic: "homeconnect/refrigerator/state"
value_template: "{{ value_json.DoorState }}" # Also Refrigerator
payload_on: "Open"
payload_off: "Closed"
device_class: door
json_attributes_topic: "homeconnect/refrigerator/state"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/freezer/LWT"
availability_mode: all
device:
identifiers: "fridge_SERIAL"
name: "Refrigerator"
manufacturer: "Neff"
model: "N90 KI8815OD0/01"
serial_number: "SERIAL"
number:
- name: "Set Point Temperature"
unique_id: "fridge_set_point_temperature"
state_topic: "homeconnect/refrigerator/state"
value_template: "{{ value_json.SetpointTemperature }}"
command_topic: "homeconnect/refrigerator/set"
command_template: "[{\"uid\":8199,\"value\": {{ value }} }]"
min: 3
max: 8
icon: mdi:snowflake-thermometer
unit_of_measurement: "°C"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/freezer/LWT"
availability_mode: all
device:
identifiers: "fridge_SERIAL"
switch:
- name: "Super Mode"
unique_id: "fridge_super_mode"
state_topic: "homeconnect/refrigerator/state"
state_off: false
state_on: true
payload_on: '[{"uid":8209,"value":true}]'
payload_off: '[{"uid":8209,"value":false}]'
command_topic: "homeconnect/refrigerator/set"
value_template: "{{ value_json.SuperMode }}"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/freezer/LWT"
availability_mode: all
device:
identifiers: "fridge_SERIAL"
Neff N90 S189YCX02E/38
Also works with:
- Bosch SMV88UX36E
- Bosch SMU4ECI15S
switch:
- name: "Power State"
unique_id: "dishwasher_powerstate_SERIAL"
icon: mdi:dishwasher
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.PowerState|default('unavailable') }}"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
state_off: "Off"
state_on: "On"
payload_on: '[{"uid":539,"value":2}]'
payload_off: '[{"uid":539,"value":1}]'
command_topic: "homeconnect/dishwasher/set"
json_attributes_topic: "homeconnect/dishwasher/state"
device:
identifiers: "dishwasher_SERIAL"
name: "Dishwasher"
manufacturer: "Neff"
model: "N90 S189YCX02E/38"
serial_number: "SERIAL"
# This is set 4103 on Neff N90 S189YCX02E/38
- name: "EcoDry"
unique_id: "dishwasher_ecodry"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
state_off: false
state_on: true
payload_on: '[{"uid":5134,"value":true}]'
payload_off: '[{"uid":5134,"value":false}]'
command_topic: "homeconnect/dishwasher/set"
value_template: "{{ value_json.EcoDry|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "SilenceOnDemand"
unique_id: "dishwasher_silenceondemand"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
state_off: false
state_on: true
payload_on: '[{"uid":5136,"value":true}]'
payload_off: '[{"uid":5136,"value":false}]'
command_topic: "homeconnect/dishwasher/set"
value_template: "{{ value_json.SilenceOnDemand|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "VarioSpeedPlus" # Aka ExtraSpeed
unique_id: "dishwasher_variospeedplus"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
state_off: false
state_on: true
payload_on: '[{"uid":5127,"value":true}]'
payload_off: '[{"uid":5127,"value":false}]'
command_topic: "homeconnect/dishwasher/set"
value_template: "{{ value_json.VarioSpeedPlus|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "ExtraDry"
unique_id: "dishwasher_extradry"
icon: mdi:office-building-cog
entity_category: config
state_topic: "homeconnect/dishwasher/state"
state_off: false
state_on: true
payload_on: '[{"uid":4356,"value":true}]'
payload_off: '[{"uid":4356,"value":false}]'
command_topic: "homeconnect/dishwasher/set"
value_template: "{{ value_json.ExtraDry|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
button:
- name: "Stop"
unique_id: "dishwasher_extradry"
icon: mdi:stop
command_topic: "homeconnect/dishwasher/set"
command_template: '[{"uid": 512,"value": true}]'
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/dishwasher/state"
value_template: "{{ 'offline' if value_json.OperationState == 'Ready' else 'online' }}"
number:
- name: "SilenceOnDemandDefaultTime"
unique_id: "dishwasher_silenceondemanddefaulttime"
icon: mdi:timer-play-outline
entity_category: config
retain: true
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.SilenceOnDemandDefaultTime|default('unavailable') / 60 }}"
command_topic: "homeconnect/dishwasher/set"
command_template: '[{"uid":4382,"value": {{ value * 60 }} }]'
min: 1
max: 30
step: 1
mode: box
unit_of_measurement: "min"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
select:
- name: "EcoAsDefault"
unique_id: "dishwasher_ecoasdefault"
icon: mdi:cog
entity_category: config
retain: true
command_topic: "homeconnect/dishwasher/set"
command_template: >
{% if value == "LastProgram" %}
[{"uid":4363,"value":0}]
{% elif value == "EcoAsDefault" %}
[{"uid":4363,"value":1}]
{% endif %}
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.EcoAsDefault|default('unavailable') }}"
options:
- "LastProgram"
- "EcoAsDefault"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "DryingAssistantAllPrograms"
unique_id: "dishwasher_dryingassistantallprograms"
icon: mdi:cog
entity_category: config
retain: true
command_topic: "homeconnect/dishwasher/set"
command_template: >
{% if value == "Off" %}
[{"uid":4381,"value":0}]
{% elif value == "AllPrograms" %}
[{"uid":4381,"value":1}]
{% elif value == "EcoAsDefault" %}
[{"uid":4381,"value":2}]
{% endif %}
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.DryingAssistantAllPrograms|default('unavailable') }}"
options:
- "Off"
- "AllPrograms"
- "EcoAsDefault"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "RinseAid"
unique_id: "dishwasher_rinseaid"
icon: mdi:cog
entity_category: config
retain: true
command_topic: "homeconnect/dishwasher/set"
command_template: >
{% if value == "Off" %}
[{"uid":4354,"value":0}]
{% elif value == "R01" %}
[{"uid":4354,"value":1}]
{% elif value == "R02" %}
[{"uid":4354,"value":2}]
{% elif value == "R03" %}
[{"uid":4354,"value":3}]
{% elif value == "R04" %}
[{"uid":4354,"value":4}]
{% elif value == "R05" %}
[{"uid":4354,"value":5}]
{% elif value == "R06" %}
[{"uid":4354,"value":6}]
{% endif %}
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.RinseAid|default('unavailable') }}"
options:
- "Off"
- "R01"
- "R02"
- "R03"
- "R04"
- "R05"
- "R06"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "SensitivityTurbidity"
unique_id: "dishwasher_sensitivityturbidity"
icon: mdi:cog
entity_category: config
retain: true
command_topic: "homeconnect/dishwasher/set"
command_template: >
{% if value == "Standard" %}
[{"uid":4355,"value":0}]
{% elif value == "Sensitive" %}
[{"uid":4355,"value":1}]
{% elif value == "VerySensitive" %}
[{"uid":4355,"value":2}]
{% endif %}
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.SensitivityTurbidity|default('unavailable') }}"
options:
- "Standard"
- "Sensitive"
- "VerySensitive"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "WaterHardness"
unique_id: "dishwasher_waterhardness"
icon: mdi:cog
entity_category: config
retain: true
command_topic: "homeconnect/dishwasher/set"
command_template: >
{% if value == "H00" %}
[{"uid":4367,"value":0}]
{% elif value == "H01" %}
[{"uid":4367,"value":1}]
{% elif value == "H02" %}
[{"uid":4367,"value":2}]
{% elif value == "H03" %}
[{"uid":4367,"value":3}]
{% elif value == "H04" %}
[{"uid":4367,"value":4}]
{% elif value == "H05" %}
[{"uid":4367,"value":5}]
{% elif value == "H06" %}
[{"uid":4367,"value":6}]
{% elif value == "H07" %}
[{"uid":4367,"value":7}]
{% endif %}
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.WaterHardness|default('unavailable') }}"
options:
- "H00"
- "H01"
- "H02"
- "H03"
- "H04"
- "H05"
- "H06"
- "H07"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
binary_sensor:
- name: "Dishwasher Door"
unique_id: "dishwasher_door"
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.DoorState }}"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
payload_on: "Open"
payload_off: "Closed"
device_class: door
device:
identifiers: "dishwasher_SERIAL"
- name: "Remote Control Start Allowed"
unique_id: "dishwasher_remote_control_start_allowed"
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.RemoteControlStartAllowed|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "RemoteControlActive"
unique_id: "dishwasher_remotecontrolactive"
icon: mdi:gauge-full
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.RemoteControlActive|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "PowerState"
unique_id: "dishwasher_powerstate"
icon: mdi:dishwasher
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.PowerState|default('unavailable') }}"
payload_on: "On"
payload_off: "Off"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "SpeedOnDemand"
unique_id: "dishwasher_speedondemand"
icon: mdi:gauge-full
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.SpeedOnDemand|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "SilenceOnDemand"
unique_id: "dishwasher_silenceondemand"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.SilenceOnDemand|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "EcoDryActive"
unique_id: "dishwasher_ecodryactive"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.EcoDryActive|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
sensor:
- name: "Active Program"
unique_id: "dishwasher_active_program"
icon: mdi:dishwasher
state_topic: "homeconnect/dishwasher/state"
value_template: >
{% set program = '{ "8195":"Auto2", "8196":"Eco50", "8197":"Glas40", "8192":"Intensiv70", "8213":"Kurz60", "8215":"MachineCare", "8202":"NightWash", "8200":"PreRinse", "8199":"Quick45"}'|from_json %}
{{ program[value_json.ActiveProgram|string]|default("None") }}
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "Selected Program"
unique_id: "dishwasher_selected_program"
icon: mdi:dishwasher
state_topic: "homeconnect/dishwasher/state"
value_template: >
{% set program = '{ "8195":"Auto2", "8196":"Eco50", "8197":"Glas40", "8192":"Intensiv70", "8213":"Kurz60", "8215":"MachineCare", "8202":"NightWash", "8200":"PreRinse", "8199":"Quick45"}'|from_json %}
{{ program[value_json.SelectedProgram|string]|default("None") }}
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "Program Phase"
unique_id: "dishwasher_program_phase"
icon: mdi:gauge-full
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.ProgramPhase|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "Operation State"
unique_id: "dishwasher_operation_state"
icon: mdi:gauge-full
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.OperationState|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "Program Progress"
unique_id: "dishwasher_program_progress"
icon: mdi:percent
unit_of_measurement: "%"
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.ProgramProgress|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "Remaining Program Time"
unique_id: "dishwasher_remainingprogramtime"
icon: mdi:progress-clock
unit_of_measurement: s
device_class: duration
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.RemainingProgramTime|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "Start In Relative"
unique_id: "dishwasher_start_in_relative"
icon: mdi:timer-play-outline
unit_of_measurement: s
device_class: duration
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.StartInRelative|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "SilenceOnDemandRemainingTime"
unique_id: "dishwasher_silenceondemandremainingtime"
icon: mdi:timer-play-outline
unit_of_measurement: s
device_class: duration
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.SilenceOnDemandRemainingTime|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "EnergyForecast"
unique_id: "dishwasher_energyforecast"
icon: mdi:percent
unit_of_measurement: "%"
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.EnergyForecast|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "WaterForecast"
unique_id: "dishwasher_waterforecast"
icon: mdi:percent
unit_of_measurement: "%"
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.WaterForecast|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
Model dependent options
switch:
- name: "HalfLoad"
unique_id: "dishwasher_halfload"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
state_off: false
state_on: true
payload_on: '[{"uid":5124,"value":true}]'
payload_off: '[{"uid":5124,"value":false}]'
command_topic: "homeconnect/dishwasher/set"
value_template: "{{ value_json.HalfLoad|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "ChildLock"
unique_id: "dishwasher_childlock"
icon: mdi:tune
state_topic: "homeconnect/dishwasher/state"
state_off: false
state_on: true
payload_on: '[{"uid":524,"value":true}]'
payload_off: '[{"uid":524,"value":false}]'
command_topic: "homeconnect/dishwasher/set"
value_template: "{{ value_json.ChildLock|default('unavailable') }}"
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "EcoDry"
unique_id: "dishwasher_ecodry"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.EcoDry|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
binary_sensor:
- name: "HalfLoad"
unique_id: "dishwasher_halfload"
icon: mdi:office-building-cog
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.HalfLoad|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
- name: "ChildLock"
unique_id: "dishwasher_childlock"
icon: mdi:tune
state_topic: "homeconnect/dishwasher/state"
value_template: "{{ value_json.ChildLock|default('unavailable') }}"
payload_on: true
payload_off: false
device:
identifiers: "dishwasher_SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/dishwasher/LWT"
availability_mode: all
sensor:
- unique_id: "coffee_machine"
name: "Coffee Machine"
state_topic: "homeconnect/coffeemaker/state"
value_template: "{{ value_json.PowerState }}"
json_attributes_topic: "homeconnect/coffeemaker/state"
json_attributes_template: "{{ value_json | tojson }}"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/coffeemaker/LWT"
availability_mode: all
Bosch Cookit MCC9555DWC
switch:
- name: "Power State"
unique_id: "cookprocessor_power_state_SERIAL"
icon: mdi:pot-mix
state_topic: "homeconnect/cookprocessor/state"
state_off: "Standby"
state_on: "On"
payload_on: '[{"uid":539,"value":2}]'
payload_off: '[{"uid":539,"value":3}]'
command_topic: "homeconnect/cookprocessor/set"
value_template: "{{ value_json.PowerState|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
name: "Bosch Cookit"
manufacturer: "BOSCH"
model: "MCC9555DWC/01"
serial_number: "SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
sensor:
- name: "Operation State"
unique_id: "cookprocessor_operation_state_SERIAL"
icon: mdi:gauge-full
state_topic: "homeconnect/cookprocessor/state"
value_template: "{{ value_json.OperationState|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Active Program"
unique_id: "cookprocessor_active_program_SERIAL"
icon: mdi:pot-mix
state_topic: "homeconnect/cookprocessor/state"
value_template: >
{% set program = '{ "40":"AutomaticProgram", "24":"GuidedProgram", "24577":"ManualProgram", "24578":"Turbo"}'|from_json %}
{{ program[value_json.ActiveProgram|string]|default("None") }}
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Selected Program"
unique_id: "cookprocessor_selected_program_SERIAL"
icon: mdi:pot-mix
state_topic: "homeconnect/cookprocessor/state"
value_template: >
{% set program = '{ "40":"AutomaticProgram", "24":"GuidedProgram", "24577":"ManualProgram", "24578":"Turbo"}'|from_json %}
{{ program[value_json.ActiveProgram|string]|default("None") }}
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Current Step Remaining Time"
unique_id: "cookprocessor_current_step_remaining_time_SERIAL"
icon: mdi:progress-clock
unit_of_measurement: s
device_class: duration
state_topic: "homeconnect/cookprocessor/state"
value_template: "{{ value_json.CurrentStepRemainingTime|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Current Step Progress"
unique_id: "cookprocessor_current_step_progress_SERIAL"
icon: mdi:percent
unit_of_measurement: "%"
state_topic: "homeconnect/cookprocessor/state"
value_template: "{{ value_json.CurrentStepProgress|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Total Number Of Steps"
unique_id: "cookprocessor_total_number_of_steps_SERIAL"
icon: mdi:playlist-edit
unit_of_measurement: "steps"
state_topic: "homeconnect/cookprocessor/state"
value_template: "{{ value_json.TotalNumberOfSteps|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Current Step Number"
unique_id: "cookprocessor_current_step_number_SERIAL"
icon: mdi:playlist-check
unit_of_measurement: "steps"
state_topic: "homeconnect/cookprocessor/state"
value_template: "{{ value_json.CurrentStepNumber|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Program Progress"
unique_id: "cookprocessor_program_progress_SERIAL"
icon: mdi:percent
unit_of_measurement: "%"
state_topic: "homeconnect/cookprocessor/state"
value_template: "{{ value_json.ProgramProgress|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
- name: "Heatup Progress"
unique_id: "cookprocessor_heatup_progress_SERIAL"
icon: mdi:thermometer
unit_of_measurement: "%"
state_topic: "homeconnect/cookprocessor/state"
value_template: "{{ value_json.HeatupProgress|default('unavailable') }}"
device:
identifiers: "BOSCH-MCC9555DWC-SERIAL"
availability:
- topic: "homeconnect/LWT"
- topic: "homeconnect/cookprocessor/LWT"
availability_mode: all
HCPY listens on the prefix/device_name/set
topic e.g. homeconnect/coffeemaker/set
to apply state changes.
In the devices.json file you can find items that contain readWrite
or writeOnly
, some of them contain values so you know what to provide:
"539": {
"name": "BSH.Common.Setting.PowerState",
"access": "readWrite",
"available": "true",
"refCID": "03",
"refDID": "80",
"values": {
"2": "On",
"3": "Standby"
}
},
To change the PowerState
we need to send a UID
of 539
with a value
of 2
to turn on the device:
{"uid":539,"value":2}
Within HomeAssistant this can be performed with the following Action in a script or automation:
service: mqtt.publish
metadata: {}
data:
topic: homeconnect/coffeemaker/set
payload: '[{"uid":539,"value":2}]'
Multiple values can be set in the array to configure multiple items at the same time.
Devices that run programs will listen on prefix/device_name/activeProgram
.
The Eco
program on a Dishwasher is id 8196
, and the StartInRelative
option is 558
- this allows us to create a delayed start in 600 seconds in the following example script:
alias: Start Dishwasher Eco Program
sequence:
- service: mqtt.publish
metadata: {}
data:
topic: homeconnect/dishwasher/activeProgram
payload: '[{"program":8196,"options":[{"uid":558,"value":600}]}]'
mode: single
icon: mdi:dishwasher
The options
array is optional, programs can be triggered with no additional options.
alias: AbortProgram
sequence:
- service: mqtt.publish
metadata: {}
data:
topic: homeconnect/dishwasher/set
payload: '[{"uid": 512,"value": true}]'
mode: single
icon: mdi:dishwasher
Devices that run programs may also listen on prefix/device_name/selectedProgram
. This allows a program to be selected but not started, and requires a second call to start the program, or a manual start on the device itself.
alias: Select Dishwasher Eco Program
sequence:
- service: mqtt.publish
metadata: {}
data:
topic: homeconnect/dishwasher/selectedProgram
payload: '[{"program":8196}]'
mode: single
icon: mdi:dishwasher
The options
array is optional, programs can be triggered with no additional options.