itoa + mqtt + точность значения температуры

yden
Offline
Зарегистрирован: 30.01.2016

Здравствуйте.

Подскажите пожалуйста. Ардуино + 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);
    }

 

sadman41
Offline
Зарегистрирован: 19.10.2016

dtostrf()

b707
Offline
Зарегистрирован: 26.05.2017

yden пишет:

Для конвертации значений температуры (тип float) в строковый формат использую itoa

itoa означает integer to ascii, так что ничего кроме целых вы от нее не получите :)