kopia lustrzana https://github.com/GuyCarver/MicroPython
78 wiersze
2.5 KiB
Python
78 wiersze
2.5 KiB
Python
|
|
from pyb import UART, udelay
|
|
|
|
#AT commands for the ESP8266
|
|
#For comprehensive instructions visit http://www.electrodragon.com/w/Wi07c
|
|
#AT command strings must end with "\r\n" to trigger command processing.
|
|
#Any commands takin ssid or passwords must have id or password surrounded by quotes.
|
|
#AT - return "ok" if connection works.
|
|
#AT+RST - reset. Will write back a bunch of gibberish then "ready"
|
|
#AT+GMR - firmware version.
|
|
#AT+CIOBAUD? or AT+CIOBAUD=? - return baud rate, AT+CIOBAUD=xxx - set baud rate.
|
|
#AT+CWMODE or CWMODE? 1=Sta, 2=AP, 3=both. AP for devices STA for router.
|
|
#AT+CWJAP=ssid,pwd or CWJAP? Join or report AP.
|
|
#AT+CWLAP - list APs.
|
|
#AT+CWQAP - Quit AP.
|
|
#AT+CWSAP=ssid,pwd,chnl,encryption or CWSAP? = Set AP params.
|
|
#AT+CWLIF - Check join devices.
|
|
#AT+CIPSTATUS - Get connection status.
|
|
#AT+CIPSTART
|
|
#AT+CIPMODE=mode - 0 no data mode, 1 data mode, CIPMODE? reports mode.
|
|
#AT+CIPSEND=lengh - send data.
|
|
#AT+CIPCLOSE - Close TCP/UDP connection.
|
|
#AT+CIFSR - Get IP addresses
|
|
#AT+CIPMUX=mode or CIPMUX? - set/get multiple connection mode.
|
|
#AT+CIPSERVER=mode,port - Set as server.
|
|
#AT+CIPSTO=timout or CIPSTO? - Set/get server timout.
|
|
#AT+IPD - Receive data
|
|
#AT+CSYSWDTENABLE or DISABLE - enable/disable restart on error watchdog.
|
|
|
|
class WIFI:
|
|
"""docstring for wifi"""
|
|
|
|
def __init__(self, uart, baudrate = 115200):
|
|
""" uart = uart #1-6, baudrate must match what is set on the ESP8266. """
|
|
self._uart = UART(uart, baudrate)
|
|
|
|
def write( self, aMsg ) :
|
|
self._uart.write(aMsg)
|
|
res = self._uart.readall()
|
|
if res:
|
|
print(res.decode("utf-8"))
|
|
|
|
def read( self ) : return self._uart.readall().decode("utf-8")
|
|
|
|
def _cmd( self, cmd ) :
|
|
""" Send AT command, wait a bit then return results. """
|
|
self._uart.write("AT+" + cmd + "\r\n")
|
|
udelay(500)
|
|
return self.read()
|
|
|
|
@property
|
|
def IP(self): return self._cmd("CIFSR")
|
|
|
|
@property
|
|
def networks( self ) : return self._cmd("CWLAP")
|
|
|
|
@property
|
|
def baudrate(self): return self._cmd("CIOBAUD?")
|
|
|
|
@baudrate.setter
|
|
def baudrate(self, value): return self._cmd("CIOBAUD=" + str(value))
|
|
|
|
@property
|
|
def mode(self): return self._cmd("CWMODE?")
|
|
|
|
@mode.setter
|
|
def mode(self, value): self._cmd("CWMODE=" + str(value))
|
|
|
|
def connect( self, ssid, password = "" ) :
|
|
""" Connect to the given network ssid with the given password """
|
|
constr = "CWJAP=\"" + ssid + "\",\"" + password + "\""
|
|
return self._cmd(constr)
|
|
|
|
def disconnect( self ) : return self._cmd("CWQAP")
|
|
|
|
def reset( self ) : return self._cmd("RST")
|
|
|