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

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

  1. kmaximv

    kmaximv Гик

    У Вас Arduino core for ESP8266 старая, обновите до 2.3.0 Stable version.
    В последнее время пользуюсь Arduino 1.6.12, полёт нормальный.
    Сейчас скачал Arduino 1.6.8, тоже работает.
    Arduino 1.6.5-r5 ошибка компиляции...
     
    woow нравится это.
  2. woow

    woow Гик

    У меня есть такая приблуда https://www.google.lt/url?sa=i&rct=j&q=&esrc=s&source=imgres&cd=&cad=rja&uact=8&ved=0ahUKEwjopIPFq_PPAhXGXhoKHaG8BHwQjRwIBw&url=http%3A%2F%2Fwww.aliexpress.com%2Fprice%2Fesp8266-wifi-arduino_price.html&psig=AFQjCNEWJYeMoLflvXRGFZhuLeNKuk8_LA&ust=1477395037369097
    как вы думаете получается ваш проект туда в качать через Arduino IDE, в голую ESP-12F прошивал фирмваре всё как- бы получилось.
     
  3. kmaximv

    kmaximv Гик

    Не знаю, нужно проверять. Но там вроде та же ESP внутри...
     
  4. Egony

    Egony Нерд

    NodeMCU, Wemos, Witty Cloud - все, что у меня есть на ESP (кроме ESP-01) - все работает с этим софтом. Проверено из-за одного бага в софте :) Как сформулирую - отпишусь.
     
  5. Egony

    Egony Нерд

    Немного наблюдений, вопросов и предложений.

    Вчера "новую" версию собирал, правда не без проблем (библиотека NTP поменялась, DHT все так же заброшен).
    Сегодня выяснил, что версия уже не новая и 4 дня назад опять что-то изменилось (Func Wifi*: refactoring code). Ну да ладно, позже проверю новую новую версию...

    Собрал на последнем Arduino IDE, с последним ESP Core и с последними версиями библиотек (простите, что не с крайними, некоторым это критично).
    Работает на NodeMCU v1.0 с датчиком на соплях (на других отладочных платах тоже все пашет).

    Параметры конфигурации:
    - DEBUG и DEBUG_JSON_CONFIG включены
    - ESP_UART и PZEM004 отключил в #define и не тестировал (первое пока не интересно, второе рушит дебаг).
    - все остальные программные модули (датчики, NTP) в #define - ВКЛЮЧЕНЫ.
    - в конфиге все датчики ОТКЛЮЧЕНЫ, кроме DHT, конфиг заточен на старт с моими параметрами после прошивки:
    Код (C++):
      char wifi_mode  [2]  = "1"  ;
      char wifi_phy_mode  [2]  = "2"  ;
      char wifi_auth  [2]  = "2"  ;
      char sta_ssid  [32] = "xxxxx"  ;
      char sta_pwd  [32] = "xxxxx"  ;
      char mqtt_server  [32] = "192.0.4.12"  ;
      char mqtt_port  [6]  = "1883"  ;
      char mqtt_user  [32] = "mqtt_user"  ;
      char mqtt_pwd  [32] = "xxxxxx"  ;
      char static_ip_enable  [2]  = "0"  ;
      char ntp_enable  [2]  = "1"  ;
      char mqtt_enable  [2]  = "1"  ;
      char bme280_enable  [2]  = "0"  ;
      char sht21_enable  [2]  = "0"  ;
      char bh1750_enable  [2]  = "0"  ;
      char motion_sensor_enable  [2]  = "0"  ;
      char pzem_enable  [2]  = "0"  ;
      char dht_enable  [2]  = "1"  ;
    Вообще, логика конфигурации модулей была такова - набить базовый софт под завязку, но отключать модули в его настройках, через веб-морду. Размер прошивки при этом не особо растет, работает без ЗАМЕТНЫХ проблем. При этом не нужно постоянно перекомпилировать при изменении железа.

    Внесены изменения:
    - добавлено отображение показаний DHT на главной в веб-морде и управление настройками DHT (галка на веб-морде, сохранение в SPIFSS).
    - имя файла конфы в SPIFSS вынесено в json_config.h (const String ConfigFileName = "/conf.json")
    Это костыль для обхода бага с кривым сохранением данных MQTT, с багом буду разбираться позже.
    косметика:
    - из MY_ESP_UART.h удалена строка #include "Arduino.h", из основного файла удалены #include "Wire.h", #include "SPI.h".
    - названия библиотек теперь все в кавычках.
    - изменено "MotionSensor moove detected" на "MotionSensor: movement detected".

    Гитхабам пока не обучен, так бы можно было сравнивать средствами гитхаба. Пока все в офлайне, сравниваю WinMerge. Измененные исходники - https://cloud.mail.ru/public/DvuK/W3Kdwv9kr

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

    kmaximv, есть вопросы и предложения:
    - почему на Вашей странице в GitHub часть ссылок на библиотеки ведут в Ваш архив а не на страницы разработчиков?
    - почему при добавлении модуля (PZEM004) не изменилась версия? Вообще, при сравнении видно, что софт перепахан серьезно с прошлого раза, а версия не обновилась.
    - почему-то, несмотря на motion_sensor_enable=0 в дебаге и в mqtt постоянно вылазит сообщение про обнаружение движения. Вроде бы то же самое с давлением (тут боюсь соврать, потом посмотрю).
    - хорошо бы сделать доступ к веб-морде по паролю, дабы в конфу не лезли [малолетние] соседи по сети. Вроде бы, пример в ESP core есть.
    - почему бы не включать все модули в прошивку, и конфигурировать их использование из веб-морды. Сейчас модули конфигурятся И из веб-морди И в #define, что перебор. Плюс, если они в #define отключены, на веб-морде они есть (это точно было в "старой" 1.08, вроде в этой тоже осталось).
    - хорошо бы добавить возможность затирания файла конфы при старте с замкнутой кнопкой, типа хард ресет. Меня бы это здорово в свое время выручило (см. про баг ниже).

    Теперь про баг, коротенько и поверхностно. Проявлялся на "старой" 1.08, с этой, тем более после "Func Wifi*: refactoring code" пока не смотрел.
    Иногда, когда что-то меняешь в корнфе через веб-морду, после ребута ESP перестает отвечать на http-заппросы и не отправляет ничего по mqtt.
    Пинг есть.
    При перепрошивке ESP подхватывает старый файл conf.json и так же впадает в кому. Изменение имени файла в прошивке проблему решает.
    Про баг с NTP - читал, это не оно (в смысле, может, и связано, но "мой" баг появляется и без модуля NTP).
    Судя по дебагу, есть какой-то косяк, при котором не сохраняется имя пользователя и пароль mqtt:

    Код (C++):
    WebMqttConf() Start
    saveConfig()
    {"module_id":"ESP8266","wifi_mode":"1","wifi_phy_mode":"2","wifi_channel":"10","wifi_auth":"2","sta_ssid":xxxx","sta_pwd":"xxxx","ap_pwd":"Poiu0987","static_ip":"192.0.4.222","static_gateway":"192.0.4.1","static_subnet":"255.255.255.0","ntp_server":"europe.pool.ntp.org","my_time_zone":"+3","mqtt_server":"192.0.4.12","mqtt_port":"1883","[B]mqtt_user":"","mqtt_pwd":""[/B],"mqtt_name":"_BedM","publish_topic":"/stateSub/","subscribe_topic":"/statePub/","command_pub_topic":"/commandPub/","light_pin":"13","lightoff_delay":"5","lighton_lux":"10","light_smooth":"0","light2_pin":"12","light2off_delay":"5","light2on_lux":"10","light2_smooth":"0","motion_pin":"14","dht_pin":"2","get_data_delay":"10","publish_delay":"60","subscribe_delay":"60","motion_read_delay":"10","reboot_delay":"1800","static_ip_enable":"0","ntp_enable":"1","mqtt_enable":"1","bme280_enable":"0","sht21_enable":"0","bh1750_enable":"0","motion_sensor_enable":"0","dht_enable":"1"}
    WebMqttConf() Load Time: 786
    Я сначала думал, что сдохла ESP. Взял другую. Другая тоже "сдохла" после шаловливых ручек в конфе. Пришлось разбираться, как обходить этот баг :)

    Вообще, в одно лицо написать такой софт - это даааа. Снимаю шляпу. Желаю Вам больше последователей - больше народу, меньше багов.
     
    Последнее редактирование: 25 окт 2016
  6. woow

    woow Гик

    Да вы правы тут автор махнул и всё по полочкам разложено для таких как я. Теперь по не множку можно подгонять под себя если что то не подходит или хочется добавить, одного не хватает - это более частого присутствия автора на форуме :)

    Вчера и я на конец то одолел этот проект. У меня компоновка вот какая Wemos D1 (+2шт.LED) +RPi3 +Android v.6.1 OpenHab.app.
    Всё работает и локально и через GSM.
    Датчики пока что не подключал, пока моргаю LED-ами. Но тут тоже что-то не так, не знаю или где ошибка по WiFi на прямую через ESP8266 интерфейс морды управлять ледами по отдельности, а через Опенхаб вкл/откл оба сразу.
    И ещё /не в тему/ путаница с пинами Wemos D1 ни где не нахожу пиноута- с верху платы прописаны одни значения с низу другие, а как на самом деле не понятно, пока что тыкаю успешно ( не натыкаться бы а то кирдык вемосу).
     
  7. kmaximv

    kmaximv Гик

    Приходится менять кое-что под себя, добавлять функции.
    Как протестирую, чтобы всё было более менее стабильно, сделаю новую версию
    Проверю
    Мысль такая была, но пока это не самая приоритетная задача.
    С #define мне проще отлаживать прошивку. Можно их все включить чтобы не париться, хотя дебаг лучше на постоянку не оставлять.
    Добавлю, только нужно определиться на какой вывод его настроить.
    Здесь бы по подробнее, после каких именно изменений? Нужно будет проветить с авторизацией mqtt
     
  8. kmaximv

    kmaximv Гик

    Конфиг Опенхаба брали с гитхаба? Ничего в нем не меняли?
    Надеюсь зимой будет побольше времени.
     
  9. Egony

    Egony Нерд

    Ах, да. Вот еще что. В room.items не хватает Switch BedM_Settings "Info" в строке 25

    Так, может, форкнуть было бы правильно? Или явно указать, если нужны именно эти, переделанные Вами версии (я собирал с оригинальными)?

    Я сегодня постараюсь воспроизвести и отпишусь.
     
    Последнее редактирование: 25 окт 2016
  10. woow

    woow Гик

    кошмар опять опенхаб не запускается искал где ошибка, что один вывод не работает, не нашёл, поставил оригинал и капец. Но здесь не кто не поможет, придётся сносить, под корень малину.
     
  11. kmaximv

    kmaximv Гик

    Переделал конфиги опенхаба, выкинул всё лишнее, сейчас должно работать. Новые конфиги на гитхабе.
     
  12. woow

    woow Гик

    Ну нашёл где кость была зарыта, оказывается, в опенхабе в место room подменено на default. Но с 12 и 13 пинами проблема не решилась, всё ровно на прямую через WiFi команды проходит, а когда через опенхаб управляется только пин13 и 11 параллельно. Опенхаб без изменений copy+paste. Только config mqtt свой брокер прописал в место mybroker.
     
  13. kmaximv

    kmaximv Гик

    Вы самую последнюю версию скетча используете? Там была ошибка, вчера исправил. Проверил у себя, работает.
     
  14. woow

    woow Гик

    Не как не пойму где найти ошибку с этими свет1 и свет2, когда подключил ещё и датчики, то они вообще перестали работает эти функции или тормозит ужасно или совсем не реагирует. На MQTT Spy нажатие виртуальных клавиш отображается- пометил там изменяется 0 или 1. Подключил датчики BH1750, GY-BM280 всё работает - СПАСИБО
     

    Вложения:

    • mq tt.jpg
      mq tt.jpg
      Размер файла:
      241,1 КБ
      Просмотров:
      762
  15. woow

    woow Гик

    Вывелась проблема, когда на WiFi всё как бы в порядке, о как только в настройках ESP ставлю галочку MQTT сервер, первая реакция перестанет слушаться ON/OFF, всё замедляется и под конец вся сеть перестаёт работать. На openhab config моя такая конфигурация.

    Код (Text):
    #######################################################################################
    #####                        General configurations                               #####
    #######################################################################################

    folder:items=10,items
    folder:sitemaps=10,sitemap
    folder:rules=10,rules
    folder:scripts=10,script
    folder:persistence=10,persist

    ################################## Chart Servlet ######################################
    #
    # This section defines the configuration for the chart servlet.
    chart:provider=default

    #
    # Set the default height of a chart if the client doesn't provide this in the request
    # defaults to 240
    chart:defaultHeight=350

    #
    # Set the default width of a chart if the client doesn't provide this in the request
    # defaults to 480
    chart:defaultWidth=1200

    #
    # Set a scale factor. This is used if the client sets the size in the request.
    # defaults to 1 (ie no scaling)
    chart:scale=1

    #######################################################################################
    #####                      Persistence configurations                             #####
    #######################################################################################

    ######################### Logging Persistence Service #################################
    #
    # the logback encoder pattern to use to write log entries
    # see http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout for all options
    # the item name is available as the "logger" name, the state as the "msg"
    logging:pattern=%date{ISO8601} - %-25logger: %msg%n

    #######################################################################################
    #####                       Transport configurations                              #####
    #######################################################################################

    ################################# MQTT Transport ######################################

    # URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883
    mqtt:ladabroker.url=tcp://localhost:1883

    # Optional. Client id (max 23 chars) to use when connecting to the broker.
    # If not provided a default one is generated.
    #mqtt:ladabroker.clientId=mybroker

    mqtt-eventbus:broker=ladabroker
    mqtt-eventbus:statePublishTopic=/statePub/${item}
    mqtt-eventbus:commandPublishTopic=/commandPub/${item}
    mqtt-eventbus:stateSubscribeTopic=/stateSub/${item}
    mqtt-eventbus:commandSubscribeTopic=/commandSub/${item}


    #######################################################################################
    #####                        Binding configurations                               #####
    #######################################################################################

    ################################ NTP Binding ##########################################

    # the hostname of the timeserver
    ntp:hostname=ptbtime1.ptb.de

    ################################ MPD Binding ##########################################
    #
    # Host and port of the first MPD to control
    mpd:TinyMPD.host=192.168.2.140
    mpd:TinyMPD.port=6600
    mpd:volumio.host=192.168.2.141
    mpd:volumio.port=6600

    ################################# TCP - UDP Binding ###################################
    #
    # Timeout - or 'refresh interval', in milliseconds, of the worker thread
    tcp:refreshinterval=250

    И ещё вот эти уставки (это с шапки этого форума) на сколько они важны, может быть надо по так уставки сделать как на этих принтскренах или оставить как в ESP8266 по дефолту.
     

    Вложения:

    • ConfigESP_.png
      ConfigESP_.png
      Размер файла:
      5,5 КБ
      Просмотров:
      650
    • Config_MQTT.png
      Config_MQTT.png
      Размер файла:
      15,4 КБ
      Просмотров:
      666
    • bed.jpg
      bed.jpg
      Размер файла:
      4,4 КБ
      Просмотров:
      741
    Последнее редактирование: 3 ноя 2016
  16. Egony

    Egony Нерд

    Дада. Только не вся сеть, а ESP в кому сваливается. Иногда, очень редко, до нее можно достучаться по веб-морде, пинг при этом есть. Я все руки не дотяну этот баг задокументировать :(
     
  17. woow

    woow Гик

    У меня роутер аж перестаёт дышать, в мониторе компа выскочила сообщение , мол, кабель оборвался, и через роутер не могу подключится , на пример к ipcam, как только вырубаю ESP или в настройках отключаю MQTT, всё оживает и становится на свои места.
    Может там в прошивке ESP какие гвозди есть, о по дате она уже давно не обновляется .
     
  18. Egony

    Egony Нерд

    Ужос. Что за маршрутизатор?

    Фигасе, давно, ей неделя от роду - это давно???
     
  19. kmaximv

    kmaximv Гик

    Такое поведение у ESP возникает по нескольким причинам:
    1. ESP не может достучаться до MQTT сервера (неправильный ip, плохая связь по wi-fi и т.д.)
    2. На ESP настроена авторизация MQTT, а на MQTT сервере нет (или наоборот)

    Не получается настроить нормальную работу ESP при нештатной ситуации с сервером MQTT. Проблема в библиотеке Pubsubclient.

    Сейчас тестирую другую библиотеку, вроде ведет себя стабильно в проблемных ситуациях. Переход займет какое-то время...
     
  20. kmaximv

    kmaximv Гик

    Можно оставить по дефолту.