Приветствую Всех. Ребята , помогите разобраться с передачей значений с сенсора одним пакетом в МД. Цель - передать 14 данных , полученных с сенсора ( и рассчитанные АМС ) на сервер МД. Код заимствовал из модуля "электро". Для этого просто его подключил в проект. Заменил значения мощности на свои температуры , расход воды и напряжение батарейки. Я понимаю, что это не правильно и избыточно , но по другому пока не знаю как. Что сделал :
1 Так как серверов много , у каждого изменил название пакета
Код: Выделить всё
void electroWorks() {
getUIP("packTemp8", START_PIN, END_PIN, samples);
}
2 У каждого сервера изменил названия переменных в пакете
Код: Выделить всё
void sendElectroMajor(char obj[], byte STT, byte STP) {
// для посылки дробной части значения
int UPrms_[MAX_UI_SENSORS];
// Вычисляем дробные части значений для формирования строки
UPrms_[U] = (middleUPrms[U] - (int)middleUPrms[U]) * 100;
for (int i = STT; i < STP; i++) {
UPrms_[i] = (middleUPrms[i] - (int)middleUPrms[i]) * 100;
}
if (STT == START_PIN && STP == END_PIN) {
sprintf(buf, "GET /objects/?object=%s&op=m&m=update&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d&%s=%0d.%d HTTP/1.0",
obj, "c1", (int)middleUPrms[U], abs(UPrms_[U]),
"c2", (int)middleUPrms[1], abs(UPrms_[1]),
"c3", (int)middleUPrms[2], abs(UPrms_[2]),
"c4", (int)middleUPrms[3], abs(UPrms_[3]),
"c5", (int)middleUPrms[4], abs(UPrms_[4]),
"c6", (int)middleUPrms[5], abs(UPrms_[5]),
"c7", (int)middleUPrms[6], abs(UPrms_[6]),
"c8", (int)middleUPrms[7], abs(UPrms_[7]),
"c9", (int)nrf1Battery, abs(0),
"c10",(int)nrf1Temp1, abs(0),
"c11",(int)nrf1Temp2,abs(0),
"c12",(int)nrf1DHThum, abs(0),
"c13",(int)nrf1Vol1, abs(0),
"c14",(int)nrf1Vol2, abs(0));
#ifdef MAJORDOMO_FEATURE
sendHttpRequest(MAJOR_IP, MAJOR_PORT, mclient);
#endif
}
} // sendElectroMajor( )
3 Конечно прописал в МД связь всех серверов и вижу значения , историю и самое главное для меня "SteelSeries".
Я понимаю, что это дико не правильно , и прошу помощи разобраться.
1 Как вырезать код sprintf(buf, "GET /objects/? из условия if и сделать его самостоятельным ?
2 Куда вообще его вставить , если надо передавать значения с сенсора ?
Температура nrf1Temp1 имеет 2 знака после запятой. Как рассчитать и передать , я сообразил. Т.к. это вода - то минус это нонсенс ( хотя не факт)
Влажность nrf1DHThum всегда целое и положительное.
Напряжение батареи то же целое и положительное
Расход воды так же целое и максимально 32 000 литров ( другой сервер считает импульсы электросчетчиков )
Как вообще это окультурить и сделать правильно ?
Да , все это крутится на платформе ESP.