itoa + mqtt + точность значения температуры
- Войдите на сайт для отправки комментариев
Ср, 10/08/2022 - 20:43
Здравствуйте.
Подскажите пожалуйста. Ардуино + ds18b20 + mqtt. Для публикации температуры в mqtt брокере использую библиотеку PubSubClient.h. Для конвертации значений температуры (тип float) в строковый формат использую itoa(t_budka, buff, 10);
Вопрос: как в mqtt публиковать данные температуры с точностью до 1 знака после запятой? У меня же прилетают целые значения.
Благодарю
if (i == 1)
{
ds.requestTemperatures(); // считываем температуру с датчиков
}
//dallas считывание
if (i == 2)
{
t_budka = ds.getTempC(ds_budka);
t_water = ds.getTempC(ds_water);
t_podval_server = ds.getTempC(ds_podval_server);
t_kotel_out = ds.getTempC(ds_kotel_out);
t_kotel_in = ds.getTempC(ds_kotel_in);
t_out_porch = ds.getTempC(ds_t_out_porch);
i = 0;
itoa(t_budka, buff, 10);
client.publish("ihouse/climat/budka/temp", buff, true);
itoa(t_water, buff, 10);
client.publish("ihouse/water/in/temp", buff, true);
itoa(t_podval_server, buff, 10);
client.publish("ihouse/climat/podval/server/temp", buff, true);
itoa(t_kotel_out, buff, 10);
client.publish("ihouse/climat/kotel/out", buff, true);
itoa(t_kotel_in, buff, 10);
client.publish("ihouse/climat/kotel/in", buff, true);
itoa(t_out_porch, buff, 10);
client.publish("ihouse/climat/outPorch2/temp", buff, true);
}
dtostrf()
Для конвертации значений температуры (тип float) в строковый формат использую itoa
itoa означает integer to ascii, так что ничего кроме целых вы от нее не получите :)