Skip to content

WiFi modes RU

Konstantin Brul edited this page Mar 16, 2020 · 35 revisions

Режимы работы WiFi модуля ESP8266

Режимы WiFi

Режимы работы WiFi:

Настройка режимов WiFi модуля из UI

RESTful API для управления режимами WiFi модуля

OWLOS Source Code, управляющие WiFi модулем

Access Point

Модуль WiFi в режиме точки доступа (WiFi AP - Access Point)

Позволяет создать собственную WiFi сеть на основе модуля ESP8266 и подключать к ней другие WiFi станции, например, - Ваш телефон, ноутбук или другой модуль ESP8266. По умолчанию:

  • поддерживает подключение до 4 станций (это значение можно менять).
  • IP адрес точки доступа для собственной сети 192.168.4.1 (его можно изменить).
  • OWLOS назначает имя точки доступа (SSID) "owlnodeNNN", где "NNN" - значение ID чипа ESP8266 chipID, и пароль "1122334455". При первом запуске OWLOS возьмите телефон или ноутбук и просканируйте доступные WiFi сети Вы должны увидеть примерно следующее:
    • Monty_Python
    • Brazil
    • owlnode777452
    • The_Meaning_of_Life
  • где owlnode777452 - точка доступа, созданная OWLOS. Соединитесь с ней и введите пароль "1122334455". Если соединение окажется успешным - Вы сделали все правильно. Перед началом использования новой копии OWLOS мы настоятельно рекомендуем изменить имя точки доступа и пароль по умолчанию.

Station

Модуль WiFi в режиме станции (WiFi STA - Station)

Позволяет модулю ESP8266 подключаться к WiFi точке доступа сети (созданной вашим роутером или другим модулем ESP8266, работающем в режиме точки доступа).

Access Point-Station

Модуль WiFi в режимах точки доступа и WiFi станции одновременно (WiFi AP и WiFi STA)

Позволяет использовать преимущество обоих режимов, строить по-настоящему гибкие системы.

  • Вы можете создавать сети с разветвленной топологией, используя множество модулей ESP8266, "связанные" друг с другом в режимах AP-STA-STA-AP.
  • режим точки доступа может использоваться как аварийный канал связи. Например, когда множество OWLOS узлов подсоединены к WiFi роутерам, то в случае сбоя в работе роутера у Вас будет канал связи с каждым OWLOS узлом, и Вы не потеряете контроль над системой.

WiFi-disable

Модуль WiFi выключен

На самом деле, такой режим WiFi модуля также применим. Дело в том, что Вы можете настроить драйверы устройств OWLOS и управляющий скрипт, после чего отключить модуль WiFi. Это дает следующие преимущества:

  • Вы разгружаете CPU модуля ESP8266, нет необходимости обрабатывать стек сетевых протоколов и обслуживать канал связи.
  • Ваше устройство более не доступно в сети ни как точка доступа, ни как станция, что безопасно. Да, Вы теряете возможность управления OWLOS по сети. Поэтому Вам нужно продумать способы включения WiFi модуля:
  • при помощи встроенного скрипта, через определенный временной интервал, по нажатию на кнопку, подключенную к модулю ESP8266.
  • можно изменить файл конфигурации WiFi OWLOS, загрузить его в SPIFFS модуля ESP8266 и нажать на кнопку "Сброс".

WiFi UI

Панель индикаторов состояния сети

OWLOS UI панель индикаторов состояния сети

При выборе в UI меню "Настройки" для определенного OWLOS узла, в правом верхнем углу UI будет отображаться панель индикаторов состояния сети.

  1. Индикатор Online/Offline - доступность OWLOS узла по сети:
  • зеленый цвет - узел доступен
  • синий цвет - в данный момент узел опрашивается по сети
  • серый цвет - узел недоступен
  1. Индикатор WiFi AP - состояние режима WiFi точки доступа (Access Point) для данного узла
  • зеленый цвет - WiFi находится в режиме точки доступа
  • красный цвет - WiFi находится в режиме точки доступа, но произошел сбой
  • серый цвет - WiFi не находится в режиме точки доступа
  1. Индикатор WiFi ST - состояние режима WiFi станции (Station) для данного узла:
  • зеленый цвет - WiFi находится в режиме станции
  • красный цвет - WiFi находится в режиме станции, но произошел сбой (скорее всего - не удалось подключится к точке доступа)
  • серый цвет - WiFi не находится в режиме станции 2&3. Индикаторы 2 и 3 зеленые - узел находится в смешанном режиме WiFi: доступен и как WiFi точка доступа, и как WiFi станция. 4,5,6. Индикаторы состояния RESTful, MQTT, ОТА. Их описание смотрите в соответствующих разделах. Их состояния зависят от индикаторов 1,2,3. В случае сбоя сначала проверьте доступность модуля WiFi и его режимы.

RESTful

RESTful API для управления режимами WiFi модуля

RESTful API WiFi точки доступа

RESTful API Описание
[host]/getdeviceproperty?id=wifi&property=wifiaccesspointavailable получить состояние режима WiFi точки доступа (результат: 1 включен, 0 выключен)
[host]/setdeviceproperty?id=wifi&property=wifiaccesspointavailable&value=B установить состояние WiFi точки доступа (параметр value: 1 - включить, 0 - выключить)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=wifiaccesspointssid получить SSID WiFi точки доступа (результат: текущий SSID или пустая строка)
[host]/setdeviceproperty?id=wifi&property=wifiaccesspointssid&value=S установить SSID WiFi точки доступа (параметр value: новый SSID)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=wifiaccesspointpassword получить пароль WiFi точки доступа (результат: текущий пароль или пустая строка)
[host]/setdeviceproperty?id=wifi&property=wifiaccesspointpassword&value=S установить пароль WiFi точки доступа (параметр value: новый пароль)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=wifiaccesspointip получить IP адрес WiFi точки доступа (результат: текущий IP адрес или пустая строка)
[host]/setdeviceproperty?id=wifi&property=wifiaccesspointip&value=S установить IP адрес WiFi точки доступа (параметр value: новый IP)(результат: 1 - OK, иначе - код ошибки)

RESTful API WiFi станции

RESTful API Описание
[host]/getdeviceproperty?id=wifi&property=wifiavailable получить состояние режима WiFi станции (результат: 1 - включена, 0 - выключена)
[host]/setdeviceproperty?id=wifi&property=wifiavailable&value=B установить состояние WiFi станции (параметр value: 1 - включить, 0 - отключить)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=wifissid получить SSID WiFi точки доступа, к которой должна подключится OWLOS WiFi станция (результат: SSID или пустая строка)
[host]/setdeviceproperty?id=wifi&property=wifissid&value=S установить SSID WiFi точки доступа для подключения OWLOS WiFi станции (параметр value: новый SSID)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=wifipassword получить пароль WiFi точки доступа, к которой должна подключится OWLOS WiFi станция (результат: пароль или пустая строка)
[host]/setdeviceproperty?id=wifi&property=wifipassword&value=S установить пароль WiFi точки доступа для подключения OWLOS WiFi станции (параметр value: новый пароль)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=wifiip получить IP адрес WiFi станции, выданный WiFi точкой доступа, например - роутером или другой ESP8266 (результат: IP адрес или пустая строка)
[host]/setdeviceproperty?id=wifi&property=wifiip&value=S установить IP адрес WiFi станции (параметр value: новый IP адрес)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=wifiisconnected получить состояние режима WiFi станции. Отличается от wifiavailable тем, что опрашивает WiFi модуль на физическом уровне, не учитывая режимы WiFi уровня OWLOS (результат: 1 - включен, 0 - выключен)
[host]/setdeviceproperty?id=wifi&property=wifiisconnected&value=B установить состояние режима WiFi станции на физическом уровне, в обход OWLOS (параметр value: 1 - включить режим WiFi станции не зависимо от wifiavailable, 0 - выключить режим WiFi станции. При этом, если OWLOS установила wifiavailable=1, при проверке WiFi соединения WiFi модуль будет переподключен самой OWLOS. Эта API - хороший способ "встряхнуть" WiFi модуль, убрав "залипшие" WiFi сессии)(результат: 1 - OK, иначе - код ошибки)
[host]/getdeviceproperty?id=wifi&property=connectedwifissid получить SSID WiFi точки доступа, к которой подключена OWLOS WiFi станция. Отличается от wifissid тем, что возвращает имя физически подключенной точки доступа. В свою очередь wifissid устанавливает SSID точки доступа, к которой необходимо подключится. (результат: SSID или пустая строка)
[host]/getdeviceproperty?id=wifi&property=wifirssi получить уровень сигнала WiFi точки доступа, к которой подключена OWLOS WiFi станция (результат: уровень сигнала в dBm. Чем больше уровень сигнала, тем лучше: 77 dBm лучше, чем -80 dBm, идеальный сигнал -60 dBm .. 65 dBm)

RESTful API WiFi служебные

RESTful API Описание
[host]/getdeviceproperty?id=wifi&property=wifimode получить код текущего режима WiFi модуля (результат: код режима - целочисленное значение)
[host]/getdeviceproperty?id=wifi&property=allwifimodes расшифровать "код режима WiFi модуля", полученный от wifimode (результат - 0:WIFI_OFF; 1:WIFI_STA; 2:WIFI_AP; 3:WIFI_AP_STA; в формате "код режима":"расшифровка")
[host]/getdeviceproperty?id=wifi&property=wifistatus получить код статуса WiFi (результат: целочисленное значение)
[host]/getdeviceproperty?id=wifi&property=wifistatustostring по коду получить строковое значение статуса WiFi (результат: строка с расшифровкой WiFi статуса)
[host]/getdeviceproperty?id=wifi&property=allwifistatuses получить все коды статуса WiFi с расшифровкой (результат: строка "0:WL_IDLE_STATUS;1:WL_NO_SSID_AVAIL; 2:WL_SCAN_COMPLETED; 3:WL_CONNECTED; 4:WL_CONNECT_FAILED; 5:WL_CONNECTION_LOST; 6:WL_DISCONNECTED;" - список значений всех кодов и их строковая расшифровка)

RESTful API WiFi поиск доступных точек доступа

RESTful API Описание
[host]/getdeviceproperty?id=wifi&property=scanwifinetworks запускает поиск всех доступных WiFi точек доступа, этот процесс занимает достаточно длительное время (результат: количество найденных WiFi точек доступа)
[host]/getdeviceproperty?id=wifi&property=wifinetworkscount возвращает количество WiFi точек доступа, найденных предыдущим вызовом API scanwifinetworks (результат: количество найденных WiFi точек доступа или ноль, если API scanwifinetworks не была предварительно вызвана)
[host]/getdeviceproperty?id=wifi&property=wifinetworksparameters получить список свойств всех доступных WiFi точек доступа. Вызов возможен после вызова APIs scanwifinetworks или wifinetworkscount (результат: строка в специальном формате со списком свойств или пустая строка в случае ошибки)
[host]/getdeviceproperty?id=wifi&property=allwifiencryptiontypes получить список всех возможных типов шифрования WiFi точек доступа. (результат: строка символов с кодами и названиями типов шифрования WiFi точек доступа)

необходимо сначала вызвать API scanwifinetworks и дождаться результата. Если результат не нулевой - вызвать API wifinetworksparameters. При этом API wifinetworkscount можно использовать как индикатор того, что поиск WiFi точек доступа уже осуществлялся ранее (тогда результат API wifinetworkscount не будет нулевым)

В UI свойства драйвера WiFi каждого узла находятся по пути "Настройки/[имя_узла]/Драйверы/WiFi" (Settings/[Node name]/Drivers/WiFi)

Source Code

OWLOS Source Code, управляющие WiFi модулем

На стороне OWLOS узла режимами WiFi модуля управляет драйвер WiFi, файл [UnitProperties.cpp] (https://github.com/KirinDenis/owlos/blob/master/OWLOS/UnitProperties.cpp)

UI файлы: