Komendy Wifi
AT+CWMODE - (format: AT+CWMODE=[1..3]) - ustawienie trybu pracy Wifi. Do wyboru jest tryb klienta (1 ang. station mode), tryb dostępu (2 - ang. access point), czyli tworzona jest własne urządzenie do którego można się połączyć poprzez sieć wifi oraz połączenie obu trybów (3).
- case Command_AT_CWMODE:
- if(Wifi_Mode_Station == param || Wifi_Mode_Ap == param || Wifi_Mode_Ap_Station == param)
- {
- sprintf(dane, "AT+CWMODE=%u", param);
- UART_SENDSTRING(ESP8266_USART, dane, CR_LF);
- }
- break;
AT+CWMODE_CUR - (format: AT+CWMODE_CUR=[1..3]) - nie zapisuje zmian do pamięci flash.
- case Command_AT_CWMODE_CUR:
- if(Wifi_Mode_Station == param || Wifi_Mode_Ap == param || Wifi_Mode_Ap_Station == param)
- {
- sprintf(dane, "AT+CWMODE_CUR=%u", param);
- UART_SENDSTRING(ESP8266_USART, dane, CR_LF);
- }
- break;
AT+CWMODE_DEF - (format: AT+CWMODE_DEF=[1..3]) - zmiany wprowadzane do pamięci flash.
- case Command_AT_CWMODE_DEF:
- if(Wifi_Mode_Station == param || Wifi_Mode_Ap == param || Wifi_Mode_Ap_Station == param)
- {
- sprintf(dane, "AT+CWMODE_DEF=%u", param);
- UART_SENDSTRING(ESP8266_USART, dane, CR_LF);
- }
- break;
AT+CWJAP - (format: AT+CWJAP="nazwa_sieci","hasło") - komenda pozwala na podłączenie urządzenia do sieci wifi. Ta funkcja jest u mnie zdefiniowana w osobnej funkcji.
- /*
- * Function CWJAP, make connection with Wifi network
- */
- void Wifi_Connect(char *wifi_name, char *wifi_password)
- {
- char data[100] = {0};
- sprintf(data,"AT+CWJAP=\"%s\",\"%s\"", &wifi_name[0], &wifi_password[0]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
AT+CWJAP_CUR - (format: AT+CWJAP_CUR="nazwa_sieci","hasło") - nie zapisuje zmian do pamięci flash.
- void Wifi_Connect_Cur(char *wifi_name, char *wifi_password)
- {
- char data[100] = {0};
- sprintf(data,"AT+CWJAP_CUR=\"%s\",\"%s\"", &wifi_name[0], &wifi_password[0]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
AT+CWJAP_DEF - (format: AT+CWJAP_DEF="nazwa_sieci","hasło") - zmiany zapisywane do pamięci flash.
- void Wifi_Connect_Def(char *wifi_name, char *wifi_password)
- {
- char data[100] = {0};
- sprintf(data,"AT+CWJAP_DEF=\"%s\",\"%s\"", &wifi_name[0], &wifi_password[0]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
AT+CWLAPOPT - (format: AT+CWLAPOPT=<sort_enable>
Pierwszy parametr określa włączenie sortowania. Jeśli zostanie podana wartość 1 to dane będą wyświetlane zgodnie z
- bit 0: - Wyświetlanie
- bit 1: - Wyświetlanie
- bit 2: - Wyświetlanie
- bit 3: - Wyświetlanie
- bit 4: - Wyświetlanie
- bit 5: - Wyświetlanie
- bit 6: - Wyświetlanie
- case Command_AT_CWLAPOPT:
- if(data < 128 && ((0 == param) || (1 == param)))
- {
- sprintf(dane, "AT+CWLAPOPT=%u,%u", param, data);
- UART_SENDSTRING(ESP8266_USART, dane, CR_LF);
- }
- break;
- uint8_t AP_List(char *ssid, char *mac, uint16_t channel)
- {
- char data[50];
- if(0 == channel)
- {
- sprintf(data, "AT+CWLAP=\"%s\"", &ssid[0]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return 1;
- }
- else
- {
- sprintf(data, "AT+CWLAP=\"%s\",\"%s\",%u", &ssid[0],&mac[0],channel);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return 1;
- }
- return 0;
- }
Wywołanie komendy bezparametrowej (AT+CWLAP) wypisze listę wszystkich dostępnych punktów dostępu do ESP8266.
- case Command_AT_CWLAP:
- UART_SENDSTRING(ESP8266_USART, "AT+CWLAP", CR_LF);
- break;
Komenda w odpowiedzi prześle następujące dane:
- wypisany zostanie standard szyfrowania
- ssid albo AP
- siła sygnału
- adres mac
- offset częstotliwości dla AP podawany w kHz
- kalibracja offsetu
AT+CWQAP - (format: AT+CWQAP) - rozłączenie z AP.
- //Disconnect from AP
- //Response: OK
- case Command_AT_CWQAP:
- UART_SENDSTRING(ESP8266_USART, "AT+CWQAP", CR_LF);
- break;
AT+CWSAP - (format: AT+CWSAP=ssid, pwd, chl, enc, [max conn],[ssid hidden]) - konfiguracja trybu Soft Mode. Do konfiguracji są takie parametry jak:
- nazwa ESP, w jaki sposób będzie on widoczny podczas podłączania się do niego;
- hasło jakie należy podać przed podłączeniem;
- numer kanału;
- rodzaj szyfrowania. Do wyboru Open (0), WPA_PSK (2), WPA2_PSK (3), WPA_WPA2_PSK (4);
- maksymalna liczba urządzeń jaka może zostać podłączona do ESP, od 1 do 4.
- nadawienie SSID w trybie brodcastu. Parametr 0 włącza tą opcje, parametr 1 wyłącza.
W dokumentacji zalecają używanie wersji CUR oraz DEF w zależności od tego na jaki okres czasu chce się ustawić odpowiednie parametry.
Wysłanie zapytania tzn. komendy AT+CWSAP? pozwala na uzyskanie w odpowiedzi takich informacji jak:
Nazwę SSID, pwd, chl, enc, max conn oraz ssid hidden. Całą ramkę odpowiedzi poprzedzi nazwa CWSAP.
Nazwę SSID, pwd, chl, enc, max conn oraz ssid hidden. Całą ramkę odpowiedzi poprzedzi nazwa CWSAP.
AT+CWSAP_CUR - (format: AT+CWSAP_CUR=
AT+CWSAP_DEF - (format: AT+CWSAP_CUR=ssid,pwd,chl,enc,[max conn],[ssid hidden] ) - ustawienie stałe, zmiany wprowadzone do pamięci flash.
- /*
- * Configurate of softAP mode
- * Format AT+CWSAP=,,,,[],[]
- */
- uint8_t Config_SoftAP(char *ssid, char *pwd, uint8_t chl, uint8_t ecn, uint8_t max_conn ,SSID_Hidden_e ssid_hidden)
- {
- char data[50];
- if((ssid_hidden == Ssid_Hidden_None) && (max_conn == 0)) {
- sprintf(data, "AT+CWSAP=\"%s\",\"%s\",%u,%u", &ssid[0], &pwd[0], chl, ecn);
- }
- else if(ssid_hidden == Ssid_Hidden_None) {
- sprintf(data, "AT+CWSAP=\"%s\",\"%s\",%u,%u,%u", &ssid[0], &pwd[0], chl, ecn, max_conn);
- }
- else if((max_conn != 0) && (ssid_hidden != Ssid_Hidden_None)) {
- sprintf(data, "AT+CWSAP=\"%s\",\"%s\",%u,%u,%u,%u", &ssid[0], &pwd[0], chl, ecn, max_conn, ssid_hidden);
- }
- else {
- return Stat_Error;
- }
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- uint8_t Config_SoftAP_DEF(char *ssid, char *pwd, uint8_t chl, uint8_t ecn, uint8_t max_conn ,SSID_Hidden_e ssid_hidden)
- {
- char data[50];
- if((ssid_hidden == Ssid_Hidden_None) && (max_conn == 0)) {
- sprintf(data, "AT+CWSAP_DEF=\"%s\",\"%s\",%u,%u", &ssid[0], &pwd[0], chl, ecn);
- }
- else if(ssid_hidden == Ssid_Hidden_None) {
- sprintf(data, "AT+CWSAP_DEF=\"%s\",\"%s\",%u,%u,%u", &ssid[0], &pwd[0], chl, ecn, max_conn);
- }
- else if((max_conn != 0) && (ssid_hidden != Ssid_Hidden_None)){
- sprintf(data, "AT+CWSAP_DEF=\"%s\",\"%s\",%u,%u,%u,%u", &ssid[0], &pwd[0], chl, ecn, max_conn, ssid_hidden);
- }
- else {
- return Stat_Error;
- }
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- uint8_t Config_SoftAP_CUR(char *ssid, char *pwd, uint8_t chl, uint8_t ecn, uint8_t max_conn ,SSID_Hidden_e ssid_hidden)
- {
- char data[50];
- if((ssid_hidden == Ssid_Hidden_None) && (max_conn == 0)) {
- sprintf(data, "AT+CWSAP_CUR=\"%s\",\"%s\",%u,%u", &ssid[0], &pwd[0], chl, ecn);
- }
- else if(ssid_hidden == Ssid_Hidden_None) {
- sprintf(data, "AT+CWSAP_CUR=\"%s\",\"%s\",%u,%u,%u", &ssid[0], &pwd[0], chl, ecn, max_conn);
- }
- else if((max_conn != 0) && (ssid_hidden != Ssid_Hidden_None)) {
- sprintf(data, "AT+CWSAP_CUR=\"%s\",\"%s\",%u,%u,%u,%u", &ssid[0], &pwd[0], chl, ecn, max_conn, ssid_hidden);
- }
- else {
- return Stat_Error;
- }
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
AT+CWLIF - (format: AT+CWLIF) - komenda zwracająca. Służy do sprawdzenia jakie urządzenia są podłączone do ESP. W odpowiedzi zwraca ich IP oraz MAC. Może być wykorzystywana tylko gdy DHCP jest włączone. Nie można przy użyciu tej komendy pobrać statycznego IP. Nie przyjmuje ona żadnych parametrów:
- case Check_AT_CWLIF:
- UART_SENDSTRING(ESP8266_USART, "AT+CWLIF", CR_LF);
- break;
AT+CWDHCP - (format: AT+CWDHCP=<mode>,<en>) - komenda służy do włączania lub wyłączania. Pierwszy parametr służy do wybrania trybu pracy. Wartość 0 oznacza tryb klienta, 1 pozwala na skonfigurowanie jako urządzenie osobne do którego można się podłączyć. Ostatnia wartość czyli 2 wykorzystuje oba te tryby. Drugi parametr włącza (1) lub wyłącza (0) DHCP.
Trzeba pamiętać, że ta komenda dotyczy innych komend odpowiedzialnych za ustawienia IP. W przypadku włączenia DHCP IP statyczne zostanie wyłączone i odwrotnie. Jak się można domyślić ustawienie będzie takie jak ostatnia wprowadzona konfiguracja.
AT+CWDHCP_CUR - (format: AT+CWDHCP_CUR=<mode>,<en> ) - zapisanie wartości tymczasowej, nie zapisywana w pamięci flash.
AT+CWDHCP_DEF - (format: AT+CWDHCP_DEF=<mode>,<en> ) - zapisanie wartości do pamięci flash.
- uint8_t Config_DHCP(uint8_t command, uint8_t mode, uint8_t en)
- {
- char data[50] = {0};
- if((0 == mode || 1 == mode || 2 == mode) && (0 == en || 1 == en))
- {
- if(0 == command)
- {
- sprintf(data, "AT+CWDHCP=%u,%u", mode, en);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- else if(1 == command)
- {
- sprintf(data, "AT+CWDHCP_CUR=%u,%u", mode, en);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- else if(2 == command)
- {
- sprintf(data, "AT+CWDHCP_DEF=%u,%u", mode, en);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- }
- return Stat_Error;
- }
AT+CWDHCPS_CUR - (format: AT+CWDHCPS_CUR=<lease time>,<start ip>,<end ip>) ) - ustawia adres IP dla klienta z przygotowanego zakresu. Dane nie będą przechowywane w pamięci flash.
Parametry:
- wartość 0 wyłącza te ustawiania, używany jest domyślny zakres. Wpisanie 1 włącza zdeklarowany w następnych parametrach zasięg.
- czas przez jaki dany zakres będzie zarezerwowany. Jest on podawany w minutach w przedziale od 1 do 2880.
- początkowy adres IP
- końcowy adres IP
AT+CWDHCPS_DEF - (format: AT+CWDHCPS_CUR=<lease time>,<start ip>,<end ip> ) - wprowadzone zmiany zostaną zapisane w pamięci flash. Pierwsza długa instrucja if sprawdza czy zostanie przeprowadzone automatyczne podłączenie do AP.
- /*
- * Set the IP address allocated by ESP8266 soft-AP DHCP
- * Format AT+CWDHCPS_CUR | AT+CWDHCPS_CUR=<enable>, <lease time>, <start IP>, <end IP>
- */
- uint8_t Set_IP_Address_Range(uint8_t command, uint8_t enable, uint8_t lease_time, uint8_t *statr_IP, uint8_t *end_IP)
- {
- char data[50]={0};
- if(((0 == enable) || (1 == enable)) && ((lease_time>0) && (lease_time<2880)))
- {
- if(0 == command)
- {
- sprintf(data, "AT+CWDHCPS_CUR=%u,%u,\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"", enable, lease_time,
- statr_IP[0], statr_IP[1], statr_IP[2], statr_IP[3], end_IP[0], end_IP[1], end_IP[2], end_IP[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
- else if(1 == command)
- {
- sprintf(data, "AT+CWDHCPS_DEF=%u,%u,\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"", enable, lease_time,
- statr_IP[0], statr_IP[1], statr_IP[2], statr_IP[3], end_IP[0], end_IP[1], end_IP[2], end_IP[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
- }
- return Stat_Error;
- }
- //Auto connect to AP
- //Response: OK
- case Command_AT_CWAUTOCONN:
- if(0 == param)
- {
- UART_SENDSTRING(ESP8266_USART, "AT+CWAUTOCONN=0", CR_LF);
- }
- else if(1 == param)
- {
- UART_SENDSTRING(ESP8266_USART, "AT+CWAUTOCONN=1", CR_LF);
- }
- break;
AT+CIPAPMAC - (format: AT+CIPAPMAC =<mac>) - ustawienie adresu MAC. Adresy urządzeń muszą się między sobą różnić. Dodatkowo pierwszy bit w pierwszym bajcie nie może być wartości 1.
AT+CIPAPMAC_CUR - (format: AT+CIPAPMAC_CUR=<mac>) - nie wprowadza zmian w pamięci flash.
AT+CIPAPMAC_DEF - (format: AT+CIPAPMAC_DEF=<mac>) - wpisuje zmiany do pamięci flash.
- /*
- * Format AT+CIPAPMAC="MAC"
- */
- void Set_Mac_Data(uint8_t *ESP8266_MAC, uint8_t choose)
- {
- char data[50];
- if(1 == choose)
- {
- sprintf(data, "AT+CIPAPMAC=\"%u:%u:%u:%u:%u:%u\"", ESP8266_MAC[0], ESP8266_MAC[1], ESP8266_MAC[2], ESP8266_MAC[3],
- ESP8266_MAC[4], ESP8266_MAC[5]);
- }
- #if Init_Cur_Commands == 1
- else if(2 == choose)
- {
- sprintf(data, "AT+CIPAPMAC_CUR=\"%u:%u:%u:%u:%u:%u\"", ESP8266_MAC[0], ESP8266_MAC[1], ESP8266_MAC[2], ESP8266_MAC[3],
- ESP8266_MAC[4], ESP8266_MAC[5]);
- }
- #endif
- #if Init_Def_Commands == 1
- else if(3 == choose)
- {
- sprintf(data, "AT+CIPAPMAC_DEF=\"%u:%u:%u:%u:%u:%u\"", ESP8266_MAC[0], ESP8266_MAC[1], ESP8266_MAC[2], ESP8266_MAC[3],
- ESP8266_MAC[4], ESP8266_MAC[5]);
- }
- #endif
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
AT+CIPSTA - (format: AT+CIPSTA=<IP>,[gateway],[netmask]) - ustawienie parametrów statycznego IP, maski sieci oraz bramy domyślnej. Parametry gateway oraz netmask są opcjonalne i nie muszą zostać podane.
- void Set_IP_Data(uint8_t *ESP8266_IP, uint8_t *ESP8266_NetMask, uint8_t *ESP8266_Gateway, uint8_t check)
- {
- char data[50];
- if(1 == check) //Set only IP
- {
- sprintf(data, "AT+CIPSTA=\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3]);
- }
- else if(2 == check) //Set all param
- {
- sprintf(data, "AT+CIPSTA=\"%u.%u.%u.%u\",\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3],
- ESP8266_NetMask[0], ESP8266_NetMask[1], ESP8266_NetMask[2], ESP8266_NetMask[3],
- ESP8266_Gateway[0], ESP8266_Gateway[1], ESP8266_Gateway[2], ESP8266_Gateway[3]);
- }
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
- void Set_IP_Data_CUR(uint8_t *ESP8266_IP, uint8_t *ESP8266_NetMask, uint8_t *ESP8266_Gateway, uint8_t check)
- {
- char data[50];
- if(1 == check) //Set only IP
- {
- sprintf(data, "AT+CIPSTA_CUR=\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3]);
- }
- else if(2 == check) //Set all param
- {
- sprintf(data, "AT+CIPSTA_CUR=\"%u.%u.%u.%u\",\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3],
- ESP8266_NetMask[0], ESP8266_NetMask[1], ESP8266_NetMask[2], ESP8266_NetMask[3],
- ESP8266_Gateway[0], ESP8266_Gateway[1], ESP8266_Gateway[2], ESP8266_Gateway[3]);
- }
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
- void Set_IP_Data_DEF(uint8_t *ESP8266_IP, uint8_t *ESP8266_NetMask, uint8_t *ESP8266_Gateway, uint8_t check)
- {
- char data[50];
- if(1 == check) //Set only IP
- {
- sprintf(data, "AT+CIPSTA_DEF=\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3]);
- }
- else if(2 == check) //Set all param
- {
- sprintf(data, "AT+CIPSTA_DEF=\"%u.%u.%u.%u\",\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3],
- ESP8266_NetMask[0], ESP8266_NetMask[1], ESP8266_NetMask[2], ESP8266_NetMask[3],
- ESP8266_Gateway[0], ESP8266_Gateway[1], ESP8266_Gateway[2], ESP8266_Gateway[3]);
- }
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- }
Komenda AT+CIPSTA ma wpływ na ustawienia z komendy AT+CWDHCP. Jeśli DHCP jest włączone to statyczne IP nie jest przyjmowane i odwrotnie.
AT+CIPSTA_CUR - (format: AT+CIPSTA_CUR=<IP>,[gateway],[netmask] ) - ustawienie danych, nie zapisywane w pamięci flash:
AT+CIPSTA_DEF - (format: AT+CIPSTA_DEF=<IP>,[gateway],[netmask] )) - ustawienie danych, zapisuje zmiany w pamięci flash:
AT+CIPAP - (format: AT+CIPAP=<IP>,[<gateway>],[<netmask>]) - komenda ma taką samą składnię co funckje AT+CIPSTA. Służy natomiast do ustawiania adresu IP dla urządzenia osobnego, nie będącego w trybie klienta.
AT+CIPAP_CUR - (format: AT+CIPAP_CUR=<IP>,[<gateway>],[<netmask>] ) - ustawienie bez zapisu do pamięci flash.
AT+CIPAP_DEF - (format: AT+CIPAP_DEF=<IP>,[<gateway>],[<netmask>] ) - ustawienie z zapisem danych do pamięci flash.
- //===================================================================================================================================
- /*
- * Format AT+CIPAP="IP",["GATEWAY"],["NETMASK"]
- * check: 1 AT+CIPAP
- * 2 AT+CIPAP
- * 3 AT+CIPAP_CUR
- * 4 AT+CIPAP_CUR
- * 5 AT+CIPAP_DEF
- * 6 AT+CIPAP_DEF
- */
- uint8_t Set_Soft_IP_Data(uint8_t *ESP8266_IP, uint8_t *ESP8266_NetMask, uint8_t *ESP8266_Gateway, uint8_t check)
- {
- char data[50];
- if(1 == check) //Set only IP
- {
- sprintf(data, "AT+CIPAP=\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- else if(2 == check) //Set all param
- {
- sprintf(data, "AT+CIPAP=\"%u.%u.%u.%u\",\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"",
- ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3],
- ESP8266_NetMask[0], ESP8266_NetMask[1], ESP8266_NetMask[2], ESP8266_NetMask[3],
- ESP8266_Gateway[0], ESP8266_Gateway[1], ESP8266_Gateway[2], ESP8266_Gateway[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- #if Init_Cur_Commands == 1
- else if(3 == check) //Set only IP
- {
- sprintf(data, "AT+CIPAP_CUR=\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- else if(4 == check) //Set all param
- {
- sprintf(data, "AT+CIPAP_CUR=\"%u.%u.%u.%u\",\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"",
- ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3],
- ESP8266_NetMask[0], ESP8266_NetMask[1], ESP8266_NetMask[2], ESP8266_NetMask[3],
- ESP8266_Gateway[0], ESP8266_Gateway[1], ESP8266_Gateway[2], ESP8266_Gateway[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- #endif
- #if Init_Def_Commands == 1
- else if(5 == check) //Set only IP
- {
- sprintf(data, "AT+CIPAP_DEF=\"%u.%u.%u.%u\"", ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- else if(6 == check) //Set all param
- {
- sprintf(data, "AT+CIPAP_DEF=\"%u.%u.%u.%u\",\"%u.%u.%u.%u\",\"%u.%u.%u.%u\"",
- ESP8266_IP[0], ESP8266_IP[1], ESP8266_IP[2], ESP8266_IP[3],
- ESP8266_NetMask[0], ESP8266_NetMask[1], ESP8266_NetMask[2], ESP8266_NetMask[3],
- ESP8266_Gateway[0], ESP8266_Gateway[1], ESP8266_Gateway[2], ESP8266_Gateway[3]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return Stat_OK;
- }
- #endif
- return Stat_Error;
- }
AT+CWSTARTSMART - (format: AT+CWSTARTSMART=[1..3]
Parametrem może być wartość od 1 do 3 gdzie: 1 oznacza ESP-TOUCH, 2 to AirKiss 3 natomiast to ESP-Touch + AirKiss
Dzięki nim można dokonać połączenie z dedykowanymi programami.
- case Command_AT_CWSTARTSMART:
- if(1 == param) { UART_SENDSTRING(ESP8266_USART, "AT+CWSTARTSMART=1", CR_LF); }
- else if(2 == param) { UART_SENDSTRING(ESP8266_USART, "AT+CWSTARTSMART=2", CR_LF); }
- else if(3 == param) { UART_SENDSTRING(ESP8266_USART, "AT+CWSTARTSMART=3", CR_LF); }
- break;
AT+CWSTOPSMART - (format: AT+CWSTOPSMART) - wymagane po użyciu komendy StartSmart. Pozwala na zwolnienie zajętej pamięci przez tą operację. Należy stosować zanim zostaną wywołane inne komendy AT.
- case Command_AT_CWSTOPSMART:
- UART_SENDSTRING(ESP8266_USART, "AT+CWSTOPSMART", CR_LF);
- break;
AT+CWSTARTDISCOVER - (format: AT+CWSTARTDISCOVER=<WeChat number>,<dev_type>,<time>
Parametry to:
- numer nadawany przez WeChat
- typ urządzenia dostępny od WeChat
- jest to definicja interwału czasowego po jakim jest wysyłany pakiet danych do aplikacji
- /*
- * Start the mode that ESP8266 can be found by WeChat
- * AT+CWSTARTDISCOVER
- */
- uint8_t WeChat_Start_Discover(char *WeChat_number, char *dec_number, uint16_t time)
- {
- char data[50];
- if(0 == time)
- {
- sprintf(data, "AT+CWSTARTDISCOVER=\"%s\",\"%s\",0", &WeChat_number[0], &dec_number[0]);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return 1;
- }
- else if(time < 86400)
- {
- sprintf(data, "AT+CWSTARTDISCOVER=\"%s\",\"%s\",%u", &WeChat_number[0], &dec_number[0], time);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return 1;
- }
- return 0;
- }
AT+CWSTOPDISCOVER - (format: AT+CWSTOPDISCOVER) - zatrzymuje działanie trybu StartDiscover.
- case Command_AT_CWSTOPDISCOVER:
- UART_SENDSTRING(ESP8266_USART, "AT+CWSTOPDISCOVER", CR_LF);
- break;
AT+WPS - (format: AT+WPS) - ustawia funkcje WPS. Nie wspiera WEP. Jako parametr podaje się albo 0 albo 1.
- case Command_AT_WPS:
- if(0 == param) { UART_SENDSTRING(ESP8266_USART, "AT+WPS=0", CR_LF); }
- else if(1 == param) { UART_SENDSTRING(ESP8266_USART, "AT+WPS=1", CR_LF); }
- break;
AT+MDNS - (format AT+MDNS=<enable>,<hostname>,<server_name>,<server_port>) - ustawia funkcje MDNS. W nazwach nie należy stosować kropek albo nazw jak http.
- /*
- * Set MDNS function
- * AT+MDNS
- */
- uint8_t MDNS_Function(uint8_t enable, char *hostname, char *server_name, uint16_t server_port)
- {
- uint8_t length = 0;
- char data[50];
- while (&hostname[length] != '\0')
- {
- if(&hostname[length] == '.') { return 0; }
- length++;
- }
- length = 0;
- while (&server_name[length] != '\0')
- {
- if(&server_name[length] == '.') { return 0; }
- length++;
- }
- if(0 == enable)
- {
- sprintf(data, "AT+MDNS=0,\"%s\",\"%s\",%u", &hostname[0], &server_name[0], server_port);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return 1;
- }
- else if(1 == enable)
- {
- sprintf(data, "AT+MDNS=1,\"%s\",\"%s\",%u", &hostname[0], &server_name[0], server_port);
- UART_SENDSTRING(ESP8266_USART, data, CR_LF);
- return 1;
- }
- return 0;
- }
Następna część będzie zawierała komendy do TCP.