In het artikel RaspberryPi - Installeer MQTT-server op de RaspberryPi Ik heb wat geschreven over MQTT en uitgelegd hoe je je eigen MQTT-server op de RaspberryPi kunt installeren.
Om een MQTT server van FHEM te kunnen gebruiken, moet je een paar FHEM modules installeren. In het volgende artikel heb ik beschreven hoe je dit doet en waar je op moet letten.
Inhoud
- 1 Veiligheidsinstructies
- 2 Affiliate links / reclame links
- 3 Eisen
- 4 Log in op de RaspberryPi via SSH
- 5 Pakketbeheer updaten
- 6 Installeer Perl MQTT-pakketten
- 7 MQTT-clients maken
- 8 Instellen van de MQTT-bridge met als voorbeeld een MAX!-verwarmingsthermostaat
- 9 De ingestelde MQTT-brug testen
- 10 Een MQTT-apparaat maken met een temperatuursensor als voorbeeld
- 11 Verdere informatie
- 12 Veel plezier met het project
Veiligheidsinstructies
Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
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 onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂
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 – setup voor nerds!
RaspberryPi – De eerste configuratie!
RaspberryPi – Bedien de RaspberryPi via SSH
Je eigen slimme huis - installatie en aan de slag met FHEM
Mosquitto op de Raspberry - Installeer MQTT-server op de RaspberryPi
Gereedschap nodig:
-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.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/04/www.nerdiy.de-putty-2019-04-23-10-12-07.png?resize=661%2C418&ssl=1)
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.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-putty-2019-03-07-21-52-23.png?resize=661%2C128&ssl=1)
sudo apt-get update && sudo apt-get upgrade
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-putty-2019-03-07-21-52-28.png?resize=661%2C418&ssl=1)
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-putty-2019-03-07-21-53-19.png?resize=661%2C418&ssl=1)
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-putty-2019-03-07-22-05-01.png?resize=661%2C418&ssl=1)
Installeer Perl MQTT-pakketten
Om FHEM te laten communiceren met de MQTT server moeten er twee Perl pakketten geïnstalleerd worden.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-putty-2018-12-13-11-11-10.png?resize=661%2C418&ssl=1)
sudo apt-get install libmodule-pluggable-perl && sudo cpan install Net::MQTT:Simple && sudo cpan install Net::MQTT:Constants
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-putty-2018-12-13-11-11-16.png?resize=661%2C418&ssl=1)
MQTT-clients maken
Om in de volgende stap een verbinding op te zetten met een MQTT-apparaat, moet eerst een MQTT-client worden aangemaakt. Deze zal later de nodige gegevens opslaan voor de verbinding met de MQTT-server.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-01-17.png?resize=806%2C605&ssl=1)
definieer mqttClient MQTT 192.168.0.1:1883
Het commando om een MQTT-client aan te maken komt overeen met het volgende “define name-of-mqtt-client MQTT host-or-ip-of-mqtt-server:port-of-server”. Als uw MQTT-server het IP-adres “192.168.0.1” heeft, poort 1883, wat overeenkomt met de standaardpoort voor MQTT), is het commando om de MQTT-client aan te maken “define mqttClient MQTT 192.168.0.1:1883”. Natuurlijk kan elke andere naam worden gebruikt voor “mqttClient”.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-20-33.png?resize=806%2C605&ssl=1)
afsluiten opnieuw opstarten
Nadat de server opnieuw is opgestart, bent u klaar om nieuwe MQTT-bridges en -apparaten te maken.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-22-24.png?resize=805%2C605&ssl=1)
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-22-32.png?resize=805%2C604&ssl=1)
Instellen van de MQTT-bridge met als voorbeeld een MAX!-verwarmingsthermostaat
In dit voorbeeld maken we een MQTT bridge. Zoals de naam al zegt, verbindt de MQTT bridge iets met elkaar. In dit geval de MAX! verwarmingsthermostaat met de MQTT wereld. In principe werkt deze koppeling volgens hetzelfde schema met alle sensoren of actuatoren die al geïnstalleerd zijn. In het geval van de MAX! verwarmingsthermostaat werkt dit met het volgende commando.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-29-41.png?resize=806%2C604&ssl=1)
defineHeatingWorkroomMqtt MQTT_BRIDGE MAX_15504f
Hierdoor wordt de module “HeatingWorkroomMqtt” van het type “MQTT_BRIDGE” aangemaakt en gekoppeld aan de reeds bestaande module “MAX_15504f”.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-30-02.png?resize=774%2C581&ssl=1)
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-29-45.png?resize=805%2C604&ssl=1)
Er is ook het attribuut “publishReading_XYZ”. Dit zorgt ervoor dat de MQTT-bridge automatisch alle updates over de lezing “XYZ” doorstuurt naar het opgegeven onderwerp.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-39-43.png?resize=806%2C605&ssl=1)
attr HeizArbeitszimmerMqtt publishReading_temperature heizung/Arbeitszimmer/temperature
Zorg ervoor dat “publishReading” en “temperatuur” (de uitlezing van de radiatorthermostaat (of een andere sensor/actuator)) moeten worden verbonden met een onderstrepingsteken. Dit resulteert in “publishReading_temperature”.
Voor de lezing “Batterij” zou het geheel er zo uitzien.
attr HeizArbeitszimmerMqtt publishReading_battery heizung/Arbeitszimmer/battery
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-41-30.png?resize=806%2C605&ssl=1)
attr HeizArbeitszimmerMqtt subscribeSet_desiredTemperature heizung/Arbeitszimmer/desiredTemperature
Hierdoor wordt het onderwerp “verwarming/studie/gewenstetemperatuur” geabonneerd en wordt elke ontvangen waarde automatisch ingevoerd in de weergave “gewenstetemperatuur”. Op deze manier kunt u via een MQTT-bericht de gewenste temperatuur van de verwarmingsthermostaat regelen.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-41-37.png?resize=804%2C603&ssl=1)
De ingestelde MQTT-brug testen
Een manier om de zojuist aangemaakte MQTT bridge 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” kan worden verzonden. Daarnaast heb je de mogelijkheid om naar het onderwerp “Verwarming/studie/gewenste temperatuur” om de waarde 25 te versturen. Dit heeft tot gevolg dat - als alles correct werkt - de gekoppelde radiatorthermostaat wordt ingesteld op 25°C.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-23-50.png?resize=802%2C602&ssl=1)
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-43-02.png?resize=804%2C603&ssl=1)
… vindt “gewenste temperatuur”. Dit is de waarde die we hebben bij de configuratie van de MQTT-bridge met het MQTT-onderwerp “Verwarming/studie/gewenste temperatuur” hebben gekoppeld. De huidige waarde van de meting en de tijd 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/gewenste temperatuur”. Hierdoor wordt ook de waarde van je verwarmingsthermostaat bijgewerkt naar de waarde 25. Bovendien wordt de tijd van de laatste update ingesteld op de huidige tijd.
Om de omgekeerde methode te testen - d.w.z. de publicatie van een gewijzigde uitlezing op een MQTT topic - is het voldoende om naar boven te scrollen in de detailweergave van de MAX! verwarmingsthermostaat. Wijzig daar de gewenste temperatuur van uw verwarmingsthermostaat zoals weergegeven.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-chrome-2018-12-13-11-43-46.png?resize=765%2C248&ssl=1)
Een MQTT-apparaat maken met een temperatuursensor als voorbeeld
Een andere optie van de MQTT-module is het aanmaken van MQTT-apparaten. Dit omvat alle sensoren of apparaten die hun meetwaarden rechtstreeks via MQTT versturen. Je moet een MQTT-apparaat aanmaken zodat je deze waarden kunt opnemen en combineren in een virtuele sensor.
In dit voorbeeld hebben we een temperatuursensor in ons netwerk die de gemeten temperatuurwaarde met regelmatige tussenpozen verzendt via het MQTT-onderwerp “omgevingsgegevens/kelder/temp”. Om dit vast te leggen, wordt eerst een MQTT-apparaat aangemaakt met behulp van het volgende commando.
definieer kellerSensor MQTT_DEVICE
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-firefox-2019-05-14-12-41-34.png?resize=765%2C574&ssl=1)
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-firefox-2019-05-14-12-41-44.png?resize=762%2C571&ssl=1)
Voordat dit MQTT_Device waarden kan weergeven, moet het uiteraard eerst aan het gewenste MQTT-onderwerp worden gekoppeld. In dit voorbeeld willen we alle binnenkomende waarden op het MQTT-onderwerp ‘Omgevingsgegevens/kelder/Temp’ in het aangemaakte MQTT-apparaat weergeven.
Om dit te doen, moet je 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 “Environmental data/keller/Temp”.
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-firefox-2019-05-14-12-42-00.png?resize=765%2C574&ssl=1)
Om de weergave nog mooier te maken, kunt u het volgende attribuut gebruiken om te specificeren dat een “°C” moet worden toegevoegd aan de waarde van de leestemperatuur.
attr kellerSensor statusFormaat Temp °C
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-firefox-2019-05-14-12-42-07.png?resize=762%2C571&ssl=1)
![](https://i0.wp.com/www.nerdiy.de/wp-content/uploads/2019/03/www.nerdiy.de-howto-fhem-mqtt-geraete-anlegen-firefox-2019-05-14-12-42-31.png?resize=765%2C574&ssl=1)
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 altijd welkom. 🙂
PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂
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