Pular para o conteúdo
Home Assistant

Home Assistant — Convertendo arquivo em Base64

Atualizado em
Capa do artigo: Home Assistant — Convertendo arquivo em Base64

Olá Gente!

Depois dos tutoriais de Salvar SnapShot e Vídeo de uma Câmera você deve ter se deparado com um problema.

Muitas APIs precisam receber o arquivo em Base64.

Isto deveria ser muito simples, mas se mostrou bem mais complexo.

A primeira coisa a fazer, é criar uma função “shell”, nas configurações do Home Assistant, que ao ser chamado ira converter o arquivo.

Para isto, abra o arquivo de configurações do Home Assistant (configuration.yaml) e adicione a linha abaixo:

shell_command:
  get_base64_image: /bin/bash -c "cat '{{ arquivo }}' | base64 -w 0"

Estas linhas, irão criar um serviço “get_base64_image”, que iremos chamar, passando o arquivo, e ira nos retornar o conteúdo em base64.

Agora iremos criar um Script, que ira tirar um Snapshot de uma câmera, depois ira converter o arquivo em Base64 e ira enviar o arquivo (Já codificado) para um serviço de notificações:

alias: servico_1
sequence:
  - variables:
      arquivo_nome: "{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg"
  - service: camera.snapshot
    data:
      entity_id: camera.quarto_main
      filename: /config/www/{{ arquivo_nome }}
  - service: shell_command.get_base64_image
    data:
      arquivo: /config/www/{{ arquivo_nome }}
    response_variable: arquivo_raw
  - service: notify.whatsapp
    data:
      message: Foto do Quarto
      data:
        arquivo: "{{ arquivo_raw.stdout }}"
mode: single

Vamos entender este script:

1.
Criamos a variável “arquivo_nome” para conter um nome da imagem.

2.
Chamamos o serviço “camera.snapshot” para tirar um SnapShot da camera.

3.
Chamamos a função “shell_command.get_base64_image”, que criamos anteriormente dentro do “configuration.yaml”.

Observe que aqui, passamos como parâmetro o caminho completo do arquivo:

arquivo: /config/www/{{ arquivo_nome }}

E o retorno da função, é salvo na variavel “arquivo_raw”:

response_variable: arquivo_raw

Observe também, que a função shell retorna um array, a saída da conversão fica no elemento “stdout”:

arquivo_raw.stdout

4.
Enviamos o arquivo codificado para a notificação “notify.whatsapp”.

Uma notificação customizada que tenho, que faz um REST para uma API externa.

Por hoje é isto, queridos desenvolvedores! 👩‍💼

Até logo! 👋

Leia também

Home Assistant

Home Assistant - Câmera utilizando um ESP32-CAM

Aprenda a configurar e integrar uma câmera ESP32-CAM no Home Assistant - Explore os recursos e funcionalidades da câmera ESP32-CAM e saiba como incorporá-la ao seu sistema Home Assistant com nosso guia passo a passo