DomoticzNode-RED/MQTT

MQTT met Domoticz

 

Onderstaande inhoud is een automatisch vertaalde versie van een topic dat ik zelf momenteel aan het volgen ben… De vertaling kan daarom niet in alle gevallen correct worden weergegeven. De bron van dit onderwerp is afkomstig van https://www.sigmdel.ca/michel/ha/domo/domo_03_en.html#WhatIsMQTT

Er wordt stap voor stap uitleg gegeven over het koppelen van de raspberryPi met een draaiende https://contactkring.nl/phpbb/ucp.php?mode=loginDomoticz met MQTT.  Onderaan deze uitleg komen mijn eigen bevindingen en voortgang omtrent dit voor mij zelf totaal nieuwe onderwerp.  Hopenlijk kan deze vertaling samen met mijn eigen eerste stappen hulp bieden aan anderen die net als ik de eerste stappen willen ondernemen met mqtt en vooral in samenwerking met Domoticz…Nu ik de Broker op de Raspberry heb draaien ga ik eens kijken wat ik met Node-RED kan doen.
Als je vanaf een apparaat of computer naar je Node-RED gaat op de Raspberry geef je het ip adres op van je Raspberry met daarachter de gebruikte poort, in mijn geval is dat ……
http://192.168.2.10:1880


 

Inhoudsopgave

  1. Wat is MQTT?Script #1
  2. Mosquitto MQTT installeren
  3. Mosquitto MQTT testen
  4. Een virtuele switch toevoegen in Domoticz
  5. MQTT inschakelen in Domoticz
  6. MQTT testen in Domoticz

  • Wat is MQTT?

Het Message Queue Telemetry Transport, MQTTkortweg, is een berichtenprotocol dat in een stroomversnelling is gekomen voor het tot stand brengen van communicatie tussen apparaten in de snelgroeiende sector “Internet of Things”. Interessant is dat het protocol al in 1999 werd ontwikkeld, net zoals het IoT enige belangstelling trok.

MQTT gebruikt een paradigma voor publiceren en abonneren. We begrijpen allemaal point-to-point-verbindingen tussen peers. Het is de basis van telefoongesprekken tussen twee mensen. De client-serververbinding is een andere bekende point-to-point-link. Om een ​​webpagina weer te geven, vraagt ​​een webbrowser, de klant, de pagina op bij een HTML-server die de pagina kan verzenden of weigert dit te doen. Bij dit soort links moeten beide partijen elkaar opzettelijk aanspreken. Met MQTT kunnen apparaten gegevens publiceren of zich abonneren om gegevens van een “broker” te ontvangen. Sommige apparaten doen beide. Wanneer een apparaat gegevens publiceert, hoeft het niet te weten welke apparaten het willen lezen. Een apparaat dat zich heeft geabonneerd, ontvangt gegevens wanneer deze beschikbaar komen zonder deze van een bepaald apparaat te hoeven vragen. In plaats daarvan fungeert de makelaar als verrekenkantoor;

Het gebruik van een makelaar betekent dat het publiceren van gegevens van één naar veel tegelijk mogelijk is met het lezen van gegevens van veel naar één. Hier is een typisch arrangement:
komt een eigen verslag van

Pictogrammen gemaakt door EpicCoders van www.flaticon.com hebben een licentie van CC 3.0 BY

De airconditioner is geregistreerd bij de MQTT-makelaar om alle gegevens over de onderwerpen “temperatuur” en “vochtigheid” te ontvangen. De temperatuur- en vochtigheidssensoren zijn niet geregistreerd om gegevens te ontvangen, ze publiceren alleen gegevens naar de makelaar.

Elke tien minuten publiceert de temperatuursensor de kamertemperatuur. In de praktijk betekent dit dat het een enkel nummer, zeg 23, onder het onderwerp “temperatuur” naar de makelaar stuurt, wat aangeeft dat het momenteel 23 ° C is. Evenzo verzendt de vochtigheidssensor elke vijftimqtt-met-domoticz/en minuten gegevens, bijvoorbeeld 62, onder het onderwerp ” vochtigheid “voor de makelaar, wat betekent dat de vochtigheidsfactor 62% is. De makelaar geeft op zijn beurt deze berichten door aan de airconditioning. Hij beslist op basis van deze twee metingen of hij moet worden in- of uitgeschakeld. Dit is het internet der dingen op het werk.

Een domotica-programma met ingebouwde MQTT-ondersteuning kan aan het systeem worden toegevoegd om “intelligentie” en controle te bieden. De architectuur van het systeem zou er ongeveer zo uit kunnen zien:

Pictogrammen gemaakt door EpicCoders van www.flaticon.com hebben een licentie van CC 3.0 BY

Het domotica-programma (ha) is geregistreerd bij de MQTT-makelaar om alle gegevens over de onderwerpen “temperatuur”, “druk” en “status van de airconditioning” te ontvangen. De airconditioner is geregistreerd bij de MQTT-makelaar om alle gegevens over het onderwerp “airconditioning” te ontvangen.

Net als voorheen publiceren de temperatuur- en vochtigheidssensoren gegevens aan de makelaar. Maar nu is het ha-programma geregistreerd om die informatie te ontvangen. Het bepaalt of de airconditioner moet worden in- of uitgeschakeld door rekening te houden met de sensorgegevens, het tijdstip van de dag, de vertraging sinds de laatste keer dat het apparaat is in- of uitgeschakeld, de aanwezigheid van mensen in huis enzovoort. Het instrueert de airconditioner om in of uit te schakelen door te publiceren naar het onderwerp “airconditioning”. De airconditioner publiceert wijzigingen in de aan of uit-status onder het onderwerp “status airconditioner”. Omdat het ha-programma dat onderwerp onderschrijft, weet het wanneer de airconditioning door de huiseigenaar is in- of uitgeschakeld.

Zo eenvoudig is het natuurlijk niet. MQTT is een “transport” protocol, het zegt niets over de inhoud van berichten. Is dat 23 van de temperatuursensor 23 ° Celsius of 23 ° Fahrenheit? Tenzij de temperatuur- en vochtigheidssensoren worden vervaardigd door hetzelfde bedrijf dat de airconditioning maakt, en tenzij een van deze apparaten een MQTT-makelaar heeft, is de kans zeer klein dat deze “out of the box” zou werken. Voor echt IoT, waar men sensoren van de ene fabrikant kan kopen, apparaten van een andere, en een brug met domotica-software van een derde bedrijf, is er behoefte aan een universele IoT-berichtensyntaxis die MQTT zou kunnen transporteren.

Hoewel er enige inspanningen zijn geleverd op dit gebied (zie Homie , een MQTT-conventie voor het IoT door Marvin Roger), moet er voor zover ik weet nog iets wijdverbreid worden gebruikt. Desalniettemin is er een goede reden om MQTT te gebruiken. Het wordt ondersteund in Domoticz . Het gebruik van een standaardprotocol is altijd een beter idee dan het creëren van een ad-hocoplossing. Maar zoals duidelijk zal worden, moet er veel “lijm” worden aangebracht om iets samen te kasseien.

  • Mosquitto MQTT installeren
De installatie-instructies in deze sectie zijn verouderd als het besturingssysteem nieuwer is: Raspbian Stretch of Buster . De versies van Mosquitto in de repositories van deze versies van Raspbian zijn vrij recent genoeg en de installatie is daarom eenvoudiger.

 

pi @ rpi2b: ~ $ sudo apt udpate pi @ rpi2b: ~ $ sudo apt installeer muggen -y

Zie Mosquitto installeren in Home Automation Servers op Raspbian Buster Lite .

De enige echte vereiste voor de host van de MQTT-makelaar is dat de computer altijd aan staat en verbonden is met het lokale netwerk. De Raspberry Pi die de Domoticz- server host , is waarschijnlijk de beste keuze voor de meesten. Gelukkig draait een van de bekendste open source-implementatie van MQTT, Mosquitto , op het kleine bord. Door de instructies te volgen , kon ik de makelaar zonder problemen installeren.

Om de Mosquitto Debian-repository op Mosquitto.org te gebruiken, moet u de signeersleutel van het repository-pakket importeren en de repository vervolgens beschikbaar maken voor apt:

pi @ rpi2b: ~ $ wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key pi @ rpi2b: ~ $ sudo apt-key add muggen-repo.gpg.key pi @ rpi2b: ~ $ cd /etc/apt/sources.list.d/ pi @ rpi2b: /etc/apt/sources.list.d $ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list

Het pakket kan nu worden geïnstalleerd en om op te ruimen kan de Mosquitto-repository-sleutel worden gewist.

pi @ rpi2b: /etc/apt/sources.list.d $ cd $ home pi @ rpi2b: ~ $ sudo apt-get udpate pi @ rpi2b: ~ $ sudo apt-get installeer muggen pi @ rpi2b: ~ $ rm muggen- repo.gpg.key

De makelaar is nu geïnstalleerd. Zorg ervoor dat het er is:

pi @ domo: ~ $ systemctl status mug ● mosquitto.service – Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; uitgeschakeld) Actief: actief (actief) sinds di 2017-05-30 12:06 : 43 ADT; 9 minuten geleden Docs: man: mosquitto (8) https://mosquitto.org/ Main PID: 1547 (mosquitto) CGroup: /system.slice/mosquitto.service └─1547 / usr / sbin / mosquitto -c / etc / mosquitto /mosquitto.conf

Start opnieuw op en zorg ervoor dat de Mosquitto is gestart door te vragen systemctlnaar de status van de mug zoals hierboven. Als de mosquitto.serviceniet is gestart, kunt u proberen deze in te schakelen:

pi @ domo: ~ $ sudo systemctl mosquitto.service inschakelen Status voor mosquitto.service synchroniseren met sysvinit met update-rc.d … Uitvoeren van /usr/sbin/update-rc.d mosquitto standaardinstellingen Uitvoeren / usr / sbin / update- rc.d muggen inschakelen

Hopelijk start Mosquitto nu automatisch bij het opstarten van Raspbian.

Hoewel niet essentieel, wil je misschien de Mosquitto-clients op de Raspberry Pi installeren:

pi @ domo: ~ $ sudo apt-get installeer muggen-clients

Voorbeeldgebruik van de clients vindt u in de volgende sectie.

  • Mosquitto MQTT testen

Nu een MQTT-broker is geïnstalleerd, raad ik u aan de uitstekende instructies van Elliot Williams op Hackaday te lezen als een inleiding tot het gebruik van het protocol. Of je kunt hier meteen mee volgen.

Ik heb Mosquitto-clients op mijn Ubuntu- desktop geïnstalleerd met behulp van het Software Center . Het kan worden gedaan met Synaptic of zelfs met apt-getin een terminalvenster. Het toetsenbord combinatie die een terminal opent Ubuntu is Alt  Ctrl  T .

michel @ hp: ~ $ sudo apt-get installeer muggen-clients

In plaats daarvan kunt u ssh-sessies openen met de Raspberry Pi en de Mosquitto-clients gebruiken als deze zijn geïnstalleerd.

De klanten zijn twee programma’s: mosquitto_subzich abonneren op de makelaar om berichten te ontvangen en mosquitto_pubberichten naar de makelaar te publiceren. We zullen twee terminals openen, één die zich op berichten abonneert en één om berichten te verzenden. Om verwarring te voorkomen, veranderde ik de titel in Subscribein één terminal (kijk in het Terminalmenu) en in Publishin de andere.

SubscribeAbonneer u in de terminal op alle onderwerpen die beginnen met “thuis” bij de MQTT-broker op de Raspberry Pi op IP-adres 192.168.0.22:

michel @ hp: ~ $ mosquitto_sub -h 192.168.0.22 -v -t “home / #”

Zoals op de afbeelding te zien is, gebeurt er niet veel. Het programma is actief, maar er verschijnt niets totdat de MQTT-makelaar een bericht ontvangt onder het onderwerp “home”.

PublishPubliceer in de terminal een bericht naar de MQTT-makelaar

michel @ hp: ~ $ mosquitto_pub -h 192.168.0.22 -t “home / temperature” -m “21”

De makelaar stuurt dit bericht door naar het mosquitto_sub proces dat nog in de Subscribeterminal loopt. Dat proces toont het ontvangen bericht, eerst het onderwerp, bericht na:

Speel hiermee. Open een derde terminal en abonneer je op hetzelfde onderwerp. Publiceer vervolgens een nieuw bericht en u zult zien dat beide abonnees het bericht zullen weergeven. Publiceer naar andere subonderwerpen zoals “huis / vochtigheid”. Probeer een bericht te publiceren met “test / temperatuur” als onderwerp.

Druk op de Ctrl  C- toetscombinatie om de abonneecliënten te sluiten .

MQTT-onderwerpen

Uit het bovenstaande zou het duidelijk moeten zijn dat MQTT-onderwerpen hiërarchisch zijn en worden weergegeven op een manier die sterk lijkt op volledige bestandspaden (met behulp van het scheidingsteken Unix ‘/’). En, enigszins zoals bestandsnamen, zijn er jokertekens:

# die alle onderwerpen op een lager niveau vertegenwoordigt. Vandaar dat een abonnement op home/#betekent dat de makelaar alle berichten met onderwerpen zoals sturen homehome/humidityhome/temperaturehome/temperature/centigradehome/temperature/fahrenheiten ga zo maar door.
+ wat een enkel niveau vertegenwoordigt in de hiërarchie van onderwerpen. Daarom home/+/switchesbetekent abonneren op dat berichten met onderwerpen zoals home/bedroom/switchesen home/kitchen/switches zullen worden ontvangen, maar niet home/switchesnoch home noch switches.

Om voor de hand liggende redenen kun je geen ‘/’, ‘#’ of ‘+’ hebben als onderdeel van een onderwerp. Het is geen goed idee om deze tekens in een gebruikersnaam of klant-ID op te nemen (zie Beveiligingsadvies CVE-2017-7650 op mosquitto.org . U kunt UTF-8-gecodeerde tekst gebruiken in onderwerpen als / saison / été. Ten minste dit werkt in Linux Hoe het werkt in Windows, dat 16 bit Unicode gebruikt in plaats van UTF-8, moet ik nog controleren.

Bij het debuggen van MQTT-berichten kan het handig zijn om u te abonneren op alle onderwerpen:

michel @ hp: ~ $ mosquitto_sub -h 192.168.0.22 -v -t “#”

  • Een virtuele switch toevoegen in Domoticz

Tot nu toe zijn er geen apparaten toegevoegd aan de Domoticz- database op de Raspberry Pi 3. Het zal moeilijk zijn om MQTT te testen in combinatie met het domotica-programma zonder ten minste één virtuele schakelaar. De procedure om een ​​virtuele switch toe te voegen, die uiteindelijk aan een fysieke switch zal worden gekoppeld, is bijna exact dezelfde als die gevolgd in X10 aan / uit-switches met een CM11A-interface in Domoticz .

De eerste stap is het creëren van een “dummy” hardware; Domoticz weet niet hoe ik met de wifi-schakelaars moet omgaan die ik later zal installeren.

      1. Klik op het tabblad Installatie .
      2. Selecteer Hardware in het vervolgkeuzemenu.
      3. Voer een naam in voor de hardware; Ik heb gekozen Virtual.
      4. Voor de Typeselectie Dummy (Does nothing, use for virtual switches only)in de vervolgkeuzelijst.

Voeg virtuele hardware toe

      1. Klik op de knop Toevoegen . De toegevoegde hardware wordt toegevoegd aan een tabel bovenaan de pagina:

Deze stap wordt slechts één keer uitgevoerd.

Om een ​​virtuele switch toe te voegen

      1. Klik op de Create Virtual Sensors in de nieuw gemaakte Virtualhardware.
      2. Vul het Nameveld in, selecteer Switchvoor Sensor Typein het Create Virtual Sensor venster:

Er verschijnt een bericht waarin de aanmaak van de sensor wordt bevestigd en waarin staat dat deze in de lijst met apparaten kan worden gevonden. Om de lijst te zien, klikt u op het tabblad Installatie en selecteert u vervolgens Apparaten .

De nieuw gemaakte switch is ook te vinden op het tabblad Switches .

Als u op het lampje van de virtuele schakelaar klikt, te vinden op het tabblad Schakelaars of in de lijst met apparaten, wordt de afbeelding in- of uitgeschakeld. Probeer het en u zult een paar seconden een bericht zien verschijnen waarin staat dat het apparaat is in- of uitgeschakeld. Natuurlijk gebeurt er eigenlijk niets, want deze virtuele schakelaar is nog nergens mee verbonden. Hoe dit werkt, wordt weergegeven in de volgende sectie.

  • MQTT inschakelen in Domoticz

De eerste stap bij het toevoegen van MQTT-mogelijkheden aan Domoticz is het toevoegen van de ‘hardware’. De procedure is vergelijkbaar met het toevoegen van de dummy-hardware in de vorige sectie

      1. Klik op het tabblad Installatie .
      2. Selecteer Hardware in het vervolgkeuzemenu.
      3. Voer een naam in voor de hardware. Opnieuw liet ik zien hoe fantasierijk ik ben, ik koos MQTT.
      4. Voor de Typeselectie MQTT Client Gateway with LAN interfacein de vervolgkeuzelijst.
      5. Stel de Remote Addressen Portvan de MQTT-makelaar in. In mijn geval bevindt de makelaar zich op dezelfde host als de Domoticz- server, dus ik gebruikte localhostmaar ik had het volledige IP-adres kunnen gebruiken 192.168.0.22of misschien 127.0.0.1. Ik heb de poort ingesteld naar 1883de standaard Mosquitto MQTT-poort die ik niet heb gewijzigd.
        Voeg virtuele hardware toeZorg ervoor dat dit Publish Topicis ingesteld op out; Ik denk dat dat de standaard is.
      6. Klik op de knop Toevoegen . De toegevoegde hardware wordt samen met de Virtualhardware in de tabel bovenaan de pagina meegeleverd .

Vanaf dit punt zal de Domoticz- server MQTT-berichten over het domoticz/outonderwerp publiceren wanneer de status van een apparaat verandert. Tegelijkertijd onderschrijft het het domoticz/inonderwerp en zal het actie ondernemen wanneer het een bericht met de juiste syntaxis ontvangt.

  • MQTT testen in Domoticz

Open een terminal en abonneer u op alle berichten en schakel vervolgens de testschakelaar in en uit op het tabblad Schakelaars om de MQTT-berichten te zien die door Domoticz zijn gegenereerd :

michel @ hp: ~ $ mosquitto_sub -h 192.168.0.22 -v -t “#” domomoticz / out {“Battery”: 255, “RSSI”: 12, “dtype”: “Light / Switch”, “id”: ” 00014051 “,” idx “: 1,” name “:” Test Switch “,” nvalue “: 1,” stype “:” Switch “,” svalue1 “:” 0 “,” switchType “:” On / Off “, “unit”: 1} domoticz / out {“Battery”: 255, “RSSI”: 12, “dtype”: “Light / Switch”, “id”: “00014051”, “idx”: 1, “name”: “Test Switch”, “nvalue”: 0, “stype”: “Switch”, “svalue1”: “0”, “switchType”: “On / Off”, “unit”: 1}

Dit zijn typische JSON-opgemaakte Domoticz berichten. Zie Domoticz API / JSON URL’s voor details over de API . De schakelaar van WiFi-schakelaars moet deze afhandelen om zichzelf in of uit te schakelen. Zoals te zien is, ziet dit er veel uitdagender uit dan dankzij het werk van veel mensen die open source-bibliotheken voor de ESP8266 hebben ontwikkeld.

Natuurlijk moet de wifi-schakelaar MQTT-berichten naar de makelaar sturen om hem te laten weten dat iemand de schakelaar handmatig heeft in- of uitgeschakeld. Het onderwerp voor dat soort berichten is domoticz/inomdat Domoticz zich op dat onderwerp abonneert. Voor alle duidelijkheid, ik neem aan dat de softwaremodule die de ‘MQTT-hardware’ implementeert, zich abonneert wanneer deze wordt gestart.

Om de test voort te zetten, wordt het typische bericht dat een schakelaar zou kunnen verzenden wanneer het handmatig wordt ingeschakeld, gepubliceerd naar de MQTT-makelaar. Ik neem aan dat de virtuele switch die in de vorige sectie was geïnstalleerd een index ( idx) van 1 heeft. De index wordt weergegeven in de apparatenlijst. Om de lijst te zien, klikt u op het tabblad Installatie en selecteert u vervolgens Apparaten . Als dit niet 1 is, pas dan de waarde aan bij het publiceren van het volgende MQTT-bericht. michel @ hp: ~ $ mosquitto_pub -h 192.168.0.22 -t “domoticz / in” -m ‘{“idx”: 1, “nvalue”: 1}’

De abonnee-terminal zal laten zien dat de makelaar het bericht domoticz / in {“idx”: 1, “nvalue”: 1} heeft ontvangen

Uit het logboek blijkt dat Domoticz het bericht heeft ontvangen.

31-05-2017 13: 14: 38.446 MQTT: Topic: domoticz / in, Message: {“idx”: 1, “nvalue”: 1}

Om het logboek te zien, klikt u op het tabblad Installatie en selecteert u vervolgens Log . Keer vervolgens terug naar het tabblad Schakelaars en controleer of het lamppictogram van de virtuele schakelaar is ingeschakeld. Dit duurt even, dus wees geduldig.

Om de virtuele schakelstatus uit te schakelen, moet een soortgelijk MQTT-bericht worden verzonden: michel @ hp: ~ $ mosquitto_pub -h 192.168.0.22 -t “domoticz / in” -m ‘{“idx”: 0, “nvalue”: 0} ‘ Pas de idxwaarde opnieuw aan om de juiste index van de virtuele schakelaar weer te geven.

Er resteert nog om de Sonoff WiFi-switch te programmeren om met MQTT en Domoticz te werken . Dit is al gedaan in eerdere Franstalige berichten (zie Flashing a Sonoff with the Arduino IDE ) die ik “zeer binnenkort” zal vertalen en misschien tegelijkertijd zal updaten naar de nieuwere versie van Theo Arends-firmware.

De bron van dit onderwerp is afkomstig van https://www.sigmdel.ca/michel/ha/domo/domo_03_en.html#WhatIsMQTT


Tot zover de info die ik zelf wil gaan volgen en waarover ik hieronder stap voor stap verslag zal uitbrengen….

04-05-2020    Het startpunt voor mij zelf is een Raspberry Pi 3b+ met daarop de laatste versie os Buster genaamd en de laatste bijgewerkte versie van Domoticz . Als je net als ik de versie Buster draait kun je volstaan met onderstaande instrukties. Heb je een andere oudere versie lees dan even hierboven hoe je ook de repositories kunt installeren.

sudo apt udpate

en

sudo apt install mosquitto -y

Dat is alles wat nodig is om Mosquitto op Buster te installeren.

Om te kijken of de broker werkt kun je het beste testen met 2 terminals. Open 2 terminals en hernoem de eerste terminal Subscribe  en noem de tweede terminal Publish. De terminals kun je bovenin een naam geven en dat is wel zo makkelijk om niet in de war te raken. In de terminal Subscribe geef je nu het volgende commando…. Verander naar je eigen ip adres !

mosquitto_sub -h 192.168.0.22 -v -t “home/#”

Er zal nog niets verder gebeuren maar je hebt in het venster Subscribe nu opgegeven dat er geluisterd moet worden naar alles wat met home verstuurd wordt door het commando wat we gaan geven in het venster Publish.  Als we nu in de terminal Publish het volgende commando invoeren zul je zien dat het venster Subscribe het gestuurde commmando ook weergeeft.

mosquitto_pub -h 192.168.0.22 -t “home/temperature” -m “21”

Vergeet ook hier niet je eigen ip adres neer te zetten.

Je weet nu dat de broker de commandos doorgeeft van apparaten die iets willen verzenden Publish , en dat andere apparaten die op het commando geabboneerd zijn weer kunnen ontvangen Subscribe.

De Broker (de server die de commandos verstuurd en ontvangt) werkt dus. Dit hebben we nu dus getest op 2 terminal vensters maar dat kan dus via elk apparaat wat verbonden is of communiceert met de broker. Een pc, arduino, een Pi zero, of wat dan ook binnen je eigen netwerk, maar ook beveiligd via b.v. internet. Deze apparaten hebben dan wel een client software nodig om te communiceren met de broker.

tot zover voor vandaag………….

Het volgende dat je kunt doen als je nog geen apparaten hebt in je Domoticz is een dummy switch aanmaken. Ga hiervoor naar hardware en maak een dummy switch aan. Voorbeeld te vinden in bovenstaande beschrijving.

Noem deze switch..  Test Switch en kies bij type voor Switch (schakelaar).  Deze gemaakte switch kun je nu terugvinden in je lijst apparaten.

Je kunt nu een terminal venster openen en daar met het volgende commando aangeven dat je alle veranderingen van je apparatuur wilt ontvangen door te subscriben.

mosquitto_sub -h 192.168.0.22 -v -t “#”

Verander wel weer even in je eigen ip adres !

Als je nu de switch gaat bedienen via je Domoticz zul je zien dat dit in het terminal venster wordt getoond ! Heb je al meer apparaten dan zie je daarvan ook de veranderingen in je terminal venster.

Ook op andere apparaten waar je een MQTT client op draaid kun je nu subscriben bij de broker op je Raspberry en alle veranderingen zien. Ook verzonden opdrachten worden door de broker ontvangen zodat je ook je apparaten vanuit die client kan schakelen, in je netwerk of met een goede beveiliging waar ook ter wereld via internet ! Als volgende ga ik de switch nu schakelen door een publish commando in een terminal venster te zetten en uit te voeren.

Pas je eigen ip van de broker weer aan en gebruik het juiste idx te vinden bij je apparaten.

Met het onderstaande commando zet je de testswitch aan.

mosquitto_pub -h 192.168.2.10 -t “domoticz/in” -m ‘{ “idx” :115 , “nvalue” : 1}’

en met het volgende commando zet je de testswitch weer uit.

mosquitto_pub -h 192.168.2.10 -t “domoticz/in” -m ‘{ “idx” :115 , “nvalue” : 0}’

Ook dat werkt 🙂

Als volgende heb ik geprobeerd om een bestaande switch te bedienen met de commandos hierboven….

Echter reageert de switch zelf dan wel maar niet hetgeen wat door de switch bediend wordt !   Dus in mijn geval wilde ik dus een buitenlamp schakelen door daarvan het juiste idx aan of uit te zetten.  De schakelaar reageert daar dan wel op in Domoticz maar hetgeen geschakeld moet worden dus niet ! Mijn schakelaar die ik bedien geeft normaal een z wave commando als ik de buitenlamp wil schakelen, maar ontdanks dat de schakelaar wel reageert op het gegeven commando en aangeeft dat de lamp aanstaat, blijft de lamp uit. Waarschijnlijk heb ik daarvoor de rechtstreekse commandos nodig die de zwave schakelt i.p.v alleen de schakelaar zelf te veranderen in aan of uit.

Deze commandos weet ik nog niet dus gebruik nu een tussen oplossing die wel werkt.

In blocky geef ik aan dat als de testswitch veranderd in aan of uit dat dan ook de buitenlamp daarop moet schakelen.  Dat werkt wel 🙂  Maar natuurlijk zijn daar de rechtstreekse commandos voor om dat te doen maar dat moet ik nog verder onderzoeken. Na de zwave schakelaar met het juiste commando te schakelen zal de switch dit dan ook aangeven.


05-05-2020  Nu ik de Broker op de Raspberry heb draaien ga ik eens kijken wat ik met Node-RED kan doen.
Als je vanaf een apparaat of computer naar je Node-RED gaat op de Raspberry geef je het ip adres op van je Raspberry met daarachter de gebruikte poort, in mijn geval is dat ……
http://192.168.2.10:1880
Node Red opent als het goed is met een scherm wat een beetje weg heeft van het blocky script maar is wat mogelijkheden veel uitgebreider.

Als je geen verbinding krijgt met Node-RED dan draait het nog niet op je Raspberry. Ga dan naar je beginpagina en daarin zie je bovenin ergens staan programmeren met daaronder Node-RED.

Klik daarop en een venster opent waarin de Node-RED wordt gestart.  Met het commando

sudo systemctl enable nodered.service

kun je ervoor zorgen dat dit elke keer automatisch wordt gestart bij het opstarten van je Raspberry.  Je kunt dan vanaf elke computer je Node-RED benaderen door bovenstaande adres in je browser te zetten met je eigen Raspberry ip natuurlijk en standaard poort 1180 mits je dat niet hebt veranderd.

Nu je op de node-Red pagina bent kun je je eerste testjes gaan doen. Ook voor mij zelf is dit nog allemaal nieuw en onbekend. Het eerste wat ik probeerde was een inject naar de pagina te slepen en daarna een button met payload. Verbind de 2 blokken met elkaar en trek een lijntje tussen de 2 blokken.

Druk daarna op deploy. Dit moet steeds gebeuren als je iets hebt veranderd. Rechtsboven zie je rechts van het i symbool een vakje waar debug messages op staat als je met de muis erboven staat. Klik daarop.

Alles wat er nu gebeurt als je het script of beter gezegt de flow start komt nu rechts in beeld. Standaard staat het eerste blok wat je neerzette op timestamp ofwel een code met de tijd.

Klik je nu links in het vakje van de eerste blok dan zie je de uitkomst rechts verschijnen. In dit geval de timestamp.  Zie onder….

We gaan er nu nog een blokje inject bijzetten en verbinden ook dat blok met een lijntje met het blokje rechts payload. Dubbelklik nu op het nieuw geplaatste blokje en verander bij payload naar de optie string. Zet daar nu neer b.v.  Hallo wereld.

Vergeet niet nu weer deploy te klikken. Test dan de linkse blokken daao op de linkerkant op de blokjes te klikken.  De eerste geeft nu de timestamp als resultaat en de 2e geeft Hallo wereld als resultaat.

Dit zijn zeer simpele voorbeelden van hoe het een beetje werkt en net als voor mij zelf als ook voor vele anderen die er mee willen beginnen toch een welkom inzicht. Ook ik weet nog maar heel weinig over de mogelijkheden en hoe alles werkt dus probeer ik ook maar stap voor stap verder te komen.

Nu we al een Broker hebben draaien is het misschien interessant om te zien of we de info en commandos misschien uit kunnen lezen in Node -RED.

Sleep het blokje MQTT in   naar het scherm en zet deze onder de andere 2 blauwe blokken.  Verbind ook dit blok met het blok rechts met een lijn. Dubbelklik dit blok en een venster verschijnt. Geef bij server een naam b.v. MQTTbroker en vul bij server localhost in.  Klik op  Done  en vul daarna bij topic  een hekje in #

Dit betekent dat er naar elke topic wordt geluisterd die door Domoticz worden verzonden. Klik weer op Done.  Vergeet weer niet op deploy te klikken.

Nu zal rechts elk commando wat verzonden wordt door Domoticz bij het schakelen van apparaten en ook sensor waarden e.d. getoond worden.


 

Maar hoe kunnen we onze apparaten bedienen ?

Natuurlijk willen we onze apparaten die we in Domoticz hebben ook kunnen bedienen via mqtt !  We beginnen met een schoon leeg veld om het overzichtelijk te houden. Je kunt als je wilt de blokken die in Node-RED  NODES genoemd worden verweideren door met de muis een gebied te selecteren en tegelijk op delete te drukken.  Ook kun je dit veld bewaren en een nieuw leeg veld beginnen.

Klik op  het plus teken  +  rechtsboven om een nieuw leeg veld te beginnen. Een nieuw veld (venster) opent met de naam flow . Als je op de naam bovenin dubbelklikt kun je de flow (dat venster) een andere naam geven. Noem het voor deze flow b.v. Bedienen.

KLIK HIER om verder te gaan met de stap voor stap uitleg…… !

Vind je dit een interessant onderwerp waarover je vragen en of opmerkingen hebt, ga dan bij voorkeur naar mijn forum om daar je vragen te stellen en discussies te voeren over dit onderwerp !

Klik hier om je aan te melden of te registreren op het  Forum.

 

2 gedachten over “MQTT met Domoticz

  1. Ik heb al het een en ander gevonden zoals je hierboven al kon lezen. Hartelijk dank voor het nakijken. Wat via publish verzonden wordt komt binnen via domoticz/in , wat domoticz aan waardes laat zien komt van domoticz/out zover ik het getest heb. Misschien ook even aanpassen op je eigen site zodat anderen niet dezelfde foutmelding krijgen. Keep programming….
    M.v.g. DomoticzFan.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *