Criar a 1 Automação


(João Ferreira) #1

Boas,

Estou a criar a minha 1 automação e como teste vou criar uma que ligue a TV e a Box da MEO quando chegar a casa (de acordo com o Zanzito). Gostava que dessem a vossa opinião sobre se estou a fazer bem ou se estou a complicar o código, por forma a quando chegarem os sensores e luzes da Xiaomi, consiga fazer sozinho.

 - alias: Chegar a casa João
    trigger:
      platform: zone
      zone: zone.home
      entity_id: device_tracker.joao
      event: enter
   condition:
     - condition: state
       entity_id: media_player.panasonic_viera_tv #TV
       state: 'off' 
     - condition: state
       entity_id: media_player.mediaroom_526528be9ff64ad8851d63862dfecab6 #Box da MEO
       state: 'standby'
   action:
     - service: media_player.on
       entity_id: media_player.panasonic_viera_tv
  #     state: 'on'     #Julgo que não seja necessário pois já esta no Service e é redundante
     - service: media_player.playing
       entity_id: media_player.mediaroom_526528be9ff64ad8851d63862dfecab6
    #   state: 'playing'  #Julgo que não seja necessário pois já esta no Service e é redundante

Já agora, gostaria que tivesse um delay para validar se estou mesmo na zona Casa (no Zanzito) e após essa confirmação, ligar as coisas.

Obrigado


(jpm) #2

Boa tarde João,

A minha sugestão, para já, e testares com algo mais “simples”, como as luzes, ou se tiveres um gw algo que possas remotamente aceder e confirmar o estado/actuar sobre o mesmo, isto porque o gps quando entras dentro de um edifício passa ao modo A-gps, ou seja ele usa o sinal da rede gsm para fazer um calculo aproximado e podes “estar na rua” dentro da tua zona casa(por casausa do GPS) e entrar em casa e poucos segundos depois “sais de casa” porque a tua localização (GSM-Aproximada) passa a ser fora dessa mesma zona.
Contudo face ao teu código tens ai uns “erros”, nomeadamente no estado dos “service”

- alias: Chegar a casa João
    trigger:
      platform: zone
      zone: zone.home
      entity_id: device_tracker.joao
      event: enter
   condition:
     - condition: state
       entity_id: media_player.panasonic_viera_tv #TV
       state: 'off' 
     - condition: state
       entity_id: media_player.mediaroom_526528be9ff64ad8851d63862dfecab6 #Box da MEO
       state: 'standby'
   action:
     - service: media_player.turn_on
       entity_id: media_player.panasonic_viera_tv
     - service: media_player.turn_on
       entity_id: media_player.mediaroom_526528be9ff64ad8851d63862dfecab6

deixo-te aqui todas as funcionalidade que esse serviço permite:

Componente Media player


(João Ferreira) #3

@jpm Muito obrigado pelo teu input.
A questão é que as luzes, sensores, gateways e afins ainda devem estar no contentor a atravessar meio mundo :grin:
Enquanto não chega, queria começar a tentar perceber a estrutura e as possibilidades, para depois ser mais fácil configurar os novos equipamentos.
Em relação ao GPS, estou com a ideia de, em conjunto com o detector de movimento, possa arrancar com a automação.
Já agora, quando se tem vários triggers / conditions / actions na mesma automação, estes funcionam como “AND” ou como “OR”?


(Jorge Assunção) #4

Na minha opinião será mais eficiente se utilizares o seguinte trigger:

  trigger:
    - platform: state
      entity_id: device_tracker.jmra
      to: 'home'

E como diz o @jpm devias começar a testar o código com algo que já tenhas e, quando vierem os sensores, basta alterares as action.


(jpm) #5

Respondendo a tua pergunta:
actions, são todas sequencias, não ha and’s ou or’s, é tudo, por isso é que até existe a opção de adicionares delays.

conditions: Sempre que não existe uma declaração explicita são processadas como “and” ou seja todas elas tem de ser verdadeiras para a acção se realização

triggers: são a única exceção ha regra sendo eles o evento que despoleta a ação qualquer um pode fazer a mesma ser “disparada” sem que todos eles sejam verdadeiros, por isso é que existem a condições


(João Ferreira) #6

Obrigado pela resposta.
Entretanto, neste fim de semana, estive a “brincar” um pouco com as automações, e apercebi-me disso mesmo que disseste.

Em relação a usar o Zanzito para saber se “estou em casa”, deparei-me com o facto de por vezes ele não ter a localização “fixed”, o que fazia com que desligasse a TV de vez em quando … o que deixou a minha esposa um pouco furiosa com esta brincadeira :joy::rofl:

Será que usando o nmap (assim que o device se conecta na rede) é uma boa solução para detectar que chegamos a casa?


(Rodolfo) #7

Podes usar o proximity que te resolve essa situação.


(Jorge Assunção) #8

Também podes utilizar isto:


(João Ferreira) #9

Finalmente já chegaram as luzes e a gateway. Estou a refazer a automação com os seguintes sensores:

sensor movimento Xiaomi
2 lampadas Yeelight
Zanzito (já com o proximity)
sun

Com isto pretendo: quando chegar a casa (zanzito: Home e sensor de movimento activado) e se estiver 45 antes de se pôr o sol, ligar as luzes. Contudo, está a queixar-se do after_offset

Invalid config for [automation]: extra keys not allowed @ data[‘condition’][2][‘after_offset’]. Got None
extra keys not allowed @ data[‘condition’][2][‘state’]. Got None
not a valid value for dictionary value @ data[‘condition’][2][‘condition’]. Got None.

- alias: Chegar a casa
  trigger:
    - platform: state
      entity_id: device_tracker.joao
      to: 'Home'
    - platform: state
      entity_id: binary_sensor.motion_sensor_158d0002753d3a
      from: 'off'
      to: 'on'
  condition:
    - condition: state
      entity_id: light.hall
      state: 'off'
    - condition: state
      entity_id: light.sofa
      state: 'off'  
    - condition: state
      entity_id: sun.sun 
      state: 'below_horizon'  
      after_offset: "-00:45:00"       
  action:  
    - service: light.turn_on
      entity_id: light.hall
    - service: light.turn_on
      entity_id: light.sofa

(João Ferreira) #10

Julgo que já esteja a funcionar. Tinha mal a condição, mudei para a que esta em baixo e parece já dar.

- condition: sun
      after: sunset 
      after_offset: "-00:45:00"

(Rodolfo) #11

@Joao_Ferreira mas nessa automação não estás a usar o proximity
Não ias usar?


(João Ferreira) #12

@RodolfoVieira ora bolas… Apenas coloquei o proximity no configurations.yaml…:unamused: Como é que uso numa automação?


(Rodolfo) #13

Deixo-te apenas um exemplo adapta as tuas necessidades:

 - 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"]

(João Ferreira) #14

@RodolfoVieira Obrigado. Eu tinha feito assim (caso seja 45 minutos antes de se pôr o sol e o sensor de movimento é accionado, acende as luzes). Podes ver se está correcto sff?

- id: ChegarCasaJoao
  alias: Chegar a casa Joao
  trigger:
    - platform: state
      entity_id: sensor.joao_status
      to: 'Just Arrived'
    - platform: numeric_state
      entity_id: proximity.joao_home
      below: 10  
    - platform: state
      entity_id: binary_sensor.motion_sensor_158d0002753d3a
      from: 'off'
      to: 'on'
  condition:
    - condition: sun
      before: sunset   
      before_offset: "-00:45:00"        
  action:  
    - service: light.turn_on
      entity_id: light.hall
    - service: light.turn_on
      entity_id: light.sofa

O proximity está assim no configurations.yaml:

proximity:
  joao_home:
    zone: Home
    devices:
      device_tracker.joao
    tolerance: 5
    unit_of_measurement: m
  vanessa_home:
    zone: Home
    devices:
      device_tracker.vanessa
    tolerance: 5
    unit_of_measurement: m

(Rodolfo) #15

Parece me bem à primeira vista.
Mas testa e diz nos o resultado.