In het artikel RaspberryPi – Installeer MQTT Server op de RaspberryPi Ik schreef wat over MQTT en legde uit hoe je je eigen MQTT-server op de RaspberryPi installeert.
Om ook een MQTT-server van FHEM te kunnen gebruiken, moet u nog enkele FHEM-modules installeren. Hoe dit werkt en waar je op moet letten heb ik beschreven in het volgende artikel.
Veiligheidsinstructies
Ik weet dat de volgende tips altijd vervelend zijn en onnodig lijken. Maar helaas hebben veel mensen die "beter" wisten al ogen, vingers of andere zaken verloren of zich door onvoorzichtigheid verwond. In vergelijking daarmee is een verlies van gegevens nauwelijks het vermelden waard, maar zelfs die kunnen heel vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Want zelfs het coolste project is geen letsel of andere problemen waard.
https://www.nerdiy.de/sicherheitshinweise/
Affiliate links / reclame links
De hier vermelde links naar online winkels zijn zogenaamde affiliate links. Als u op zo'n affiliate link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende webwinkel of aanbieder. De prijs verandert niet voor jou. Als u uw aankopen doet via deze links, steunt u Nerdiy.de om in de toekomst nog meer nuttige projecten te kunnen aanbieden. 🙂
Eisen
Voordat je aan dit artikel begint, moet je de RaspberryPi zo hebben voorbereid dat deze via het netwerk bereikbaar en via SSH te bedienen is.
In de volgende drie artikelen wordt beschreven wat er moet gebeuren om de RaspberryPi voor te bereiden:
RaspberryPi - Instellingen voor Nerdiys!
RaspberryPi – De eerste configuratie!
RaspberryPi - De RaspberryPi besturen via SSH
Uw eigen slimme huis – installatie en toegang tot FHEM
Mosquitto op de Raspberry – Installeer MQTT Server op de RaspberryPi
Benodigd gereedschap:
-Nee-
Benodigde materialen:
In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.
Log in op de RaspberryPi via SSH
Om te beginnen moet je eerst inloggen op de Rasp Pi met Putty via SSH. Hoe je dit doet staat in het artikel RaspberryPi - Bedien de RaspberryPi via SSH beschreven.

Pakketbeheer updaten
Het pakketbeheer in Linux is een "centrale plek" van waaruit verschillende softwarepakketten kunnen worden geïnstalleerd. Om dit betrouwbaar te laten werken, moeten de lijsten en bronnen van het pakketbeheer worden bijgewerkt voor elke installatie van nieuwe pakketten.

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



Installeer Perl MQTT-pakketten
Om ervoor te zorgen dat FHEM met de MQTT-server kan communiceren, moeten twee Perl-pakketten worden geïnstalleerd.

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

MQTT-clients maken
Om in de volgende stap een verbinding met een MQTT-apparaat tot stand te kunnen brengen, moet eerst een MQTT-client worden aangemaakt. Dit slaat de informatie op die nodig is om later verbinding te maken met de MQTT-server.

definieer mqttClient MQTT 192.168.0.1:1883
De opdracht om een MQTT-client te maken komt overeen met het volgende "define name-of-mqtt-client MQTT host-or-ip-of-mqtt-server:port-of-server". Dus als uw MQTT-server het IP-adres "192.168.0.1" en poort 1883 heeft (wat overeenkomt met de standaardpoort voor MQTT), is de opdracht om de MQTT-client te maken "define mqttClient MQTT 192.168.0.1:1883". Natuurlijk kan elke andere naam worden gebruikt voor "mqttClient".

afsluiten opnieuw opstarten
Nadat de server opnieuw is opgestart, bent u klaar om nieuwe MQTT-bridges en -apparaten te maken.


Instellen van de MQTT-bridge met als voorbeeld een MAX!-verwarmingsthermostaat
In dit voorbeeld maken we een MQTT-brug. Zoals de naam al doet vermoeden, verbindt de MQTT-bridge iets met elkaar. In dit geval de MAX!-verwarmingsthermostaat met de MQTT-wereld. Deze koppeling werkt in principe volgens hetzelfde schema met alle reeds geïnstalleerde sensoren of actuatoren. In het geval van de MAX! De verwarmingsthermostaat werkt met het volgende commando.

defineHeatingWorkroomMqtt MQTT_BRIDGE MAX_15504f
Hierdoor wordt de module "HeizungArbeitszimmerMqtt" van het type "MQTT_BRIDGE" gemaakt en gekoppeld aan de bestaande module "MAX_15504f".


Hiervoor is er het attribuut "publishReading_XYZ". Dit zorgt ervoor dat de MQTT-bridge automatisch alle updates over de lezing "XYZ" doorstuurt naar het opgegeven onderwerp.

attr HeizArbeitszimmerMqtt publishReading_temperature heizung/Arbeitszimmer/temperature
Zorg ervoor dat "publishReading" en "temperatuur" (de uitlezing van de radiatorthermostaat (of een andere sensor/actuator)) met een onderliggend streepje moeten worden verbonden. Dit resulteert in "publishReading_temperature".
Voor de lezing "Batterij" zou het geheel er zo uitzien.
attr HeizArbeitszimmerMqtt publishReading_battery heizung/Arbeitszimmer/battery

attr HeizArbeitszimmerMqtt subscribeSet_desiredTemperature heizung/Arbeitszimmer/desiredTemperature
Hierdoor wordt het onderwerp "verwarming/werkkamer/gewensteTemperatuur" geabonneerd en wordt elke binnenkomende waarde automatisch ingevoerd in de "gewensteTemperatuur"-uitlezing. Zo kunt u via MQTT-bericht de gewenste temperatuur van de verwarmingsthermostaat regelen.

De ingestelde MQTT-brug testen
Een manier om de pas gemaakte MQTT-brug te testen, wordt hier beschreven.
Hiervoor heb ik in NodeRed een mini MQTT-viewer gemaakt die je de waarden voor de ingestelde onderwerpen laat zien "verwarming/studie/temperatuur" en "verwarming/studie/batterij" worden verzonden. Je hebt ook de mogelijkheid om aan het onderwerp te koppelen "verwarming/studie/gewensteTemperatuur" om de waarde 25 te verzenden. Hierdoor staat, als alles goed werkt, de gekoppelde radiatorthermostaat op 25°C.


... vindt "gewenste temperatuur". Dit is de uitlezing die we gebruiken bij de configuratie van de MQTT-brug met het MQTT-onderwerp "verwarming/studie/gewensteTemperatuur" hebben gekoppeld. De huidige waarde van de meting en het tijdstip van de laatste update worden hier ook weergegeven.
Als je nu in de zelfgebouwde MQTT-viewer op de inject-node klikt, stuur je de waarde 25 naar de topic "verwarming/studie/gewensteTemperatuur". Dit zou nu ook de waarde van uw verwarmingsthermostaat moeten updaten naar de waarde 25. Bovendien wordt de tijd van de laatste update ingesteld op de huidige tijd.
Om de tegenovergestelde manier te testen - d.w.z. de publicatie van een gewijzigde meetwaarde over een MQTT-onderwerp - is het voldoende om naar de bovenkant van de gedetailleerde weergave van de MAX!-verwarmingsthermostaat te scrollen. Daar verander je de gewenste temperatuur van je verwarmingsthermostaat zoals afgebeeld.

Een MQTT-apparaat maken met een temperatuursensor als voorbeeld
Een andere mogelijkheid van de MQTT-module is het maken van MQTT-apparaten. Dit omvat alle sensoren of apparaten die hun meetwaarden rechtstreeks via MQTT verzenden. Om deze waarden vast te leggen en samen te vatten in een virtuele sensor, moet u een MQTT-apparaat maken.
In dit voorbeeld hebben we een temperatuursensor in ons netwerk die met regelmatige tussenpozen de gemeten temperatuurwaarde verstuurt via het MQTT-onderwerp "Omgevingsgegevens/kelder/Temp". Om dit vast te leggen wordt er eerst een MQTT device aangemaakt met het volgende commando.
definieer kellerSensor MQTT_DEVICE


Voordat dit MQTT_Device nu waarden kan weergeven, moet het natuurlijk eerst worden gekoppeld aan het gewenste MQTT-onderwerp. In dit voorbeeld willen we alle inkomende waarden op het MQTT-onderwerp "Umweltdaten/keller/Temp" weergeven in het aangemaakte MQTT-apparaat.
Om dit te doen, moet u het volgende attribuut instellen:
attr kellerSensor subscribeReading_Temp Omgevingsgegevens/keller/Temp
Hierdoor wordt de uitlezing "Temp" aangemaakt in het aangemaakte MQTT_Device "kellerSensor" en gekoppeld aan het geabonneerde onderwerp "Umweltdaten/keller/Temp".

Om het beeld een beetje mooier te maken, kunt u het volgende attribuut gebruiken om aan te geven dat een "°C" moet worden toegevoegd aan de waarde van de afgelezen Temp.
attr kellerSensorstatusFormat Temp °C


Verdere informatie
https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung
Veel plezier met het project
Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn ook altijd welkom 🙂
P.S. Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik het omdat ik het leuk vind, maar als je het cool vindt dat ik de info erover met je deel, zou ik een kleine donatie aan het koffiefonds op prijs stellen 🙂 .
Hallo Fab
Heel erg bedankt voor alle informatie die je hier beschikbaar hebt gesteld. Ik heb vele jaren bij de thuisassistent doorgebracht en helemaal geen tijd bij FHEM, die ik nu gebruik om te proberen mijn FHT-verwarmingsapparaten beter onder controle te krijgen. Als ik FHEM kan laten communiceren met een bestaande MQTT-server, zou dat mijn droom zijn.
Ik heb FHEM draaiend op Raspian OS in een docker-container, de installatie verliep volgens uw advies zonder fouten - maar wanneer ik de commando's probeer in te voeren via de FHEM-webfrontend, krijg ik Kan module MQTT_BRIDGE niet laden of Kan module MQTT_CLIENT niet laden, waardoor ik denk je dat ik er een puinhoop van heb gemaakt door de perl/mqtt niet vanuit de docker-container te installeren of dat ik niet iets binnen FHEM heb gedaan om de nieuwe MQTT-mogelijkheid op te roepen?
Met vriendelijke groeten
Nick