Notificação do status do device na zona


(Thiago Brenner) #1
Boas pessoal. Me ajudem por favor. Eu tenho uma automação que funcionava assim, enviava uma notificação para o telegram quando um device_tracker entrava ou saia da zona home. Mas agora só avisa quando entra na zona, saindo não avisa mais. Segue o código:

- alias: device zone notify
trigger:
  platform: state
  entity_id: device_tracker.thiago_galaxys7, device_tracker.eliane_lg, device_tracker.daniel_prime
action:     
 - service: notify.telegram
   data_template:
     message: "{{ trigger.to_state.name }} is in {{ trigger.to_state.state }}"

(Ricardo Silva) #2

Não tens que lhe dizer a mudança de estado?

- alias: device zone notify
trigger:
  platform: state
  entity_id: device_tracker.thiago_galaxys7, device_tracker.eliane_lg, device_tracker.daniel_prime
  from: 'home'
  to: 'not_home'
action:     
 - service: notify.telegram
   data_template:
     message: "{{ trigger.to_state.name }} is in {{ trigger.to_state.state }}"

e

- alias: device zone notify2
trigger:
  platform: state
  entity_id: device_tracker.thiago_galaxys7, device_tracker.eliane_lg, device_tracker.daniel_prime
  from: 'not_home'
  to: 'home'
action:     
 - service: notify.telegram
   data_template:
     message: "{{ trigger.to_state.name }} is in {{ trigger.to_state.state }}"

(jpm) #3

Não é preciso porque ele quer mesmo isso: “mudança de estado” seja ela qual for


(Thiago Brenner) #4

Isso. Só não entendi o motivo de parar de funcionar como deveria. Qualquer coisa irei aderir ao código acima mesmo, mas é pq quanto menos código, melhor, eu acho


(Rodolfo) #5

O que o @ricain disse está certo, faz isso @backupbrenner


(jpm) #6

Eu nesse departamento ainda ando em testes pois não consigo encontrar um método que me garanta a localização e de forma constante pelo que neste momento tenho owntracks, routher, ios todos eles a fazerem tracking e mesmo assim não consigo que nenhum, ou mesmo a conjugação dos três me dê o nivel de confiança que quero.

Assim, e embora a configuração que queiras seja um pouco mais simples deixo aqui as minhas, que vão de encontro ao que o @ricain e @Rodolfo disseram (mas porque necessidade/vontade)

#Automação de validação do facto de ter saido casa?

- id: Check if JPM is Away
  alias: Check if JPM is Away
  initial_state: 'on'
  condition:
condition: state
entity_id: input_boolean.jpmhome
state: 'on'
  hide_entity: false
  trigger:
  - entity_id: device_tracker.iphone
from: home
platform: state
to: not_home
for:
  minutes: 3
  - entity_id: device_tracker.samsunggalaxys7edge
from: home
platform: state
to: not_home
for:
  minutes: 3
  action:
  - service: homeassistant.turn_off
data:
  entity_id: input_boolean.jpmhome
  - service: notify.ios_iphoneJPM
data_template:
  title: Home Assistant
  message: 'ALERT: JPM just left home.'

#Automação de validação do facto de estar ou não em casa?

- id: jpm_is_at_home
  alias: Check if JPM is at Home
  initial_state: 'on'
  condition:
    condition: state
    entity_id: input_boolean.jpmhome
    state: 'off'
  hide_entity: false
  trigger:
  - entity_id: device_tracker.iphone, evice_tracker.jpm_s7, device_tracker.samsunggalaxys7edge
    platform: state
    to: home
  - entity_id: device_tracker.iphonejpm, device_tracker.jpm_iphone_iphone_tracks
    platform: state
    to: Casa
  action:
  - service: homeassistant.turn_on
    data:
      entity_id: input_boolean.jpmhome
  - service: notify.ios_iphoneJPM
    data_template:
      title: Home Assistant
      message: 'ALERT: O João chegou a casa.'

#Variavel de control unica que despoleta acações

input_boolean:
  jpmhome:
    name: JPM Home
    initial: on
    icon: mdi:cellphone-iphone

Depois duma forma mais avançada de contornar um problema que o HA tem com a forma como guarda os estados das variáveis face a um restart tenho ainda esta configuração:

Porque tenho e porque te recomendam separar as ações por estado?
Simples, porque mais cedo ou mais tarde, vais querer mais, eu tenho perfis de som, tenho relatórios a serem lidos no tts, ainda estou a aguardar HW para ligar o AC, ligas a tv, podes por o radio a tocar, abrir o portão da garagem, bem podia continuar até amana mas acho que já percebeste :slight_smile:


(Rodolfo) #7

Eu tenho assim, @jpm uso o zanzito e falhar é mt raro…

 Informa o Utilizador que o Rodolfo acabou de chegar à zona de Residência mas que pode ou não estar em casa. 
 - alias: Rodolfo Acabou de chegar a zona de residencia
   trigger:
     - platform: numeric_state
       entity_id: proximity.rodolfo_casa
       below: 200
   action:
     - service: input_select.select_option
       data:
         entity_id: input_select.rodolfo_status_dropdown
         option: Apenas Chegou
     - service: notify.pushnotification
       data:
         title: 'O Rodolfo acabou de chegar à zona de residência'
         message: 'Às {{states.sensor.time.state}}'
         target: ["MEUPC", "MEU_TELEMOVEL"]

Informa o utilizador que o Rodolfo já se encontra em casa, ou seja ja passaram 10 min desde que ele chegou a zona de residência.
 - alias: Rodolfo esta em Casa
   trigger:
     - platform: state
       entity_id: input_select.rodolfo_status_dropdown
       to: 'Apenas Chegou'
       for:
         minutes: 10
     - platform: state
       entity_id: input_select.rodolfo_status_dropdown
       from: 'Apenas Saiu'
       to: 'Apenas Chegou'
   action:
     - service: input_select.select_option
       data:
         entity_id: input_select.rodolfo_status_dropdown
         option: Em Casa
     - service: notify.pushnotification
       data:
         title: 'O Rodolfo está em casa'
         message: 'Desde as {{states.sensor.time.state}}'
         target: ["MEUPC", "MEU_TELEMOVEL"]

Informa o utilizador que o Rodolfo apenas saiu de Casa, mas que não saiu definitivamente. Exemplo: Foi só ás compras rapido e volta em menos de 10 min.
 - alias: Rodolfo saiu de Casa
   trigger:
     - platform: numeric_state
       entity_id: proximity.rodolfo_casa
       above : 20
   action:
     - service: input_select.select_option
       data:
         entity_id: input_select.rodolfo_status_dropdown
         option: Apenas Saiu
     - service: notify.pushnotification
       data:
         title: 'O Rodolfo acabou de sair de casa'
         message: 'Às {{states.sensor.time.state}}'
         target: ["MEUPC", "MEU_TELEMOVEL"]
         
Informa o utilizador que o Rodolfo já saiu mesmo de Casa como da zona de residência.
 - alias: Rodolfo está Ausente
   trigger:
     - platform: numeric_state
       entity_id: proximity.rodolfo_casa
       above: 200
       for:
         minutes: 10
   action:
     - service: input_select.select_option
       data:
         entity_id: input_select.rodolfo_status_dropdown
         option: Ausente
     - service: notify.pushnotification
       data:
         title: 'O Rodolfo está ausente'
         message: 'Desde as  {{ (now().strftime("%s") | int - 600) | timestamp_custom("%H:%M")}}'
         target: ["MEUPC", "MEU_TELEMOVEL"]

Informa o utilizador que o Rodolfo não foi a casa durante 24 horas.
 - alias: Rodolfo ausente por mais de 24 horas
   trigger:
     - platform: state
       entity_id: input_select.rodolfo_status_dropdown
       to: 'Ausente'
       for:
         hours: 24
   action:
     - service: input_select.select_option
       data:
         entity_id: input_select.rodolfo_status_dropdown
         option: Ausencia Prolongada
     - service: notify.pushnotification
       data:
         title: 'O Rodolfo está em ausência prolongada'
         message: 'Desde do dia {{states.sensor.date.state}} às {{states.sensor.time.state}}'
         target: ["MEUPC", "MEU_TELEMOVEL"]

Informa o utilizador que o Rodolfo acabou de chegar ao Trabalho.
 - alias: Rodolfo acabou de chegar ao trabalho
   trigger:
     - platform: numeric_state
       entity_id: proximity.rodolfo_trabalho
       below: 1000
   action:
     - service: input_select.select_option
       data:
         entity_id: input_select.rodolfo_status_dropdown
         option: notrabalho
     - service: notify.pushnotification
       data:
         title: 'O Rodolfo está no trabalho'
         message: 'Desde as {{states.sensor.time.state}}'
         target: ["MEUPC", "MEU_TELEMOVEL"]

Informa o utilizador que o Rodolfo acabou de sair do Trabalho.
 - alias: Rodolfo acabou de sair do trabalho
   trigger:
     - platform: numeric_state
       entity_id: proximity.rodolfo_trabalho
       above: 1000
   action:
     - service: input_select.select_option
       data:
         entity_id: input_select.rodolfo_status_dropdown
         option: Ausente
     - service: notify.pushnotification
       data:
         title: 'O Rodolfo saiu do trabalho'
         message: 'Às {{states.sensor.time.state}}'
         target: ["MEUPC", "MEU_TELEMOVEL"]

(jpm) #8

@Rodolfo que tolerância tens no sensor, eu tenho tudo a 100m

proximity:
  tocasajpm:
    devices:
      - device_tracker.jpm_iphone_iphone_tracks
      - device_tracker.jpm_s7
    ignored_zones:
      - trabalho
    zone: casa
    tolerance: 100
    unit_of_measurement: m

Será que crio um nova zona?

proximity:
  naurbanizaçãojpm:
    devices:
      - device_tracker.jpm_iphone_iphone_tracks
      - device_tracker.jpm_s7
    ignored_zones:
      - tocasajpm
    zone: casa
    tolerance: 300
    unit_of_measurement: m


 tocasajpm:
    devices:
      - device_tracker.jpm_iphone_iphone_tracks
      - device_tracker.jpm_s7
    ignored_zones:
      - naurbanizaçãojpm
    zone: casa
    tolerance: 30
    unit_of_measurement: m

(jpm) #9

Por exemplo neste momento o meu s7 tinha actualizado tudo.

O iphone, todos eles estavam ainda no restaurante…e ja sai de lá há cerca de 1h30 :frowning:


(Jorge Assunção) #10

O iPhone é conhecido por ter problemas com essas coisas pois tem a mania de pôr sempre a “dormir” o GPS e o WiFi pouco depois do ecrã se desligar…


(jpm) #11

É verdade, por isso é que ainda não sei que metodologia usar, podia usar só um deles, mas…a memoria não é o que era e se eu deixar o telemovel em casa ou ficar sem bateria não queria que as automações parassem, dai ter colocado os dois.

Já pensei no carro, mas o carro tanto se liga ao wifi quando chego como quando saiu, por isso também não serve.

Sinceramente tem sido um dos “calcanhares de Aquiles” que nunca pensei ter com este sistema, pois geo localização para mim é um dado adquirido…guess not.

Deixa ver pois a comunidade ainda está a crescer e novos projectos vão aparecendo, como percebo 0 de electrotécnica alguem vai dizer que isso se resolve com 3 esp82 com um sniffer Bluetooth e ficamos todos felizes.


(Rodolfo) #12

@jpm de facto IOS e home assistant, casam muito bem em umas coisas, mas noutras não é muito bom.
Eu não uso tolerance, e funciona perfeitamente bem…uso uma aplicação já aqui falada zanzito. Que em termos de localização com o componete proximity não me tem deixado mal.

E já visto isto? https://community.home-assistant.io/t/reliable-multi-user-distributed-bluetooth-occupancy-presence-detection/50674/30


(jpm) #13

ja ando a estudar esse topico sim, mas estou a bater num entrave, não consigo comprar 4 ou 5 raspeberry pies zero w.

Hoje por acaso falei com o bruno horta e ele sugeriu olhar para o esp82, mas como ja disse antes…zero em eletronica por isso tem de ser algo que tem de ficar para o futuro, para já preciso de mais dados, nomeadamente tempos de repostas, histórico de localização, precisam e depois logo vejo o que posso ou não fazer.

No entanto obrigado pela sugestão e deixo a porta aberta a comunidade para encontrar uma forma sistematica para obtermos a localização, ou chegar a conclusão que apenas sou eu que não sei usar as ferramentas que tenho (nunca excluo esta hipótese)


(Jorge Assunção) #14

Até podias colocar 10 métodos diferentes, sem bateria nenhum funciona… Lol…

Mas podes utilizar um método alternativo para as automação saberem se chegas-te a casa como as tags NFC ou dispositivos BT autónomos tipo a LAPA.

Tenho andado a estudar um sistema de micro-localização com ESP32 que até sabe em que divisão da casa estás mas ainda não há projectos muito desenvolvidos. O que testei em casa até funciona com pulseiras Xiaomi Mi Band, smartwatch, etc… Quando vir que está um sistema maduro tenciono publicar aqui um tutorial.


(jpm) #15

É isso mesmo @j_assuncao que eu queria, o principal problema é esse mesmo em casa tenho muitas falsas “saidas”, e isso despoleta varios eventos incluindo o TTS, e como deves compreender estar a receber relatorios, notificações ou seja o que for de XX em XX minutos não é agradavel ou prudente.

Mas entre esta comunidade e a Portugal Maker com toda a certeza encontramos uma solução.

Entretanto ja criei mais uns sensores que me mostram o historico de actualizações do estados dos dispositivos para ver se começo a limpar


(Jorge Assunção) #16

Podes sempre criar um atraso à entrada ou à saída de casa para o sistema ter a certeza onde estás, tipo só depois de o sistema te ver em casa durante 5 minutos é que o TTS começa a falar.

Tenho um tutorial sobre isso para publicar em breve.


(jpm) #17

Coloca esse tutorial sim, mas no meu caso já tenho esses intervalos definidos, nomeadamente tudo o que é gps chega a casa “mais cedo” e tudo o o que depende do router é “menos cedo” contudo eu tenho wifi na garagem, que são 8 pisos a baixo e também esse factor me potencia falsas chegadas ou “atrasa” as saidas.


(Jorge Assunção) #18

Mas apanhas o sinal de casa na garagem? Se tens por exemplo um router na garagem podes alterar o nome de rede para ele destinguir o estares em casa e na garagem


(Jorge Assunção) #19

No tutorial que tenho preparado, uso outros estados além do home e not_home. Quando saio de casa diz que “acabei de sair” e só 10 minutos depois diz que sai. A entrar em casa é a mesma coisa. O que quer dizer que se for ao café, por exemplo, e demorar menos de 20 minutos nenhuma automação é activada.


(jpm) #20

tenho varias zonas, Casa, trabalho, trabalho da esposa, casa dos pais, e agora (desde hoje até urbanização).

Tenho wifi na garagem sim, mas tenho tudo ligado por dhcp ao mesmo router assim se estiver na garagem e precisar de consultar um livro do carro, ou seja do que for vou a minha rede e posso aceder.

Alem disso qualquer pessoa que tenha acesso a minha rede de casa tem na garagem sem necessidade de mais redes (ja tenho 2.4G e 5G assim passava a ter ainda uma terceira).

Quanto aos delays o meu dos meus “requisito chave” é esse mesmo deteção “instantânea”.
Porque? porque só leio os relatorios numa coluna, e não em todas, e quero perceber o que se passou assim que chego, até porque depois vou andar a fazer coisas pela casa e raramente tenho a porta da sala aberta.

Ainda não estava convencido a 100% mas se tambem tu estas a usar uma solução com Bluetooth com sucesso mais vale encomendar ja uns 5 para cobrir a casa e a garagem e fico com o problema da zona “Home” resolvido