ESP8266: отправка температуры на Народный мониторинг. Бюджетный вариант.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 3 мар 2015.

  1. virk

    virk Нуб

    Здравствуйте!
    Ну что-ж это очень обнадеживает. Я как писал, что приобрел для дачи пять устройств.
    Из них две ESP-01S DHT11 и три ESP-01S DS18B20.
    Осталось прошить . Просмотрел в инете ,встречал несколько версий для отправки показаний на сайт Народного Мониторинга. Но в основном после описания, куча вопросов с трудностью запуска.
    И что бы не заблудится в этих проблемах,у меня к Вам вопрос.
    Есть ли стабильная версия для повторения для прошивки (Для отправки температуры на Народный мониторинг)
    Буду очень признателен за помощь.
     
  2. ИгорьК

    ИгорьК Гуру

    Прошейте и посмотрите. Не понравится - прошьете из другого места.
     
  3. abf

    abf Нерд

    у меня последняя из этой ветки, шил почти как тут написано, но все на Линуксе Виликом и Ужастном. Поэтому заливал прошивку через ком строку (CLI) а вот скрипты уже графика все как на картинках, все работает, Спасибо автору.
    единственно если задумаешь поменять сетку то нужно перешить будет а девайс у меня уже на улице , и впаян в монтажку, поэтому не так просто будет перешить если что.
     
  4. len04ka

    len04ka Нуб

    Игорь,
    подскажите пожалуйста
    что это за проблемка

    #60:01:94:23:8D:13
    #t28241D79970103AB#26.50
    #heap#35184
    ##
    Retrieved in 0.20 seconds.
    Narodmon says Sensor HEAP=35184 out of range -55+125


    А так выглядяи "данные с моего IP"
    64654654654.JPG
     
  5. ИгорьК

    ИгорьК Гуру

    Народный мониторинг решил что HEAP отражает температуру и считает данные неправильными.

    На своей станице на сайте надо указать другой тип датчика.
    Точнее не помню - давно дело было
     
    SergeiL нравится это.
  6. len04ka

    len04ka Нуб

    Я не поняла, как это решить?
     
  7. alp69

    alp69 Форумчанин

    Включением головного мозга и чтением по буквам совета, который дал ИгорьК:
     
  8. ИгорьК

    ИгорьК Гуру

  9. len04ka

    len04ka Нуб

    я поняла Вас....
    Как раз с BMP280 по тому видео работает без проблем 11 мес. И надо отметить заработало без бубна.

    У меня было желание запустить вторую ESP+DS18B20 в вашем варианте. Но раз тут так встречают, пойду поищу где более приветливо общаются.
     
    Последнее редактирование: 3 фев 2019
  10. Tolubey

    Tolubey Нуб

    Приветствую. Есть ESP-01s c DHT11. Сейчас получаю просто в браузер вот по такому скетчу через Arduino IDE:
    Код (C++):
    #include "ESP8266WiFi.h"                                // Подключаем библиотеку ESP8266WiFi
    #include "Adafruit_Sensor.h"                            // Adafruit_Sensor
    #include "DHT.h"                                        // Подключаем библиотеку DHT

    const char* ssid = "****";               // Название Вашей WiFi сети
    const char* password = "****";          // Пароль от Вашей WiFi сети

    #define DHTPIN 2                                        // Пин к которому подключен датчик
    #define DHTTYPE DHT11                                   // Используемый датчик DHT 11
      // #define DHTTYPE DHT21
      // #define DHTTYPE DHT22
    DHT dht(DHTPIN, DHTTYPE);                               // Инициализируем датчик
    WiFiServer server(80);                                  // Указываем порт Web-сервера

    void setup()
    {
      Serial.begin(115200);                                 // Скорость передачи 115200
      delay(10);                                            // Пауза 10 мкс
      dht.begin();                                          // Инициализация DHT
                               
      Serial.println("");                                   // Печать пустой строки
      Serial.print("Connecting to ");                       // Печать "Подключение к:"
      Serial.println(ssid);                                 // Печать "Название Вашей WiFi сети"
     
      WiFi.begin(ssid, password);                           // Подключение к WiFi Сети
     
      while (WiFi.status() != WL_CONNECTED)                 // Проверка подключения к WiFi сети
      {
       delay(500);                                          // Пауза 500 мкс
       Serial.print(".");                                   // Печать "."
      }
       Serial.println("");                                  // Печать пустой строки                                        
       Serial.println("WiFi connected");                    // Печать "Подключение к WiFi сети осуществлено"
       server.begin();                                      // Запуск Web сервера
       Serial.println("Web server running.");               // Печать "Веб-сервер запущен"
       delay(10000);                                        // Пауза 10 000 мкс
       Serial.println(WiFi.localIP());                      // Печатаем полученный IP-адрес ESP
    }
    void loop()
    {
    WiFiClient client = server.available();                // Получаем данные, посылаемые клиентом
     
    if (client){
      Serial.println("New client");                         // Отправка "Новый клиент"
      boolean blank_line = true;                            // Создаем переменную, чтобы определить конец HTTP-запроса
      while (client.connected()){                           // Пока есть соединение с клиентом
        if (client.available()){                            // Если клиент активен
         char c = client.read();                            // Считываем посылаемую информацию в переменную "с"
         if (c == '\n' && blank_line){                      // Вывод HTML страницы
           float t = dht.readTemperature();                  // Запрос на считывание температуры
           float h = dht.readHumidity();
           client.println("HTTP/1.1 200 OK");               // Стандартный заголовок HTTP
           client.println("Content-Type: text/html");
           client.println("Connection: close");             // Соединение будет закрыто после завершения ответа
           client.println("Refresh: 10");                   // Автоматическое обновление каждые 10 сек
           client.println();
           client.println("<!DOCTYPE HTML>");               // Веб-страница создается с использованием HTML
           client.println("<html>");                        // Открытие тега HTML
           client.println("<head>");
           client.print("<title>ESP8266 TEMP</title>");     // Название страницы
           client.println("</head>");
           client.println("<body>");
           client.println("<h1>ESP8266 - Temperature & Humidity</h1>");
           client.println("<h3>Temperature = ");
           client.println(t);                               // Отображение температуры
           client.println("*C</h3>");
           client.println("</head>");
           client.println("<body>");
           client.println("<h3>Humidity = ");
           client.println(h);                               // Отображение влажности
           client.println("</h3>");
           client.println("</body>");
           client.println("</html>");                       // Закрытие тега HTML
           break;                                           // Выход
           }
            if (c == '\n'){                                 // Если "с" равен символу новой строки                                            
             blank_line = true;                             // Тогда начинаем новую строку
            }                                        
             else if (c != '\r'){                           // Если "с" не равен символу возврата курсора на начало строки                                      
              blank_line = false;                           // Тогда получаем символ на текущей строке
             }                                      
        }
      }
        client.stop();                                      // Закрытие соединения
        Serial.println("Client disconnected.");             // Печать "Клиент отключен"
    }
    }
    Подскажите, что и где нужно дописать, чтоб данные шли на народный мониторинг?
     
  11. ИгорьК

    ИгорьК Гуру

  12. Tolubey

    Tolubey Нуб

    не сталкивался с lua...
     
  13. ИгорьК

    ИгорьК Гуру

    А здесь вся тема на нем держится. Так что, видимо, вам не сюда.
     
  14. sanych

    sanych Нуб

    Привет, пытаюсь настроить датчик с батарейным питанием, загружаю следующий код:
    Код (Lua):
    ap = "ap"
    appass = "pass"
    pin = 4
    cfg = {
      ip = "192.168.1.14",
      netmask = "255.255.255.0",
      gateway = "192.168.1.1"
    }

    sleepdelay = 300
    killdelay = 15
    function send(temperature)
      wifi.sta.setip(cfg)
      wifi.setmode(wifi.STATION)
      wifi.sta.config(ap , appass)
      wifi.sta.autoconnect(0)
      wifi.sta.eventMonReg(wifi.STA_GOTIP,
        function()
    --      tmr.stop(0)
          local url = "http://192.168.1.8/atm.tcl?t="..temperature
          print(url)
          http.get(url, nil, function(code, data)
           if (code < 0) then
             print("HTTP request failed")
           else
             print(code, data)
           end
          end)
       end)
       wifi.sta.eventMonStart()
    end


    function publish_data()
        print("work now!")
        local t = 85
        t = getTemp()
        print("Got "..t)
        if t ~= 85 then
          if bit.isset(t, 15) then t = 1 - bit.bxor(t, 0xffff) end
          t = t * 625 / 10000
          print("t = "..t)
          print("Pubish Data!")
          send(t)
        end
    end

    function getTemp()
        print("get t")
        local t = 85
        local ds18b20 = require('ds18b20')
        ds18b20.setup(pin)
        local addres={}
        addres=ds18b20.addrs()
        if addres[1] ~= nil then
            t = ds18b20.read(addres[1])
        end
        print("Got "..t)
        return t
    end

    function disconnect()
        tmr.alarm(3, 500, 0, function()
            print("Sleep Now!")
            node.dsleep(1000000*sleepdelay, 4)
        end)
    end
    tmr.alarm(5, 1000*killdelay, 0, function()
        print("Get Sleep By Timer")
        disconnect()
    end)

    publish_data()
     
    Если убрать вызов функции disconnect, то данные отправляются на сервер, если же включить ее, то после спячки нет соединения с wifi, и соответственно данные не уходят. Может пнете меня в нужном направлении, что я не учел? время до засыпания ставил до минуты.
     
  15. ИгорьК

    ИгорьК Гуру

    Вы применяете функцию "wifi.sta.eventMonReg()", которую я предпочитаю не использовать. Ее поведение при первом знакомстве мне не понравилось и больше я с ней не работал. Сходу ошибок не вижу, тестировать времени нет.
    Здесь есть код с засыпанием, воспользуйтесь им.
     
  16. sanych

    sanych Нуб

    ну пробовал я по-разному, и отслеживал получение ip и разные варианты отслеживания wifi.sta.status(). все без толку, пока запустил с node.dsleep(1000000*sleepdelay, 2) - пока работает без проблем, потребление при просыпании 78 мА, в спящем режиме 0,7 мА. Думаю что так и оставлю, поставил время просыпания 7 секунд и время спячки 20 минут. При питании от литиевого элемента 18650 должно работать около 3 месяцев я думаю...
     
  17. ИгорьК

    ИгорьК Гуру

    DS18b20 не лучший вариант для сна. Лучше применять BME280, HDC2080.

    Плохое начало. Пробовал - хорошо, добился результата - еще лучше.
     
  18. Pitruxa

    Pitruxa Гик

    Повторил проект для градусника с 6 датчиками DS18b20.
    Всё работает без проблем!
    Все 6 датчиков нормально передают показания.
     
  19. Pitruxa

    Pitruxa Гик

    После заливки прошивки nodemcu-master-16-modules-2016-05-23-07-47-13-float.bin в модуль ESP-01, программа ESPlorer с модулем никак не работает. Все команды, которые необходимо отправить на модуль, никаких результатов не приносят.
    При этом модуль с другой прошивкой (скажем для 3х датчиков) с программой ESPlorer общается нормально.
    В чём может быть причина?
    Чтобы залить прошивку я правильно выбрал параметры в прошивальщике?
    upload_2020-4-26_12-45-38.png
     
  20. ИгорьК

    ИгорьК Гуру

    Параметры выбраны правильно, все прошивки nodemcu заливаются с 0х00 адреса.

    Дело в том, что с течением времени espressif менял SDK 1.xx - 2.xx - 3.xx . При смене sdk с 1 на 2 менялся один специфический файлик - "esp_init_data_default.bin". Он шьется для каждого модуля по адресу, в зависимости от объёма памяти.

    Похоже, здесь такая ситуация, проекты делались в разное время. (И когда их делаешь, ты же не знаешь, что ситуация потом изменится).

    В общем, здесь ничего сложного (кто привык), подсказка по адресу: https://nodemcu.readthedocs.io/en/master/flash/#sdk-init-data
    Надо залить этот файлик как там написано.

    Если вам надо только поиграться, то забейте (работает - не трогай). Если вам реально нужно второе устройство - берите второй модуль и будем его доводить до рабочего состояния.
     
    Последнее редактирование: 26 апр 2020