ESP8266. Включение радиомодуля после dsleep.

Тема в разделе "Arduino & Shields", создана пользователем lex_m14, 25 май 2017.

Метки:
  1. lex_m14

    lex_m14 Нуб

    День добрый, уважаемые камрады!

    Захотел повторить датчик температуры ds18b20+esp8266+MQTT+батарейка от великого гуру ИгорьК и столкнулся с такой вот оказией:

    После пробуждения от node.dsleep(sleeptime, 4) никак не могу включить модуль WiFi. Все поиски в гуглах-яндексах привели вот к этой заметке про wifi.suspend() и wifi.resume() - https://github.com/nodemcu/nodemcu-firmware/pull/1231

    Причем node.dsleep(sleeptime, 0) отрабатывает на ура, но как я понял режим «0» включает радиомодуль сразу после просыпания, что сказывается на автономной работе от батареек.

    При выполнении wifi.resume() – вываливает в терминал ошибку, что радиомодуль не спит. Чередовал wifi.suspend() и wifi.resume() – радиомодуль не включается.
     
  2. ИгорьК

    ИгорьК Гуру

    Эм... Ну если Вы повторили моё решение в точности, оно должно работать. Чет Вы, видимо, изменили.
     
  3. ИгорьК

    ИгорьК Гуру

    Или изменилась текущая прошивка модуля. Там где Вы нашли моё устройство - прошивка есть?
    NodeMCU иногда меняет что-то в решениях, соответственно, когда применяются нечасто встречающиеся вещи возникают проблемы.
     
  4. lex_m14

    lex_m14 Нуб

    Да, прошивку создал новую. Изменил в функции pubdata(tmpr):
    Код (C++):
    function pubdata(tmpr)
        print("PubData!")
        wifi.setmode(wifi.STATION)
        wifi.sta.setip(cfg)
       -- wifi.sta.config(ap, appass)
    +wifi.sta.config(cfg) -- все настройки в начале скрипта
        wifi.sta.autoconnect(0)
        -- wifi.sta.eventMonReg(wifi.STA_GOTIP,
    +wifi.eventmon.register(wifi.STA_GOT_IP,
        function()
            sendData(tmpr)
        end)
        -- wifi.sta.eventMonStart()
    end
     
    Последнее редактирование: 25 май 2017
  5. lex_m14

    lex_m14 Нуб

    На все что закомментировал ESPlorer ругался что API устарел. Вашу прошивку не стал использовать, т.к. за основу взял ESP-01, подпаял перемычку между GPIO16 и RST
     
  6. lex_m14

    lex_m14 Нуб

    Да, грешу на wifi.sta.eventMonStart(), но я так ничего не нашел про эту функцию и чем ее заменить. Если оставляю, то ругается на устаревший API.
     
  7. ИгорьК

    ИгорьК Гуру

    Код (C++):
    wifi.sta.autoconnect(0)
    Это что?
     
  8. lex_m14

    lex_m14 Нуб

    Эмм... Отключение автоконнекта...
    Игрался я с этим параметром, не помогло.
     
  9. ИгорьК

    ИгорьК Гуру

    Ясно. Будет время и желание возможно перепишу под новый апи.
    Прошивка моя старая будет работать с любым модулем и сейчас.
     
  10. ИгорьК

    ИгорьК Гуру

    Направление ясно?
     
  11. lex_m14

    lex_m14 Нуб

    Игрался я с этим параметром. Такое ощущение, что после dsleep отключается радиомодуль на физическом уровне и простой wifi.sta.connect() вряд ли поможет.
     
  12. ИгорьК

    ИгорьК Гуру

    Ну там должна быть единица безусловно.
    Но в целом Вы не то делаете.
    Эти две функции-колбэки я не проверял в работе. Для устройства от батареек важна каждая секунда.
    Повторяйте с моей прошивкой, в ближайшее время не смогу заняться перепилом под новую.
     
  13. lex_m14

    lex_m14 Нуб

    Ну повторил все точь-в-точь и у Вас там "0" :)
    Брал все вот отсюда: http://forum.amperka.ru/threads/ard...ый-дом-азы-управления.5043/page-38#post-77962
     
  14. ИгорьК

    ИгорьК Гуру

    Старый стал...
    БЯда в том, что я не вижу прошивки в этом посте :-(
    Там выше где-то ее нет?
    Я на сотовом и комп до вторника не ожидается, к сожалению.
     
  15. ИгорьК

    ИгорьК Гуру

  16. lex_m14

    lex_m14 Нуб

    Сам иногда поражаюсь какие чудеса по невнимательности можно сотворить))) Прошивка есть вот в этом посте http://forum.amperka.ru/threads/ard...ый-дом-азы-управления.5043/page-37#post-76008 Отсюда взял только ds18b20.lua
     
  17. ИгорьК

    ИгорьК Гуру

    Кстати, Вы дали ссылку на экспериментальный вариант, там об этом сказано.