Рубрики
HADRWARE Ну почти "Умный дом"

NodeMCU + lua: подключение к WiFi

В данной заметке будет рассмотрен lua скрипт для подключению к wifi сети.

Файл wifi.lua

Организация модульности проекта на lua позволяет выделить неизменные фрагменты кода в отдельный файл и использовать его на различных устройствах. Данный подход уменьшает вероятность допустить случайную ошибку по невнимательности.

Создадим новый файл и добавим туда следующий код:

print("NodeMCU (esp lua) - Wifi Script")
--Задаем режим клиента для wifi и подключаемся к сети

local cfg={}
cfg.ssid="ИМЯ СЕТИ"
cfg.pwd="ПАРОЛЬ"
wifi.setmode(wifi.STATION)
print("<WIFI> Подключение к точке доступа Wifi: \""..cfg.ssid.."\".")
wifi.sta.config(cfg)
print("<WIFI> IP\t\tMASK\t\t\tGATEWAY")
print(wifi.sta.getip())

На строках 1, 8, 10 и 11 осуществляется отладочная печать по этапам подключения.
На строках 4-6 задается информация о искомой сети (имя сети и пароль).
На строке 7 — wifi.setmode(wifi.STATION) — производит смену режима на «клиент» вайфай адаптера.
На строке 9 подключается конфиг заполненный ранее.

Из дополнительных функций можно использовать:

  • wifi.sta.connect — используется для принудительного подключения если в конфигурации отключено автоподключение:
    • cfg.auto=false,
    • wifi.sta.autoconnect(0);
  • wifi.sta.setip — устанавливает ip адрес устройства, маску и шлюз сети;
  • wifi.sta.setmac — изменяет MAC адрес устройства.

Подробнее об использованных функциях можно прочесть в документации NodeMCU lua.

Файл init.lua

В прошлой заметке был приведен пример простого скрипта init.lua,который ожидал 10 секунд и загружал скрипт main.lua. Добавим загрузку скрипта wifi.lua перед пользовательским скриптом.

print("Wait. . .")
mytimer = tmr.create()
mytimer:register(10000, tmr.ALARM_SINGLE, function(t)
    mytimer:unregister(); 
    print("Starting. . .\n")
    dofile("wifi.lua") 
    dofile("main.lua") 
end)
mytimer:start()

Теперь перед запуском пользовательского скрипта main.lua NodeMCU будет подключаться к выбранной сети.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.