MicroWebSrv2 on M5atom lite (ESP32)

All ESP32 boards running MicroPython.
Target audience: MicroPython users with an ESP32 board.
Post Reply
Posts: 3
Joined: Thu Dec 17, 2020 8:15 pm
Location: switzerland

MicroWebSrv2 on M5atom lite (ESP32)

Post by Erik » Thu Dec 17, 2020 8:40 pm

I'm trying to install the MicroWebSrv2 https://github.com/jczic/MicroWebSrv2 after having tried successfully the first version
on a M5atom lite https://docs.m5stack.com/#/en/core/atom_lite

If anyone has done this before, I'd be glad for every hint. Here's what I have done so far:

I copied the file structure (Solution 3 in the instructions) and added the setup.py to the main,py

The web server starts, but runs into a traceback claiming missing MicroWebSrv2/mods/WebSockets.py which is there:

Code: Select all

Connection successful
('', '', '', '')
running on M5atom lite

   - Python pkg MicroWebSrv2 -
   -      version 2.0.6      -
   -     by JC`zic & HC2     -

I (6206) modsocket: Initializing

    [@WebRoute] GET /test-redir
    [@WebRoute] GET /test-post (TestPost1/2)
    [@WebRoute] POST /test-post (TestPost2/2)

Traceback (most recent call last):
File "main.py", line 153, in <module>
File "MicroWebSrv2/microWebSrv2.py", line 136, in LoadModule
MicroWebSrv2Exception: Cannot load module "WebSockets".
MicroPython v1.13 on 2020-09-02; TinyPICO with ESP32-PICO-D4
Type "help()" for more information.
this is raised by this code in MicroWebSrv2/microWebSrv2.py:

Code: Select all

# ------------------------------------------------------------------------

def LoadModule(modName) :
    if not isinstance(modName, str) or len(modName) == 0 :
        raise ValueError('"modName" must be a not empty string.')
    if modName in MicroWebSrv2._modules :
        raise MicroWebSrv2Exception('Module "%s" is already loaded.' % modName)
    try :
        modPath  = MicroWebSrv2.__module__.split('microWebSrv2')[0] \
                 + ('mods.%s' % modName)
        module   = getattr(__import__(modPath).mods, modName)
        modClass = getattr(module, modName)
        if type(modClass) is not type :
            raise Exception
        modInstance = modClass()
        MicroWebSrv2._modules[modName] = modInstance
        return modInstance
    except :
        raise MicroWebSrv2Exception('Cannot load module "%s".' % modName)
Here is the file structure on the M5atom lite, I had to copy

Code: Select all

Funny that it shows two times when made this listing with

Code: Select all

ampy --port /dev/ttyUSB0 ls -r

However, a first exeption concerning

Code: Select all

has dissappeared since.

Code: Select all


Posts: 38
Joined: Sat Dec 12, 2020 11:07 pm

Re: MicroWebSrv2 on M5atom lite (ESP32)

Post by marcidy » Wed Jan 06, 2021 5:17 am

I had to compile it in as a frozen module to get it to work. Not sure that will address your exact issue. Sorry I can't help further, I didn't use it beyond a bit of exploring. Ended up going the asyncio route.

Post Reply