Drucken
Kategorie: SoftwareTools
Zugriffe: 6999

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'}):

mqtt-spy

Kommentare (0)

Cancel or