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
Tomadas Tuya pelo Home Assistant, por código
Ler e comandar tomadas Tuya pela API do Home Assistant com Node puro — e as duas armadilhas que só aparecem medindo.
Home Assistant - Identificando se você esta conectado na Internet
Saiba como identificar facilmente se sua casa está conectada à internet usando o Home Assistant e tome medidas rápidas em caso de falha na conexão
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