Havendo já alguns projetos pelo fórum (o do @nunor [link] é especialmente bom) de como medir o consumo de água, admito que a maioria dos métodos (fluxómetro, pulsos, câmeras e AI, etc.) nunca me atraiu; ora pela intervenção direta que se teria de fazer junto ao contador do fornecedor, ora a própria distância ao contador e, no meu caso, a falta de uma fonte de alimentação no local, assim como outras variantes logísticas.
Os pré-requisitos para este projeto eram bastante simples:
- Pouco consumo
- Distância
- Comunicação com Home Assistant
- …e outros tantos que me fui lembrando ‘pelo caminho’
Atenção que a solução que eu encontrei está limitada ao método que o próprio fornecedor de água utiliza para fazer as suas leituras. Se esse for alguém andar pela rua a tomar notas dos valores dos contadores, não vejo grandes alternativas.
Outra coisa a ter em atenção é que tem de haver acesso a WiFi. Como tenho Access Points exteriores isso não foi problema.
Felizmente, no meu caso, é utilizado um sensor de RF - aqueles utilizados em vários contadores de luz, gás e até de água, que emitem em períodos específicos uma comunicação que permite aos fornecedores, passando junto às casas num veículo, equipado com receptores, automaticamente receberem as leituras.
Exemplos:
Se tiverem a sorte de ter um desses, o passo seguinte será procurarem a documentação (caso exista) de dito aparelho e tentarem obter alguma informação técnica.
Exemplo de um Diehl IZAR RC I R4:
Isto permite-nos saber, por exemplo, quais as frequência utilizadas pelo módulo.
Tendo isto feito, existem duas soluções:
A primeira utiliza algo como um Raspberry (o único que tinha livre era um 4 ; mas pelo que vi deve funcionar até com um Zero) e um receptor RTL-SDR - que é um dongle USB do estilo dos antigos DVB-T TV tuners.
O site www.rtl-sdr.com será uma optima fonte de referência para terem uma melhor ideia do que se trata e de todas as suas aplicações.
Ditos dipositivos podem ser comprados nos sitios habituais. Ex: Amazon.
Neste caso, a verdade é que o raspberry acaba por ser algo desaproveitado - os recursos utilizados não são demasiado elevados, mas de notar que as temperaturas sobem bastante; o próprio dongle USB junta-se à festa e passado algum tempo nem se pode tocar.
Exemplo de monitorização:
Não é a solução que eu aconselho, mas é óptima para testes iniciais.
Basta fazerem a instalação habitual do Raspberry Pi OS, através do Raspberry Pi Imager; escolherem uma imagem básica e realizarem a pré-configuração que permita aceder o raspberry por ssh.
Depois da instalação e a colocação do cartão SD, podem utilizar algo como o Putty e aceder ao Raspberry, colocando de seguida os inevitáveis comandos:
sudo apt update && sudo apt full-upgrade
sudo reboot now
Aconselho também instalarem o uhubctl, caso seja necessário remotamente desligar e ligar de novo o dongle USB. Eles costumam dar o habitual “error -6”, principalmente quando se anda a fazer testes e o dongle fica ocupado no processo anterior.
sudo apt-get install libusb-1.0-0-dev git build-essential
git clone https://github.com/mvp/uhubctl
cd uhubctl
make
sudo make install
Depois de novo reboot.
sudo uhubctl
Neste exemplo podem ver que o dongle USB (Nooelec NESDR SMART v5) está conectado no hub 1-1 e na porta 2.
Portanto, se fosse preciso desliga-lo e depois ligar:
sudo uhubctl -l 1-1 -p 2 -a off
sudo uhubctl -l 1-1 -p 2 -a on
Adiante…
Agora precisamos de falar de que programas vamos utilizar:
- RTL_433 - apesar do nome é genérico e lê transmissões em várias frequências (433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz, e 915 MHz).
- Wmbusmeter - recepciona os telegrams transmitidos pelos contadores e converte-os em ‘formato legível para humanos’, csv e json.
O RTL_433 é, porventura, o mais simples.
Instalar:
sudo apt-get install rtl-433
E começar a usar; exemplo:
sudo rtl_433 -f 868M
Para verificar todos os dispositivos que estão, ao alcance, a transmitir na frequência 868MHz.
No Github do projecto podem ver os 260 dispositivos que são suportados.
Infelizmente, no meu caso, detectei estações meteorológicas, sistemas de rega, termostatos de aquecedores a óleo, etc.; mas não detectei nenhum contador de água.
No entanto, se encontrarem os vossos; de seguida terão de enviar esses dados por MQTT para o HA.
Video (site) com processo bem explicado.
Quanto ao wmbusmeter, têm várias formas de o utilizar. Como um docker container ou como um daemon, no raspberry.
Não vou passar para aqui todos os comandos. Apenas têm de seguir os passos que estão bem documentados, no GitHub, sobre como instalar nas várias plataformas.
Concluída a instalação têm de fazer um scan:
wmbusmeters auto:t1
Este método encontrou um sem fim de contadores de água. A melhor forma de conseguirem identificar o vosso é terem uma noção da leitura presente, e comparar com os resultados. Quando encontrarem o id & driver que corresponde ao vosso apenas têm de os acrescentar criando um ficheiro:
sudo nano /etc/wmbusmeters.d/MyTapWater
E pondo os dados que obtiveram no scan prévio:
name=MyTapWater
id=xxxxxxxx
driver=xxxxx
#key=caso exista
Estando isso feito, terão de alterar o ficheiro de configuração do wmbusmeters:
sudo nano /etc/wmbusmeters.conf
loglevel=normal
device=rtlwmbus
logtelegrams=false
format=json.
meterfiles=/var/lib/wmbusmeters/meter_readings
meterfilesaction=overwrite
shell=/usr/bin/mosquitto_pub -h ip_mqtt_broker -p 1883 -u mqtt_user -P mqtt_password -t wmbusmeters/"$METER_ID" -m "$METER_JSON"
Podem, depois disso, utilizar um programa como o MQTT Explorer e verificar se estão a receber os dados.
Exemplo:
Se tiverem dúvidas podem perguntar que tentarei ajudar.
Podem, também, e se o francês não for problema - caso seja, os subtitles servem para algo - verificar este video com o processo de instalação do wmbusmeters do principio ao fim.
Nota:
Alguns contadores, ao que parece, têm o sinal encriptado. O meu vinha em sinal aberto sem qualquer encriptação. Mas do que li pela Internet, muitas pessoas na UE tiveram sucesso quando pediram a key de encriptação aos fornecedores argumentado o direito de acesso aos seus dados.
Article 8 - Protection of personal data
- Everyone has the right to the protection of personal data concerning him or her.
- Such data must be processed fairly for specified purposes and on the basis of the consent of the person concerned or some other legitimate basis laid down by law. Everyone has the right of access to data which has been collected concerning him or her, and the right to have it rectified.
- Compliance with these rules shall be subject to control by an independent authority.
Como sempre, nessas coisas, imagino que seja uma questão de sorte/azar e de quem vos atender.
Por fim, e como eu dizia no inicio; apesar de tudo esta solução - pelo menos no meu caso que apenas tinha um raspberry 4 disponível - funcionando sem qualquer problema, parecia-me algo desadequada (talvez com um Raspberry Zero faça mais sentido).
Por isso continuei a pesquisar e acabei por encontrar outra solução que me agradou mais, recorrendo à utilização de um ESP8266/ESP32 e um módulo CC1101 (atenção que há versão de 433MHz e de 868MHz).
No GitHub podem encontrar dita solução, com uma documentação excelente e vários testes realizados.
Tenho um a funcionar desde ontem e parece promissor:
Será também interessante ver se é possível uma solução all-in-one, como um Lora32.