Рубрика:
Разработка /
Микроконтроллеры
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ВИЗИТКА
Александр Фролов, начальник отдела информационных технологий, Морской государственный университет имени адмирала Г. И. Невельского, Владивосток, Frolov@msun.ru
|
|
ВИЗИТКА
Алексей Чебаков, техник отдела информационных технологий, Морской государственный университет имени адмирала Г. И. Невельского, Владивосток, chebakov@msun.ru
|
|
Простой веб-сервер для сканирования Wi-Fi сетей на микроконтроллере
В статье рассмотрим, как создать простой веб-сервер на базе микроконтроллера с поддержкой Wi-Fi (например, ESP8266 или ESP32). Такой сервер может выполнять сканирование доступных Wi-Fi сетей и предоставлять информацию о них через веб-интерфейс.
Код программы с пояснениями
import network # Импортируем модуль для работы с Wi-Fi сетями import socket # Импортируем модуль для работы с сокетами (сетевыми соединениями) import time # Импортируем модуль для работы с временем (задержки) ssid = 'Chebash' # SSID сети, к которой нужно подключиться password = 'finn99le7' # Пароль от Wi-Fi сети # Создаем объект для работы с Wi-Fi в режиме станции (STA_IF) wlan = network.WLAN(network.STA_IF) wlan.active(True) # Активируем Wi-Fi модуль wlan.connect(ssid, password) # Подключаемся к сети с указанными SSID и паролем # Ждем, пока устройство подключится к Wi-Fi while not wlan.isconnected(): time.sleep(1) # Проверяем соединение каждую секунду print('Подключение к Wi-Fi установлено') # Сообщаем, что подключение успешно # Настраиваем веб-сервер addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] # Получаем адрес для привязки сервера s = socket.socket() # Создаем объект сокета s.bind(addr) # Привязываем его к адресу s.listen(1) # Устанавливаем режим прослушивания (ожидание подключения одного клиента) print('Веб-сервер запущен. Ожидание подключений...') # Информируем о запуске сервера # Функция для обработки запросов def handle_request(conn): conn.sendall(b'HTTP/1.1 200 OK\nContent-Type: text/html\nConnection: close\n\n') # Отправляем HTTP-заголовок result = scan_wifi() # Выполняем сканирование Wi-Fi сетей conn.sendall(result.encode('utf-8')) # Отправляем результат сканирования клиенту conn.close() # Закрываем соединение # Функция для сканирования Wi-Fi сетей def scan_wifi(): networks = wlan.scan() # Сканируем доступные Wi-Fi сети result = '' # Переменная для хранения результатов for net in networks: ssid = net[0].decode('utf-8') # Название сети (SSID) bssid = ':'.join(['%02x' % b for b in net[1]]) # MAC-адрес точки доступа (BSSID) channel = net[2] # Канал RSSI = net[3] # Уровень сигнала authmode = net[4] # Тип аутентификации # Формируем строку с информацией о сети result += f'SSID: {ssid}<br>' result += f'BSSID: {bssid}<br>' result += f'Channel: {channel}<br>' result += f'RSSI: {RSSI}<br>' result += f'Authmode: {authmode}<br>' result += '--------------<br>' return result # Возвращаем результаты сканирования # Основной цикл работы сервера while True: conn, addr = s.accept() # Принимаем входящее соединение print('Подключение от', addr) # Выводим адрес клиента handle_request(conn) # Обрабатываем запрос клиента
.
<...>
Ключевые слова: микроконтроллеры, веб-сервер, IoT-системы.
Полную версию статьи читайте в журнале Подпишитесь на журнал
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|