Добрый день. Помогите разобраться со структурой запроса 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/#’ отображается - /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