Всем привет! Сделал показометр температуры/ влажности/давления для нескольких радио датчиков на BME230. И в отсутствии меня на даче решил все это дело еще слать на сервер MQTT с помошью ESP8266. Вроде как все заработало, но вот температура когда уходит ниже нуля отображается некорректно, выше нуля все отлично. Подскажите как дельно исправить проблему. Данные прилетают по воздуху на приемник 433MHz, в виде 2532(т.е. 25.32*С), далее они умножаются на 0.01 и отправляются на сервер.
Что делаю не так с этой функцией? client.publish(“user_###/test/temp”, String(temp));
float temp;
unsigned int pres, hum;
float temp2, hum2;
float temp3, hum3;
//---------------------------------------
void GetData433() {
if (rx.tickWait()) { // Ждем пакет по радио
switch (rx.buffer[0]) { // Получаем адрес модуля
case 0xA1: // BME280
temp = (rx.buffer[1] << 8 | rx.buffer[2]); //приходят данные в виде 2532
temp = temp * 0.01; //переводим в 25,32
pres = (rx.buffer[3] << 8 | rx.buffer[4]);
hum = (rx.buffer[5]);
break;
case 0xA2: // HTU21D
temp2 = (rx.buffer[1] << 8 | rx.buffer[2]); //приходят данные в виде 2532
hum2 = (rx.buffer[3] << 8 | rx.buffer[4]);
temp2 = temp2 / 100; //переводим в 25,32
hum2 = hum2 / 100;
break;
case 0xA3: // AHT20
temp3 = (rx.buffer[1] << 8 | rx.buffer[2]); //приходят данные в виде 2532
hum3 = (rx.buffer[3] << 8 | rx.buffer[4]);
temp3 = temp3 / 100; //переводим в 25,32
hum3 = hum3 / 100;
break;
}
flag_data = true;
}
}
// Функция отправки показаний с термодатчика
void SendDataMQTT() {
client.publish("user_###/test/temp", String(temp));
client.publish("user_###/test/pres", String(pres));
client.publish("user_###/test/hum", String(hum));
client.publish("user_###/test/temp2", String(temp2));
client.publish("user_###/test/hum2", String(hum2));
client.publish("user_###/test/temp3", String(temp3));
client.publish("user_###/test/hum3", String(hum3));
}
flag_data = false; //После передачи сбросили флаг
}
void loop() {
GetData433(); // Получаем данные по радиоканалу
if (flag_data) {
SendDataMQTT();
}
} //END loop