Raspberry Pi a simular um disco USB externo para uma moldura eletrónica de fotos

E se de repente decidirem usar o vosso Raspberry Pi (RPi) para simular um disco externo USB para utilizar na vossa moldura de fotos eletrónica? Isso é excesso de engenharia!

Aqui vamos jogar com 2 coisas diferentes e tentar juntar tudo numa só:

  • Moldura que mostra fotos que estejam num disco externo USB.
  • Um disco a que se pode ligar remotamente para colocar fotos.

A minha tese era que seria possível reutilizar uma moldura eletrónica já antiga, como a minha Rollei DF-80 memories, mas que não serve e recebe ficheiros ao mesmo tempo. Esta moldura eletrónica lê as fotos que coloco num disco externo USB, mas para isso tenho de ligar o disco fisicamente a um computador para onde previamente já tive de passar as fotos, copiar as fotos para o disco, retirar o disco do computador, colocar o disco na moldura… estão a perceber a coisa, não estão?

Hoje em dia já há até tem um produto à venda que faz isto com a ajuda de uma app, tudo muito cómodo e por cerca de 200€, mas eu já tinha a moldura e dois RPi ali à espera de um projeto. O que se pretende é passar a receber as fotos de qualquer equipamento sem tirar o disco da moldura, e depois ver as fotos na moldura eletrónica, tudo comodamente e sem sair do seu lugar.

Para atingir o objetivo, decidi usar o Raspberry Pi Zero W e:

  1. Instalar o Raspberry Pi OS Lite
  2. Instalar o Samba
  3. Configurar o Raspberry Pi como gadget de armazenamento em massa (g_mass_storage)

No final, também ainda insultei o RPi e tudo à sua volta umas quantas vezes, e tive de desejar com muita, mesmo muita força, que o sistema da moldura reconhecesse o disco que lhe disponibilizei.

Se estiverem interessados em repetir esta receita, basta seguir as instruções que escrevi nas parte 1, 2 e 3 deste artigo. No final, há uma parte Bonus que explica como colocar as fotos na moldura a partir da app do Home-assistant.

Parte 1 – Instalar o Raspbian OS Lite

Escolhi a distribuição Debian do Raspberry Pi por facilidade de utilização. Podem ir até ao site da distribuição Raspberry PI OS (Raspian OS) e seguir as instruções. Vão precisar de uma forma de escrever para o disco SSD que vão usar. Facilita utilizarem a aplicação que o Raspbian OS já oferece para o vosso sistema operativo.

  1. Selecionem a versão de sistema operativo.
  2. Selecionem o disco onde querem escrever o novo sistema operativo. Aconselho utilizar logo a opção de configurar a ligação WiFi e outras disponíveis nesta aplicação.
  3. Selecionem escrever (Write).

A aplicação faz a verificação do disco e quando terminar, é só colocarem o disco no Raspberry Pi e esperar uns momentos.

O vosso utilizador e password podem ser logo configurados se utilizarem a aplicação do Raspberry Pi OS, o que vos vai poupar algum trabalho na parte seguinte desta tarefa.

O novo sistema operativo deve ficar disponível via SSH (Secure Shell) na vossa rede WiFi através do nome que derem ao Raspberry Pi na configuração. Vai ser por aqui que vamos continuar.

Parte 2 – Instalar o Samba

Podem aceder ao vosso Raspberry Pi remotamente a partir da linha de comandos ligando-se ao nome que deram na configuração ou através do IP com que ficar na vossa rede.

ssh pi@raspberrypi.local

Uma vez remotamente a controlar o vosso Raspberry Pi, podem começar a executar o conjunto de comandos necessários ao nosso objetivo.

Primeiro, devem atualizar e limpar a instalação.

sudo apt update && sudo apt upgrade --show-upgraded
sudo apt clean
sudo apt autoremove -y

Podem verificar se há algum pacote que esteja instalado, para o remover por vossa conta e risco, listando todos os pacotes com sudo dpkg -l.

Como não dava para instalar uma solução NAS, como explico na ultima secção deste artigo, e já tenho o Home-Assistant, decidi-me por instalar o servidor de ficheiros Samba, que é compatível depois com vários sabores de computador e pode já hoje em dia ser montado remotamente no Home-assistant, facilitando a gestão de ficheiros pela app e por browser.

sudo apt install samba

Dependendo do vosso RPi, a instalação vai demorar mais ou menos tempo. Podem ignorar a mensagem de instalação a dizer que ele não se configurou como um Domain Controler. Não me parece que queiram controlar remotamente os vossos computadores lá de casa a partir da vossa moldura de fotografias.

Podem testar a instalação do servidor Samba localmente.

sudo systemctl status nmbd

Se tiver corrido tudo bem, vão ver uma mensagem verde a dizer que está ativo e a ser executado. O vosso Raspberry Pi vai aparecer-vos na rede doméstica como uma máquina Windows, para já sem pastas partilhadas.

Agora, criam uma pasta para simular um disco. Vão fazê-lo no diretório do utilizador para facilidade de teste e configurar logo os acessos. Não se preocupem muito para já com isto. Mais à frente vamos mudar.

mkdir /home/pi/datafolder
chmod 777 /home/pi/datafolder

Para configurar o acesso a um disco, vão ter de editar o ficheiro de configuração do serviço Sama. Se tivessemos um NAS seria aceder a um interface gráfico de utilizador, mas enfim… Venha lá mais instruções para a linha de comandos.

sudo nano /etc/samba/smb.conf

A configuração não tem de ser necessariamente esta, até porque aquele 0777 que vão escrever quer dizer que todos podem tudo (ler, escrever e executar). Depois de testarem que tudo funciona, convém reverem a configuração do vosso smb.conf.

[Photos]
comment = RPi Share for photo frame
path = /home/pi/datafolder
create mask = 0777
directory mask = 0777
writable = true
security = share
browseable = true
public = yes

Criada a configuração, tem de reiniciar o serviço para que leia a configuração (Sem comentários).

sudo service smbd restart

Tudo instalado e configurado, podem passar à Parte 3.

Parte 3 – Configurar o Raspberry Pi como gadget de armazenamento em massa (g_mass_storage)

O que querem é que ao mesmo tempo o Raspberry Pi receba os ficheiros e os disponibilize à moldura eletrónica, como se de um disco externo USB se tratasse.

A questão é que agora, o disco não vai vos aparecer na moldura porque o RPi está a funcionar como um computador e não como um gadget de armazenamento para os vossos dados.

Para configurar o Raspberry Pi como um gadget de armazenamento (mass storage) terão de editar o ficheiro de configuração do próprio RPi.

sudo nano /boot/config.txt

No final do ficheiro vão ter de acrescentar dtoverlay=dwc2. Para gravar e sair do nano, carreguem em na tecla ctrl + O e depois ctrl + X.

Vão ter de acrescentar também ao ficheiro de configuração dos módulos do sistema operativo o mesmo dwc2. Este dwc2 é o nome do driver de kernel linux que vai fazer o serviço, mas que, por omissão não vem configurado.

sudo nano /etc/modules

No final do ficheiro, acrescentem dwc2 e gravem com ctrl + O e ctrl + X.

Para tudo funcionar, ainda faltam maus umas voltas. Vamos ter de:

  1. Criar um contentor (container) para simular o disco que será disponibilizado como gadget.
  2. Montar o disco no filesystem.
  3. Atualizar o container de cada vez que lá sejam colocados ficheiros.

Para criar o container, executem o comando abaixo, tendo em conta que o valor que colocam em count é o espaço que estão a reservar para simular o disco. Neste caso, os 2048 equivalem a 2GB.

sudo dd bs=1M if=/dev/zero of=/piusb.bin count=2048

Depois de criado este contentor, têm de formatar e montar o disco automaticamente para que possa ser utilizado.

sudo mkdosfs /piusb.bin -F 32 -I
sudo mkdir /mnt/piusb
sudo nano /etc/fstab

No ficheiro /etc/fstab, vão ter de acrescentar uma linha que monte o disco automaticamente.

/piusb.bin /mnt/piusb vfat users,umask=000 0 2

Para montar todos os discos configurados em /etc/fstab, correm o comando sudo mount -a. O vosso sistema encarrega-se disto no futuro.

Para disponibilizar o disco piusb na rede através do Samba, já adivinharam. Vão ter de configurar o Samba, como já fizemos anteriormente, mas agora a apontar para o disco piusb.

sudo chmod 777 /mnt/piusb/
sudo nano /etc/samba/smb.conf

No ficheiro /etc/sambe/smb.conf, podem acrescentar o vosso novo disco a partilhar, alterando o caminho para a pasta para /mnt/piusb.

[Photos]
comment = RPi Share for photo frame
path = /mnt/piusb
create mask = 0777
directory mask = 0777
writable = true
security = share
browseable = true
public = yes
guest ok = yes
read only = no

Para ligar o RPi em modo gadget de armazenamento em massa, ainda vão ter lhe ligar o módulo que anteriormente configurámos e dizer-lhe onde está o ficheiro que simula o disco.

sudo modprobe g_mass_storage file=/piusb.bin stall=0 ro=1

Depois de testarem, escrevendo algo, lendo e sincronizando os dados com o comando sudo sync, podem desmontar o disco do interface USB via modprobe. O disco vai continuar disponível via Samba.

sudo modprobe -r g_mass_storage

Algo que o sistema não se encarrega é a sincronia disto tudo. De cada vez que copiam imagens para este /mnt/piusb, seja por que via for, teriam de fazer um conjunto de operações, e lá voltávamos ao que nos trouxe até aqui: demasiadas operações só para ver umas fotos novas na nossa moldura eletrónica. Aqui a revista MagPi deu uma ajudinha.

Terão ainda de criar algo que engane o equipamento que vai receber o disco externo para que fique no modo como se lhe tivessemos tirado e voltado a meter o disco USB externo, e assim recarregar a lista de ficheiros com as mudanças.

Vamos necessitar do Python, do Pip3 e de um script que vai fazer de cão de guarda (watchdog) e executar instruções de cada vez que detete uma alteração.

sudo apt install python python3-pip
sudo pip3 install watchdog

cd /usr/local/share
sudo wget http://rpf.io/usbzw -O usb_share.py
sudo chmod +x usb_share.py

Vão ter de adaptar o ficheiro usb_share.py para que esteja de guarda ao /mnt/piusb. Para isso, alterem o ficheiro com sudo nano /usr/local/share/usb_share.py e onde estiver WATCH_PATH = "/mnt/usb_share", tem de passar a estar WATCH_PATH = "/mnt/piusb".

Para isto tudo funcionar, temos ainda de colocar o script como um serviço, assim ele funciona logo ao arranque do RPi e continua a funcionar.

cd /etc/systemd/system
sudo nano usbshare.service

No ficheiro usbshare.service vamos colocar as configurações para o ficheiro python que instalámos funcionar como um serviço.

[Unit]
Description=Watchdog for piusb

[Service]
Type=simple
ExecStart=/usr/local/share/usb_share.py
Restart=always

[Install]
WantedBy=multi-user.target

Depois de gravarem, com ctrl + O e sairem com ctrl + X, tem de ativar e iniciar o vosso novo serviço.

sudo systemctl daemon-reload
sudo systemctl enable usbshare.service
sudo systemctl start usbshare.service

O serviço vai procurar por alterações no /mnt/piusb e esperar 30 segundos antes de cumprir a sua função, por isso, sejam pacientes.

Antes de desligar o RPi para o mudarem de sitio, não se esqueçam de fazer sudo halt para não danificar os discos.

Na parte seguinte deste artigo explico como usar o Home-assistant com isto tudo. Se não tiverem o Home-Assistant, também podem enviar a imagem a partir de qualquer computador para a vossa partilha de ficheiros Samba já instalada.

Bonus – Copiar ficheiros para o RPi USB Gadget a partir do Home-Assistant

A parte de receber ficheiros podia ser feita só com cópia de ficheiros, mas não tinha a mesma graça e era preciso andar às voltas com a linha de comandos. Se tiverem o Home-assistant, podem ir ao vosso menu de gestão de armazenamento em rede (Netowrk Storage), adicionar a vossa nova drive remota como Media, com o protocolo Samba ligado para o vosso novo servidor, e dar-lhe o nome Photos, ou outro à vossa escolha.

Só falta resolver a questão de “Então mas e agora como é que ponho lá as fotos com o Home-assistant?”.

Para além do interface gráfico de utilizador que é disponibilizado via browser, o Home-assistant oferece as Companinon App, o que facilita enviar as fotos do vosso smartphone.

Em qualquer interface gráfico de utilizador, podem seguir os mesmos passos: Media > My Media > Photos. Está feito.

Atenção ao tamanho das imagens que enviam para a vossa moldura. Isto como é uma coisita já antiga e com poucos recursos, é capaz de se engasgar com esses novos formatos de grande dimensão que são hoje em dia gravados no vosso smartphone por cada foto. No caso do iPhone, depois de selecionar as fotos que quero enviar, podem carregar e selecionar o tamanho mais pequeno (Small).

Raspberry Pi Zero W v1.1 de 2017 e Raspberry Pi 2B de 2015

Nas referências deste artigo vão encontrar uma série de voltas que dei a tentar colocar uma solução de gestão do sistema via browser. Estas soluções estão na categoria dos Network Attached Storage (NAS).

A maioria dos NAS open source mais comuns só podem ser instalados em arquiteturas de 64-bit, o que significa que o vosso Raspberry Pi antigo pode não servir. No meu caso, o que usei foi um Raspberry Pi Zero W v1.1 de 2017 e um Raspberry Pi 2 B de 2015, por isso tive de procurar uma solução 32-bit.

Por teimosia, acabei por instalar o Webmin no Raspberry Pi Zero W e no Raspberry Pi 2 B para ter um interface simplificado de configuração, até porque não sou muito fluente em smb.conf, mas isso fica para outro dia.

curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sudo bash setup-repos.sh
sudo apt install --install-recommends webmin

O vosso acesso via browser ao Webmin vai ficar disponível em https://raspberrypi.local:10000. Vão ter de aceitar o certificado digital autoassinado que vem de origem e o port 10000 podem alterar depois. O username e password são o mesmo que usaram para se ligarem via SSH.

Para controlar os discos, instalei os Smartmontools que serve depois no Webmin para ter Self-Monitoring, Analysis, and Reporting Technology (SMART) dos discos compatíveis.

sudo apt install smartmontools

Todos os pacotes que instalei e testei eram identificáveis pelo posfixo da arquitetura armhf. Para confirmarem a arquitetura do vosso Raspberry Pi podem correr o comando dpkg --print-architecture.

Se não se lembrarem do nome que deram ao vosso RPi, façam cat /etc/hostname e podem ler o resultado.

Todos os Raspberry Pi foram tratados de maneira humana e sem sofrimento para efeitos deste artigo.

Referências:

Home-assistant é dos projetos com maior atividade no GitHub

Home Assistant
Home Assistant

O fim do ano de 2022 está quase aí e começa a ser altura de se fazer o balanço do ano. O GitHub publicou o seu “The state of the Open Source” com uma análise rápida dos dados recolhidos no que é hoje um dos principais sítios para suportar e acompanhar os projetos colaborativos de desenvolvimento na Internet.

Nesta descrição, o Home-assistant, projeto de que aqui nos tornámos fãs, foi identificado como o projeto com o segundo maior número de contribuições e o primeiro projeto em termos de crescimento do número de utilizadores que contribuem. Convém fazer notar que estes contributos são as participações efetuadas pelos utilizadores na forma de desenvolvimento de código fonte, através de pedidos de alteração, confirmação de código a alterar, comentários, abertura de incidentes de melhoria e correção e outras tarefas necessárias para garantir que estas coisas todas continuam a funcionar.

Este esforço partilhado tem sido apoiado pelas empresas participantes que mantêm o seu código fonte no GitHub, afetando assim o esforço pago pelos investidores em projetos que são depois beneficiados pela participação desta comunidade. A maioria dos projetos com maior atividade em destaque em 2022 são na sua maioria projetos destes, onde o Home-assistant é a exceção, ainda que os seus principais de colaboradores e fundadores estejam na Nabu Casa.

Mudar o Home-assistant de máquina

Home Assistant
Home Assistant

Um dia é dia e o vosso Home-assistant tem de ser mudado de máquina. Tem de mudar, quer seja porque querem melhorar o hardware, ou porque querem mesmo refazer o sistema operativo que, sabe-se lá porquê, instalaram numa versão de sistema operativo que não era de 64 bit. E agora, tinham o vosso sistema todo configurado e a funcionar, por isso não estão com muita vontade de perder isso. Este é mais ou menos o meu caso.

A minha lista de afazeres inicial, numa perspectiva mais geral, foi a seguinte:

  1. Verificar que estão num disco externo todos os scripts, configurações e outros ficheiros do sistema original acrescentados para além da instalação do Home-assistant.
  2. Fazer um backup do Home-assistant.
  3. Copiar o novo Home-assistant para o micro sd.
  4. Arrancar o novo Home-assistant.
  5. Recuperar o backup.

O meu sistema é composto por um Raspberry Pi 4, com um micro sd de 64 GB e um disco externo de 500 GB. Por hábito, já mantenho a parafernália que vou fazendo à minha medida no disco externo, por isso, em princípio, tudo isto seria um passeio. Só que não…

  • Tinha um script no home do root que verifica se o disco externo está montado, e, se não estiver, monta.
  • Tinha um ficheiro .git-credentials no home do root com o token de autenticação da minha conta GitHub.
  • Tinha chaves de autenticação no .ssh para aceder a outros sistemas a partir do RPi, como por exemplo o MotionEyeOS de uma das cameras.
  • Não me recordava que modelo de Raspberry Pi 4 comprei.
  • Tinha qualquer coisa no crontab de um dos utilizadores chave.
  • Tinha qualquer coisa no fstab.
  • O Home-assistant insiste em fazer backup com o conteúdo do disco externo porque o mount point é no /usr/share/hassio/share/.
  • Toda a casa está dependente do Home-assistant neste momento por causa do AdGuard, e por isso há que reconfigurar a rede para distribuir um DNS diferente já que o IP do Home-assistant vai estar indisponível por uns momentos.

Uma vez que decidam iniciar o processo, se forem como eu, vão pensar: “Ah e tal, se calhar é má ideia fazer isto sem um backup integral do SSD e se correr mal e tal…”.

Preços dos combustíveis melhorado para o Home-Assistant

Preços do combustível no Home-Assistant

Para obter o preço dos combustíveis do site da DGEG vão ter de mexer um bocado com as ferramentas de desenvolvimento de um browser internet de forma a descobrir o identificador único do posto de combustível onde querem ler os preços. O que estão à procura é um pedido ao site da DGEG com “/api/PrecoComb/GetDadosPostoMapa?id=” no URL.

Clicando no mapa no site da DGEG, com as ferramentas de desenvolvimento do browser abertas, quando clicarem no posto de onde querem ver os preços, por exemplo um posto no Barreiro, o pedido com os dados dos preços é feito pelo browser nesta forma:

--> https://precoscombustiveis.dgeg.gov.pt/api/PrecoComb/GetDadosPostoMapa?id=67080&f=json

Se abrirem este URL numa janela/tab nova, vão ver os dados sem a decoração, e que se pedirem 0 (zero) elemento do grupo Combustiveis, está lá a informação para o sensor:

TipoCombustivel“GPL Auto”
Preco“0,919 €/litro”

Infelizmente, os dados na DGEG misturam unidades (€/litro) de medida com valores (0,919), obrigando a alguma ginástica de pré-preparação antes de serem apresentados no Home-Assistant. Isso foi feito com o templating do Home-Assistant e algumas substituições com RegEx. Fpo também preciso lidar com o valor para que o Home-Assistant entende-se como um valor decimal:

  • float: Converte o resultado do value_json num décimal;
  • | regex_replace: substitui o texto ” €/litro” e “,”.

Para inserirem o vosso sensor RESTfull no Home-Assistant ainda é preciso editar a configuração manualmente. Abrem o vosso ficheiro config.yaml e inserem lá o URL:

sensor:
  - platform: rest
    resource: https://precoscombustiveis.dgeg.gov.pt/api/PrecoComb/GetDadosPostoMapa?id=67080&f=json
    name: "fuel_posto_67080_barreiro_gpl"
    scan_interval: 3600
    value_template: '{{ float(value_json.resultado.Combustiveis[0].Preco | regex_replace(find=" €/litro", replace="", ignorecase=True) | regex_replace(find=",", replace=".", ignorecase=True),default) }}'
    unit_of_measurement: '€'
  - platform: rest
    resource: https://precoscombustiveis.dgeg.gov.pt/api/PrecoComb/GetDadosPostoMapa?id=67080&f=json
    name: "fuel_posto_67080_barreiro_gasoleo_simples"
    scan_interval: 3600
    value_template: '{{ float(value_json.resultado.Combustiveis[2].Preco | regex_replace(find=" €/litro", replace="", ignorecase=True) | regex_replace(find=",", replace=".", ignorecase=True),default) }}'
    unit_of_measurement: '€'

Neste exemplo insiro apenas 2 sensores, mas podem repetir o exercício tantas vezes quantas quiserem. No controlo do vosso servidor Home-Assistant, depois de selecionar “REST entities and notify services”, ele recarrega os valores.

Em 2018, quando o @RodolfoVieira, da Comunidade Portuguesa de Home-Assistant (CPHA) me pediu para o ajudar a obter os preços do combustível para publicar no seu dashboard doméstico, não me passava pela cabeça que viesse a ser utilizado por outras pessoas.

Nessa altura, o site de onde íamos buscar os valores não facilitava muito a vida a quem queria incluir os dados nas suas próprias construções.

A solução na altura foi ler o conteúdo, fingindo ser um browser internet, e identificar no texto do site as partes interessantes para recolher, enviando-as ao Home-Assistant para os apresentar.

Hoje em dia, com estes sites a serem construídos com dados mais abertos, é possível obter a informação de forma mais simples para o Home-Assistant.

O Home-Assistant oferece o sensor RESTful, uma integração para este tipo de informação que, depois de algum trabalho para limpar os dados obtidos, permite obter o mesmo resultado com muito menos esforço de configuração.

Hoje, há utilizadores do CPHA que publicam os resultados obtidos, como o que hoje ilustra este post. Há também utilizadores que, por integraram o Home-Assistant com o Telegram, conseguem de qualquer lado enviar uma mensagem e receber de volta o preço dos combustíveis.

Automatizar a casa com ESPhome, desta vez com Shelly

Esta semana comecei uma nova etapa de automatizar a minha casa com ESPhome. Vou substituir os meus fieis interruptores de parede SonOff por interruptores normalíssimos, aditivados nas ligações elétricas com equipamentos Shelly, mas com o twist de os carregar com software gerado a partir do ESPhome..

Representação do Shelly 1 instalado por trás de um interruptor elétrico de parece

Com o Shelly e ESPhome é possível adicionar funcionalidades a um interruptor antigo e ainda assim evitar preocupações por ter dados nos computadores dos outros, isto é, na nuvem (Cloud) ou vir a ter código obsoleto instalado.

Por deformação profissional, vou acompanhando os males (vulnerabilidades) de que vêm sofrendo cada vez mais os sistemas de informação, mas também outros males que decorrem do uso que é dado aos nossos dados. A titulo de exemplo, vejam:

Tenho utilizado na minha casa o Home-assistant com equipamentos baseados em Espressif, os quais carrego com código aberto gerado com a ajuda do ESPhome. Esta configuração evita expor os meus dispositivos eletrónicos de controlo doméstico às redes de informação dos outros por os ligar a nuvens, ou utilizar código de software fechado, sem ter como os atualizar porque o fabricante desapareceu ou por obsolescência programada.

A grande diferença entre ter interruptores completos programáveis e ter apenas o circuito elétrico intercetado por uma peça de eletrónica programável, é que é possível escolher usar os interruptores que visualmente melhor combinam com a minha decoração.

Para quem já tenha a experiência com os ESP8266 ou ESP32 da Espressif, a maior dificuldade vai ser mesmo lidar com eletricidade a 220V (que “aleija” um bocado se nos distrairmos, para além de poder pegar fogo à casa).

Na prática, o Shelly regista as alterações de posição do interruptor físico, mudando a posição do interruptor programável através do software. Isto permite acionar a luz diretamente no interruptor ou por instrução remota via WiFi.

Esquema de ligação elétrica do Shelly 1 v3

O software que vem dentro do equipamento (firmware) Shelly faz tudo, e tem até a possibilidade de não o ligar à nuvem. Existe mesmo uma integração direta com Home-assistant para equipamento Shelly, que se pode instalar através da loja de add ons HACS.

Tendo em conta o meu objetivo de libertar o equipamento, que possivelmente também é o vosso objetivo, podem optar por substituir o firmware, através da injeção direta nos pins de programação do Shelly, com a ajuda de um adaptador ou usando a funcionalidade de substituição do firmware Shelly sobre wifi. (Esta segunda opção é, no meu entender, menos fiável porque pode falhar e ficam com o equipamento inutilizado)

Shelly 1 Pin out

Para quem não esteja muito habituado a configurações com YAML, o que não é o caso para os veteranos de Home-assistant, ou não tenha a certeza que os equipamentos que comprou possam ser utilizados com ESPhome, pode sempre consultar os exemplos de configuração ESPhome para vários equipamentos partilhados no ESPhome-Devices.

Controlar a energia elétrica lá de casa

Com a introdução no Home-assistant do Energy Dashboard, os dados de consumos energéticos que é hoje em dia possível obter nos contadores podem ser apresentados nos ecrãs de controlo do resto da casa. Para além dos dados obtidos no IoT, apresentados nos gráficos, é também utilizada a informação no site Electricity Map para obter os dados de impacto ambiental.

Home-assistant – Energy Dashboard

Em Portugal, o contador eRedes disponibiliza uma porta de comunicações que, com o conhecimento suficiente, permite recolher os dados e expor esses dados, e foi o que fiz. Recorrendo a um firmware Tasmota alterado e um script Bash que publiquei no GitHub, construi o pequeno IoT que está no meu contador e, em conjunto com o Home-assistant, regista os dados necessários para depois criar o Energy Dashboard.

Dados obtidos do contador eRedes através da integração com o Tasmota