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.

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.

sudo apt-get update && sudo apt-get upgrade



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

sudo apt-get install libmodule-pluggable-perl && sudo cpan install Net::MQTT:Simple && sudo cpan install Net::MQTT:Constants

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.

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".

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


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.

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


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.

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

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.

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.


… 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.

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


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".

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


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é. 🙂
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