Erro no serviço camera.local_file_update_file_path

Ao utilizar o script abaixo para gerar uma imagem, gera a seguinte mensagem de erro. Já tentei de várias formas corrigir, mas não encontro uma solução.

2020-08-20 18:54:29 ERROR (MainThread) [homeassistant.components.script.video_porteiro_snapshot] Video Porteiro Snapshot: Error executing script. Service not found for call_service at pos 2: Unable to find service camera/local_file_update_file_path
2020-08-20 18:54:29 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 802, in async_run
    await asyncio.shield(run.async_run())
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 183, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 191, in _async_step
    await getattr(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 380, in _async_call_service_step
    await service_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1258, in async_call
    raise ServiceNotFound(domain, service) from None
homeassistant.exceptions.ServiceNotFound: Unable to find service camera/local_file_update_file_path

script:
  video_porteiro_snapshot:
    alias: Video Porteiro Snapshot
    description: 'Gera as fotos ao acionar o botão'
    sequence:
      - service: camera.snapshot
        data:
          entity_id: camera.video_porteiro_camera
          filename: '/config/www/cameras/video_porteiro/video_porteiro_{{ now ().day }}_{{ now ().month }}_{{ now ().year }}_{{ now ().hour }}_{{ now ().minute }}.jpg'
      - data_template:
          entity_id: camera.saved_image
          file_path: '/config/www/cameras/video_porteiro/video_porteiro_{{ now ().day }}_{{ now ().month }}_{{ now ().year }}_{{ now ().hour }}_{{ now ().minute }}.jpg'
        service: camera.local_file_update_file_path

Experimenta trocar data: por data_template:.

Obrigado, Jorge! Já havia tentando desta forma, também gerou o mesmo erro.

@pedroct

Para o componente camera não existe o serviço local_file_update_file_path, apenas o enable_motion_detection , disable_motion_detection , play_stream , record , snapshot , turn_off e turn_on.

Onde foste buscar isso? Agora que estou a ver com mais atenção o código nem consigo perceber o que queres fazer… O camera.saved_image é uma camera?

Além disso tudo, o código que estás a usar para gravar a data e hora não faz sentido quando podes usar apenas {{ now().strftime("%Y%m%d-%H%M%S") }}.

1 Curtiu

@j_assuncao obrigado pelo retorno!

Estou tentando implementar a mesma ideia que vi neste script:

Mas não consigo por conta do local_file_update_file_path

Quando mandas tirar a foto já lhe estás a dizer onde gravar o ficheiro, não consigo perceber o objectivo do resto do código…

@j_assuncao, e como faço para recuperar a imagem que foi gravada com nome {{ now().strftime("%Y%m%d-%H%M%S") }} pois terei mais de uma imagem com nomes diferentes gravadas na mesma página?

Dependo do que chamas de recuperar… O que queres fazer?

@j_assuncao , mais ma vez, obrigado pela ajuda!

Estou implementando a notificação para meu telefone através mobile_app até aqui, tudo certo, pois: grava a imagem no HA corretamente, visualizo a miniatura da imagem na notificação, mas ao clicar para exibir a imagem, ela recupera a primeira imagem e não a última - a mesma enviada como miniatura - eu não consegui resolver isto. Segue o meu código final:

script:

video_porteiro_audio:
sequence:

- service: media_player.play_media
  data:
    entity_id:
      - media_player.ptechoshow
      - media_player.ptecho
    media_content_type: sound
    media_content_id: amzn_sfx_doorbell_chime_02
    
- service: notify.alexa_media
  data:
    data:
      type: tts
    target: 
      - media_player.ptechoshow
      - media_player.ptecho
    message: 'Pedro, alguém apertou o botão do vídeo porteiro!'

video_porteiro_snapshot:
alias: Video Porteiro Snapshot
description: ‘Gera as fotos ao acionar o botão’
sequence:
- service: camera.snapshot
data:
entity_id: camera.video_porteiro_camera
filename: ‘/config/www/cameras/video_porteiro/VP_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg’

automation:

  • id: video_porteiro_notificacao
    alias: ‘Video Porteiro Notificação’
    trigger:
    • platform: state
      entity_id: binary_sensor.video_porteiro_button
      from: ‘off’
      to: ‘on’
      action:

    • service: script.turn_on
      entity_id: script.video_porteiro_snapshot

    • service: script.turn_on
      entity_id: script.video_porteiro_audio

    • service: notify.mobile_app_redmi_note_9s
      data:
      title: “PORTÃO DA ENTRADA”
      message: ‘Veja quem apertou o botão do video porteiro!
      data:
      group: Seguranca # agrupar as notificações e organizar o menu suspenso de notificações.
      color: ‘red’ #’#2DF56D’ # cor do ícone do HA
      sticky: ‘true’ # or ‘false’ # evitará que a notificação seja descartada quando o usuário selecioná-la.
      clickAction: ‘https://NABUCASA.ui.nabu.casa/local/cameras/video_porteiro/video_porteiro.jpg’ # página do HA a ser acessada
      importance: high
      image: ‘https://NABUCASA.ui.nabu.casa/local/cameras/video_porteiro/VP_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg’

Existe uma maneira de contornar isso, em vez de gravares uma imagem gravas duas. A primeira imagem com timestamp e a segunda sem timestamp. A que não tem timestamp vai ser sempre sobreposta pela ultima que for gravada porque o nome é sempre igual.


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade