Помогите с nodemcu

Тема в разделе "ESP8266, ESP32", создана пользователем seregareal2, 11 ноя 2017.

  1. ИгорьК

    ИгорьК Гуру

    Скрипт - это программа на языке Lua, которая интерпретируется внутри МК. Есть она же, но заранее скомпилированная. Это уже не скрипт.
     
  2. seregareal2

    seregareal2 Нерд

    Я создал снипет, выполнил в результате нету подключения
    Код (C++):
    wifi.setmode(wifi.STATION) -- установка режима
    wifi.sta.clearconfig() -- очистка от барахла
    local scfg={} -- таблица установок ржима
    scfg.auto = true -- входить и поддерживать сеть автоматически
    scfg.save = true -- запомнить эти установки во флэше
    scfg.ssid = 'AP_Home' -- название сетки
    scfg.pwd = 'superpassword'-- пароль сетки
    wifi.sta.config(scfg) -- конфигурируем сеть
    wifi.sta.connect() -- старт соединения
    -- через 15 секунд посмотрим что получилось:
    tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    В логе


    Код (C++):
    file.format()
    format done.
    > file.format()

    ----------------------------
    No files found.
    ----------------------------
    >
    Total : 3260490 bytes
    Used  : 0 bytes
    Remain: 3260490 bytes

    > wifi.setmode(wifi.STATION) -- установка режима
    > wifi.sta.clearconfig() -- очистка от барахла
    > local scfg={} -- таблица установок ржима
    > scfg.auto = true -- вход��ть и поддерживат�� сеть автоматиче��ки
    stdin:1: attempt to index global 'scfg' (a nil value)
    stack traceback:
        stdin:1: in main chunk
    > ave = true -- запомнить эти установки ��о флэше
    scfg.ssid = '12345678' -- название сетки
    scfg.pwd = '12345678'-- пароль сетки
    wifi.sta.config(scfg) -- конфигурируем сеть
    wifi.sta.connect() -- старт соединения
    -- через 15 се��унд посмотрим чт�� получилось:
    tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    stdin:1: unexpected symbol near '�'
    >

    еще лога

    Код (C++):
    wifi.setmode(wifi.STATION)
    > wifi.sta.clearconfig()
    > local scfg={}
    > scfg.auto = true
    scfg.save = true
    stdin:1: unexpected symbol near '='
    > scfg.ssid = '12345678'
    stdin:1: attempt to index global 'scfg' (a nil value)
    stack traceback:
        stdin:1: in main chunk
    > scfg.pwd = '12345678'
    wifi.sta.config(scfg)
    wifi.sta.connect()
    tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    stdin:1: attempt to index global 'scfg' (a nil value)
    stack traceback:
        stdin:1: in main chunk
    > wifi.setmode(wifi.STATION)
    > wifi.sta.clearconfig()
    > local scfg={}
    > scfg.auto = true
    stdin:1: attempt to index global 'scfg' (a nil value)
    stack traceback:
        stdin:1: in main chunk
    > scfg.save = true
    scfg.ssid = '12345678'
    scfg.pwd = '12345678'
    wifi.sta.config(scfg)
    stdin:1: unexpected symbol near '='
    > wifi.sta.connect()
    > tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    >
        nil
     
     
    Последнее редактирование: 13 ноя 2017
  3. ИгорьК

    ИгорьК Гуру

  4. ИгорьК

    ИгорьК Гуру

    Хотя, начните читать что пишет интерпретатор:
    Код (C++):
    scfg.save = true
    stdin:1: unexpected symbol near '='
    > scfg.ssid = '12345678'
    А пишет он что "неожиданный символ рядом со знаком равенства".
    И таких надписей туева хуча. Сможете сами сделать выводы?

    Код (C++):
    wifi.setmode(wifi.STATION)
    scfg={}
    scfg.ssid="YOURS_SSID"
    scfg.pwd="SUPERPASSWORD"
    scfg.auto=true
    scfg.save=true
    wifi.sta.config(scfg)
    wifi.sta.connect()
     
    Последнее редактирование: 13 ноя 2017
  5. seregareal2

    seregareal2 Нерд

    Я сделал все из этой статьи
    Дрова переустановил, Джаву обновил

    загрузил с начала этот кусок кода не заработало


    Код (C++):
    wifi.setmode(wifi.STATION)
    scfg={}
    scfg.ssid="YOURS_SSID"
    scfg.pwd="SUPERPASSWORD"
    scfg.auto=true
    scfg.save=true
    wifi.sta.config(scfg)
    wifi.sta.connect()
    Потом обновил загрузчик через flasher, на родную с гитхаба, ESPlorer несмог определить даже версию lua

    Снес ее, собрал свою, загрузил код для мигания встроенным светодиодом и он начал мигать (хотя раньше он отказывался работать вообще)

    Код (C++):
    lighton=0
    pin=4
    gpio.mode(pin,gpio.OUTPUT)
    tmr.alarm(1,500,1,function()
    if lighton==0 then
    lighton=1
    gpio.write(pin,gpio.HIGH)
    else
    lighton=0
    gpio.write(pin,gpio.LOW)
    end
    end)
    Далее запустил снипет


    Код (C++):
    wifi.setmode(wifi.STATION)
    scfg={}
    scfg.ssid="YOURS_SSID"
    scfg.pwd="SUPERPASSWORD"
    scfg.auto=true
    scfg.save=true
    wifi.sta.config(scfg)
    wifi.sta.connect()
     
  6. seregareal2

    seregareal2 Нерд

    И снова нет конекта к WI-FI

    Код (C++):
    wifi.setmode(wifi.STATION)
    > scfg={}
    > scfg.ssid="12345678"
    > scfg.pwd="12345678"
    > scfg.auto=true
    > scfg.save=true
    > wifi.sta.config(scfg)
    > wifi.sta.connect()
    > tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    >
        nil
     
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Имя сетки и пароль правильно ввели?
     
  8. ИгорьК

    ИгорьК Гуру

    Ну, не выдает ошибок и мигает диодом - уже хорошо.
    А теперь перегрузите плату и выполните код:
    Код (Lua):
    do
    wifi.setmode(wifi.STATION)
    function listap(t)
        for k,v in pairs(t) do
            print(k.." : "..v)
        end
    end
    wifi.sta.getap(listap)
    end
     
  9. seregareal2

    seregareal2 Нерд

    да
     
  10. ИгорьК

    ИгорьК Гуру

    Ну и...?
     
  11. seregareal2

    seregareal2 Нерд

    Где мой косяк?

    wifi.setmode(wifi.STATION)
    > scfg={}
    > scfg.ssid="12345678"
    > scfg.pwd="12345678"
    > scfg.auto=true
    > scfg.save=true
    > wifi.sta.config(scfg)
    > wifi.sta.connect()
    > tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    >
    nil
    file.remove("getwifi.lua");
    > file.open("getwifi.lua","w+");
    > w = file.writeline
    > w([==[]==]);
    > w([==[-- При загрузке любого модуля ему передается]==]);
    > w([==[-- единственный параметр - его имя.]==]);
    > w([==[-- Имя модуля ловится так:]==]);
    > w([==[local modn = ...]==]);
    > w([==[print("Got name", modn)]==]);
    > w([==[-- Локальная таблица]==]);
    > w([==[local M = {}]==]);
    > w([==[-- Эта таблица состоит из одной функции]==]);
    > w([==[-- которой передается callback - то]==]);
    > w([==[-- что надо будет сделать после входа в сетку]==]);
    > w([==[M.getwifi = function(call)]==]);
    > w([==[ -- есть ли сетка?]==]);
    > w([==[ local ip = (wifi.sta.getip())]==]);
    > w([==[ -- функция выполнит callback и]==]);
    > w([==[ -- выгрузит модуль из памяти]==]);
    > w([==[ local killall = function()]==]);
    > w([==[ -- выполнение callback]==]);
    > w([==[ if call then call() end]==]);
    > w([==[ -- самоуничтожение модуля]==]);
    > w([==[ package.loaded[modn] = nil]==]);
    > w([==[ end]==]);
    > w([==[]==]);
    > w([==[ -- если мы не в сетке]==]);
    > w([==[ if not ip then]==]);
    > w([==[ -- создаем СОБЫТИЕ - постоянный таймер на 5 секунд]==]);
    > w([==[ tmr.create():alarm(5000, 1, function(t)]==]);
    > w([==[ -- узнаем есть ли сетка]==]);
    > w([==[ ip = (wifi.sta.getip())]==]);
    > w([==[ print("ip now", ip)]==]);
    > w([==[ -- если сеть]==]);
    > w([==[ if ip then]==]);
    > w([==[ -- останавливаем таймер]==]);
    > w([==[ tmr.stop(t)]==]);
    > w([==[ -- убиваем таймер]==]);
    > w([==[ tmr.unregister(t)]==]);
    > w([==[ -- убиваем переменную, что содержит таймер]==]);
    > w([==[ t = nil]==]);
    > w([==[ -- выполняем что надо]==]);
    > w([==[ killall()]==]);
    > w([==[ end]==]);
    > w([==[ end)]==]);
    > w([==[ -- событие обработки соединения создано -]==]);
    > w([==[ -- начинаем само соединение]==]);
    > w([==[ wifi.sta.connect()]==]);
    > w([==[ -- ну а если в мы в сетке]==]);
    > w([==[ else]==]);
    > w([==[ -- выполняем что надо]==]);
    > w([==[ killall()]==]);
    > w([==[ end]==]);
    > w([==[end]==]);
    > w([==[return M]==]);
    > file.close();
    > dofile("getwifi.lua");
    Got name nil
    >
    ----------------------------
    getwifi.lua : 1463 bytes
    ----------------------------
    Total file(s) : 1
    Total size : 1463 bytes

    Total : 3260490 bytes
    Used : 1757 bytes
    Remain: 3258733 bytes

    > dofile("getwifi.lua")
    Got name nil
    > do
    -- загрузка модуля
    wf = require("getwifi")
    -- готовим реакцию на событие: что будет, когда появится сеть? А вот что:
    -- callback функция, которая выполняется после входа в сеть
    local call = function()
    print("Yes! It Works!")
    -- убиваем переменную, что содержала модуль
    wf = nil
    print("Kill Module, wf = ", wf)
    end
    -- вызываем функцию из модуля и передаем ей callback
    wf.getwifi(call)
    end
    Got name getwifi
    > ip now nil
    ip now nil
    ip now nil
    ip now nil
    ip now nil
    ip now nil
    ip now nil
    ip now nil
    ip now nil
     
  12. ИгорьК

    ИгорьК Гуру

    Чё за хрень? Я попросил выполнить маленький код.
     
  13. ИгорьК

    ИгорьК Гуру

    И потом - все пояснения на русском в модуль не пихайте, это только в учебных целях.

    Я же не буду и чистый код делать и пояснить его еще раз.

    При копировании кода с сайта амперки часто проскакивают невидимые символы, на которые есплорер ругается, как в первом случае Тогда код надо чистить руками.
     
  14. seregareal2

    seregareal2 Нерд

    Мой kv9


    Код (C++):
    wifi.setmode(wifi.STATION)
    > scfg={}
    > scfg.ssid="kv9"
    > scfg.pwd="12345678"
    > scfg.auto=true
    > scfg.save=true
    > wifi.sta.config(scfg)
    > wifi.sta.connect()
    > tmr.create():alarm(15000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
    >
        nil
    do
    wifi.setmode(wifi.STATION)
    function listap(t)
    for k,v in pairs(t) do
    print(k.." : "..v)
    end
    end
    wifi.sta.getap(listap)
    end
    > HUAWEI-uTN5
    kv14
    kv24
    DIR-300
    MTSRouter-21BB39
    MTSRouter-8D3D22
    kv3
    HUAWEI-wfLH
    HUAWEI-fBAg
    Kv9
    MTSRouter-9A75D2
    IlviliterY
    MTSRouter-828EAE
    MTSRouter
    MTSRouter-017960
     
     
    Последнее редактирование: 15 ноя 2017
  15. ИгорьК

    ИгорьК Гуру

    Ну, видит сетку. Но не соединяется.
    Перегрузите роутер - бывает такое. Проблема в роутере.
     
  16. ИгорьК

    ИгорьК Гуру

    Вручную проверяйте наличие сети
    Код (C++):
    tmr.create():alarm(25000, tmr.ALARM_SINGLE, function() print('\n', wifi.sta.getip()) end)
     
    Время - 25 секунд. Может для вас дольше нужно время соединения.
     
  17. ИгорьК

    ИгорьК Гуру

    У вас kv9 и Kv9 - что правильно? Точно не ошиблись?
     
  18. seregareal2

    seregareal2 Нерд

    блин, и из за этой фигни я 4 дня потерял, просто ппц, 1000 извенений)
    нет, мой косяк
    имя сетки Kv9 у меня kv9
    исправил, все заработало
     

    Вложения:

  19. ИгорьК

    ИгорьК Гуру

    пАздравляю!
     
  20. seregareal2

    seregareal2 Нерд

    теперь париться с веб интрфейсом буду =)