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

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

  1. vovka1021

    vovka1021 Нерд

    я дико извиняюсь, но можно выложить все в одном архиве рабочий вариант проекта??? спасибо!
     
  2. Egony

    Egony Нерд

    https://codeload.github.com/kmaximv/Wi-Fi-Sensor/zip/master
    И да, на гитхабе нажать кнопку download тяжело, да. Понимаю.
     
  3. woow

    woow Гик

    Стендовые испытания как бы подтвердились, расстояние было около 1000км с другой страны :) ну это как бы для интернета не критично но всё же было интересно. На днях получил PZEM модуль, но я так понимаю он подключается отдельно, на отдельной ESP.
    У меня есть желания переделать/ перенести свой проект на ваш. Там у меня простой терма-контроллер на Arduino Nano измеряется температура в трёх точках:
    обогреваемый пол Т1, помещение Т2, улица Т3, влажность Н в внутри помещения. Все датчики температуры 18B20, DHT21 датчик на два градуса показывает температуру выше чем 18B20. Алгоритм простой- поддерживать Т в пределах заданной, алярм если датчик не в порядке, включать обогрев раньше чем упадёт Т в помещении если на улице стало холодно. Если подключить все датчики 18B20 к одному PIN, можно с экономить PIN-ов. Одну ф-ю управления освещением перевести на управление обогревателем (терма- кабель в бетоне). И само сбой мониторинг электроэнергии. Ну вот практическое применение. Далеко не все подробности вашего скетча понимаю, придётся долго ковырять.
     
  4. kmaximv

    kmaximv Гик

    PZEM модуль лучше использовать отдельно. Если будете питать его от 3,3В , нужно поменять один резистор R17. Мне тоже недавно пришел второй PZEM, не смог его запустить, похоже бракованный попался.
    db70a5992f5dc8e.jpg

    Добавление поддержки датчиков DS1820 в процессе.
     
    Последнее редактирование: 22 ноя 2016
  5. woow

    woow Гик

    На отдельной, так на отдельной не проблема, питание (в моём случае) проще 5в использовать для питания а ESP через степ-довн.
    Опа обидняк однако, не дешёвая безделушка. Мне стоило около 15 евро. Если захочешь 3фазы мониторить и трое бракованных... :( .
    :) Ждёмс
    В остальном прошу пояснить для энерга-мониторинга расширяем OpenHab добавляя доп строки (со ответственные файлы), а MQTT сервер как также? Т.э. хотел спросить использование отдельных ESP не вызовет проблем использовать тот же опенхаб интерфейс и москита сервер?
     
  6. kmaximv

    kmaximv Гик

    Проблем нет, только если использовать две одинаковых железки, нужно mqtt postfix разный указывать
     
  7. Egony

    Egony Нерд

    kmaximv,
    У Вас эта штука работала больше 50 дней без перезагрузки?
    Я к тому, что long int millis() переполнится и обнулится через 49 дней с хвостиком. И, если в это время пашет какой-нить таймер, можно здорово удивиться.

    Код (C++):
     
    // ребут нужен, если аптайм приближается к критическому (остается 26 часов до обнуления)
    if (millis()>4200000000)
    {
          if ((TimerX==0 and TimerY==0) or (millis()>4294000000))
          { // если нет работающих таймеров - значит можно ребутить ИЛИ
            //если до переполнения таймера осталось 16 минут - значит нужно ребутить

         reboot(); // вачдог плюс бесконечный цикл

         }
    }
     
    Я ребучу принудительно (другой проект) за день до переполнения. Причем ребучу, когда активных событий нет (таймеры не работают). Или ребучу не смотря на условия за 15 минут до переполнения :)
     
  8. kmaximv

    kmaximv Гик

    Да вроде нет, то свет отключат, то прошивку обновлю...
    Надо будет глянуть на что это может повлиять.
     
  9. kmaximv

    kmaximv Гик

    Добавил поддержку датчиков DS18X2X. Тестировал на 5 DS18S20.
    Также добавлен вывод лога на веб-страницу, сброс логов на syslog сервер. Теперь можно управлять уровнем логгирования.
    statusDS.png
    logConf.png
    console.png

    Так выглядит лог на Linux Mint, в качестве syslog сервера используется родной rsyslog, установленный в системе
    syslog.png
     
  10. Egony

    Egony Нерд

    Последнее редактирование: 29 ноя 2016
  11. kmaximv

    kmaximv Гик

    Была ошибка при обновлении времени, подтягивались данные предыдущего запроса.
    На вики данные актуальные.
     
  12. Egony

    Egony Нерд

    Понятно, спасибо.
    А можно ли ознакомиться с "ответной частью" MY-ESP-UART - c примером софта для ардуины?
    Интересует непосредственно обмен данными.
    У меня сейчас задача - отдать данные с ардуины в MQTT. И тут варианта два - или юзать ESP-Link, или пилить Ваш софт под свои нужды.
     
  13. kmaximv

    kmaximv Гик

    https://github.com/kmaximv/Serial
     
    Egony нравится это.
  14. mvn77

    mvn77 Нерд

    Добрый день - столкнулся с тем что готовый бинарник не работает в ESP07. Хотел собрать под прошивку АРДУИНУ но не тут то было, судя по всему с момента разработки поменялись многие библиотеки, из за этого выдает в ошибках что не поддерживаются функции, методом перебора библиотек ничего добиться не удалось. Вопрос как быть?

    Код (Text):
    ошибка"]WARNING: Spurious .github folder in 'Adafruit MQTT Library' library

    WARNING: Spurious .github folder in 'ArduinoJson' library

    WARNING: Spurious .github folder in 'Adafruit MQTT Library' library

    WARNING: Spurious .github folder in 'ArduinoJson' library
    Изменена опция сборки, пересобираем все

    esp_sensor:31: error: no matching function for call to 'DHT::DHT()'
    esp_sensor.ino:31:7: note: candidates are:
    In file included from esp_sensor.ino:30:0:
    C:\Users\mvn77\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:40:4: note: DHT::DHT(uint8_t, uint8_t, uint8_t)
        DHT(uint8_t pin, uint8_t type, uint8_t count=6);
        ^
    C:\Users\mvn77\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:40:4: note:   candidate expects 3 arguments, 0 provided
    C:\Users\mvn77\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note: constexpr DHT::DHT(const DHT&)
    class DHT {
           ^
    C:\Users\mvn77\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note:   candidate expects 1 argument, 0 provided
    C:\Users\mvn77\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note: constexpr DHT::DHT(DHT&&)
    C:\Users\mvn77\Documents\Arduino\libraries\DHT_sensor_library/DHT.h:38:7: note:   candidate expects 1 argument, 0 provided
    esp_sensor.ino: In function 'void DHT22Sensor()':
    esp_sensor:1085: error: 'class DHT' has no member named 'getTemperature'
    esp_sensor:1086: error: 'class DHT' has no member named 'getHumidity'
    esp_sensor.ino: In function 'void setup()':
    esp_sensor:3471: error: 'class DHT' has no member named 'setup'
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

        at org.fife.ui.rsyntaxtextarea.DefaultTokenPainter.paintImpl(DefaultTokenPainter.java:106)

        at org.fife.ui.rsyntaxtextarea.DefaultTokenPainter.paint(DefaultTokenPainter.java:58)

        at org.fife.ui.rsyntaxtextarea.SyntaxView.drawLine(SyntaxView.java:178)

        at org.fife.ui.rsyntaxtextarea.SyntaxView.paint(SyntaxView.java:722)

        at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)

        at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)

        at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)

        at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)

        at org.fife.ui.rtextarea.RTextAreaBase.paintComponent(RTextAreaBase.java:719)

        at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.paintComponent(RSyntaxTextArea.java:1993)

        at javax.swing.JComponent.paint(JComponent.java:1056)

        at javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)

        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1572)

        at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1495)

        at javax.swing.RepaintManager.paint(RepaintManager.java:1265)

        at javax.swing.JComponent._paintImmediately(JComponent.java:5167)

        at javax.swing.JComponent.paintImmediately(JComponent.java:4978)

        at javax.swing.RepaintManager$4.run(RepaintManager.java:824)

        at javax.swing.RepaintManager$4.run(RepaintManager.java:807)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:807)

        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:782)

        at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:731)

        at javax.swing.RepaintManager.access$1300(RepaintManager.java:64)

        at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1720)

        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)

        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)

        at java.awt.EventQueue.access$500(EventQueue.java:97)

        at java.awt.EventQueue$3.run(EventQueue.java:709)

        at java.awt.EventQueue$3.run(EventQueue.java:703)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)

        at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)

        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

    no matching function for call to 'DHT::DHT()
     
  15. kmaximv

    kmaximv Гик

    Замените библиотеку DHT на эту: Ссылка

    Ссылки на все библиотеки перечислены на Вики проекта: ссылка

    Также, если не используете DHT датчик, то можно в конфиге отключить его поддержку. Как это сделать смотрите по ссылке выше.
     
    Последнее редактирование: 4 дек 2016
  16. mvn77

    mvn77 Нерд

    Парадоксально - но я ее устанавливал - после переустановки теперь выдает
    Изменена опция сборки, пересобираем все
    esp_sensor.ino:1:25: fatal error: ESP8266WiFi.h: No such file or directory
    compilation terminated.
    Multiple libraries were found for "DHT.h"
    Used: C:\Users\mvn77\Documents\Arduino\libraries\DHT_sensor_library
    Not used: C:\Users\mvn77\Documents\Arduino\libraries\DHT-sensor-library-master
    И это несмотря на то что файл DHT.h в обоих папках присутствует.
     
  17. kmaximv

    kmaximv Гик

    Теперь проблема с поддержкой ESP в Arduino IDE. Всё ли правильно установлено? Как установить ссылка.

    Лучше обе эти папки удалить, и установить ту, что я указал.
     
  18. mvn77

    mvn77 Нерд

    через http://arduino.esp8266.com/stable/package_esp8266com_index.json
    библиотеки грохнул и заново переустановил - пришел к результату из первого своего поста.
    а вот еще -
    Код (Text):
    Arduino: 1.6.5 (Windows 7), Плата"Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"

    In file included from C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h:17:0,
                     from C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SparkFunBME280.cpp:28:
    C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h: In member function 'void SPISettings::init_AlwaysInline(uint32_t, uint8_t, uint8_t)':
    C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h:146:16: error: 'SPE' was not declared in this scope
         spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 0) |
                    ^
    C:\Users\mvn77\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Arduino.h:184:25: note: in definition of macro '_BV'
    #define _BV(b) (1UL << (b))
                             ^
    C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h:146:27: error: 'MSTR' was not declared in this scope
         spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 0) |
                               ^
    C:\Users\mvn77\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Arduino.h:184:25: note: in definition of macro '_BV'
    #define _BV(b) (1UL << (b))
                             ^
    C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h:146:65: error: 'DORD' was not declared in this scope
         spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 0) |
                                                                     ^
    C:\Users\mvn77\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/Arduino.h:184:25: note: in definition of macro '_BV'
    #define _BV(b) (1UL << (b))
                             ^
    In file included from C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SparkFunBME280.cpp:28:0:
    C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h: In static member function 'static void SPIClass::beginTransaction(SPISettings)':
    C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h:180:22: error: 'SREG' was not declared in this scope
           uint8_t sreg = SREG;
                          ^
    C:\Users\mvn77\Documents\Arduino\libraries\SparkFun_BME280_Arduino_Library-master\src\SPI.h:203:5: error: 'SPCR' was not declared in this scope
         SPCR = settings.spcr;
         ^
     
    Судя по всему - ардуино приблизилось к линуксу - когда каждая сборка является уникальной...... Интересно есть ли в теме люди помимо автора которые смогли настроить IDE под данный скетч?
     
    Последнее редактирование: 4 дек 2016
  19. mvn77

    mvn77 Нерд

    В общем убил целый день - вопрос к автору вы можете все версии библиотек указать которые используете при компиляции и какую точно версию IDE используете. Пытался все делать по вашей инструкции версия IDE - arduino-1.6.5-r5 плагины по ссылкам из первого поста. В ходе проверки скетча выскакивает около 10 мелких ошибок типа нет файла DHT.h, нет файла SPI.h и так далее которые приходится искать и ручками добавлять в папки. DHT вообще пришлось закоментировать из за несовместимости библиотеки с скетчем. Дальше SparkFun_BME280_Arduino_Library-master так и не получается идти, ибо ошибок выскакивает больше сотни. Поэтому возникает риторический вопрос - как вы это смогли откомпилировать? Приходилось ли вам собирать под ваш скетч, IDE с нуля или как говорится собираете на накопленном годами?
     
  20. kmaximv

    kmaximv Гик

    Вы на гитхабе смотрели информацию? Там я стараюсь поддерживать в актуальном состоянии.

    Версию использую 1.6.12
    Важно: библиотеки ставить, те, которые указаны в Вики на Гитхабе (несколько библиотек я подправлял под этот проект)

    У себя с нуля всё окружение настраивал месяца 2 назад, проблем никаких, правда я на Линуксе сижу, но и с Виндой их не должно быть.