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, так что ничего кроме целых вы от нее не получите :)