You've already forked uiflow-micropython
mirror of
https://github.com/m5stack/uiflow-micropython.git
synced 2026-05-20 10:39:27 -07:00
3758a2df53
Signed-off-by: lbuque <1102390310@qq.com>
95 lines
2.9 KiB
Python
95 lines
2.9 KiB
Python
# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
from hardware import RGB
|
|
import time
|
|
import network
|
|
import machine
|
|
import binascii
|
|
from . import Startup
|
|
|
|
|
|
class AtomMatrix_Startup(Startup):
|
|
COLOR_RED = 0xFF0000 # WiFi not connected
|
|
COLOR_BLUE = 0x0000FF # WiFi connected, server not connected
|
|
COLOR_GREEN = 0x00FF00 # WiFi connected, server connected
|
|
|
|
def __init__(self) -> None:
|
|
super().__init__()
|
|
self.rgb = RGB()
|
|
self.rgb.fill_color(0x000000)
|
|
self.rgb.set_color(12, self.COLOR_RED)
|
|
self.rgb.set_brightness(30)
|
|
|
|
def show_hits(self, hits: str) -> None:
|
|
pass
|
|
|
|
def show_msg(self, msg: str) -> None:
|
|
pass
|
|
|
|
def show_ssid(self, ssid: str) -> None:
|
|
pass
|
|
|
|
def show_mac(self) -> None:
|
|
mac = binascii.hexlify(machine.unique_id()).decode("utf-8").upper()
|
|
print("Mac: " + mac[0:6] + "_" + mac[6:])
|
|
|
|
def show_error(self, ssid: str, error: str) -> None:
|
|
print("SSID: " + ssid + "\r\nNotice: " + error)
|
|
|
|
def startup(
|
|
self,
|
|
ssid: str,
|
|
pswd: str,
|
|
protocol: str = "",
|
|
ip: str = "",
|
|
netmask: str = "",
|
|
gateway: str = "",
|
|
dns: str = "",
|
|
timeout: int = 60,
|
|
) -> None:
|
|
self.show_mac()
|
|
|
|
if super().connect_network(
|
|
ssid=ssid,
|
|
pswd=pswd,
|
|
protocol=protocol,
|
|
ip=ip,
|
|
netmask=netmask,
|
|
gateway=gateway,
|
|
dns=dns,
|
|
):
|
|
print("Connecting to " + ssid + " ", end="")
|
|
status = super().connect_status()
|
|
self.rgb.set_brightness(60)
|
|
start = time.time()
|
|
while status is not network.STAT_GOT_IP:
|
|
time.sleep_ms(300)
|
|
if status is network.STAT_NO_AP_FOUND:
|
|
self.show_error(ssid, "NO AP FOUND")
|
|
break
|
|
elif status is network.STAT_WRONG_PASSWORD:
|
|
self.show_error(ssid, "WRONG PASSWORD")
|
|
break
|
|
elif status is network.STAT_HANDSHAKE_TIMEOUT:
|
|
self.show_error(ssid, "HANDSHAKE ERR")
|
|
break
|
|
elif status is network.STAT_CONNECTING:
|
|
print(".", end="")
|
|
status = super().connect_status()
|
|
# connect to network timeout
|
|
if (time.time() - start) > timeout:
|
|
self.show_error(ssid, "TIMEOUT")
|
|
break
|
|
|
|
print(" ")
|
|
if status is network.STAT_GOT_IP:
|
|
print("Local IP: " + super().local_ip())
|
|
self.rgb.set_color(12, self.COLOR_GREEN)
|
|
self.rgb.set_brightness(100)
|
|
else:
|
|
self.rgb.set_color(12, self.COLOR_RED)
|
|
self.rgb.set_brightness(100)
|
|
self.show_error("Not Found", "Please use M5Burner setup :)")
|