Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Additional HomeAssistant Examples and Testing #45

Open
1 of 11 tasks
Meatballs1 opened this issue Mar 30, 2024 · 26 comments
Open
1 of 11 tasks

Additional HomeAssistant Examples and Testing #45

Meatballs1 opened this issue Mar 30, 2024 · 26 comments

Comments

@Meatballs1
Copy link
Collaborator

Meatballs1 commented Mar 30, 2024

I have Fridge, Freezer, Hood, and Dishwasher.

Could use example MQTT configurations and testing of:

  • Coffee Machine

  • Cook Processor

  • Cooktop

  • Oven

  • Warming Drawer

  • Cleaning Robot

  • Dryer

  • Washer

  • Washer Dryer

  • Fridge Freezer

  • WineCooler

@noxhirsch
Copy link

noxhirsch commented Apr 21, 2024

This is the configuration for my Dishwasher and CookProcessor. Since not all information is always available, I have defined a default in value_template. |default('unavailable') works well for sensors, as they are then really displayed as unavailable. With switch & binary_sensor this unfortunately doesn't work so well - but I don't have a better solution at the moment.
Depending on issues #57 & #58 the configuration might change a bit.

Bosch Cookit MCC9555DWC (CookProcessor)
switch:
- name: "PowerState"
  unique_id: "cookprocessor_powerstate_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: latest


sensor:
- name: "OperationState"
  unique_id: "cookprocessor_operationstate_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: latest

- name: "ActiveProgram"
  unique_id: "cookprocessor_activeprogram_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: latest

- name: "SelectedProgram"
  unique_id: "cookprocessor_selectedprogram_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: latest

- name: "CurrentStepRemainingTime"
  unique_id: "cookprocessor_currentstepremainingtime_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: latest

- name: "CurrentStepProgress"
  unique_id: "cookprocessor_currentstepprogress_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: latest

- name: "TotalNumberOfSteps"
  unique_id: "cookprocessor_totalnumberofsteps_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: latest

- name: "CurrentStepNumber"
  unique_id: "cookprocessor_currentstepnumber_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: latest

- name: "ProgramProgress"
  unique_id: "cookprocessor_programprogress_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: latest

- name: "HeatupProgress"
  unique_id: "cookprocessor_heatupprogress_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: latest
Bosch Dishwasher SMV88UX36E
switch:
- name: "PowerState"
  unique_id: "dishwasher_powerstate_SERIAL"
  icon: mdi:dishwasher
  state_topic: "homeconnect/dishwasher/state"
  state_off: "Off"
  state_on: "On"
  payload_on: '[{"uid":539,"value":2}]'
  payload_off: '[{"uid":539,"value":1}]'
  command_topic: "homeconnect/dishwasher/set"
  value_template: "{{ value_json.PowerState|default('unavailable') }}"
  device:
    identifiers: "BOSCH-SMV88UX36E-SERIAL"
    name: "Bosch Dishwasher"
    manufacturer: "BOSCH"
    model: "SMV88UX36E/74"
    serial_number: "SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest


binary_sensor:
- name: "Door"
  unique_id: "dishwasher_door_SERIAL"
  state_topic: "homeconnect/dishwasher/state"
  value_template: "{{ value_json.DoorState|default('unavailable') }}"
  payload_on: "Open"
  payload_off: "Closed"
  device_class: door
  device:
    identifiers: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

- name: "RemoteControlStartAllowed"
  unique_id: "dishwasher_remotecontrolstartallowed_SERIAL"
  state_topic: "homeconnect/dishwasher/state"
  value_template: "{{ value_json.RemoteControlStartAllowed|default('unavailable') }}"
  payload_on: true
  payload_off: false
  device:
    identifiers: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest


sensor:
- name: "ActiveProgram"
  unique_id: "dishwasher_activeprogram_SERIAL"
  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: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

- name: "SelectedProgram"
  unique_id: "dishwasher_selectedprogram_SERIAL"
  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: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

- name: "ProgramPhase"
  unique_id: "dishwasher_programphase_SERIAL"
  icon: mdi:gauge-full
  state_topic: "homeconnect/dishwasher/state"
  value_template: "{{ value_json.ProgramPhase|default('unavailable') }}"
  device:
    identifiers: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

- name: "OperationState"
  unique_id: "dishwasher_operationstate_SERIAL"
  icon: mdi:gauge-full
  state_topic: "homeconnect/dishwasher/state"
  value_template: "{{ value_json.OperationState|default('unavailable') }}"
  device:
    identifiers: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

- name: "ProgramProgress"
  unique_id: "dishwasher_programprogress_SERIAL"
  icon: mdi:percent
  unit_of_measurement: "%"
  state_topic: "homeconnect/dishwasher/state"
  value_template: "{{ value_json.ProgramProgress|default('unavailable') }}"
  device:
    identifiers: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

- name: "RemainingProgramTime"
  unique_id: "dishwasher_remainingprogramtime_SERIAL"
  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: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

- name: "StartInRelative"
  unique_id: "dishwasher_startinrelative_SERIAL"
  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: "BOSCH-SMV88UX36E-SERIAL"
  availability:
    - topic: "homeconnect/LWT"
    - topic: "homeconnect/dishwasher/LWT"
  availability_mode: latest

@Meatballs1
Copy link
Collaborator Author

I've added cook processor to wiki and merged in the dishwasher settings as they work for mine and I think they are pretty generic.

@Dis90
Copy link
Contributor

Dis90 commented Apr 24, 2024

This is my current setup. All sensors, switches, settings etc. are named same as in devices.json so they can be differently named than in official app.

Bosch Dishwasher SMU4ECI15S

switch:
  - name: "PowerState"
    unique_id: "dishwasher_powerstate_SERIAL"
    icon: mdi:dishwasher
    state_topic: "homeconnect/dishwasher/state"
    state_off: "Off"
    state_on: "On"
    payload_on: '[{"uid":539,"value":2}]'
    payload_off: '[{"uid":539,"value":1}]'
    command_topic: "homeconnect/dishwasher/set"
    value_template: "{{ value_json.PowerState|default('unavailable') }}"
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
      name: "Bosch Dishwasher"
      manufacturer: "BOSCH"
      model: "SMU4ECI15S"
      serial_number: "SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "EcoDry"
    unique_id: "dishwasher_ecodry_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "ChildLock"
    unique_id: "dishwasher_childlock_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "HalfLoad"
    unique_id: "dishwasher_halfload_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "SilenceOnDemand"
    unique_id: "dishwasher_silenceondemand_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "VarioSpeedPlus"
    unique_id: "dishwasher_variospeedplus_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "ExtraDry"
    unique_id: "dishwasher_extradry_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

button:
  - name: "Stop"
    unique_id: "dishwasher_stop_SERIAL"
    icon: mdi:stop
    command_topic: "homeconnect/dishwasher/set"
    command_template: '[{"uid": 512,"value": true}]'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/dishwasher/state"
        value_template: "{{ 'offline' if value_json.OperationState == 'Ready' else 'online' }}"  

number:
  - name: "SilenceOnDemandDefaultTime"
    unique_id: "dishwasher_silenceondemanddefaulttime_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

select:
  - name: "EcoAsDefault"
    unique_id: "dishwasher_ecoasdefault_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "DryingAssistantAllPrograms"
    unique_id: "dishwasher_dryingassistantallprograms_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "RinseAid"
    unique_id: "dishwasher_rinseaid_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "SensitivityTurbidity"
    unique_id: "dishwasher_sensitivityturbidity_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "WaterHardness"
    unique_id: "dishwasher_waterhardness_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
    
binary_sensor:
  - name: "Door"
    unique_id: "dishwasher_door_SERIAL"
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.DoorState|default('unavailable') }}"
    payload_on: "Open"
    payload_off: "Closed"
    device_class: door
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "RemoteControlStartAllowed"
    unique_id: "dishwasher_remotecontrolstartallowed_SERIAL"
    icon: mdi:gauge-full
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.RemoteControlStartAllowed|default('unavailable') }}"
    payload_on: true
    payload_off: false
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "RemoteControlActive"
    unique_id: "dishwasher_remotecontrolactive_SERIAL"
    icon: mdi:gauge-full
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.RemoteControlActive|default('unavailable') }}"
    payload_on: true
    payload_off: false
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "ChildLock"
    unique_id: "dishwasher_childlock_SERIAL"
    icon: mdi:tune
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.ChildLock|default('unavailable') }}"
    payload_on: true
    payload_off: false
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "EcoDry"
    unique_id: "dishwasher_ecodry_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "EcoDryActive"
    unique_id: "dishwasher_ecodryactive_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "HalfLoad"
    unique_id: "dishwasher_halfload_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "PowerState"
    unique_id: "dishwasher_powerstate_SERIAL"
    icon: mdi:dishwasher
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.PowerState|default('unavailable') }}"
    payload_on: "On"
    payload_off: "Off"
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "SpeedOnDemand"
    unique_id: "dishwasher_speedondemand_SERIAL"
    icon: mdi:gauge-full
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.SpeedOnDemand|default('unavailable') }}"
    payload_on: true
    payload_off: false
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "SilenceOnDemand"
    unique_id: "dishwasher_silenceondemand_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

sensor:
  - name: "ActiveProgram"
    unique_id: "dishwasher_activeprogram_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "SelectedProgram"
    unique_id: "dishwasher_selectedprogram_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "ProgramPhase"
    unique_id: "dishwasher_programphase_SERIAL"
    icon: mdi:gauge-full
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.ProgramPhase|default('unavailable') }}"
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "OperationState"
    unique_id: "dishwasher_operationstate_SERIAL"
    icon: mdi:gauge-full
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.OperationState|default('unavailable') }}"
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "ProgramProgress"
    unique_id: "dishwasher_programprogress_SERIAL"
    icon: mdi:percent
    unit_of_measurement: "%"
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.ProgramProgress|default('unavailable') }}"
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "RemainingProgramTime"
    unique_id: "dishwasher_remainingprogramtime_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "StartInRelative"
    unique_id: "dishwasher_startinrelative_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "SilenceOnDemandRemainingTime"
    unique_id: "dishwasher_silenceondemandremainingtime_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest
  
  - name: "EnergyForecast"
    unique_id: "dishwasher_energyforecast_SERIAL"
    icon: mdi:percent
    unit_of_measurement: "%"
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.EnergyForecast|default('unavailable') }}"
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest  
  
  - name: "WaterForecast"
    unique_id: "dishwasher_waterforecast_SERIAL"
    icon: mdi:percent
    unit_of_measurement: "%"
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.WaterForecast|default('unavailable') }}"
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest    

@Meatballs1
Copy link
Collaborator Author

I've added your options into the wiki. @Dis90 thanks :D

@Dis90
Copy link
Contributor

Dis90 commented May 6, 2024

Here's updated SilenceOnDemand switch. It's now only available when dishwasher is running.

  - name: "SilenceOnDemand"
    unique_id: "dishwasher_silenceondemand_SERIAL"
    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: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/dishwasher/state"
        value_template: "{{ 'online' if value_json.OperationState == 'Run' else 'offline' }}"  

And here's binary sensors for diagnostics

Details

  - name: "InternalError"
    unique_id: "dishwasher_internalerror_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.InternalError|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "AquaStopOccured"
    unique_id: "dishwasher_aquastopoccured_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.AquaStopOccured|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "LowWaterPressure"
    unique_id: "dishwasher_lowwaterpressure_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.LowWaterPressure|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "CheckFilterSystem"
    unique_id: "dishwasher_checkfiltersystem_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.CheckFilterSystem|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "DrainingNotPossible"
    unique_id: "dishwasher_drainingnotpossible_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.DrainingNotPossible|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "DrainPumpBlocked"
    unique_id: "dishwasher_drainpumpblocked_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.DrainPumpBlocked|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "WaterheaterCalcified"
    unique_id: "dishwasher_waterheatercalcified_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.WaterheaterCalcified|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "LowVoltage"
    unique_id: "dishwasher_lowvoltage_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.LowVoltage|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "SaltLack"
    unique_id: "dishwasher_saltlack_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.SaltLack|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "RinseAidLack"
    unique_id: "dishwasher_rinseaidlack_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.RinseAidLack|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "SaltNearlyEmpty"
    unique_id: "dishwasher_saltnearlyempty_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.SaltNearlyEmpty|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "RinseAidNearlyEmpty"
    unique_id: "dishwasher_rinseaidnearlyempty_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.RinseAidNearlyEmpty|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "MachineCareReminder"
    unique_id: "dishwasher_machinecarereminder_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.MachineCareReminder|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

  - name: "MachineCareAndFilterCleaningReminder"
    unique_id: "dishwasher_machinecareandfiltercleaningreminder_SERIAL"
    entity_category: "diagnostic"
    device_class: "problem"
    icon: mdi:check-circle
    state_topic: "homeconnect/dishwasher/state"
    value_template: "{{ value_json.MachineCareAndFilterCleaningReminder|default('unavailable') }}"
    payload_on: 'Present'
    payload_off: 'Off'
    device:
      identifiers: "BOSCH-SMU4ECI15S-SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/dishwasher/LWT"
    availability_mode: latest

@Nailik
Copy link

Nailik commented May 13, 2024

I am currently working on my oven and got some issue.

I try to toggle the led light and there are some things in the json:

"6111": {
   "name": "Cooking.Oven.Setting.Light.Cavity.001.CavitySelector"
},
"6112": {
   "name": "Cooking.Oven.Setting.Light.Cavity.001.Power"
},
"6110": {
   "name": "Cooking.Oven.SettingList.Light.Cavity.001",
   "access": "readWrite",
   "available": "true"
},
"532": {
   "name": "BSH.Common.Status.InteriorIlluminationActive",
   "access": "read",
   "available": "true",
   "refCID": "01",
   "refDID": "00"
},
 "4432": {
   "name": "Cooking.Oven.Setting.CavityIllumination",
   "access": "readWrite",
   "available": "true",
   "refCID": "03",
   "refDID": "80",
   "values": {
      "0": "On",
       "1": "RestrictedOn",
      "2": "Off"
   }
},

What i found out so far:

When toggling in the official app InteriorIlluminationActive is the state of the light.

CavityIllumination: Off does disable the Light button in the App, On or RestrictedOn make it visible but don't actually turn the light on ??

.Light.Cavity.001 is readwrite but i don't know what and how to write to this endpoint?

@Meatballs1
Copy link
Collaborator Author

Hmm, I dont think we've come across any SettingList options before, I've only got BSH.Common.Root.SettingList which doesn't give much to compare with as it has no additional attributes. I suspect it isn't the right setting to control the light.

I have a common cooking lighting option (on my hood), which you might want to check for?

            "53253": {
                "name": "Cooking.Common.Setting.Lighting",
                "access": "readWrite",
                "available": "true",
                "refCID": "01",
                "refDID": "00"
            },

If not the properties for Cooking.Oven.Setting.Light.Cavity.001.Power may be changed by status updates from the
If you grep your log file for Access you may seem some log entries:

e.g.

app_1  | 2024-05-06 19:38:27.007625 dishwasher Access change for 4384 to READWRITE

If you can paste up full devices.json settings for the oven there might be another clue?

@Nailik
Copy link

Nailik commented May 13, 2024

This is the complete file
device.json

I see "Power": false, changing to "Power": true, in the state json via mqtt when toggling the light

@Meatballs1
Copy link
Collaborator Author

Can you post full snippet? Probably need to add a debug option to get more data for new things :D

To experiment you probably want to comment out line 265 in HCDevice.py: https://github.com/hcpy2-0/hcpy/blob/1935feb02ae5157d0a765347441800ac615597de/HCDevice.py#L265C26-L265C38 so it doesn't attempt to check any of the data we are sending over. This should allow you to send over whatever JSON data you want in the message.

First I would just try the some simple options like:

[{"uid":6112","value":true}]

or

[{"uid":6110,"value":true}]

If those dont work as its a setting list I wonder if it wants an array of values rather than a single value. e.g.
Send Cooking.Oven.Setting.Light.Cavity.001.Power = on to Cooking.Oven.SettingList.Light.Cavity.001:

[{"6110":539,"values":[{"uid":"6112":"value":true]}

However thats just a shot in the dark unless we intercept some of the real comms

@Nailik
Copy link

Nailik commented May 13, 2024

I tried:

[{"uid":6110,"value":true}]
[{"uid":6112,"value":true}]
[{"uid":6110,"value":[{"uid":6112,"value":true}]}]

I created a fork to comment out the mentioned line because i use the home assistant addon.

State Json
{
  "error": 400,
  "resource": "/ro/values",
  "deviceID": "Redacted",
  "eNumber": "HMG778NB1/D3",
  "brand": "BOSCH",
  "vib": "HMG778NB1",
  "mac": "Redacted",
  "haVersion": "4.0",
  "swVersion": "3.5.18.20230705135216",
  "hwVersion": "4.2.0.6",
  "deviceType": "Oven",
  "deviceInfo": "",
  "customerIndex": "D3",
  "serialNumber": "Redacted",
  "fdString": "0311",
  "shipSki": "Redacted",
  "interfaceID": 0,
  "type": "WiFi",
  "ssid": "Gustav",
  "rssi": -61,
  "primary": true,
  "status": "CONNECTED",
  "configured": true,
  "euiAddress": "Redacted",
  "ipV4": {
    "ipAddress": "192.168.178.24",
    "prefixSize": 24,
    "gateway": "192.168.178.1",
    "dnsServer": "192.168.178.37"
  },
  "ipV6": {
    "ipAddress": "fd00::cad7:78ff:fe97:cca1",
    "prefixSize": 64,
    "gateway": "",
    "dnsServer": ""
  },
  "AutoCounting": false,
  "BackendConnected": false,
  "RemoteControlLevel": "PermanentRemoteStart",
  "SoftwareUpdateAvailable": "Off",
  "Timezone": {
    "tz": "CET-1CEST,M3.5.0/2,M10.5.0/3",
    "tzName": "Europe/Berlin"
  },
  "RemainingProgramTimeEstimationState": 0,
  "ConfirmPermanentRemoteStart": "Off",
  "ActiveProgram": 0,
  "SelectedProgram": 0,
  "RemoteControlStartAllowed": true,
  "ApplianceDateTime": "2024-05-13T13:07:23",
  "RemoteControlActive": true,
  "ChildLock": false,
  "DoorState": 1,
  "InteriorIlluminationActive": false,
  "Language": "De",
  "LocalControlActive": false,
  "PowerState": "Standby",
  "SynchronizeWithTimeServer": true,
  "Duration": 60,
  "OperationState": 0,
  "StartInRelative": 0,
  "SoftwareUpdateTransactionID": 0,
  "SoftwareDownloadAvailable": "Off",
  "SoftwareUpdateSuccessful": "Off",
  "NetworkInterface": "WiFi",
  "ErrorCodesList": {
    "length": 0,
    "list": []
  },
  "EstimatedTimeRequired": false,
  "LastRemoteStartRelease": "00:00:00",
  "ButtonTones": true,
  "ClockDisplay": "DigitalClock",
  "CoolingFanRunOnTime": "Middle",
  "DisplayBrandLogo": false,
  "DisplayBrightness": 4,
  "SignalDuration": "Medium",
  "SoundVolume": 2,
  "CountUpTimer": "FromStart",
  "Dishes": "All",
  "MicrowaveDrying": true,
  "MicrowaveBakingTrayHint": "Off",
  "ConfigureChildLock": "ActivatedWithDoorlock",
  "FastPreHeat": false,
  "ClockPrompt": "On",
  "MicrowaveDefaultPower": "Max",
  "RegionalDishes": "All",
  "OperationAfterRestart": "MainMenue",
  "ContinueWhenDoorShut": false,
  "CavityIllumination": "On",
  "MeatProbeTemperatureV2": 0,
  "CurrentTemperature": 24,
  "MeatprobePlugged": false,
  "Power": false,
  "FastPreheatFinished": "Off",
  "OvenLockWhileCoolingDown": "Off",
  "SubsequentCookingRequest": "Off",
  "CavityTemperatureTooHigh": "Off",
  "OperatingTimeLimitReached": "Off",
  "ProgramFinished": "Off",
  "ProgramAborted": "Off",
  "RegularPreheatFinished": "Off",
  "AlarmClockElapsed": "Off",
  "MeatprobeIncompatibleOperation": "Off",
  "AlarmClock": 0,
  "Startable": true,
  "Selectable": true,
  "MeatprobeTemperatureReached": "Off",
  "MaxMeatprobeTemperatureExceeded": "Off",
  "MeatprobeNecessary": "Off",
  "UnplugMeatprobe": "Off",
  "BakingTrayHintDeactivated": "Off",
  "StirLater": "Off",
  "StirNow": "Off",
  "TurnNowRemoveDefrostedParts": "Off",
  "TurnJointNow": "Off",
  "TurnFoodNow": "Off",
  "TurnFoodNowMeatprobe": "Off",
  "TurnFoodLater": "Off",
  "InsertFoodNow": "Off",
  "InsertFoodLater": "Off",
  "LeaveDoorOpen": "Off",
  "PrepareDrying": "Off",
  "WipeOutCavityEasyClean": "Off",
  "EstimationTimedOut": "Off",
  "OpenDoor": "Off",
  "IsNotShownAgain": "Off",
  "ErrorCodeE0502": "Off",
  "ClockPermanentOn": "Off",
  "OpenDoorInfrequently": "Off",
  "CloseDoor": "Off",
  "EasyClean": "Off",
  "CavityTemperatureTooHighInfo": "Off",
  "SortOrder": {
    "length": 0,
    "list": []
  },
  "Functionality": "Off",
  "Name": "",
  "Program": {
    "length": 0,
    "list": []
  }
}

@Meatballs1
Copy link
Collaborator Author

Did you try values plural for the last option? Its a complete guess would make more sense to me that a Setting takes a single value and a SettingList takes values.

There is a debug = False line in HCDevice.py which may show more details when status updates are received. There may be some clues in any messages the Oven sends if you toggle the light on/off via the app. I've made a version which sets debug via the config file/command line etc #70

@Nailik
Copy link

Nailik commented May 13, 2024

ah looks like i first have to build the docker container to be able to use it with home assistant and local i get click_config_file not found

@Meatballs1
Copy link
Collaborator Author

@Nailik the debug setting should be in the latest Addon version now so should be an easy update I believe.

@Nailik
Copy link

Nailik commented May 14, 2024

I tested again (debug helped) and

payload_on: '[{"uid":6112,"value":true}]'
payload_off: '[{"uid":6112,"value":false}]'

is working - i think last time i had CavityIllumination (4432) set to Off and it needs to be On or RestrictedON.

Now i understand better how it works and will post a config file with most/all functionality in a couple of days.

@SkyTest-123
Copy link

not working with Oven - HBG7341W1, logs:
oven set topic: homeconnect/oven/set
oven program topic: homeconnect/oven/activeProgram
oven connecting to Oven.local
oven ERROR [Errno 110] Connection timed out

@Meatballs1
Copy link
Collaborator Author

Using HA Addon? The latest version lets you specify the domain suffix which should get you around connection errors. Or alternatively you can manually modify the devices.json to include full hostname/IP.

@SkyTest-123
Copy link

Using HA Addon? The latest version lets you specify the domain suffix which should get you around connection errors. Or alternatively you can manually modify the devices.json to include full hostname/IP.

Using HA Addon and direct IPs. dishwasher work fine, oven - nope...

2024-05-17 16:46:57.878766 MQTT connection established: 0
2024-05-17 16:46:57.878862 oven set topic: homeconnect/oven/set
2024-05-17 16:46:57.878917 oven program topic: homeconnect/oven/activeProgram
2024-05-17 16:46:57.879011 dishwasher set topic: homeconnect/dishwasher/set
2024-05-17 16:46:57.879053 dishwasher program topic: homeconnect/dishwasher/activeProgram
2024-05-17 16:46:57.961040 homeconnect/dishwasher/set received mqtt message [{"uid":4354,"value":4}]
2024-05-17 16:47:00.882173 dishwasher connecting to 192.168.0.27
2024-05-17 16:47:00.882749 oven connecting to 192.168.0.26
2024-05-17 16:47:01.118399 CON: wss://192.168.0.27:443/homeconnect
...
oven ERROR [Errno 110] Connection timed out

Perhaps the problem is that the latest Bosch device models do not support "Local network only" mode and always work through the cloud (no checkbox "Connection to the server" in "Home Connect" application) ?

@Nailik
Copy link

Nailik commented May 17, 2024

@SkyTest-123 the "Local network only" checkbox is not needed.
Just restrict your device (the oven) from using internet and test it (via your router).

For me even after restricting internet access i can still use the bosch app as it uses the local network.

Did you check for any firmware update on your oven?

@SkyTest-123
Copy link

@SkyTest-123 the "Local network only" checkbox is not needed. Just restrict your device (the oven) from using internet and test it (via your router).

For me even after restricting internet access i can still use the bosch app as it uses the local network.

Did you check for any firmware update on your oven?

I tried turning off internet to oven IP on the router, it doesn’t work. dishwasher work with and without internet.
Oven firmware - last

@Nailik
Copy link

Nailik commented May 17, 2024

Hmm .. which oven do you have? what's the Software version? (you can find it in the official app)

Did you activate full remote control? By default it's only set to Manual Remote Control (you have to start it manual on the oven everytime), there is also permanent remote control (you have to only accept it once on the oven)

Did you fix the Ip-Adress in the router?

@SkyTest-123
Copy link

Hmm .. which oven do you have? what's the Software version? (you can find it in the official app)

Did you activate full remote control? By default it's only set to Manual Remote Control (you have to start it manual on the oven everytime), there is also permanent remote control (you have to only accept it once on the oven)

Did you fix the Ip-Adress in the router?

Oven Bosch HBG7341W1/01
Software version 6.0-3.5.19.2 (last update 3 days ago)
Full remote control
Static ip in router

@Nailik
Copy link

Nailik commented May 17, 2024

Okay so i was on Software Version 4.0 ... and updated to 6.0 now.
Offline control via the App still works and also via hcpy - so i think something in your setup is wrong.
Maybe it helps if you turn on "debug" in hcpy and check / show the logs.

@Meatballs1
Copy link
Collaborator Author

Might be useful to do some packet captures from your router. Could be that model is doing something different, maybe using a different port or something?

If you can capture the connection from mobile and the attempted connection from HCPY that would be a good starting point.

@SkyTest-123
Copy link

Might be useful to do some packet captures from your router. Could be that model is doing something different, maybe using a different port or something?

If you can capture the connection from mobile and the attempted connection from HCPY that would be a good starting point.

device using port 443

@Dis90
Copy link
Contributor

Dis90 commented Jul 21, 2024

Button for starting dishwasher with currently selected program

  - button:
      - name: "Start"
        unique_id: "dishwasher_start_SERIAL"
        icon: mdi:play
        command_topic: "homeconnect/dishwasher/activeProgram"
        command_template: >-
            {% set program = '{ "Auto2":"8195", "Eco50":"8196", "Glas40":"8197", "Intensiv70":"8192", "Kurz60":"8213", "MachineCare":"8215", "NightWash":"8202", "PreRinse":"8200", "Quick45":"8199", "Quick65":"8203"}'|from_json %}
            [{"program":{{ program[states('sensor.bosch_dishwasher_selectedprogram')]|default("8195") }}}]
        device:
          identifiers: "BOSCH-SMU4ECI15S-SERIAL"
        availability:
          - topic: "homeconnect/dishwasher/state"
            value_template: "{{ 'online' if value_json.OperationState == 'Ready' and value_json.PowerState == 'On' else 'offline' }}"  

Select for programs (change programs to what your machine supports)

  - select:
      - name: "Programs"
        unique_id: "dishwasher_programs_SERIAL"
        icon: mdi:dishwasher
        retain: true
        command_topic: "homeconnect/dishwasher/selectedProgram"
        command_template: >
          {% if value == "Auto2" %} 
            [{"program":8195}]
          {% elif value == "Eco50" %} 
            [{"program":8196}]
          {% elif value == "Intensiv70" %} 
            [{"program":8192}]
          {% elif value == "MachineCare" %} 
            [{"program":8215}]
          {% elif value == "NightWash" %} 
            [{"program":8202}]
          {% elif value == "PreRinse" %} 
            [{"program":8200}]
          {% elif value == "Quick65" %} 
            [{"program":8203}]
          {% endif %}
        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", "8203":"Quick65"}'|from_json %}
          {{ program[value_json.SelectedProgram|string]|default("None") }}
        options:
          - "Auto2"
          - "Eco50"
          - "Intensiv70"
          - "MachineCare"
          - "NightWash"
          - "PreRinse"
          - "Quick65"
        device:
          identifiers: "BOSCH-SMU4ECI15S-SERIAL"
        availability:
          - topic: "homeconnect/dishwasher/state"
            value_template: "{{ 'online' if value_json.OperationState == 'Ready' else 'offline' }}"

This program wasn't previously listed 8203 Quick65.

There was typo in stop button unique id

  - name: "Stop"
    unique_id: "dishwasher_extradry"

Can you change it to wiki dishwasher_stop?

@SkyTest-123
Copy link

Oven Bosch HBG7341W1 tested. Work fine.

mqtt config (russian translate):

Details

switch:
  - name: "PowerState"
    unique_id: "oven_power_state_SERIAL"
    icon: mdi:stove
    state_topic: "homeconnect/oven/state"
    state_off: "Standby"
    state_on: "On"
    payload_on: '[{"uid":539,"value":2}]'
    payload_off: '[{"uid":539,"value":3}]'
    command_topic: "homeconnect/oven/set"
    value_template: "{{ value_json.PowerState|default('unavailable') }}"
    device:
      identifiers: "oven_SERIAL"
      name: "Bosch Oven"
      manufacturer: "BOSCH"
      model: "HBG7341W1"
      serial_number: "SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

binary_sensor:
  - name: "PowerStateSensor"
    unique_id: "oven_powerstate_SERIAL"
    icon: mdi:stove
    state_topic: "homeconnect/oven/state"
    value_template: "{{ value_json.PowerState|default('unavailable') }}"
    payload_on: "On"
    payload_off: "Standby"
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

  - name: "Door"
    unique_id: "oven_door_SERIAL"
    state_topic: "homeconnect/oven/state"
    value_template: "{{ value_json.DoorState|default('unavailable') }}"
    payload_on: "0"
    payload_off: "1"
    device_class: door
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

  - name: "InteriorIllumination"
    unique_id: "oven_interiorillumination_SERIAL"
    state_topic: "homeconnect/oven/state"
    value_template: "{{ value_json.InteriorIlluminationActive|default('unavailable') }}"
    icon: mdi:lightbulb-on
    payload_on: true
    payload_off: false
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

button:
  - name: "Start"
    unique_id: "oven_start_SERIAL"
    icon: mdi:play
    command_topic: "homeconnect/oven/activeProgram"
    command_template: >-
      {% set selectedprogram = states('sensor.bosch_oven_selectedprogram') %}
      {% if selectedprogram == "AirFry" %} 
        [{"program":8277}]
      {% elif selectedprogram == "Нижний жар" %}
        [{"program":8227}]
      {% elif selectedprogram == "Размораживание" %}
        [{"program":8233}]
      {% elif selectedprogram == "Большой гриль" %}
        [{"program":8224}]
      {% elif selectedprogram == "Малый гриль" %}
        [{"program":8225}]
      {% elif selectedprogram == "Горячий воздух 3D" %}
        [{"program":8208}]
      {% elif selectedprogram == "Щадящий горячий воздух" %}
        [{"program":8218}]
      {% elif selectedprogram == "Гриль с конвекцией" %}
        [{"program":8212}]
      {% elif selectedprogram == "Поддержание в горячем состоянии" %}
        [{"program":8229}]
      {% elif selectedprogram == "Let Rest" %}
        [{"program":8263}]
      {% elif selectedprogram == "Режим пиццы" %}
        [{"program":8213}]
      {% elif selectedprogram == "Предварительный нагрев" %}
        [{"program":8215}]
      {% elif selectedprogram == "Подогрев посуды" %}
        [{"program":8230}]
      {% elif selectedprogram == "Медленное приготовление" %}
        [{"program":8226}]
      {% elif selectedprogram == "Верхний/нижний жар" %}
        [{"program":8209}]
      {% elif selectedprogram == "Щадящее приготовление" %}
        [{"program":8211}]
      {% endif %}
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/oven/state"
        value_template: "{{ 'online' if value_json.OperationState == 'Ready' and value_json.PowerState == 'On' else 'offline' }}"  

  - name: "Stop"
    unique_id: "oven_stop_SERIAL"
    icon: mdi:stop
    command_topic: "homeconnect/oven/set"
    command_template: '[{"uid": 512,"value": true}]'
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/oven/state"
        value_template: "{{ 'offline' if value_json.OperationState == 'Ready' or value_json.PowerState == 'Standby' else 'online' }}"

select:
  - name: "Programs"
    unique_id: "oven_programs_SERIAL"
    icon: mdi:stove
    retain: true
    command_topic: "homeconnect/oven/selectedProgram"
    command_template: >
      {% if value == "AirFry" %} 
        [{"program":8277}]
      {% elif value == "Нижний жар" %}
        [{"program":8227}]
      {% elif value == "Размораживание" %}
        [{"program":8233}]
      {% elif value == "Большой гриль" %}
        [{"program":8224}]
      {% elif value == "Малый гриль" %}
        [{"program":8225}]
      {% elif value == "Горячий воздух 3D" %}
        [{"program":8208}]
      {% elif value == "Щадящий горячий воздух" %}
        [{"program":8218}]
      {% elif value == "Гриль с конвекцией" %}
        [{"program":8212}]
      {% elif value == "Поддержание в горячем состоянии" %}
        [{"program":8229}]
      {% elif value == "Let Rest" %}
        [{"program":8263}]
      {% elif value == "Режим пиццы" %}
        [{"program":8213}]
      {% elif value == "Предварительный нагрев" %}
        [{"program":8215}]
      {% elif value == "Подогрев посуды" %}
        [{"program":8230}]
      {% elif value == "Медленное приготовление" %}
        [{"program":8226}]
      {% elif value == "Верхний/нижний жар" %}
        [{"program":8209}]
      {% elif value == "Щадящее приготовление" %}
        [{"program":8211}]
      {% endif %}
    state_topic: "homeconnect/oven/state"
    value_template: >
      {% set program = '{ "8277": "AirFry", "8227": "Нижний жар", "8233": "Размораживание", "8224": "Большой гриль", "8225": "Малый гриль", "8208": "Горячий воздух 3D", "8218": "Щадящий горячий воздух", "8212":"Гриль с конвекцией", "8229": "Поддержание в горячем состоянии", "8263": "Let Rest", "8213": "Режим пиццы", "8215": "Предварительный нагрев", "8230": "Подогрев посуды", "8226": "Медленное приготовление", "8209": "Верхний/нижний жар", "8211":"Щадящее приготовление"}'|from_json %}
      {{ program[value_json.SelectedProgram|string]|default("None") }} 
    options:
      - "AirFry"
      - "Нижний жар"
      - "Размораживание"
      - "Большой гриль"
      - "Малый гриль"
      - "Горячий воздух 3D"
      - "Щадящий горячий воздух"
      - "Гриль с конвекцией"
      - "Поддержание в горячем состоянии"
      - "Let Rest"
      - "Режим пиццы"
      - "Предварительный нагрев"
      - "Подогрев посуды"
      - "Медленное приготовление"
      - "Верхний/нижний жар"
      - "Щадящее приготовление"
    device:
      identifiers: "oven_SERIAL"
#    availability:
#      - topic: "homeconnect/oven/state"
#        value_template: "{{ 'online' if value_json.OperationState == 'Ready' else 'offline' }}"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: latest   

sensor:
  - name: "OperationState"
    unique_id: "oven_operationstate_SERIAL"
    icon: mdi:gauge-full
    state_topic: "homeconnect/oven/state"
    value_template: >
      {% set state = value_json.OperationState|default('Inactive') %}
      {% if is_number(state) %}
      {% set state_ar = '{"0": "Inactive","1": "Ready","2": "DelayedStart","3": "Run","4": "Pause","5": "ActionRequired","6": "Finished","7": "Error","8": "Aborting"}'|from_json %}
      {% set state = state_ar[state|string]|default("Inactive") %}
      {% endif %}
      {{ state }}
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all    
  

  - name: "AlarmClock"
    unique_id: "oven_alarmclock_SERIAL"
    icon: mdi:progress-clock
    unit_of_measurement: s
    device_class: duration
    state_topic: "homeconnect/oven/state"
    value_template: "{{ value_json.AlarmClock|default('unavailable') }}"
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

  - name: "ActiveProgram"
    unique_id: "oven_activeprogram_SERIAL"
    icon: mdi:stove
    state_topic: "homeconnect/oven/state"
    value_template: >
      {% set program = '{ "8277": "AirFry", "8227": "Нижний жар", "8233": "Размораживание", "8224": "Большой гриль", "8225": "Малый гриль", "8208": "Горячий воздух 3D", "8218": "Щадящий горячий воздух", "8212":"Гриль с конвекцией", "8229": "Поддержание в горячем состоянии", "8263": "Let Rest", "8213": "Режим пиццы", "8215": "Предварительный нагрев", "8230": "Подогрев посуды", "8226": "Медленное приготовление", "8209": "Верхний/нижний жар", "8211":"Щадящее приготовление"}'|from_json %}
      {{ program[value_json.ActiveProgram|string]|default("Нет") }}
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

  - name: "SelectedProgram"
    unique_id: "oven_selectedprogram_SERIAL"
    icon: mdi:stove
    state_topic: "homeconnect/oven/state"
    value_template: >
     {% set program = '{ "8277": "AirFry", "8227": "Нижний жар", "8233": "Размораживание", "8224": "Большой гриль", "8225": "Малый гриль", "8208": "Горячий воздух 3D", "8218": "Щадящий горячий воздух", "8212":"Гриль с конвекцией", "8229": "Поддержание в горячем состоянии", "8263": "Let Rest", "8213": "Режим пиццы", "8215": "Предварительный нагрев", "8230": "Подогрев посуды", "8226": "Медленное приготовление", "8209": "Верхний/нижний жар", "8211":"Щадящее приготовление"}'|from_json %}
     {{ program[value_json.SelectedProgram|string]|default("Нет") }}
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all
        
  - name: "ElapsedProgramTime"
    unique_id: "oven_elapsedprogramtime_SERIAL"
    icon: mdi:progress-clock
    unit_of_measurement: s
    device_class: duration
    state_topic: "homeconnect/oven/state"
    value_template: "{{ value_json.ElapsedProgramTime|default('unavailable') }}"
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

  - name: "Level"
    unique_id: "oven_lebel_SERIAL"
    icon: mdi:stove
    state_topic: "homeconnect/oven/state"
    value_template: "{{ value_json.Level|default('unavailable') }}"
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

  - name: "SetpointTemperature"
    unique_id: "oven_setpointtemperature_SERIAL"
    icon: mdi:thermometer
    unit_of_measurement: °C
    device_class: temperature
    state_topic: "homeconnect/oven/state"
    value_template: "{{ value_json.SetpointTemperature|default('unavailable') }}"
    device:
      identifiers: "oven_SERIAL"
    availability:
      - topic: "homeconnect/LWT"
      - topic: "homeconnect/oven/LWT"
    availability_mode: all

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants