sábado, 12 de diciembre de 2015

Módulo wifi


wifi.setmode()
 
Description

Establece el modo de operación wifi.

  • wifi.STATION es cuando el dispositivo se conecta a un AP (Access Point o punto de Acceso) o router en modo cliente para conectarse, por ejemplo, a internet
  • wifi.SOFTAP es cuando el dispositivo se configura en modo Punto de Acceso (AP). En este modo tu puedes ver el dispositivo como una red wifi. Por defecto, a no ser que cambies los párámetros de fábrica, la dirección IP del dispositivo es la  192.168.4.1 y por DHCP asigna una dirección al dispositivo que se conecta a partir de la 192.168.4.2
  • wifi.STATIONAP es una combinación de wifi.STATION and wifi.SOFTAP. Permite, por un lado, crear una red wifi y, por otro lado, conectarte a una red existente.

Sintaxis

wifi.setmode(mode)

Parámetros

mode: Los valores debes ser:
  • wifi.STATION
  • wifi.SOFTAP
  • wifi.STATIONAP
Devuelve
modo actual
Ejemplo
wifi.setmode(wifi.STATION)

wifi.getmode()
Descripción
obtiene el modo en que está configurado el wifi.
Sintaxis
wifi.getmode()
Parámetros
ninguno
Devuelve
modo de wifi configurado
1 = STATION
2 = SOFTAP
3 = STATIONAP
Ejemplo
print(wifi.getmode())

wifi.getchannel()
Descripción
obtiene el actual canal wifi.
Sintaxis
wifi.getchannel()
Parámetros
ninguno
Devuelve
actual canal wifi
Ejemplo
print(wifi.getchannel())

wifi.setphymode()
Descripción
establece el protocolo del wifi.
  • wifi.PHYMODE_B 802.11b, Mayor alcance, velocidad de transferencia baja, mas consumo de corriente
  • wifi.PHYMODE_G 802.11g, Alcance medio, velocidad de transferencia media, consumo medio de corriente
  • wifi.PHYMODE_N 802.11n, Bajo alcance, velocidad de transferencia rápida, bajo consumo de corriente (solo en modo STATION).


Para más información consultar la siguiente tabla:
 
Parámetro
Consumo
Tx 802.11b, CCK 11Mbps, P OUT=+17dBm
170 mA
Tx 802.11g, OFDM 54Mbps, P OUT =+15dBm
140 mA
Tx 802.11n, MCS7 65Mbps, P OUT =+13dBm
120 mA
Rx 802.11b, 1024 bytes packet length, -80dBm
50 mA
Rx 802.11g, 1024 bytes packet length, -70dBm
56 mA
Rx 802.11n, 1024 bytes packet length, -65dBm
56 mA

Sintaxis
wifi.setphymode(mode)

Parámetros

mode: el valor debe ser:
  • wifi.PHYMODE_B
  • wifi.PHYMODE_G
  • wifi.PHYMODE_N
Devuelve
Modo actual
Ejemplo
--STATION
wifi.setphymode()
 
wifi.getphymode()

Descripción

obtiene el protocolo wifi.

Sintaxis

wifi.getmode()

Parámetros

ninguno

Devuelve

protocolo wifi
  • 1: wifi.PHYMODE_B
  • 2: wifi.PHYMODE_G
  • 3: wifi.PHYMODE_N

Ejemplo

print(wifi.getphymode())

wifi.startsmart()

Descripción

Se utiliza en modo wifi.STATION
inicia la configuración automática, activando el ssid y el password automáticamente

Sintaxis

wifi.startsmart(type, function succeed_callback(ssid, password))

Parámetros

type: 0~1. 0 utiliza ESP_TOUCH, 1 utiliza AIR_KISS. Nota: dev096 solo soporta ESP Touch V021.
succeed_callback: con dos argumentos, ssid y password.

Devuelve

nil

Ejemplo

wifi.setmode(wifi.STATION)
wifi.startsmart(0,
  function(ssid, password)
     print(string.format("Success. SSID:%s ; PASSWORD:%s", ssid, password))
  end
)
-- above sdk v120, can get phone ip, must use esptouch v034.
wifi.startsmart(0,function(ssid, password,phoneip) print(ssid) print(password) print(phoneip) end)

wifi.stopsmart()

Descripción

para el proceso de configuración

Sintaxis

wifi.stopsmart()

Parámetros

ninguno

Devuelve

nil

Ejemplo

wifi.stopsmart()

wifi.sleeptype()

Descripción

configura el modo reposo del wifi y devuelve el modo sleep configurado

Sintaxis

type_actual = wifi.sleeptype(type_need)

Parámetros

type_need:
wifi.NONE_SLEEP, wifi.LIGHT_SLEEP, wifi.MODEM_SLEEP

Devuelve

type_actual:
wifi.NONE_SLEEP, wifi.LIGHT_SLEEP, wifi.MODEM_SLEEP

Ejemplo

-- El consumo baja después de ejecutar esta función:
realtype = wifi.sleeptype(wifi.MODEM_SLEEP)
-- Si queremos configurarlo en un modo determinado:

wifi.sleeptype(type_need)

-- Si queremos saber en qué modo se encuentra:

print(wifi.sleeptype())

 

Cuando preguntamos en qué modo se encuentra, nos devuelve un valor numérico que corresponde a:

0: NONE_SLEEP
1: LIGHT_SLEEP
2: MODEM_SLEEP
 
Por tanto, también será válido la expresión:
wifi.sleeptype(0) -- modo NONE_SLEEP

 
Submódulo wifi.sta
 
wifi.sta.getconfig()

Description

Obtiene la configuración de la red wifi a la que estamos conectados.
Nota: Si bssid_set es igual a 0 entonces bssid es irrelevante

Sintaxis

ssid, password, bssid_set, bssid=wifi.sta.getconfig()

Parámetros

ninguno

Devuelve

ssid, password, bssid_set, bssid

Ejemplo

--Obitnene la configuración de la estación actual
ssid, password, bssid_set, bssid=wifi.sta.getconfig()
print("\nCurrent Station configuration:\nSSID : "..ssid
.."\nPassword  : "..password
.."\nBSSID_set  : "..bssid_set
.."\nBSSID: "..bssid.."\n")
ssid, password, bssid_set, bssid=nil, nil, nil, nil

wifi.sta.config()

Descripción

Establece la configuración del módulo para conectarnos a una red wifi determinada

Sintaxis

wifi.sta.config(ssid, password)
wifi.sta.config(ssid, password, auto)
wifi.sta.config(ssid, password, bssid)
wifi.sta.config(ssid, password, auto, bssid)

Parámetros

  • ssid: string(cadena de texto) menor de 32 bytes
  • password: string entre 8 y 64 bytes o vacía (0 bytes). Si es 0 significa que el punto de acceso es abierto.
  • auto: valor de 0 o 1 (1 por defecto)
    • 0: Desactiva la auto conexión y permanecerá desconectado del punto de acceso
    • 1: Activa la auto conexión y conectará con el punto de acceso.
  • bssid: String que contiene la dirección MAC del punto de acceso (opcional).
    • Puede establecer el bssid si tiene varios puntos de Acceso con el mismo SSID.
    • Note: if you set bssid for a specific SSID and would like to configure station to connect to the same ssid only without the bssid requirement, you MUST first configure to station to a different ssid first, then connect to the desired ssid
    • Los siguientes formatos son válidos:
      • "DE-C1-A5-51-F1-ED"
      • "AC-1D-1C-B1-0B-22"
      • "DE AD BE EF 7A C0"

Devuelve

nada

Ejemplo

--Conecta con un punto de acceso automáticamente
wifi.sta.config("myssid", "password")

--Conecta a un punto de acceso libre automáticamente
wifi.sta.config("myssid", "")

--Conecta a un punto de acceso de forma manual (el usuario decide cuando conectar/desconectar)
wifi.sta.config("myssid", "mypassword", 0)
wifi.sta.connect()
--introducir código cuando se conecta...
wifi.sta.disconnect()

--Conecta con un punto de acceso específico automáticamente
wifi.sta.config("myssid", "mypassword", "12:34:56:78:90:12")

--Conecta manualmente con un punto de acceso específico (el usuario decide cuando conectar/desconectar)
wifi.sta.config("myssid", "mypassword", 0, "12:34:56:78:90:12")
wifi.sta.connect()
--introducir código cuando se conecta…
wifi.sta.disconnect()

wifi.sta.connect()

Descripción

Conecta a un punto de acceso.

Sintaxis

wifi.sta.connect()

Parámetros

ninguno

Devuelve

nada

Ejemplo

wifi.sta.connect()

wifi.sta.disconnect()

Descripción

Desconecta de un punto de acceso.

Sintaxis

wifi.sta.disconnect()

Parámetros

ninguno

Devuelve

nada

Ejemplo

wifi.sta.disconnect()

wifi.sta.autoconnect()

Descripción

Conecta automáticamente con un AP.

Sintaxis

wifi.sta.autoconnect(auto)

Parámetros

auto: 0 desactiva la autoconexión. 1 activa la autoconexión

Devuelve

nada

Ejemplo

wifi.sta.autoconnect()

wifi.sta.getip()

Descripción

Obtiene la IP, máscara y dirección del gateway (puerta de enlace).

Sintaxis

wifi.sta.getip()

Parámetros

ninguno

Devuelve

ip, máscara, dirección del gateway en formato string (por ejemplo: "192.168.0.111"
devuelve nulo si la ip = "0.0.0.0".

Ejemplo

-- print current ip, netmask, gateway
print(wifi.sta.getip())
-- 192.168.0.111  255.255.255.0  192.168.0.1
ip = wifi.sta.getip()
print(ip)
-- 192.168.0.111
ip, nm = wifi.sta.getip()
print(nm)
-- 255.255.255.0

wifi.sta.setip()

Descripción

Establece manualmente la dirección IP, máscara y dirección IP del gateway.

Sintaxis

wifi.sta.setip(cfg)

Parámetros

cfg: tabla que contiene la ip, máscara y gateway
{
 ip="192.168.0.111",
 netmask="255.255.255.0",
 gateway="192.168.0.1"
}

Devuelve

true si sucede, false si falla.

Ejemplo

cfg =
{
 ip="192.168.0.111",
 netmask="255.255.255.0",
 gateway="192.168.0.1"
}
wifi.sta.setip(cfg)

wifi.sta.getmac()

Descripción

obtiene la dirección mac del módulo ESP8266.

Sintaxis

wifi.sta.getmac()

Parámetros

ninguno

Devuelve

dirección mac en formato string (por ejemplo:"18-33-44-FE-55-BB")

Ejemplo

-- print current mac address
print(wifi.sta.getmac())

wifi.sta.setmac()

Descripción

establece la dirección mac del módulo ESP8266.

Sintaxis

wifi.sta.setmac(mac)

Parámetros

mac: dirección como string (por ejemplo:"DE:AD:BE:EF:7A:C0")

Devuelve

true si sucede, false si falla.

Ejemplo

print(wifi.sta.setmac("DE:AD:BE:EF:7A:C0"))

wifi.sta.getap()

Descripción

escanea y obtiene la lista de APs devolviendo una tabla. Con dicha tabla, realizamos la llamada a una función que trata los elementos de dicha tabla.

Sintaxis

wifi.sta.getap(function(table))
wifi.sta.getap(cfg, function(table))
wifi.sta.getap(format, function(table))
wifi.sta.getap(cfg, format, function(table))

Parámetros

  • cfg: tabla que contiene la configuración del escaneo
    • ssid: ssid == nil, no filtra el ssid.
    • bssid: bssid == nil, no filtra el bssid.
    • channel: channel == 0, escanea todos los canales, de lo contrario, escanea solo el canal ajustado.(por defecto es 0)
    • show_hidden: show_hidden == 1, obtiene información del router con el ssid oculto.(por defecto es 0)
  • format: selecciona el formato de la tabla de salida, 0 o 1 es válido.(0 por defecto)
    • 0: formato antiguo (SSID : Authmode, RSSI, BSSID, Channel)
      • NOTA: Cuando usa el formato antiguo par la salida de tabla cualquier SSID duplicado se descarta.
    • 1: Nuevo formato (BSSID : SSID, RSSI, Authmode, Channel)
  • function(table): función que devuelve la tabla de AP cuando se ha realizado el escaneo
    • Esta función recibe una tabla, cuyo índice (key) es el ssid, siendo el valor otra información en formato : authmode,rssi,bssid,channel
    • Si usa el nuevo formato de salida, el índice es bssid, siendo el valor otra información en formato: ssid,rssi,authmode,channel

Devuelve

nada

Ejemplo

-- print ap list
function listap(t)
   for k,v in pairs(t) do
     print(k.." : "..v)
   end
 end
 wifi.sta.getap(listap)

-- Print AP list that is easier to read
 function listap(t) -- (SSID : Authmode, RSSI, BSSID, Channel)
  print("\n"..string.format("%32s","SSID").."\tBSSID\t\t\t\t  RSSI\t\tAUTHMODE\tCHANNEL")
  for ssid,v in pairs(t) do
   local authmode, rssi, bssid, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]+)")
   print(string.format("%32s",ssid).."\t"..bssid.."\t  "..rssi.."\t\t"..authmode.."\t\t\t"..channel)
  end
 end
 wifi.sta.getap(listap)

--NOTE: The rest of the examples use the new style output format

-- print ap list
 function listap(t)
   for k,v in pairs(t) do
     print(k.." : "..v)
   end
 end
 wifi.sta.getap(1, listap)

 -- Print AP list that is easier to read
 function listap(t) -- (SSID : Authmode, RSSI, BSSID, Channel)
  print("\n\t\t\tSSID\t\t\t\t\tBSSID\t\t\t  RSSI\t\tAUTHMODE\t\tCHANNEL")
   for bssid,v in pairs(t) do
    local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
     print(string.format("%32.s",ssid).."\t"..bssid.."\t  "..rssi.."\t\t"..authmode.."\t\t\t"..channel)
   end
 end
 wifi.sta.getap(1, listap)

--check for specific AP
 function listap(t)
  print("\n\t\t\tSSID\t\t\t\t\tBSSID\t\t\t  RSSI\t\tAUTHMODE\t\tCHANNEL")
   for bssid,v in pairs(t) do
    local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
     print(string.format("%32.s",ssid).."\t"..bssid.."\t  "..rssi.."\t\t"..authmode.."\t\t\t"..channel)
   end
 end
scan_cfg={}
scan_cfg.ssid="myssid"
scan_cfg.bssid="AA:AA:AA:AA:AA:AA"
scan_cfg.channel=0
scan_cfg.show_hidden=1
wifi.sta.getap(scan_cfg, 1, listap)

--get RSSI for currently configured AP
function listap(t)
  for bssid,v in pairs(t) do
   local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
    print("CURRENT RSSI IS: "..rssi)
  end
end
ssid, tmp, bssid_set, bssid=wifi.sta.getconfig()
scan_cfg={}
scan_cfg.ssid=ssid
if bssid_set==1 then scan_cfg.bssid=bssid else scan_cfg.bssid=nil end
scan_cfg.channel=wifi.getchannel()
scan_cfg.show_hidden=0
ssid, tmp, bssid_set, bssid=nil, nil, nil, nil
wifi.sta.getap(scan_cfg, 1, listap)

 wifi.sta.status()

Descripción

obtiene el estado actual de la conexión.

Sintaxis

wifi.sta.status()

Parámetros

ninguno

Devuelve

número del 0 al 5
  • 0: STATION_IDLE, (reposo)
  • 1: STATION_CONNECTING, (conectada)
  • 2: STATION_WRONG_PASSWORD, (contraseña incorrecta)
  • 3: STATION_NO_AP_FOUND, (AP no encontrado)
  • 4: STATION_CONNECT_FAIL, (fallo en la conexión)
  • 5: STATION_GOT_IP. (IP obtenida)

wifi.sta.getbroadcast()

Descripción

obtiene la dirección IP de broadcast.

Sintaxis

wifi.sta.getbroadcast()

Parámetros

ninguno

Devuelve

dirección de broadcast en formato string (por ejemplo:"192.168.0.255")
return nil si la IP = "0.0.0.0".

Ejemplo

bc = wifi.sta.getbroadcast()
print(bc)
-- 192.168.0.255

wifi.sta.eventMonReg()

Descripción

Register callback for wifi station status event

Sintaxis

wifi.sta.eventMonReg(wifi_status, function)
wifi.sta.eventMonReg(wifi_status, function(Previous_state))
wifi.sta.eventMonReg(wifi.status, "unreg")

Parámetros

  • wifi_status: wifi status you would like to set callback for
    • Estados de wifi válidos:
      • wifi.STA_IDLE (en reposo)
      • wifi.STA_CONNECTING (conectado)
      • wifi.STA_WRONGPWD
      • wifi.STA_APNOTFOUND (AP no encontrado)
      • wifi.STA_FAIL (fallo en la conexión)
      • wifi.STA_GOTIP (IP obtenida)
  • function: function que se lleva a cabo cuando se produce un evento
  • "unreg": anula el registro de la llamada previa
  • Previous_state: estado anterior del wifi(0 - 5)

Devuelve

nada.

Ejemplo

--register callback
wifi.sta.eventMonReg(wifi.STA_IDLE, function() print("STATION_IDLE") end)
wifi.sta.eventMonReg(wifi.STA_CONNECTING, function() print("STATION_CONNECTING") end)
wifi.sta.eventMonReg(wifi.STA_WRONGPWD, function() print("STATION_WRONG_PASSWORD") end)
wifi.sta.eventMonReg(wifi.STA_APNOTFOUND, function() print("STATION_NO_AP_FOUND") end)
wifi.sta.eventMonReg(wifi.STA_FAIL, function() print("STATION_CONNECT_FAIL") end)
wifi.sta.eventMonReg(wifi.STA_GOTIP, function() print("STATION_GOT_IP") end)

--register callback: use previous state
wifi.sta.eventMonReg(wifi.STA_CONNECTING, function(Previous_State)
 if(Previous_State==wifi.STA_GOTIP) then
   print("Station lost connection with Access Point\n\tAttempting to reconnect...")
 else
   print("STATION_CONNECTING")
 end
end)

--unregister callback
wifi.sta.eventMonReg(wifi.STA_IDLE, "unreg")

wifi.sta.eventMonStart()

Descripción

Comienza el monitor de eventos de la estación wifi

Sintaxis

wifi.sta.eventMonStart()
wifi.sta.eventMonStart(ms)

Parámetros

  • ms: intervalo entre comprobaciones en milisegundos, 150 ms por defecto.

Devuelve

nada.

Ejemplo

--start wifi event monitor with default interval
wifi.sta.eventMonStart()

--start wifi event monitor with 100 ms interval
wifi.sta.eventMonStart(100)

wifi.sta.eventMonStop()

Descripción

Para el monitor de eventos de la estación wifi

Sintaxis

wifi.sta.eventMonStop()
wifi.sta.eventMonStop("unreg all")

Parámetros

  • "unreg all": Anula los registros anteriores

Devuelve

nada.

Ejemplo

--stop wifi event monitor
wifi.sta.eventMonStop()

--stop wifi event monitor and unregister all callbacks
wifi.sta.eventMonStop("unreg all")



Submódulo wifi.ap

wifi.ap.config()

Descripción

establece el ssid y el password en modo AP. Asegúrese de que el valor del password tiene al menos 8 caracteres!.  Si no tiene al menos 8 caracteres, por defecto se establecerá sin contraseña y no se establecerá el valor de SSID. Funcionará como punto de acceso pero el nombre de la wifi será: ESP_9997C3

Sintaxis

wifi.ap.config(cfg)

Parámetros

cfg {
  • string: SSID (1-32 caracteres)
  • string: password (8-64 caracteres)
  • int: Autenticación: AUTH_OPEN | AUTH_WPA_PSK | AUTH_WPA2_PSK | AUTH_WPA_WPA2_PSK default=Open
  • int: número de canal. 1-13 por defecto=6
  • int: oculto 0=no oculto 1=oculto por defecto=0
  • int: máximo nº de conexiones 1-4 por defecto=4
  • int beacon interval time of beacons value 100-60000 default=100
}

Devuelve

nada

Ejemplo:

cfg={
 cfg.ssid="myssid"
 cfg.pwd="mypassword"
 wifi.ap.config(cfg)
}

wifi.ap.getip()

Descripción

obtiene la IP, máscara y gateway (puerta de enlace) en modo AP.

Sintaxis

wifi.ap.getip()

Parámetros

ninguno

Devuelve

dirección IP, máscara y gateway en formato string (por ejemplo:"192.168.0.111")
devuelve nil si IP = "0.0.0.0".

Ejemplo

-- print current ip, netmask, gateway
print(wifi.ap.getip())
-- 192.168.4.1  255.255.255.0  192.168.4.1
ip = wifi.ap.getip()
print(ip)
-- 192.168.4.1
ip, nm = wifi.ap.getip()
print(nm)
-- 255.255.255.0
ip, nm, gw = wifi.ap.getip()
print(gw)
-- 192.168.4.1

wifi.ap.setip()

Descripción

establece la dirección IP, máscara y gateway en modo AP.

Sintaxis

wifi.ap.setip(cfg)

Parámetros

cfg: tabla que contiene la IP, máscara y gateway
{
 ip="192.168.1.1",
 netmask="255.255.255.0",
 gateway="192.168.1.1"
}

Devuelve

true si se establece, false si falla.

Ejemplo

cfg =
{
  ip="192.168.1.1",
  netmask="255.255.255.0",
  gateway="192.168.1.1"
}
wifi.ap.setip(cfg)

wifi.ap.getmac()

Descripción

obtiene la dirección mac en modo AP.

Sintaxis

wifi.ap.getmac()

Parámetros

ninguno

Devuelve

dirección mac en formato string (por ejemplo:"1A-33-44-FE-55-BB")

Ejemplo

wifi.ap.getmac()

wifi.ap.setmac()

Descripción

establece la dirección mac en modo AP

Sintaxis

wifi.ap.setmac(mac)

Parámetros

dirección mac en formato byte string (por ejemplo:"AC-1D-1C-B1-0B-22")

Devuelve

true si se establece, false si falla.

Ejemplo

print(wifi.ap.setmac("AC-1D-1C-B1-0B-22"))

wifi.ap.getclient()

Descripción

obtiene la tabla de clientes conectados al módulo ESP en modo AP.

Sintaxis

table=wifi.ap.getclient()

Parámetros

ninguno

Devuelve

tabla que contiene los clientes

Ejemplo

table={}
table=wifi.ap.getclient()
for mac,ip in pairs(table) do
 print(mac,ip)
end

-- or shorter
for mac,ip in pairs(wifi.ap.getclient()) do
  print(mac,ip)
end

wifi.ap.getbroadcast()

Descripción

obtiene la dirección de broadcast en modo AP.

Sintaxis

wifi.ap.getbroadcast()

Parámetros

ninguno

Devuelve

dirección de broadcast en formato string (por ejemplo:"192.168.0.255")
devuelve nil si IP "0.0.0.0".

Ejemplo

bc = wifi.ap.getbroadcast()
print(bc)
-- 192.168.0.255
Submódulo wifi.ap.dhcp

wifi.ap.dhcp.config()

Descripción

Configura el servicio dhcp. Actualmente solo es compatible con el establecimiento de la dirección de inicio del conjunto de direcciones DHCP

Sintaxis

wifi.ap.dhcp.config(dhcp_config)

Parámetros

dhcp_config: Tabla que contiene la dirección inicial del pool dhcp, por ejemplo: "192.168.1.100"

Devuelve

dirección de inicio del pool, dirección final del pool

Ejemplo

dhcp_config ={}
dhcp_config.start = "192.168.1.100"
wifi.ap.dhcp.config(dhcp_config)

wifi.ap.dhcp.start()

Descripción

activa el servicio dhcp

Sintaxis

wifi.ap.dhcp.start()

Parámetros

boolean indicando si se ha activado

Devuelve

nada

wifi.ap.dhcp.stop()

Descripción

para el servicio dhcp

Sintaxis

wifi.ap.dhcp.stop()

Parámetros

ninguno

Devuelve

boolean indicando si se ha parado el servicio


Glosario de términos:
  • BSSID: MAC del AP
  • SSID: Nombre de la red Wifi
  • RSSI: Potencia de la señal recibida (dBm)
  • Authmode: Protocolo utilizado
  • Channel: Canal Wifi.


Fuentes:

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.