In meinem HomeAutomation-System setze ich immer mehr MQTT-Protokol ein. Damit wird die Kommunikation zwischen den einzelnen FHEM-Instanzen abgewickelt, Node-RED angebunden, auch einiges an Hardware kommuniziert direkt per MQTT.
Eine große Hilfe bei der Planung und Test der Zusammenarbeit der Kommunikationsteilnehmer stellt das Toll mqtt-spy (https://kamilfb.github.io/mqtt-spy/).
Um den einzelnen transportierten Werten etwas 'Kontextinformation' mitzugeben, werden die notwendigen Meta-Daten samt eigentlichen Werten im JSON-Format kodiert. Der entstandene String ist zwar noch ganz gut für Menschen verständlich, dennoch ist es angenehmer anstatt
{'name'='temp'; 'value'='5'; 'unit'='°C'; 'time'='01.01.2018 07:00'} etwas wie temp: 5 °C time: 01.01.2018 07:00 zu lesen. Dafür bietet mqtt-spy eine Möglichkeit eigene Formatter bereitzustellen (Menü->Window->Open View->Formatters).Die Formatter werden in JavaScript geschrieben und können auch Java-Objekte verwenden. Ein Beispiel :
function format()
{
var JSONObject = Java.type("org.json.JSONObject");
var json = new JSONObject(receivedMessage.getPayload());
var name = '';
try {
name = json.get('name') + ":\t";
} catch (JSONException) {}
var value = '';
try {
value = json.get('value');
} catch (JSONException) {}
var unit = '';
try {
unit = " "+json.get('unit');
} catch (JSONException) {}
var time = '';
try {
time = "\t time: "+json.get('time');
} catch (JSONException) {}
return name+value+unit+time;
}
Die Formatters können im Nachrichtenanzeigebereich (Tools->Formatting->Custon->...) dazugeschaltet werden.
Dann sieht es so aus (ursprungliche Nachricht: {'name'='temp'; 'value'='-5'; 'unit'='°C'; 'time'='01.01.2018 07:00'}):

Kommentare (0)