Abrir o google maps no smartphone ao tocar na entidade person ou device_tracker

Olá! Sou Plínio. Novo no fórum.

Tem algum tempo que estou brincando com o HA aqui em casa. No meu HA, tenho duas entidades person (minha entidade e de minha esposa) com dois device_tracker (também meu celular e de minha esposa).

Quando a gente toca na entidade person, abre uma janela com um mapa, exibindo a localização. Esse é o comportamento normal.

Gostaria que, ao tocar no ícone, abra uma url formatada com a localização atual. Algo assim:
"https://www.google.com/maps/place/{{state_attr('device_tracker.2201117tg','latitude')}},{{state_attr('device_tracker.2201117tg', 'longitude') }}"

A linha acima, deveria ser traduzida por algo assim:
google.com/maps/place/-23.084898237071048, -47.2182865710798

Tentei de tudo… scripts, automações, etc… Não consegui.

A ideia é que, quando tocar no ícone da pessoa, no smartphone abra o google maps, apontando a localização. A partir daí, pelo google maps, temos condições de traçar a rota até a pessoa.

Alguém já fez algo parecido?
Poderia me auxiliar?

2 Likes

Acredito que com o card padrão vc não vai conseguir.

Acho que vc vai ter que usar um card diferente para mostrar a foto da pessoa e usar um card para a url.

Da uma olhada aqui para criar o link:

Só não sei se vai abrir o maps

Obrigado Walber.

Vou refazer todas as minhas tentativas e colocar aqui as dificuldades que estou enfrentando.

Primeiro, fiz uma validação da URL abaixo, em Ferramentas de desenvolvedor > Template:
https://www.google.com/maps/place/{{state_attr('device_tracker.2201117tg','latitude')}},{{state_attr('device_tracker.2201117tg', 'longitude') }}

O resultado foi correto: https://www.google.com/maps/place/-23.00000,-47.00000 (por segurança, alterei as coordenadas aqui)

Fui na minha dashboard e adicionei um cartão entidades. Fui no editor de código e coloquei:

type: entities
entities:
  - entity: person.plinio_brunelli
    tap_action:
      action: url
      url_path: "https://www.google.com/maps/place/{{state_attr('device_tracker.2201117tg','latitude')}},{{state_attr('device_tracker.2201117tg', 'longitude')}}"

Não deu nenhum erro na validação do yaml.
Saí do modo de edição e cliquei sobre a entidade.
Abriu o google maps, no chrome, mas a url não está sendo “resolvida” com as coordenadas.
A url ficou assim:
https://www.google.com/maps/place/%7B%7Bstate_attr('device_tracker.2201117tg','latitude')%7D%7D,%7B%7Bstate_attr('device_tracker.2201117tg',%20'longitude')%7D%7D

Só para dar mais informação, na url acima, o “%7B” é o URL enconding de “{” e “%7D” é o “}”

é como se a url estivesse exatamente assim: "https://www.google.com/maps/place/{{state_attr('device_tracker.2201117tg','latitude')}},{{state_attr('device_tracker.2201117tg', 'longitude')}}"

O HA não entendeu que deveria substituir o que está em {{state_attr(‘device_tracker.2201117tg’,‘latitude’)}} pela latitude e {{state_attr(‘device_tracker.2201117tg’, ‘longitude’)}} pela longitude

Como teste, substitui a variável de url_path para
url_path: "https://www.google.com/maps/place/-23.5505,-46.6333"
e testei clicar sobre a entidade. Funcionou corretamente, abrindo o google do jeito que espero.

o problema está na interpolação da coordenada dentro da string. Isso não está funcionando aqui:
{{state_attr(‘device_tracker.2201117tg’,‘latitude’)}}

Lembrando que, como coloque anteriormente, lá na ferramenta de desenvolvedor, em templates, funciona.

Percebi que ao salvar o código e voltar para editar, meu código aparece com “>-” em url_path e o restante sem estar entre aspas duplas:

type: entities
entities:
  - entity: person.plinio_brunelli
    tap_action:
      action: url
      url_path: >-
        https://www.google.com/maps/place/{{
        states.device_tracker.2201117tg.attributes.latitude }},{{
        states.device_tracker.2201117tg.attributes.longitude }}

Esse >- indica que tudo a seguir é uma string, e não está fazendo a interpolação com o que está entre {{ }}.

Alguém tem ideia de como resolver?

Tentei usar uma variável
google_maps_url: "https://www.google.com/maps/place/{{ states.device_tracker.2201117tg.attributes.latitude }},{{ states.device_tracker.2201117tg.attributes.longitude }}"

E em url_path usar:
url_path: !input google_maps_url

Mas o HA acusa erro na tag !input. Não deixa usar aqui.

Usa o card que postei no outro tópico
Markdown e veja se funciona.

Se vc ver lá, pelo que entendi, nem todo card vai “traduzir” o valor do sensor corretamente, por isso falei que vc precisaria usar um card para o ícone da pessoa e outro com o link

1 Like

Walber, obrigado.
Usei o Markdown e resolveu meu problema, mas não ficou bonito como eu queria… rsrs

image

Por enquanto vou deixar assim.

A ideia dessa solução é não precisar ter que pedir a localização para minha esposa e vice-versa, quando tenho que buscá-la em algum lugar. Geralmente, a gente pede para enviar a localização pelo whatsapp e então, traçar a rota até ela, ou ela até a mim.

Agora, com esse recurso facilitou.

Para quem quiser fazer igual:

type: markdown
content: >
  Nome|| ||Situação

  :- |-| :- |-| -:

  ![{{ states.person.plinio_brunelli.attributes.friendly_name
  }}](/local/plinio.jpg)| **{{
  states.person.plinio_brunelli.attributes.friendly_name }}**|||[{% if
  is_state('person.plinio_brunelli', 'home') %}Em Casa{% else
  %}Ausente{%endif%}](https://www.google.com/maps/place/{{state_attr('device_tracker.2201117tg','latitude')}},{{state_attr('device_tracker.2201117tg','longitude')}})

  ![{{ states.person.katia_brunelli.attributes.friendly_name
  }}](/local/katia.jpg)| **{{
  states.person.katia_brunelli.attributes.friendly_name }}**|||[{% if
  is_state('person.katia_brunelli', 'home') %}Em Casa{% else
  %}Ausente{%endif%}](https://www.google.com/maps/place/{{state_attr('device_tracker.smartphone_de_katia','latitude')}},{{state_attr('device_tracker.smartphone_de_katia','longitude')}})
title: Pessoas

Obs:
Como não consegui redimensionar a foto da entidade person, via markdown, eu redimensionei manualmente e subi para o HA, dentro da pasta www. Esta pasta é acessada com /local/nome_do_arquivo

Realmente com tap_action não vai funcionar porque o tipo esperado é “string”
Quando o parâmetro permite interpolação, se não me engano, aparece o tipo “template”

Aqui eu fiz da seguinte forma

type: custom:mushroom-person-card
entity: person.daniel
icon_type: entity-picture
secondary_info: none
layout: vertical
fill_container: false
primary_info: none
double_tap_action:
  action: fire-dom-event
  browser_mod:
    service: browser_mod.popup
    data:
      content:
        type: custom:layout-card
        layout_type: masonry
        cards:
          - type: markdown
            content: >
              Exibir localização de 
              **{{states.person.daniel.attributes.friendly_name }}** no
              [Maps](https://www.google.com/maps/place/{{state_attr('person.daniel','latitude')}},{{state_attr('person.daniel','longitude')}}).
            title: Localizar em site/app externo!
            layout:
              max_width: 500
              margin: 3px
              card_margin: 3px

com isso abre um popup assim

popup

1 Like

Amigo. Ficou top! Obrigado