Это Вам, mast, спасибо - похоже то что нужно.
Остался ещё один нюанс...
Я правильно понимаю, что описание датчиков нужно интерпретировать согласно unit/update_sensor ?
Значит значение возвращаемое unit/calc-sensors должно представлять количество литров топлива в баке согласно датчика уровня, верно ?
В начале я получаю описание датчиков запросом core/search_item с параметрами (согласно флагов объектов):
{"id":"<ID техники>","flags":"4096"}
Получаю ответ:
{
"item" : {
"sens" : {
"1" : {
"id" : 1,
"n" : "Датчик зажигания",
"t" : "engine operation",
"d" : "",
"m" : "On\/Off",
"p" : "adc1",
"f" : 0,
"c" : "{\"appear_in_popup\":true,\"show_time\":false,\"pos\":1,\"ci\":{},\"validate_driver_unbound\":0,\"unbound_code\":\"\"}",
"vt" : 0,
"vs" : 0,
"tbl" : []
},
"2" : {
"id" : 2,
"n" : "Датчик уровня топлива",
"t" : "fuel level",
"d" : "",
"m" : "liters",
"p" : "adc9",
"f" : 0,
"c" : "{\"appear_in_popup\":true,\"show_time\":false,\"pos\":2,\"ci\":{},\"validate_driver_unbound\":0,\"unbound_code\":\"\"}",
"vt" : 1,
"vs" : 0,
"tbl" : []
},
"3" : {
"id" : 3,
"n" : "Прицеп",
"t" : "trailer",
"d" : "",
"m" : "",
"p" : "rs485_fls22",
"f" : 0,
"c" : "{\"appear_in_popup\":true,\"show_time\":false,\"pos\":3,\"ci\":{},\"validate_driver_unbound\":0,\"unbound_code\":\"\"}",
"vt" : 1,
"vs" : 0,
"tbl" : []
},
"4" : {
"id" : 4,
"n" : "Датчик уровня топлива",
"t" : "fuel level",
"d" : "Epsilon правый|0.631:0:0.64:25:0.666:....", // тут длинный код
"m" : "liters",
"p" : "adc2",
"f" : 0,
"c" : "{\"appear_in_popup\":true,\"show_time\":false,\"pos\":5,\"ci\":{},\"validate_driver_unbound\":0,\"unbound_code\":\"\"}",
"vt" : 1,
"vs" : 0,
"tbl" : [{
"x" : -0.369,
"a" : 0,
"b" : -348201.3876
}, {
"x" : 0.631,
"a" : 2777.77777778,
"b" : -1752.77777778
}, {
"x" : 0.64,
"a" : 961.538461538,
"b" : -590.384615385
}, {
"x" : 0.666,
"a" : 1000,
"b" : -616
}, {
"x" : 0.691,
"a" : 1000,
"b" : -616
}, {
"x" : 0.716,
"a" : 862.068965517,
"b" : -517.24137931
}, {
"x" : 0.745,
"a" : 892.857142857,
"b" : -540.178571429
}, {
"x" : 0.773,
"a" : 833.333333333,
"b" : -494.166666667
}, {
"x" : 0.803,
"a" : 862.068965517,
"b" : -517.24137931
}, {
"x" : 0.832,
"a" : 833.333333333,
"b" : -493.333333333
}, {
"x" : 0.862,
"a" : 806.451612903,
"b" : -470.161290323
}, {
"x" : 0.893,
"a" : 833.333333333,
"b" : -494.166666667
}, {
"x" : 0.923,
"a" : 862.068965517,
"b" : -520.689655172
}, {
"x" : 0.952,
"a" : 892.857142857,
"b" : -550
}, {
"x" : 0.98,
"a" : 925.925925926,
"b" : -582.407407407
}, {
"x" : 1.007,
"a" : 925.925925926,
"b" : -582.407407407
}, {
"x" : 1.034,
"a" : 925.925925926,
"b" : -582.407407407
}, {
"x" : 1.061,
"a" : 961.538461538,
"b" : -620.192307692
}, {
"x" : 1.087,
"a" : 1063.82978723,
"b" : -731.382978723
}, {
"x" : 1.134,
"a" : 892.857142857,
"b" : -537.5
}, {
"x" : 1.162,
"a" : 666.666666667,
"b" : -274.666666667
}
]
},
"5" : {
"id" : 5,
"n" : "Водитель",
"t" : "driver",
"d" : "",
"m" : "",
"p" : "rs485_fls12",
"f" : 0,
"c" : "{\"appear_in_popup\":true,\"show_time\":false,\"pos\":4,\"ci\":{},\"validate_driver_unbound\":0,\"unbound_code\":\"\"}",
"vt" : 1,
"vs" : 0,
"tbl" : []
}
}
},
"flags" : 4096
}
Я выполняю запрос messages/load_interval с параметрами:
{"itemId":"<ID техники>","timeFrom":1399946400,"timeTo":1399993200,"flags":0,"flagsMask":65280,"loadCount":50000}
Соответственно получаю "трек" за интервал.
Сразу же за этим пробую получить уровень топлива (как я понимаю, это либо датчик 2, либо 4 - не понял почему их два...) запросом unit/calc_sensors:
{"source":"","indexFrom":0,"indexTo":1000,"unitId":"11715932","sensorId":2}}
{"source":"","indexFrom":0,"indexTo":1000,"unitId":"11715932","sensorId":4}}
Данные этих запросов различаются. А если выполнять их независимо от получения трека то совпадают и на всем интервале равны "-348201.3876".
Так вот, нюанс который мне не понятен - какой из датчиков (2 или 4) следует брать в качестве источника данных о уровне топлива в точках интервала?
Верно ли что датчик 2 - это вычисленный в литрах уровень топлива, а датчик 4 - это тот же датчик, но с сырыми данными и таблицей пересчета ?
И параметры indexFrom / indexTo - индексы для них откуда берутся ?
Индекса сообщения в ответе messages/load_interval я не увидел...