You are currently browsing the archives for the Em curso category


ESPhome e Home-assistant

Se têm como eu uma série de ESP8266 e ESP32 espalhados pela casa, com código vosso e com sensores, sabem o que custa manter tudo a funcionar. Também sabe como as horas que gastaram para por a funcionar um destes equipamentos a primeira vez.

Mantenho alguns destes pela casa, tudo harmoniosamente ligado ao meu Raspberry Pi que, por sua vez, corre o Home-assistant (HASS). Mas não foi simples.

Uma das principais dificuldades era a necessidade de configurar manualmente os ESP no HASS. De cada vez que mudava qualquer coisa no ESP, lá tinha de ir também garantir que a configuração do HASS estava correta. E quando não estava, re-iniciar o HASS, o que demora o seu tempo.

Acrescentando a esta dor, haviam ainda as dificuldades em conjugar sistemas eletrónicos, de que percebo muito pouco, com código fonte, que não sou especialista.

O ESPhome tornou-me a vida muito mais fácil. O trabalho dele foi simplificar a manutenção do código que corre nos ESP. Facilita porque o código é gerado com base em configurações feitas num ficheiro YAML, mas também porque permite correr um interface gráfico onde tudo é feito.

Mas primeiro tive de perceber como é que aquilo tudo funcionava. O texto no homepage do ESPhome não é muito claro para os principiantes.

O ESPhome apresenta-se como um add-on do HASS.io, a versão de distribuição do Home-assistant (HASS), ou como um utilitário de linha de comandos.

Para quem tem HASS.io é só ir à loja de add-ons do HASS e começar. Provavelmente, a primeira vez que tiverem de fazer upload do vosso código para o ESP, convém ligá-lo por fio ao servidor HASS.io. Se programarem o vosso código para ter Over The Air (OTA), os carregamentos posteriores já em tem de fazer mais nada.

Para quem, como eu, instalou o HASS num servidor a correr uma distribuição de sistema operativo diferente da HASS.io.

Em qualquer das duas opções podem executar tudo à mesma da linha de comando de um outro computador, que é o que fiz. As instruções de instalação estão no próprio site do ESPhome.

Para correr o interface gráfico de utilizador, o que facilita bastante todo este trabalho, criem um diretório onde queiram que fiquem guardadas todas as configurações e executem o comando:

esphome <caminho para o diretório> dashboard --open-ui

O ESPhome vai lançar uma janela de browser e correr um interface gráfico que vos permite fazer tudo com os vossos ESP:

  • Configurar;
  • Carregar o código;
  • Monitorar o funcionamento;
  • Analisar os registos de execução (logs).

Cada ESP tem o seu código guardado depois no diretório que criaram e o binário resultante, compilado pelo ESPhome, está lá também, caso necessitem de forçá-lo de outro modo para um ESP.

O site ESPhome oferece uma série de receitas prontas a usar. Estas receitas incluem, para além do próprio YAML para alterarem e configurarem os vosso ESP, instruções de como ligar sensores e atuadores.

Depois de carregarem o código, basta irem ao interface do HASS e, nas configurações, usar a facilidade mais recente do HASS para as integrações.

Nas integrações identificam que querem acrescentar uma integração com ESPhome e introduzem o caminho para o novo ESP e a password que definiram quando configuraram o novo ESP.

Duas notas sobre segurança:

  1. Para além de outras defesas que tenho na minha rede, para evitar dissabores, o acesso aos ESP para carregamento de código OTA é feito com recurso a uma password complexa.
  2. Também, ao contrário dos utilizadores de HASS.io, não vou manter o ESPhome Dashboard aberto a não ser que precise dele, por isso não é instalado no meu Raspberry Pi.

Algumas coisas que deram jeito aprender:

Plantar um abacate em casa

Abacate no vaso a partir de semente

Abacate no vaso a partir da semente

Com o preço do abacate pela hora da morte, mesmo com desconto, decidimos plantar num vaso a nossa própria árvore de abacate. Há vários vídeos a apresentar árvores de abacate com frutos com cerca de 1 metro, e isso pareceu-nos uma forma de termos estes saborosos frutos sem a despesa de os comprar.

  1. Colocámos a semente num copo com água suspensa por palitos e esperámos. Enquanto esperámos, fomos mudando a água.
  2. Ao fim de uma semana ou duas, a semente rachou, esperámos mais um pouco, e enquanto esperámos, fomos mudando a água.
  3. Quando de dentro da semente brotou um raminho, mudámos para o vaso com terra fofa que está na foto.
  4. Passadas 4 semanas, o pequeno ramo é agora o que está na foto.

A pergunta para a qual não tenho ainda resposta é se a árvore dará frutos.

Nas pesquisas na web encontrei muitas teorias. Uns que diziam que crescido da semente só dava flores depois de 7 anos. Outros que diziam para enxertar um ramo de fruto de uma outra árvore de abacates já com frutos. Havia ainda quem desse uma receita de múltiplos tipos de adubo.

Por agora é a nossa pequena árvore de abacates.

 

 

O IPMA no Home-Assistant

Home Assistant

Home Assistant

Tenho andado entretido a automatizar a minha casa, por isso, o Home-assistant é um tema que visito muitas vezes.

Com a última evolução desde mordomo free open source, foi acrescentado um componente que permite apresentar os dados do nosso Instituto Português do Mar e Atmosfera (IPMA).

Este componente é da autoria do Diogo Gomes que tem um repositório no GitHub repleto de coisas para o Home-assistant.

Conforme os valores no código, o componente atualiza as previsões do IPMA a cada 30 minutos para as coordenadas ou estação meteorológica que tenham configurado.

Para já, vou testar este componente, mas vocês já sabem o que pensamos sobre os supercomputadores do IPMA e como as suas previsões são… voláteis.

 

Como saber os preços dos combustíveis através do seu Home-assistant

Home-assistant - Preços dos combustíveis

Home-assistant – Preços dos combustíveis

Há uns tempos tínhamos falado aqui convosco, o Home-Assistant é um mordomo no Raspberry Pi (ou outro computador). Atualmente tenho o meu integrado no Home da Apple para pode dizer “Hey Siri, turn on the lights”.

Agora já temos um script para obter e publicar o preço dos combustíveis de qualquer estações de combustível feito com a ajuda do @RodolfoVieira e as dicas do A.Sousa.

A solução facilita a obtenção e a publicação dos preços de combustíveis de múltiplas estações. A solução vai buscar os preços à direção geral de energia para as estações de combustível que configurem. Depois publica no Home-assistant.

A solução é um script em Bash faz o scrapping da informação e já está publicado no meu repositório do GitHub – Home-assistant-fuel-scrapper.

As instruções de uso em português estão no forum do Home-assistant português.

Raspberry Pi Zero W com camera ligada ao Homebridge

Raspberry Pi Zero W

Raspberry Pi Zero W

Recebi recentemente o novo da Raspberry Pi (RPi) Foundation, o RPi Zero W. Este computador miniaturizado é do tamanho de uma placa de prototipagem para o ESP8266, mas com porta USB, uma porta para uma camera, um leitor de cartão mini SSD e uma porta HDMI. Alguns dos detalhes destas portas não são de ignorar:

  1. A porta HDMI é mini, o que significa que podem não ter um cabo para ligar isto lá em casa.
  2. Só uma das porta USB é que permite a ligação de periféricos, o que dificulta ligar um rato e um teclado.

Por causa destes detalhes, o meu objetivo foi compor isto tudo sem ecrã (headless) e sem periféricos, como explico mais à frente e sem ter de passar pela confusão de ligar periféricos, ecrã e outros que teria mais tarde de desinstalar.

Preparação do disco

Tal como com outros RPi, para o começarmos a usar, necessitamos de um disco SSD, para o caso um mini SSD, formatado em Master Boot Record e FAT32. Tinha um mini SSD de 4GB disponível, por isso, o primeiro passo foi ligá-lo ao OSX e formatá-lo na linha de comando:

sudo diskutil eraseDisk FAT32 RPIZEROW MBR /dev/disk3

No meu caso, o disco a limpar era o “/dev/disk3”, mas no vosso caso pode ser outro. Esta operação no Windows é feita diretamente no interface gráfico de utilizador. Não sou fã do sistema operativo em causa, por isso, vou abster-me de mais  comentários.

Depois de formatado do disco, usei o software Etcher para copiar a imagem do MotionEyeOS para o disco.

Preparação do acesso remoto (SSH) e WiFi

Com o disco gravado, e antes de o colocar no meu RPi Zero W, foi necessário endereçar o problema do ecrã e periféricos. Para isso, o acesso remoto (SSH) tinha de estar disponível ao arranque e o RPi Zero W ligado à minha rede interna.

Para conseguir isto é necessário colocar no diretório “boot” do mini SSD um ficheiro com o nome “ssh” e outro com o nome “wpa_suplicant.conf”. O ficheiro “ssh” pode até estar vazio, mas o “wpa_suplicant.conf” necessita de ter a configuração do vosso WiFi, conforme exemplo abaixo:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=PT

network={
ssid=”O SSID da rede WiFi”
psk=”A password da rede WiFi”
key_mgmt=WPA-PSK
}

Primeiro acesso

O objetivo de instalar este dispositivo é ter uma camera de vigilância em casa, com Motion no RPi Zero W para mostrar imagens no meu Home-assistant e no meu iPhone através do Homebridge. Com o MotionEyeOS não é preciso instalar coisas. Está lá tudo o que é preciso.

O primereiro acesso é feito no url http://meye-*.home, onde o o * é substituido pelo número da instalação. Se não criaram o disco SSD com a opção de IP fixo, terão de procurar por todos os IP da vossa rede interna para saberem onde ficou o vosso RPi Zero B.

Depois de aceder, o primeiro acesso é feito com o user “admin” e a password de origem é só deixar o campo vazio. Escusado será dizer que devem criar uma password forte usando mnemónicas que incluam simbolos, letras e números.

Não se ponham com ideias de abrir portas no Router para aceder diretamente ao interface da camera porque isso é perigoso. Não sabemos muito bem quão robusto é este MotionEyeOS. É aqui que entra o Homebridge ou o Home-assistant.

Homebridge e Home-assistant

Este passo é um adicional. Posso fazê-lo porque tenho cá em casa um RPi 3 que está sempre ligado e onde corro software variado para recolha e apresentação de dados no meu iPhone através do Homebridge. A instalação do Homebridge é trivial. A configuração dos plugins, já nem tanto.

Para integrar os meus IoT sem ter de os configurar um a um no Homebridge para aparecerem no meu iPhone, estou a usar um plugin do Homebridge para este se ligar ao Home-assistant. Isto permite-me expor sensores de temperatura e interruptores nos dois meios, mas não permite partilhar a camera.

Para aceder à camera, esta ou qualquer outra camera ip, através do Homebridge, temos de instalar um dos plugins do Homebridge para cameras e configurar-lhe a localização da camera. O plugin que já testei foi o Homebridge-camera-ffmpeg.

Subredes numa ligação da NOS

Há muito tempo que tinha previsto separar a rede de casa em várias subredes. A proliferação de equipamentos, e certamente as boas práticas em termos de segurança, sugerem que não se misturem telemóveis, IOTs, computadores, e outros equipamentos. A rede era uma coisa muito controlada por mim, e por isso nada de WiFi para visitas, e coisas do género, o que me merecia algumas críticas…

Este fim de semana meti mãos à obra. Com os conhecimentos que tinha, devia ser uma coisa simples. Munido de um router simpático, comecei a configurar tudo, com várias redes internas separadas. A meio da coisa, resolvi começar a ligar à Internet, para começar a testar. Fui aí que descobri que o router da NOS não suporta este tipo de ideias…

Percorri vários foruns, e a ideia estabelecida é a de que tal não é possível. A única forma é a de utilizar o router da NOS em modo bridge e utilizar outro router para substituir o da NOS. A partir daí, fica limitado apenas às capacidades desse router. Por várias razões, não queria ir por aí, pelo que continuei a insistir, até descobrir uma solução (quase perfeita).

A solução passa por utilizar a funcionalidade de subrede nas “Definições” de “Rede Local” do router da NOS. Não consegui encontrar documentação detalhada desta funcionalidade, mas a verdade é que não procurei quase nada. Parece ser que o router cria uma sub-interface com o IP definido em “Gateway de sub-rede”, com a correspondente “Máscara de Sub-Rede”:

Subredes no router NOS

Tal possibilita que o router passe a saber que existe uma subrede adicional à da rede principal do router NOS. Note-se que o router NOS não suporta o conceito da rota estática (“static route”), pelo que a opção que eu acabei por fazer foi englobar toda a restante rede interna dentro da subrede 192.168.1.0/24, subdividindo-a posteriormente no meu router em várias subredes separadas. Admito, porque não testei, que se possam adicionar subredes adicionais no router NOS.

A configuração anterior não faz com que uma configuração tradicional funcione. Não existindo o conceito de rota estática, o router NOS pensa que os dispositivos da rede 192.168.1.0/24 estão directamente acessíveis. O router NOS não sabe, nem se lhe consegue dizer, qual é o endereço IP do nosso router interno! Por isso, quando tenta contactar com um dispositivo da rede 192.168.1.0/24, tem que enviar um pedido ARP para resolução do correspondente endereço MAC.

E é aqui que esta solução que encontrei deixa de ser óptima. Para que funcione, o nosso router tem que suportar algo chamado “Proxy ARP”: fazer-se passar pelos endereços IP da rede 192.168.1.0/24. Aí, o router NOS pensa que encontrou o endereço MAC do endereço IP com o qual está a tentar comunicar, mandando assim o pacote para o nosso router. Este, depois de receber o pacote, já sabe o que fazer…

Esta é uma solução um pouco rebuscada, e que terá alguns problemas de segurança. Dependerá sobretudo da forma exacta com que o nosso router implemente o “Proxy ARP”, algo que continuarei a investigar de seguida.