PiotrMachowski / lovelace-xiaomi-vacuum-map-card

This card provides a user-friendly way to fully control map-based vacuums in Home Assistant. Supported brands include Xiaomi (Roborock/Viomi/Dreame/Roidmi/Valetudo/Valetudo RE), Neato, Wyze, Roomba, Ecovacs (and probably more).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Valuetudo Maps (Hypfer/dreame) shows error

carefulcomputer opened this issue · comments

Checklist

  • I have updated the card to the latest version available
  • I have cleared the cache of my browser
  • I have checked if the problem is already reported

The problem

I use Valetudo on a dreame vaccum.
I see following error
image

What can I do to show the map ? I use valetudo-map-card and that shows the map correctly and shows the map.
For this integration I used the camera created by other map car integration. Do I need to do something different ?

What version of a card has described problem?

v2.1.2

What was the last working version card?

No response

What vacuum model do you have problems with?

dreame d9 pro

Which integration do you use to control your vacuum (link)?

https://valetudo.cloud/pages/integrations/home-assistant-integration.html

What browser (browsers/apps) does have this problem?

Chrome

What version of Home Assistant do you use?

2023.2.3

What type of installation are you running?

Home Assistant Container

Card's configuration

type: custom:xiaomi-vacuum-map-card
title: Rosie
entity: vacuum.valetudo_rosietherobot
vacuum_platform: Hypfer/Valetudo
map_source:
  camera: camera.valetudo_rosietherobot_map_data
internal_variables:
  topic: valetudo/rockrobo
calibration_source:
  calibration_points:
    - vacuum:
        x: 25500
        'y': 25500
      map:
        x: 466
        'y': 1889
    - vacuum:
        x: 26500
        'y': 26500
      map:
        x: 730
        'y': 1625
    - vacuum:
        x: 25500
        'y': 26500
      map:
        x: 466
        'y': 1625
tiles:
  - tile_id: battery_level
    entity: vacuum.valetudo_rosietherobot
    label: Battery
    attribute: battery_level
    icon: mdi:battery-charging-100
    unit: '%'
  - tile_id: fan_speed
    entity: vacuum.valetudo_rosietherobot
    label: Fan speed
    attribute: fan_speed
    icon: mdi:fan
    translations:
      silent: Silent
      standard: Standard
      medium: Medium
      turbo: Turbo
      auto: Auto
      gentle: Gentle
icons:
  - icon: mdi:play
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        value_not: cleaning
      - entity: vacuum.valetudo_rosietherobot
        value_not: error
      - entity: vacuum.valetudo_rosietherobot
        value_not: returning
    tooltip: Start
    tap_action:
      action: call-service
      service: vacuum.start
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
  - icon: mdi:pause
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        value_not: docked
      - entity: vacuum.valetudo_rosietherobot
        value_not: idle
      - entity: vacuum.valetudo_rosietherobot
        value_not: error
      - entity: vacuum.valetudo_rosietherobot
        value_not: paused
    tooltip: Pause
    tap_action:
      action: call-service
      service: vacuum.pause
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
  - icon: mdi:stop
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        value_not: docked
      - entity: vacuum.valetudo_rosietherobot
        value_not: idle
      - entity: vacuum.valetudo_rosietherobot
        value_not: error
      - entity: vacuum.valetudo_rosietherobot
        value_not: paused
    tooltip: Stop
    tap_action:
      action: call-service
      service: vacuum.stop
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
  - icon: mdi:home-map-marker
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        value_not: docked
      - entity: vacuum.valetudo_rosietherobot
        value_not: returning
    tooltip: Return to base
    tap_action:
      action: call-service
      service: vacuum.return_to_base
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
  - icon: mdi:map-marker
    tooltip: Locate
    tap_action:
      action: call-service
      service: vacuum.locate
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
  - icon: mdi:fan-alert
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value: low
    tooltip: Change fan speed
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
        fan_speed: medium
  - icon: mdi:fan-alert
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value: medium
    tooltip: Change fan speed
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
        fan_speed: high
  - icon: mdi:fan-alert
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value: high
    tooltip: Change fan speed
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
        fan_speed: max
  - icon: mdi:fan-alert
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value: max
    tooltip: Change fan speed
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
        fan_speed: low
  - icon: mdi:fan-alert
    conditions:
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value_not: low
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value_not: medium
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value_not: high
      - entity: vacuum.valetudo_rosietherobot
        attribute: fan_speed
        value_not: max
    tooltip: Change fan speed
    tap_action:
      action: call-service
      service: vacuum.set_fan_speed
      service_data:
        entity_id: vacuum.valetudo_rosietherobot
        fan_speed: low
map_modes:
  - name: Zone cleanup
    icon: mdi:select-drag
    run_immediately: false
    coordinates_rounding: true
    selection_type: MANUAL_RECTANGLE
    max_selections: 5
    repeats_type: EXTERNAL
    max_repeats: 3
    service_call_schema:
      service: mqtt.publish
      evaluate_data_as_template: true
      service_data:
        topic: '[[topic]]/ZoneCleaningCapability/start/set'
        payload: >-
          {"zones": [{%for s in ('[[selection]]')|from_json %}{ "points": {"pA":
          { "x": {{s[0]}}, "y": {{s[1]}} }, "pB": { "x": {{s[2]}}, "y": {{s[1]}}
          }, "pC": { "x": {{s[2]}}, "y": {{s[3]}} }, "pD": { "x": {{s[0]}}, "y":
          {{s[3]}} } }, "iterations": [[repeats]]}{%if not
          loop.last%},{%endif%}{%endfor%}]}
    predefined_selections: []
    variables: {}
  - name: Pin & Go
    icon: mdi:map-marker-plus
    run_immediately: false
    coordinates_rounding: true
    selection_type: MANUAL_POINT
    max_selections: 999
    repeats_type: NONE
    max_repeats: 1
    service_call_schema:
      service: mqtt.publish
      service_data:
        topic: '[[topic]]/GoToLocationCapability/go/set'
        payload: '{ "coordinates": { "x": [[point_x]], "y": [[point_y]] } }'
    predefined_selections: []
    variables: {}

Javascript errors shown in the browser's console (if applicable)

No response

Additional information

No response

Thanks for pointer. However, now velatudo publishes both map data and map image on MQTT. Is that something which can be used to show map instead of installing I can't believe it's not Valetudo.

I don't see any info about map image being published over MQTT, can you show me when it has changed/how does it work?

https://valetudo.cloud/pages/integrations/mqtt.html#rawmapdataforhomeassistantmap-data-hass

Edit: my bad. this is only static image (not map). However, there is already lovelase card for maps which doesn't require running extra container. Are we able to use that to show map ?

Valetudo Map Card displays map by parsing JSON that is embedded in the static image. This is not something that I want to add to this card. Instead I plan to add support for Valetudo to Map Extractor (it will work without the cloud)

Great ! that would work too !