• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь WPS (Wi-Fi Protected Setup) на SDK

russus_16

New member
на запрос "WPS" поиск на этом форуме выдает, что ничего не найдено. Создаю новую тему!

Необходимо подключить esp8266 к роутеру, используя WPS на основе push button. С SDK идет пример кода (...ESP8266_NONOS_SDK_V1.5.4_16_05_20/examples/wps), но, к сожалению, разобраться не могу. Кроме того, при запуске код ничего не происходит и wps не активируется.

Уверен, что кто-то решил данную задачу. Код user_main.c приведен ниже. Не понимаю как это должно работать. По логике key_init_single возвращает структуру-ключ, но зачем необходимо определять gpio ? Почему в коде используется именно 13ый?

Код:
#include "osapi.h"
#include "user_interface.h"

#include "driver/key.h"

#define WPS_KEY_NUM        1

#define WPS_KEY_IO_MUX     PERIPHS_IO_MUX_MTCK_U
#define WPS_KEY_IO_NUM     13
#define WPS_KEY_IO_FUNC    FUNC_GPIO13

LOCAL struct keys_param keys;
LOCAL struct single_key_param *single_key;

LOCAL void ICACHE_FLASH_ATTR
user_wps_status_cb(int status)
{
    switch (status) {
        case WPS_CB_ST_SUCCESS:
            wifi_wps_disable();
            wifi_station_connect();
            break;
        case WPS_CB_ST_FAILED:
        case WPS_CB_ST_TIMEOUT:
            wifi_wps_start();
            break;
    }
}

LOCAL void ICACHE_FLASH_ATTR
user_wps_key_short_press(void)
{
    wifi_wps_disable();
    wifi_wps_enable(WPS_TYPE_PBC);
    wifi_set_wps_cb(user_wps_status_cb);
    wifi_wps_start();
}

void ICACHE_FLASH_ATTR
user_rf_pre_init(void)
{
}

void ICACHE_FLASH_ATTR
user_init(void)
{
    single_key = key_init_single(WPS_KEY_IO_NUM, WPS_KEY_IO_MUX, WPS_KEY_IO_FUNC,
                                            NULL, user_wps_key_short_press);

    keys.key_num = WPS_KEY_NUM;
    keys.single_key = &single_key;

    key_init(&keys);

    wifi_set_opmode(STATION_MODE);
}
 

russus_16

New member
Когда использую АТ прошивку, то команда AT+WPS=1 работает на УРА (при условии что на роутере кнопка была нажата перед командой). Помогите найти исходный код этой команды!
 
Сверху Снизу