HowTo: FHEM – Criar dispositivos MQTT

No artigo Raspberry Pi – Instale o servidor MQTT no RaspberryPi Escrevi um pouco sobre MQTT e expliquei como instalar seu próprio servidor MQTT no RaspberryPi.

Para que você também possa usar um servidor MQTT do FHEM, ainda é necessário instalar alguns módulos do FHEM. Descrevi como isso funciona e no que você deve prestar atenção no artigo a seguir.


instruções de segurança

Eu sei que as notas a seguir são sempre meio chatas e parecem desnecessárias. Infelizmente, muitas pessoas que sabiam "melhor" perderam olhos, dedos ou outras coisas por descuido ou se machucaram. A perda de dados é quase insignificante em comparação, mas mesmo isso pode ser realmente irritante. Portanto, dedique cinco minutos para ler as instruções de segurança. Porque mesmo o projeto mais legal não vale ferimentos ou outros problemas.
https://www.nerdiy.de/sicherheitshinweise/

Links afiliados/Links de publicidade

Os links para lojas online listados aqui são os chamados links de afiliados. Se você clicar em um link de afiliado e fizer uma compra por meio desse link, o Nerdiy.de receberá uma comissão da loja ou fornecedor online relevante. O preço não muda para você. Se você fizer suas compras por meio desses links, estará apoiando o Nerdiy.de para poder oferecer outros projetos úteis no futuro. 🙂 


requisitos

Antes de começar com este artigo, você deve ter preparado o RaspberryPi para que ele possa ser acessado via rede e controlado via SSH.

Os três artigos a seguir descrevem o que precisa ser feito para preparar o RaspberryPi:
RaspberryPi – configuração para nerds!
RaspberryPi – A primeira configuração!
RaspberryPi – Controle o RaspberryPi via SSH
Sua própria casa inteligente – instalação e entrada no FHEM
Mosquitto no Raspberry – Instale o servidor MQTT no RaspberryPi

Ferramentas necessárias:
-não-

Materiais necessários:

Na lista a seguir, você encontrará todas as partes necessárias para implementar este artigo.


Faça login no RaspberryPi via SSH

Para começar, você deve primeiro fazer login no Rasp Pi com Putty via SSH. Como fazer isso está no artigo RaspberryPi - Controle o RaspberryPi via SSH descrito.

Depois de inserir seu nome de usuário e senha, você pode inserir os primeiros comandos.

Atualizar o gerenciamento de pacotes

O gerenciamento de pacotes no Linux é um "local central" através do qual vários pacotes de software podem ser instalados. Para que isso funcione de forma confiável, as listas e fontes do gerenciamento de pacotes devem ser atualizadas antes de cada instalação de novos pacotes.

Para iniciar a atualização do gerenciamento de pacotes, você deve inserir o seguinte comando.
sudo apt-get update && sudo apt-get upgrade
Dependendo de há quanto tempo foi sua última atualização do gerenciamento de pacotes, esse processo pode demorar um pouco. As listas que se referem às fontes de pacotes individuais são atualizadas primeiro.
Depois disso, os próprios pacotes são atualizados. Como a memória adicional está ocupada, você será solicitado novamente a dar seu consentimento. Você deve confirmar isso com um "J" e "Enter".
Assim que a atualização for concluída, você verá um pequeno resumo da duração e escopo da atualização.

Instalar pacotes Perl MQTT

Para que o FHEM possa se comunicar com o servidor MQTT, dois pacotes Perl devem ser instalados.

Você deve fazer login no Rasp Pi com Putty e inserir o seguinte comando.
sudo apt-get install libmodule-pluggable-perl && sudo cpan install Net::MQTT:Simple && sudo cpan install Net::MQTT:Constants
Você reconhece o aviso de que isso ocupará espaço de armazenamento adicional com um “J” e “Enter”.

A consulta "Deseja configurar o máximo possível automaticamente?" [sim]” você confirma com “sim” e entra.
A instalação dos dois pacotes levou cerca de cinco minutos. Tempo suficiente para pegar outra xícara de café. 🙂


Criar clientes MQTT

Para poder estabelecer uma conexão com um dispositivo MQTT na próxima etapa, primeiro um cliente MQTT deve ser criado. Isso salva as informações necessárias para se conectar ao servidor MQTT posteriormente.

Para fazer isso, digite o seguinte comando no prompt de comando de sua instância FHEM.
definir mqttClient MQTT 192.168.0.1:1883

O comando para criar um cliente MQTT corresponde ao seguinte "define name-of-mqtt-client MQTT host-or-ip-of-mqtt-server:port-of-server". Portanto, se o seu servidor MQTT tiver o endereço IP "192.168.0.1" e a porta 1883 (que corresponde à porta padrão para MQTT), o comando para criar o cliente MQTT é "define mqttClient MQTT 192.168.0.1:1883". Obviamente, qualquer outro nome pode ser usado para "mqttClient".

Agora clique em "Salvar configuração" no canto superior esquerdo e reinicie o servidor FHEM usando o seguinte comando.
desligar reiniciar

Após a reinicialização do servidor, você estará pronto para criar novas pontes e dispositivos MQTT.

Visualização do cliente MQTT recém-criado. Aqui você pode ver se uma conexão com o servidor MQTT pode ser estabelecida. Você também verá mais informações sobre a conexão com o servidor MQTT.
Para que as alterações feitas sejam aceitas e salvas permanentemente, você deve se lembrar de clicar em "Salvar configuração". Isso salva permanentemente as configurações alteradas no arquivo de configuração.

Configurando a ponte MQTT usando um termostato de aquecimento MAX!

Neste exemplo, criamos uma ponte MQTT. Como o nome sugere, a ponte MQTT conecta algo. Neste caso, o termostato de aquecimento MAX! com o mundo MQTT. Em princípio, este link funciona de acordo com o mesmo esquema com todos os sensores ou atuadores já instalados. No caso do MAX! O termostato de aquecimento funciona com o seguinte comando.

A estrutura do comando é a seguinte: "define name-of-the-mqtt-bridge MQTT_BRIDGE name-of-the-sensor-or-actuator". No caso do MAX! Portanto, para um termostato de aquecedor chamado MAX_15504f, o comando é o seguinte.
defineHeatingWorkroomMqtt MQTT_BRIDGE MAX_15504f

Isso cria o módulo "HeizungArbeitszimmerMqtt" do tipo "MQTT_BRIDGE" e o vincula ao módulo "MAX_15504f" existente.

O MQTT_BRIDGE criado agora está na sala "Não classificado". Mude para esta sala e abra a visualização detalhada da ponte MQTT criada.
Na visualização detalhada, agora você pode ver todas as informações sobre a ponte MQTT criada. No entanto, antes que a ponte MQTT possa conectar os dados do termostato de aquecimento MAX! ao mundo MQTT, ela deve primeiro saber qual leitura do termostato de aquecimento deve ser vinculada a qual tópico MQTT.

Existe o atributo "publishReading_XYZ" para esta finalidade. Isso faz com que a ponte MQTT encaminhe automaticamente todas as atualizações na leitura "XYZ" para o tópico especificado.

Portanto, digite o seguinte comando no prompt de comando de sua instância FHEM para encaminhar automaticamente todas as atualizações da leitura de "temperatura" para o tópico "aquecimento/sala de trabalho/temperatura".
attr HeizArbeitszimmerMqtt publishReading_temperature heizung/Arbeitszimmer/temperature

Certifique-se de que "publishReading" e "temperature" (a leitura do termostato do radiador (ou qualquer outro sensor/atuador)) devem ser conectados com um sublinhado. Isso resulta em "publishReading_temperature".
Para a leitura "Bateria", tudo ficaria assim.

attr HeizArbeitszimmerMqtt publishReading_battery heizung/Arbeitszimmer/battery
No entanto, essa vinculação de tópicos de leitura e MQTT também funciona ao contrário. Para que os valores enviados para um tópico MQTT sejam inseridos automaticamente em uma leitura do termostato de aquecimento, você deve definir o seguinte atributo.
attr HeizArbeitszimmerMqtt SubscribeSet_desiredTemperature heizung/Arbeitszimmer/desiredTemperature

Isso significa que o tópico "heating/workroom/desiredTemperature" está inscrito e cada valor de entrada é inserido automaticamente na leitura "desiredTemperature". Desta forma, você pode controlar a temperatura desejada do termostato de aquecimento via mensagem MQTT.

A visualização detalhada de sua ponte MQTT agora deve ter esta aparência. Você pode ver todas as combinações de tópicos de leitura/MQTT vinculados em Atributos. Lembre-se de salvar esta alteração de configuração clicando em "Salvar configuração".

Testando a ponte MQTT definida

Uma maneira de testar a ponte MQTT recém-criada é descrita aqui.

Para fazer isso, criei um mini visualizador MQTT no NodeRed que mostra os valores para os tópicos definidos "aquecimento/estudo/temperatura" e "aquecimento/estudo/bateria" ser enviado. Você também tem a opção de anexar ao tópico "aquecimento/estudo/temperatura desejada" para enviar o valor 25. Como resultado, se tudo funcionar corretamente, o termostato do radiador vinculado é ajustado para 25°C.

Primeiramente verificamos se o recebimento e transferência dos valores recebidos via MQTT funciona. Para tal, mude para a divisão "MAX" e depois para a vista detalhada do respetivo termóstato de aquecimento.
Na exibição detalhada, role para baixo até ver a leitura...

… encontra “desiredTemperature”. Essa é a leitura que usamos na configuração da ponte MQTT com o tópico MQTT "aquecimento/estudo/temperatura desejada" tem ligado. O valor atual da leitura e a hora da última atualização também são exibidos aqui.

Se você clicar agora no nó de injeção no visualizador MQTT autoconstruído, estará enviando o valor 25 para o tópico "aquecimento/estudo/temperatura desejada". Isso agora também deve atualizar a leitura do termostato de aquecimento para o valor 25. Além disso, a hora da última atualização é definida como a hora atual.

Para testar o caminho oposto - ou seja, a publicação de uma leitura alterada em um tópico MQTT - basta rolar para o topo da exibição detalhada do termostato de aquecimento MAX!. Uma vez lá, você altera a temperatura desejada do termostato de aquecimento, conforme mostrado.

Isso aciona automaticamente uma atualização da leitura da "bateria". Vinculando a ponte MQTT ao tópico "aquecimento/estudo/bateria" seu valor é publicado conforme desejado por meio do tópico e fica visível por meio do nó de depuração configurado em seu ambiente NodeRed.

Criando um dispositivo MQTT usando um sensor de temperatura como exemplo

Outra possibilidade do módulo MQTT é a criação de dispositivos MQTT. Isso inclui todos os sensores ou dispositivos que enviam seus valores medidos diretamente via MQTT. Para registrar esses valores e resumi-los em um sensor virtual, você precisa criar um dispositivo MQTT.

Neste exemplo, temos um sensor de temperatura em nossa rede que envia o valor da temperatura medida em intervalos regulares através do tópico MQTT "Environment data/cellar/Temp". Para registrar isso, um dispositivo MQTT é primeiro criado com o seguinte comando.

definir kellerSensor MQTT_DEVICE
O comando é novamente composto da seguinte forma: "define Name-des-Mqtt-Device MQTT_DEVICE". Como estamos integrando um sensor de temperatura neste exemplo localizado no porão, chamamos o MQTT_DEVICE de "kellerSensor. O comando completo para criar o MQTT_Device é, portanto, "Environment data/cellar/Temp".
Depois de criar o MQTT_Device, você o encontrará na sala "Unsorted". Você também pode usar isso para abrir a exibição detalhada mostrada.

Antes que este MQTT_Device possa exibir valores, é claro que primeiro ele deve ser vinculado ao tópico MQTT desejado. Neste exemplo, queremos exibir todos os valores recebidos no tópico MQTT "Umweltdaten/keller/Temp" no dispositivo MQTT criado.

Para fazer isso, você deve definir o seguinte atributo:

attr kellerSensor SubscribeReading_Temp Dados Ambientais/keller/Temp

Isso faz com que a leitura "Temp" seja criada no MQTT_Device "kellerSensor" criado e vinculada ao tópico inscrito "Umweltdaten/keller/Temp".

A leitura “Temp” agora também aparece na exibição de leituras com o valor atual ou último recebido e a data da última atualização.

Para embelezar um pouco a visualização, você pode usar o seguinte atributo para especificar que um "°C" deve ser anexado ao valor da temperatura de leitura.

attr kellerSensor stateFormat Temp °C
Para fazer isso, digite o comando "attr kellerSensor stateFormat Temp °C" na linha de comando de sua instância FHEM.
Como resultado, a temperatura atual do "kellerSensor" agora também é fornecida com um "°C" e é imediatamente aparente que este é um valor de temperatura.

Outras informações

https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung


Divirta-se com o projeto

Espero que tudo funcionou como descrito para você. Se não, ou se você tiver alguma dúvida ou sugestão, por favor, deixe-me saber nos comentários. Em seguida, adicionarei isso ao artigo, se necessário.
Ideias para novos projetos são sempre bem vindas. 🙂

PS Muitos desses projetos - especialmente os projetos de hardware - custam muito tempo e dinheiro. Claro que faço isso porque gosto, mas se você acha legal que eu compartilhe as informações com você, ficaria feliz com uma pequena doação para o fundo do café. 🙂

Compre-me um café em ko-fi.com       

Ein Kommentar

  1. oi fabi
    Muito obrigado por todas as informações que você disponibilizou aqui. Passei muitos anos com o assistente doméstico e nenhum tempo com o FHEM, que agora estou usando para tentar obter um melhor controle dos meus dispositivos de aquecimento FHT. Se eu conseguir que o FHEM se comunique com um servidor MQTT existente, isso seria meu sonho.

    Eu tenho o FHEM rodando no Raspian OS dentro de um contêiner docker, a instalação foi conforme seu conselho sem erros - mas quando tento inserir os comandos via front-end da web do FHEM, recebo Não é possível carregar o módulo MQTT_BRIDGE ou Não é possível carregar o módulo MQTT_CLIENT, o que me torna acha que errei ao não instalar o perl/mqtt de dentro do contêiner docker ou não fiz algo no FHEM para invocar o novo recurso MQTT?

    Atenciosamente

    usuario

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert