• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Как такое происходит? "нечисло" проскакивает на Thingspeak

lues

New member
Всем привет.

Непонятная ситуация.
Обычная есп, обычный датчик температура/влажность AM2302. Он же DHT22.

Скетч получения значений ровно из примера библиотеки. Проще некуда. Библиотека адафрутитовская.

Код:
float temp = event.temperature;
ThingSpeak.setField(1, temp);
ThingSpeak.writeFields(myChannelNumber, thingspeakApiKey);
почти аналогичное с влажностью


Иногда датчик выдает ошибку "Not A Number". Иногда "null".
Бог с той ошибкой, мне не критично, блок питания просто гадкий, наверное изза выбросов по питанию. Но суть не в том.

КАК? вот это "nan" и "null" проходит через числовую переменную float и попадает на thingspeak?????
И в графике в виджете thingspeak на телефоне мне вместо неполученного значения "nan"

Это же не число.
 

Юрий Ботов

Moderator
Команда форума
И что? Значение float имеет полное право иметь значение NAN. Вот код из вашей библиотеки
Код:
float DHT::readHumidity(bool force) {
  float f = NAN;
  if (read()) {
    switch (_type) {
    case DHT11:
      f = data[0];
      break;
    case DHT22:
    case DHT21:
      f = data[0];
      f *= 256;
      f += data[1];
      f *= 0.1;
      break;
    }
  }
  return f;
}
То есть если не прочлось то вернуть NAN.
Никто за вас не поставит проверку на NULL и NAN прежде чем вы пошлете данные на сервер.
 
Сверху Снизу