MQTT: hoe topic en payload werken

Wat zijn MQTT-topics (Read, Response, Write, Event) en de payload, en hoe de scripts in Ilevia Manager deze verwerken voor de verschillende componenttypen.

De topics

De topics zijn: Read, Event, Write en Response. Elk heeft verschillende berichttypen, die de broker gebruikt om berichten te filteren voor elke verbonden client. Topics bestaan uit niveaus die door slashes worden gescheiden.

Voorbeeld: home/livingroom/light

Dit zijn de 4 topics waarop we ons abonneren en waarmee we na de configuratie informatie uitwisselen:

Topic Read: wordt gebruikt om de status van het apparaat te ontvangen;

Topic Response: dit is het antwoord van het apparaat aan de automatiseringsserver op de Read-aanvraag;

Topic Write: wordt gebruikt om de waarde van een parameter van het apparaat in te stellen;

Topic Event: wordt gebruikt om de status van het apparaat te melden wanneer deze verandert.

Topic Response

De Topic Response is vereist voor het antwoord op het Read-bericht dat door het apparaat wordt verzonden.

Voorbeeld: bericht verzonden bij de eerste verbinding om de status van het apparaat op te halen.

In dit geval verwerkt het script een specifiek deel van de JSON afkomstig van het apparaat, in ons geval “ison”.

Voorbeeld van een script voor het Response-topic

Door op deze link te klikken, kun je de scriptconfiguratie bekijken.

Topic Write

De “Topic Write” verzendt het commando wanneer het component in het Ilevia-systeem van status verandert.

Voorbeeld: wanneer de gebruiker de status van een schakelaar wijzigt in de Ilevia Control-app.

Elk apparaat kan een ander berichttype vereisen.

Je kunt de payload van het MQTT-bericht maken met een kort JavaScript-script dat vertrekt van de waarde van het component in het Ilevia-systeem en het bericht voorbereidt in het door het apparaat vereiste formaat: tekst, JSON of iets anders.

Gegevens verzenden met Topic Write

De schakelaar en de andere binaire componenten gebruiken de waarden 0 en 1 in de variabele binnen de payload.

Je kunt dit script gebruiken om het bericht op basis van de waarde te maken:

Script van het Write-topic voor een binair component

Door op deze link te klikken, kun je de scriptconfiguratie bekijken.

In het Ilevia-systeem wordt de percentagewaarde verwerkt als een waarde van 0 tot 1 en via een conversie gepubliceerd als een waarde van 0 tot 100. De componenten die dit type waarde gebruiken zijn Schuifregelaar en Instelbare waarde; zij hebben deze configuratie in het Write-topic.

Je kunt dit script gebruiken om het MQTT-bericht op basis van de waarde te maken:

Script van het Write-topic voor een percentagewaarde

Door op deze link te klikken, kun je de scriptconfiguratie bekijken.

Voor het verzenden van RGB-informatie is de configuratie als volgt: gebruik het component RGB-verlichting om de juiste MQTT RGB-configuratie in te stellen.

Script van het Write-topic voor een RGB-component

Door op deze link te klikken, kun je de scriptconfiguratie bekijken.

Topic Event

De “Topic Event” meldt de status van het apparaat.

Voorbeeld: een vermogensmeter meldt het verbruikte vermogen telkens wanneer de waarde verandert.

In het geval van een temperatuur, vermogen of energie is het component dat is voorbereid om de waarde weer te geven het Info-component. Zoals je in de onderstaande afbeelding kunt zien, haalt het script eenvoudigweg de payload op die van het apparaat afkomstig is.

Je kunt dit script gebruiken om gegevens van het apparaat te ontvangen:

Script van het Event-topic voor een numerieke waarde

Door op deze link te klikken, kun je de scriptconfiguratie bekijken.

Om de status van een schakelaar te melden, moet het script als volgt worden opgebouwd.

In dit geval neemt het script de payload afkomstig van het apparaat en meldt het de actuele status van het apparaat.

Script van het Event-topic voor de status van een schakelaar

Door op deze link te klikken, kun je de scriptconfiguratie bekijken.

De payload

De payload is de inhoud van het MQTT-bericht. Voor elk topic wordt een JavaScript-functie (script) uitgevoerd die de payload verwerkt.

Voor elk topic wordt een JavaScript-functie uitgevoerd om de payload van het topic te verwerken.

Voorbeeld met JSON-string:

var data = JSON.parse(payload); var color = {"mode":"color","red":data.r,"green":data.g,"blue":data.b}; return JSON.stringify(color);

Voorbeeld van payload

Laatst bijgewerkt: