MQTT агрегирование


#1

Добрый день!

Wirenboard подписываясь на топик MQTT сервера начинает высылать по одному параметру.
Можно ли настроить Wirenboard, чтобы он агрегировал показания и высылал одним пакетом.

Например такое:
‘[{“bn”:“some-base-name:”,“bt”:1.276020076001e+09, “bu”:“A”,“bver”:5, “n”:“voltage”,“u”:“V”,“v”:120.1}, {“n”:“current”,“t”:-5,“v”:1.2}, {“n”:“current”,“t”:-4,“v”:1.3}]’


#2

7test, добрый день!
Можно. Создайте в движке правил виртуальное устройство с текстовым контролом, который будет обновляться при изменении любого из параметров, и присваивайте в качестве значения ему отформатированную по вашим правилам строку.


#3

есть любой пример?


#4

Проиллюстрирую свою идею:

defineVirtualDevice("json_output", {
    title: "JSON",
    cells: {
	json: {
	    type: "text",
	    value: "[]"
	},
	_Vin: {
	    type: "text",
	    value: ""
	},
	_5Vout: {
	    type: "text",
	    value: ""
	},
    }
});

defineRule("add_json_Vin", {
  whenChanged: "wb-adc/Vin",
  then: function (newValue, devName, cellName)  {
	dev["json_output"]["_Vin"] = newValue;
  }
});

defineRule("add_json_5Vout", {
  whenChanged: "wb-adc/5Vout",
  then: function (newValue, devName, cellName)  {
	dev["json_output"]["_5Vout"] = newValue;
  }
});

defineRule("format_json", {
  whenChanged: ["json_output/_5Vout","json_output/_Vin"],
  then: function (newValue, devName, cellName)  {
  value = '[{"Vin":"' + dev["json_output"]["_Vin"] + '"},{"5Vout":"' + dev["json_output"]["_5Vout"] + '"}]' ;
	dev["json_output"]["text"] = value;
//    log(value);
  }
});

#5