формат запроса rpc

Добрый день. Помогите разобраться со структурой запроса rpc.
Пишу программу для считывания данных на Java. При подписке на топик “/devices/NL-1S0111/controls/temperature” показания температуры считываются, но только текущие. Мне необходимо считать данные за прошлый период. Смотрел здесь https://github.com/contactless/mqtt-rpc , но так и не понял что необходимо написать в запросе - “Клиент отправляет посылку вида { “id”: “1234”, “params”: {“A”: 1, “B”: 2} }”.

Использую org.eclipse.paho.client.mqttv3, подписка на текущие значения:
top1 = “/devices/NL-1S0111/controls/temperature”
myClient.subscribe(top1, subQoS); так все работает хорошо, ответ приходит с показаниями температуры.

Как получить данные за период, запрос посылается через подписку или через публикацию и какой формат запроса? Что необходимо написать здесь - params": {“A”: 1, “B”: 2} ?

Спасибо.

запустите на контроллере mosquitto_sub -v -t ‘/rpc/#’ и посмотрите, что за данные там ходят, когда вы заходите в раздел History в веб-интерфейсе

При выборе датчика и периода в веб интерфейсе в контроллере по команде mosquitto_sub -v -t ‘/rpc/#’ отображается - /rpc/v1/db_logger/history/get_values/contactless-vnWCBIF3Pu {“id”:9,“params”:{“channels”:[[“NL-1S0114”,“temperature”]],“limit”:1000,“ver”:1,“timestamp”:{“gt”:1477857599,“lt”:1477944000},“min_interval”:0}}.
Вставляю эту команду себе и ничего не происходит, ответ не приходит. У меня подозрение что дело в этом /contactless-vnWCBIF3Pu и этом “id”:9 .
При подстановке своего идентификатора клиента тоже никакой реакции.
Может ли быть дело в идентификаторе клиента и как получить уникальный идентификатор транзакции(в москито он меняется с каждой новой командой)?

Спасибо.

Все, разобрался. Если кому будет интересно.
Запрос делается через публикацию.
в Java с использованием org.eclipse.paho.client.mqttv3 делается так:
подписываемся на топик top1 = “/rpc/v1/db_logger/history/get_values/свойID/reply”;
публикуем топик top2 = “/rpc/v1/db_logger/history/get_values/свойID”; с сообщением
“{“id”:idтранзакции,“params”:{“channels”:[[“NL-1S0112”,“temperature”]],“limit”:1000,“ver”:1,“timestamp”:{“gt”:1477857599,“lt”:1477944000},“min_interval”:0}}”;
ответ приходит в top1

public void runClient() {
		String clientID = "1";
		connOpt = new MqttConnectOptions();			
		connOpt.setCleanSession(true);
		connOpt.setKeepAliveInterval(30);			
		try {
			myClient = new MqttClient(BROKER_URL, clientID);
			myClient.setCallback(this);
			myClient.connect(connOpt);
		} catch (MqttException e) {
			e.printStackTrace();
			System.exit(-1);
		}

                    try {
			int subQoS = 1;
			myClient.subscribe(top1, subQoS);
			} catch (Exception e) {
				e.printStackTrace();
			}

MqttTopic topic = myClient.getTopic(top2);
String pubMsg = “{“id”:13,“params”:{“channels”:[[“NL-1S0112”,“temperature”]],“limit”:1000,“ver”:1,“timestamp”:{“gt”:1477857599,“lt”:1477944000},“min_interval”:0}}”;

		   		int pubQoS = 1;
				MqttMessage message = new MqttMessage(pubMsg.getBytes());
		    	message.setQos(pubQoS);
		    	message.setRetained(false);

		    	MqttDeliveryToken token = null;
		    	try {
					token = topic.publish(message);
					token.waitForCompletion();
					Thread.sleep(100);
				} catch (Exception e) {
					e.printStackTrace();
				}
	try {
			Thread.sleep(50000);
		}
			myClient.disconnect();
		} catch (Exception e) {
			e.printStackTrace();
		}