Датчик температуры, влажности, давления, движения и освещенности на ESP-12F

Тема в разделе "Глядите, что я сделал", создана пользователем kmaximv, 17 янв 2016.

  1. kmaximv

    kmaximv Гик

    Вроде кто-то пробовал запустить, не вышло. Мне даже проверить не на чем.

    Спящий режим даже не рассматривал. Эта прошивка не подойдет для вашей задачи.
     
  2. utya

    utya Нуб

    И ещё такой вопрос, если заливаю готовый бинарник, предварительно нужно залить чистый бланк чтобы ничё не осталось?
     
  3. kmaximv

    kmaximv Гик

    Что за чистый бланк? Заливаете прошивку, затем файлы на флеш, всё.
     
  4. utya

    utya Нуб

    Вообщем, под рукой нет arduino ide и нет исходников чтобы собрать прошивку, есть wemos со старой прошивкой, который коцнулся. Я решил в него перезалить новую прошивку, взял релиз с гитхаб. Залил с помощь nodeflasher. И вот тут проблемы, или не подтерлись старые данные или не могу зайти на модуль, к вифи подключился с паролям из гитхаба, а вот в браузере уже все пароли перебровал.
     
  5. kmaximv

    kmaximv Гик

    Никакого пароля в браузере спрашивать не должно.
     
  6. Serg_

    Serg_ Нуб

    Вопросик возник -(
    Начал собирать датчики -)
    Поднял IDE, библиотеки привел в порядок.
    Прошивка без ошибок ушла в ESP 12F (NodeMCU1.0)
    Но .....
    Захожу на страницу конфигурации wi-fi - она пустая, покопался в исходниках, нашел странички с кнопочками сканирования и настройки WI-FI , но ESP упорно не хочет мне их отдавать.
    Где прописана сеть HomeNet - не нашел -(

    Подскажите где искать ошибку или как жестко прописать wi-fi сеть ?

    В serial тоже ничего не отдается -(
    С ESP только знакомлюсь
     
  7. kmaximv

    kmaximv Гик

    1 Вариант:
    Краткая инструкция:
    github.com/kmaximv/Wi-Fi-Sensor/wiki/IDE-Arduino

    2 Вариант:
    Прописать свои настройки Wi-Fi в файле
    github.com/kmaximv/Wi-Fi-Sensor/blob/master/esp_sensor/json_config.h#L24
    Так он подключится к вашей сети автоматически.
    Затем зайти на ip-вашего-ESP/edit и закинуть файлы с папки data вручную
     
  8. jia

    jia Нуб

    Спасибо за шикарную прошивку, все пашет как нужно (правда удобнее было б с вебморды иметь возможность внести калибровочные коэфициенты)

    Но у меня вопрос.
    По инструкции
    Сделал, сразу после повторного еадатия получил бах
    Кликабельно
    [​IMG][​IMG]

    Из-за чего это могло произойти?
    Есть еще второй, но уже боюсь нажимать
     
  9. ИгорьК

    ИгорьК Гуру

    Подозреваю, что это проблема с качеством модуля. У меня сначала работал вполне сносно, а потом начались ошибки все больше и больше...
    [​IMG]
     
  10. jia

    jia Нуб

    По сути эта кнопка не нужна вообще
    В системе домашней автоматизации в 00.00 первого числа месяца присваиваешь значение показания энергии, а на картинки показываешь только дельту текущей и из начала месяца
    Теперь на втором модуле нажить резет не буду!
    Как минимум пока не приедет еще 2 штуки
     
  11. kmaximv

    kmaximv Гик

    Да, похоже на брак, может когда нажимали на кнопку, задели что-нибудь в высоковольтной части платы. С качеством этих плат определенно есть проблемы. У меня из 4 плат одна бракованная попалась.
     
  12. kmaximv

    kmaximv Гик

    Как часто опрашиваете модуль? Я снимаю одно значение в минуту, пока на двух установленных платах проблем нет.
     
  13. ИгорьК

    ИгорьК Гуру

    Раз в 30 секунд. Как видно из графика, сначала проблем на было, потом стали появляться.
    Попробую уменьшить время следующегоь запроса до минуты, как Вы советуете.
     
  14. jia

    jia Нуб

    Так по дефолту ж 10сек
    Чем чревато опрашивать его с таким интервалом?
    Дело в том, что PZEM и данная прошивка - ГЛАВНЫЙ МОДУЛЬ дома родителей, которые отключились от ЦО и без наращивания ввода по электрики перешли на электрооотпление
    Потому нужно всунуть 3.5кВт отопления (ик керамические панели), 2кВт бойлер, 2кВт стиралка и 2Квчайник + бытовая текучка в ОДИН ВВОД по договору 3.5кВт (держит 5кВт легко, без нагрева ввода)
    Думаю ловить прыжки за 5кВт и балансировать нагрузку путем отключения бойлера/панелей, где наименьше нужно тепло (есть одна ШИМ библиотека, которая отдает параметр - запроса на энергию)
    Чем быстрее буду читать, тем корректнее и лучше будет недопущена перегрузка
     
  15. ИгорьК

    ИгорьК Гуру

    Откуда Вы 10 сек взяли?
     
  16. kmaximv

    kmaximv Гик

    Если модуль PZEM не зависает, то ничем не грозит. Просто где-то попадалась информация, что модуль зависает при частом опросе.
    Опрашивать его желательно так:
    Запрос напряжения -> Пауза -> Запрос тока -> Пауза -> и т.д.
    Вот эту паузу и подбираем.

    UPD:
    В этой прошивке если стоит 10 сек опрос, то данные (например по току) будут приходить раз в 40 сек.
     
    Последнее редактирование: 18 апр 2017
  17. ИгорьК

    ИгорьК Гуру

    Вот тайминг, я делал опрос PZEM по приходу и обработке ответов:
    [​IMG]
     
  18. jia

    jia Нуб

    А пзем сбрасывать можно ПОД НАГРУЗКОЙ?
    Просто коллега говорит, что только без нее

    Прошу не бить сильно.
    Сам конструктор ЭВМ по образованию, но сразу после универа, уже 14 лет, рабтаю связистом... потому могу крабить ибо под ардуино НИЧЕГО не писал вообще

    Эта последовательность записана в строке?
    Код (C++):
    enum PZEM_ENUM {PZEM_VOLTAGE, PZEM_CURRENT, PZEM_POWER, PZEM_ENERGY};
    Выходит если мне критично иметь ОПЕРАТИВНО ток или мощщу, то нужно сменить на последовательность вида?
    Читать мощщу, потом ненужное, читать мощщу, потом опять не критичное?
    Так я получу потребляемую мощщу раз в 20с копейками секунд?

    Код (C++):
    enum PZEM_ENUM {PZEM_POWER, PZEM_VOLTAGE, PZEM_POWER, PZEM_CURRENT, PZEM_POWER, PZEM_ENERGY};
     
  19. kmaximv

    kmaximv Гик

    Не представляю как это может быть связано, ведь кнопкой просто сбрасывается счетчик.

    Это можно сделать так:
    Код (C++):
    enum PZEM_ENUM {PZEM_POWER, PZEM_VOLTAGE, PZEM_POWER2, PZEM_CURRENT, PZEM_POWER3, PZEM_ENERGY};
    и дописать в эту функцию case PZEM_POWER2, PZEM_POWER3:
    Код (C++):
    void GetPzemSerialRead() {

      char log[LOGSZ];
      unsigned long start_time = millis();
      addLog_P(LOG_LEVEL_DEBUG_MORE, "Func: GetPzemSerialRead Start");

      switch (pzem_current_read) {
        case PZEM_VOLTAGE:
          if (GetPzemData(pzem.voltage(ip_pzem), &pzemVoltageString)) {
            snprintf_P(log, sizeof(log), PSTR("GetPzemSerialRead: Voltage: %s V"), pzemVoltageString.c_str());
            addLog(LOG_LEVEL_INFO, log);
            pzem_current_read = PZEM_CURRENT;
          }
          break;
        case PZEM_CURRENT:
          if (GetPzemData(pzem.current(ip_pzem), &pzemCurrentString)) {
            snprintf_P(log, sizeof(log), PSTR("GetPzemSerialRead: Current: %s A"), pzemCurrentString.c_str());
            addLog(LOG_LEVEL_INFO, log);
            pzem_current_read = PZEM_POWER;
          }
          break;
        case PZEM_POWER:
          if (GetPzemData(pzem.power(ip_pzem), &pzemPowerString)) {
            snprintf_P(log, sizeof(log), PSTR("GetPzemSerialRead: Power: %s W"), pzemPowerString.c_str());
            addLog(LOG_LEVEL_INFO, log);
            pzem_current_read = PZEM_ENERGY;
          }
          break;
        case PZEM_ENERGY:
          if (GetPzemData(pzem.energy(ip_pzem), &pzemEnergyString)) {
            snprintf_P(log, sizeof(log), PSTR("GetPzemSerialRead: Energy: %s Wh"), pzemEnergyString.c_str());
            addLog(LOG_LEVEL_INFO, log);
          }
          pzem_current_read = PZEM_VOLTAGE;
          break;
        default:
          pzem_current_read = PZEM_VOLTAGE;
      }

      unsigned long load_time = millis() - start_time;
      snprintf_P(log, sizeof(log), PSTR("Func: GetPzemSerialRead load time: %d"), load_time);
      addLog(LOG_LEVEL_DEBUG_MORE, log);
    }
     
    jia нравится это.
  20. kmaximv

    kmaximv Гик

    Запросы были одного типа? Или V -> A -> W -> Wh?