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)