Skip to content

Instantly share code, notes, and snippets.

@MoritzBuetzer
Last active January 11, 2026 07:35
Show Gist options
  • Select an option

  • Save MoritzBuetzer/6441d4045f989ef57aed915250bb4020 to your computer and use it in GitHub Desktop.

Select an option

Save MoritzBuetzer/6441d4045f989ef57aed915250bb4020 to your computer and use it in GitHub Desktop.
REST Integration for V-Zug Home Appliances in Home Assistant
# for example
rest: !include rest.yaml
template:
sensor: !include sensor.yaml
- resource: http://[DEVICE_IP]/ai?command=getDeviceStatus
authentication: digest
username: !secret vzug.username
password: !secret vzug.password
sensor:
name: 'V-Zug CookTopInduktion V6000'
json_attributes:
- DeviceName
- Serial
- Inactive
- Status
- Program
- ProgramEnd
- default_entity_id: sensor.vzug_cooktopinduktion_devicename
name: 'V-Zug CookTopInduktion V6000 DeviceName'
state: "{{ state_attr('sensor.v_zug_cooktopinduktion_v6000', 'DeviceName') }}"
- default_entity_id: sensor.vzug_cooktopinduktion_serial
name: 'V-Zug CookTopInduktion V6000 Serial'
state: "{{ state_attr('sensor.v_zug_cooktopinduktion_v6000', 'Serial') }}"
- default_entity_id: sensor.vzug_cooktopinduktion_inactive
name: 'V-Zug CookTopInduktion V6000 Inactive'
state: "{{ state_attr('sensor.v_zug_cooktopinduktion_v6000', 'Inactive') }}"
- default_entity_id: sensor.vzug_cooktopinduktion_status
name: 'V-Zug CookTopInduktion V6000 Status'
state: "{{ state_attr('sensor.v_zug_cooktopinduktion_v6000', 'Status') }}"
- default_entity_id: sensor.vzug_cooktopinduktion_program
name: 'V-Zug CookTopInduktion V6000 Program'
state: "{{ state_attr('sensor.v_zug_cooktopinduktion_v6000', 'Program') }}"
- default_entity_id: sensor.vzug_cooktopinduktion_end
name: 'V-Zug CookTopInduktion V6000 End'
state: "{{ state_attr('sensor.v_zug_cooktopinduktion_v6000', 'ProgramEnd')['End'] }}"
- default_entity_id: sensor.vzug_cooktopinduktion_endtype
name: 'V-Zug CookTopInduktion V6000 End'
state: "{{ state_attr('sensor.v_zug_cooktopinduktion_v6000', 'ProgramEnd')['EndType'] }}"
@naThnaabu

Copy link
Copy Markdown
  1. The value is a string, could someone help me learn how to convert it to an interger?

Hi all

I have a V4000 since some days and I gave all of it a bit of additional love. Here's my current config:

rest:
  - scan_interval: 20
    resource: http://192.168.2.2/ai?command=getDeviceStatus
    sensor:
      name: vzug_dishwasher
      json_attributes:
        - DeviceName
        - Serial
        - Inactive
        - Status
        - Program
        - ProgramEnd
        - EndType
  - scan_interval: 60
    resource: http://192.168.2.2/hh?command=getCommand&value=ECO_MGMT_ENERGY_PROGRAM
    sensor:
      name: vzug_dishwasher_last_energy
      value_template: "{{value_json.value[:-3].replace(',','.') | float(0) }}" # strip kWh
      unit_of_measurement: "kWh"
  - scan_interval: 120
    resource: http://192.168.2.2/hh?command=getCommand&value=ECO_MGMT_ENERGY_AVG
    sensor:
      name: vzug_dishwasher_avg_energy
      value_template: "{{ value_json.value[:-7].replace(',','.') | float(0) }}" # strip kWh/Ch.
      unit_of_measurement: "kWh"
  - scan_interval: 60
    resource: http://192.168.2.2/hh?command=getCommand&value=ECO_MGMT_ENERGY_TOTAL
    sensor:
      name: vzug_dishwasher_tot_energy
      value_template: "{{value_json.value[:-3].replace(',','.') | float(0) }}" # strip kWh
      unit_of_measurement: "kWh"
  - scan_interval: 60
    resource: http://192.168.2.2/hh?command=getCommand&value=ECO_MGMT_WATER_PROGRAM
    sensor:
      name: vzug_dishwasher_last_water
      value_template: "{{ value_json.value[:-1].replace(',','.') | float(0) }}" # strip l
      unit_of_measurement: "l"
  - scan_interval: 120
    resource: http://192.168.2.2/hh?command=getCommand&value=ECO_MGMT_WATER_AVG
    sensor:
      name: vzug_dishwasher_avg_water
      value_template: "{{ value_json.value[:-5].replace(',','.') | float(0) }}" # strip l/Ch.
      unit_of_measurement: "l"
  - scan_interval: 60
    resource: http://192.168.2.2/hh?command=getCommand&value=ECO_MGMT_WATER_TOTAL
    sensor:
      name: vzug_dishwasher_tot_water
      value_template: "{{ value_json.value[:-1].replace(',','.') | float(0) }}" # strip l
      unit_of_measurement: "l"

template:
  - sensor:
      - name: vzug_dishwasher_devicename
        state: "{{ state_attr('sensor.vzug_dishwasher', 'DeviceName') }}"
      - name: vzug_dishwasher_serial
        state: "{{ state_attr('sensor.vzug_dishwasher', 'Serial') }}"
      - name: vzug_dishwasher_inactive
        state: "{{ state_attr('sensor.vzug_dishwasher', 'Inactive') }}"
      - name: vzug_dishwasher_program
        state: "{{ state_attr('sensor.vzug_dishwasher', 'Program') }}"
      - name: vzug_dishwasher_status
        state: "{{ state_attr('sensor.vzug_dishwasher', 'Status') }}"
      - name: vzug_dishwasher_program_end
        state: "{{ state_attr('sensor.vzug_dishwasher', 'ProgramEnd').End }}"
      - name: vzug_dishwasher_program_end_type
        state: "{{ state_attr('sensor.vzug_dishwasher', 'ProgramEnd').EndType }}"

forgot to qoute

@naThnaabu

Copy link
Copy Markdown

I also tried

rest:

template:

  • sensor:
    • name: oven_name
      state: "{{ state_attr('sensor.v_zug_oven', 'DeviceName') }}"
  • sensor:
    • name: oven_inactive
      state: "{{ state_attr('sensor.v_zug_oven', 'Inactive') }}"
  • sensor:
    • name: oven_status
      state: "{{ state_attr('sensor.v_zug_oven', 'Status') }}"
  • sensor:
    • name: oven_program
      state: "{{ state_attr('sensor.v_zug_oven', 'Program') }}"
  • sensor:
    • name: oven_program_end
      state: "{{ state_attr('sensor.v_zug_oven', 'ProgramEnd') }}"

@izacus

izacus commented Apr 16, 2023

Copy link
Copy Markdown

I'm not sure if this is still useful to anyone, but if I've noticed that the web UI always calls http://<ip>/hh?command=getZHMode right before calling http://<ip>/ai?command=getDeviceStatus.

If I do the same, then the amount of 501.03 errors is significantly reduced.

@chruetli

Copy link
Copy Markdown

@izacus How can I combine this "wakeup" call with the rest call?

@asowlnowl

Copy link
Copy Markdown

hi
i use the following config to get the engergy statistics:

sensor:

  • platform: rest
    name: 'V-Zug AdoraWash V4000 Eco Info'
    json_attributes_path: "$.energy"
    json_attributes:
    - total
    - lastMonth
    - lastYear
    - average
    - program
    resource: http://192.168.2.xx/hh?command=getEcoInfo

template:

  • sensor:
    • name: "V-Zug AdoraWash Energy total"
      device_class: energy
      state_class: total_increasing
      unit_of_measurement: kWh
      state: >
      {{ state_attr('sensor.v_zug_adorawash_v4000_eco_info', 'total')}}

That works with my adora wash v4000, AdoraDish V4000, Combair and Combisteamer v6000

but v-zug will change their api in the future. they will publish the new api.

@brutasse

Copy link
Copy Markdown

but v-zug will change their api in the future. they will publish the new api.

Hello @asowlnowl, is there a way to know more about this new API effort? Do you have a contact with v-zug?

@asowlnowl

asowlnowl commented Apr 29, 2023

Copy link
Copy Markdown

Hello @asowlnowl, is there a way to know more about this new API effort? Do you have a contact with v-zug?

they told me last fall that they have no eta yet. i just asked per contact form on their website for the api documentation.

@siku2

siku2 commented Aug 22, 2023

Copy link
Copy Markdown

FYI, I finally bit the bullet and created a proper integration for Home Assistant that can be installed using HACS.
The integration can be found here: https://github.com/siku2/hass-vzug

I used a lot of information in this thread for reference, so thank you all for sharing.

@phoebos02

Copy link
Copy Markdown

Nice one! Can’t wait to try it out. 👍

@adibu

adibu commented Aug 26, 2023

Copy link
Copy Markdown

Thank you for this - only had basic date before now a lot more is in the HACS integration. Great stuff!

@MoritzBuetzer

Copy link
Copy Markdown
Author

@siku2 awesome!

@simondaehler

Copy link
Copy Markdown

Awsome, Thanks
I have a AdoraDish V2000 I get the error "Einrichtung fehlgeschlage, wird erneut versucht" I guess the interface is not compatible with the V4000....

@siku2

siku2 commented Aug 27, 2023

Copy link
Copy Markdown

@simondaehler, can you create a new issue or discussion over at the repository? I would like to figure out what the issue is so the V2000 series can be supported as well, I just need a few things from your side and I don't want to clog up this thread.

@chruetli

Copy link
Copy Markdown

@siku2 I'm using your integration with an adorawash_v2000. I set it up with the very first version, so at least this one did work.

@tebulrich

tebulrich commented Sep 17, 2023

Copy link
Copy Markdown

I have both adorawash2000 and adoradry2000 and it works with latest version 0.31. Thanks a lot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment