micrOSDevToolKit 3.5.0__tar.gz → 3.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- microsdevtoolkit-3.6.0/PKG-INFO +1173 -0
- microsdevtoolkit-3.6.0/README.md +1135 -0
- microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32-1.28.0-3.6.0-0.bin +0 -0
- microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32c3-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32c3-1.28.0-3.6.0-0.bin +0 -0
- microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32c6-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32c6-1.28.0-3.6.0-0.bin +0 -0
- microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32s3-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32s3-1.28.0-3.6.0-0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +9 -9
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Config.py +1 -1
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Hooks.py +8 -14
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Server.py +10 -4
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Shell.py +1 -1
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Tasks.py +22 -2
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Web.py +30 -35
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
- microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Network.cpython-312.pyc +0 -0
- microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Notify.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_robustness.py +1 -1
- microsdevtoolkit-3.6.0/micrOS/source/modules/__pycache__/LM_fileserver.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_robustness.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/editor.js +34 -5
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/filesui.html +22 -7
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/filesui.js +64 -45
- microsdevtoolkit-3.6.0/micrOS/utests/test_memory_policy.py +125 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_web_engine.py +147 -0
- microsdevtoolkit-3.6.0/micrOSDevToolKit.egg-info/PKG-INFO +1173 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/SOURCES.txt +8 -4
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/setup.py +1 -1
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/node_config.json +2 -1
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Config.mpy +0 -0
- microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Hooks.mpy +0 -0
- microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Server.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Shell.mpy +0 -0
- microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Tasks.mpy +0 -0
- microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Web.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_robustness.py +1 -1
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/editor.js +27 -7
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/filesui.html +21 -3
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/filesui.js +14 -11
- microsdevtoolkit-3.5.0/PKG-INFO +0 -1144
- microsdevtoolkit-3.5.0/README.md +0 -1106
- microsdevtoolkit-3.5.0/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- microsdevtoolkit-3.5.0/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
- microsdevtoolkit-3.5.0/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- microsdevtoolkit-3.5.0/micrOSDevToolKit.egg-info/PKG-INFO +0 -1144
- microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Hooks.mpy +0 -0
- microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Server.mpy +0 -0
- microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Tasks.mpy +0 -0
- microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Web.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/LICENSE +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/MANIFEST.in +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/devToolKit.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/.DS_Store +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/dnd.png +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/logo.png +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/logo_mini.png +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/usb_port_icon.png +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/wifi_icon.png +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/board_commands.json +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/.DS_Store +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Auth.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Buffer.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Common.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Debug.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Files.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/InterConnect.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Interrupts.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Logger.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Network.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Notify.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Pacman.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Scheduler.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Time.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Types.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Auth.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/config/_git.keep +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/helpers.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/main.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/mespnow.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/micrOS.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/micrOSloader.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/microIO.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32c3.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32c5.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32c6.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32s2.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32s3.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_m5stamp.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_qtpy.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_rp2.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_tinypico.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_aht10.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_bme280.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_buzzer.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_cct.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_cluster.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_dht11.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_dht22.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_dimmer.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_ds18.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_fileserver.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_gameOfLife.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_genIO.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_i2s_mic.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_light_sensor.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_neoeffects.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_neopixel.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_oled.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_oled_ui.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_pacman.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_presence.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rgb.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rgbcct.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_servo.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_stepper.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_switch.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_system.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_telegram.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_tinyrgb.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_veml7700.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_web.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_cct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_dht11.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_dht22.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_dimmer.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_neopixel.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_rencoder.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_rgb.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_rgbcct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_roboarm.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/urequests.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/auth.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/config.css +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/config.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/config.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/dashboard.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/favicon.ico +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/index.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uapi.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uapi_widgets.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/ubashboard.css +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/udashboard.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/ustyle.css +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uwidgets_pro.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_buffer.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_config.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_pacman.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_scheduler.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_time.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_urequests.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_urequests_real_api.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/requires.txt +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/setup.cfg +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/DevEnvCompile.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/DevEnvOTA.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/DevEnvUSB.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/Gateway.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/LM_to_compile.dat +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/MicrOSDevEnv.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/WebRepl.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/BackupRestore.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CCTDemo.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CCTTest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CamStream.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CatGame.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/Dimmer.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/GetVersion.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/PresenceTest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/RGBTest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/RoboArm.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/SED_test.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/SensorsTest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/SystemTest.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/Template_app.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_app_base.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_capture.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_micPlotting.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/uLightDemo.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/gateway/gateway.css +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/gateway/img_stream.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/gateway/index.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/LocalMachine.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/MicrosFiles.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/Repository.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/SafeInput.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/SearchDevices.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/SerialDriverHandler.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/TerminalColors.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/macroScript.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/micrOSClient.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/micrOSClientHistory.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/pip_package_installer.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSDocGen.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSImageBuilder.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSImageConfig.json +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSdashboard.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSlint.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/.DS_Store +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/IO_darwin.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/aioespnow.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/camera.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/dht.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/dotstar.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ds18x20.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/esp32.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/framebuf.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/machine.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/micropython.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/mip.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/neopixel.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/network.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ntptime.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/onewire.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/sim_common.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/simgc.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/simulator.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/tinypico.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/uasyncio.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/uos.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/urandom.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/usocket.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ussl.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ustruct.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/utime.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/view01.jpg +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/view02.jpg +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/webrepl.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/socketClient.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/.include +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/__pycache__/generic.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/__pycache__/macro.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/__pycache__/template.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/generic.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/macro.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/template.macro +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/template.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/__init__.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Auth.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Common.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Debug.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Files.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Logger.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Network.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Notify.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Time.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Types.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/_mpy.version +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/config/_git.keep +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/helpers.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/main.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/microIO.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/urequests.mpy +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/auth.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/config.css +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/config.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/config.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/favicon.ico +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/index.html +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uapi.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/ubashboard.css +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
|
@@ -0,0 +1,1173 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: micrOSDevToolKit
|
|
3
|
+
Version: 3.6.0
|
|
4
|
+
Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
|
|
5
|
+
Home-page: https://github.com/BxNxM/micrOS
|
|
6
|
+
Author: Marcell Ban
|
|
7
|
+
Author-email: miros.framework@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/BxNxM/micrOS/issues
|
|
10
|
+
Project-URL: GitHub Discussions, https://github.com/BxNxM/micrOS/discussions
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: adafruit-ampy
|
|
14
|
+
Requires-Dist: mpremote
|
|
15
|
+
Requires-Dist: esptool
|
|
16
|
+
Requires-Dist: ipaddress
|
|
17
|
+
Requires-Dist: netaddr
|
|
18
|
+
Requires-Dist: pylint
|
|
19
|
+
Requires-Dist: pyserial
|
|
20
|
+
Requires-Dist: resources
|
|
21
|
+
Requires-Dist: flask
|
|
22
|
+
Requires-Dist: flask_restful
|
|
23
|
+
Requires-Dist: numpy
|
|
24
|
+
Requires-Dist: json2html
|
|
25
|
+
Requires-Dist: requests
|
|
26
|
+
Requires-Dist: Flask-BasicAuth
|
|
27
|
+
Requires-Dist: soundfile
|
|
28
|
+
Dynamic: author
|
|
29
|
+
Dynamic: author-email
|
|
30
|
+
Dynamic: description
|
|
31
|
+
Dynamic: description-content-type
|
|
32
|
+
Dynamic: home-page
|
|
33
|
+
Dynamic: license
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
Dynamic: project-url
|
|
36
|
+
Dynamic: requires-dist
|
|
37
|
+
Dynamic: summary
|
|
38
|
+
|
|
39
|
+
#  micrOS
|
|
40
|
+
|
|
41
|
+
A local-first automation platform for Wi-Fi-enabled MicroPython boards.
|
|
42
|
+
|
|
43
|
+
Build a network-controlled lamp, read a sensor over Socket/HTTP, or let one board trigger another. micrOS turns a compatible Wi-Fi microcontroller into a programmable automation node—without a required cloud service.
|
|
44
|
+
|
|
45
|
+
Write the hardware behavior in [MicroPython](http://micropython.org); micrOS
|
|
46
|
+
handles networking, configuration, background jobs, scheduling, interrupts and updates.
|
|
47
|
+
|
|
48
|
+
> micrOS is a network-addressable edge application platform for MicroPython MCUs, built around a dynamically loadable plug-in architecture.
|
|
49
|
+
|
|
50
|
+
[](https://pypi.org/project/micrOSDevToolKit/)
|
|
51
|
+

|
|
52
|
+
[](https://github.com/BxNxM/micrOS/discussions)
|
|
53
|
+
[](https://hub.docker.com/r/bxnxm/micros-gateway)
|
|
54
|
+
|
|
55
|
+
### Contents
|
|
56
|
+
|
|
57
|
+
- 🎬 [See it in action](#see-it-in-action)
|
|
58
|
+
- 🚀 [Start using micrOS](#start-using-micros) — installation, Wi-Fi setup, and first commands
|
|
59
|
+
- 📦 [Applications](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html) · [micrOS Packages](https://github.com/BxNxM/micrOSPackages)
|
|
60
|
+
- 🌐 [Network modes](#networking-modes) · [Configuration parameters](#node-configuration-reference)
|
|
61
|
+
- 💬 [Tutorials and community](#tutorials-and-community)
|
|
62
|
+
- ⚙️ [Advanced use](#advanced-use) — automation, hardware, configuration, and developer tools
|
|
63
|
+
- 🧩 [Create a Load Module](./micrOS/MODULE_GUIDE.md) · [Architecture](./micrOS/ARCHITECTURE.md)
|
|
64
|
+
- 📝 [Cheat sheets and maintainer notes](#operations-and-maintainer-notes)
|
|
65
|
+
|
|
66
|
+
[](./media/lms/web.png)
|
|
67
|
+
|
|
68
|
+
_The optional on-device web UI: REST console, configuration, application controls,
|
|
69
|
+
and file management._
|
|
70
|
+
|
|
71
|
+
### Why micrOS?
|
|
72
|
+
|
|
73
|
+
- **One function, several ways to use it.** Public functions in `LM_*.py` Load
|
|
74
|
+
Modules are callable from the shell, REST API, schedules, interrupts, and
|
|
75
|
+
background jobs.
|
|
76
|
+
- **Local control.** Clients connect directly to nodes over Wi-Fi. No cloud
|
|
77
|
+
account or always-on server is required; time and sunrise/sunset lookups use
|
|
78
|
+
external services.
|
|
79
|
+
- **A runtime you can build on.** STA/AP networking, NTP/RTC, pin mapping, async
|
|
80
|
+
tasks, OTA updates, and device-to-device commands are included.
|
|
81
|
+
- **Load only what you need.** Modules are imported on demand and stay resident.
|
|
82
|
+
Available memory determines how many you can combine.
|
|
83
|
+
|
|
84
|
+
### Who is it for?
|
|
85
|
+
|
|
86
|
+
For MicroPython developers who want reusable device infrastructure, makers
|
|
87
|
+
building local automation, hardware experimenters adding sensors or actuators,
|
|
88
|
+
and developers connecting several nodes over sockets or ESP-NOW.
|
|
89
|
+
|
|
90
|
+
### See it in action
|
|
91
|
+
|
|
92
|
+
| Ring Lamp | RoboArm | RGB + CCT lighting |
|
|
93
|
+
| --- | --- | --- |
|
|
94
|
+
| [](https://youtu.be/BlQzAnFtpLk) |  |  |
|
|
95
|
+
| Generated controls for a 24-pixel NeoPixel lamp. | A Wi-Fi-controlled servo application and laser cat toy. | Full-color and tunable-white LED control from one node. |
|
|
96
|
+
|
|
97
|
+
Start with an existing application, then add your own behavior as a Load Module.
|
|
98
|
+
|
|
99
|
+
<a id="installing-micros-with-devtoolkit-esp32-and-more"></a>
|
|
100
|
+
|
|
101
|
+
<a id="quick-start"></a>
|
|
102
|
+
|
|
103
|
+
## Start using micrOS
|
|
104
|
+
|
|
105
|
+
You only need three ideas: a **node** is your board running micrOS;
|
|
106
|
+
**DevToolKit** installs and connects to it from your computer; a **Load Module**
|
|
107
|
+
is a Python application on the board. You don't need to understand the runtime
|
|
108
|
+
internals to use an existing application.
|
|
109
|
+
|
|
110
|
+
Before you begin, have a compatible Wi-Fi MicroPython board, a USB data cable,
|
|
111
|
+
a computer, and your Wi-Fi credentials ready. Check the
|
|
112
|
+
[firmware catalog](./micrOS/micropython/README.md) for your board; see
|
|
113
|
+
[boards and memory](#boards-and-memory) for larger applications.
|
|
114
|
+
|
|
115
|
+
Follow these four steps to get a node online and make your first request.
|
|
116
|
+
|
|
117
|
+
Use DevToolKit on macOS, Linux, or Windows to deploy your first node. Start with
|
|
118
|
+
the GUI; the CLI supports interactive use and automation.
|
|
119
|
+
|
|
120
|
+
[](https://pypi.org/project/micrOSDevToolKit/)
|
|
121
|
+
|
|
122
|
+
### 1. Install Python and DevToolKit
|
|
123
|
+
|
|
124
|
+
Install [Python 3.12 or newer](https://www.python.org/downloads/) and add it to
|
|
125
|
+
your system path. The original setup used [Python 3.12.0](https://www.python.org/downloads/release/python-3120/).
|
|
126
|
+
|
|
127
|
+
On macOS, open Terminal with `Command+Space`, type `terminal`, and press Enter.
|
|
128
|
+
On Windows, press `Windows+R`, type `powershell`, and press Enter.
|
|
129
|
+
|
|
130
|
+
On macOS or Linux:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
python3 -m venv .venv
|
|
134
|
+
source .venv/bin/activate
|
|
135
|
+
python3 -m pip install --upgrade pip
|
|
136
|
+
python3 -m pip install micrOSDevToolKit
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Verify the Python installation with `python3 --version`. Update DevToolKit later
|
|
140
|
+
with `python3 -m pip install --upgrade micrOSDevToolKit`.
|
|
141
|
+
|
|
142
|
+
On Windows PowerShell:
|
|
143
|
+
|
|
144
|
+
```powershell
|
|
145
|
+
python -m venv .venv
|
|
146
|
+
.\.venv\Scripts\Activate.ps1
|
|
147
|
+
python -m pip install --upgrade pip
|
|
148
|
+
python -m pip install micrOSDevToolKit
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Activate the environment again when opening a new terminal. If PowerShell
|
|
152
|
+
blocks activation, use Command Prompt with `.venv\Scripts\activate.bat`.
|
|
153
|
+
On Windows, update with `python -m pip install --upgrade micrOSDevToolKit`.
|
|
154
|
+
|
|
155
|
+
Run package installation as a normal user; approve administrator access only
|
|
156
|
+
for USB-driver installation.
|
|
157
|
+
|
|
158
|
+
### 2. Deploy micrOS over USB
|
|
159
|
+
|
|
160
|
+
Start the graphical toolkit:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
devToolKit.py
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+

|
|
167
|
+
|
|
168
|
+
1. Connect your board over USB.
|
|
169
|
+
2. Select the matching board and MicroPython firmware from the available lists.
|
|
170
|
+
3. Select **Deploy (USB)** and confirm the operation.
|
|
171
|
+
4. Wait for deployment to complete and the board to restart.
|
|
172
|
+
|
|
173
|
+
On first deployment, DevToolKit may offer to install the Serial USB driver
|
|
174
|
+
required by your platform.
|
|
175
|
+
|
|
176
|
+
**Deploy (USB) erases existing firmware and files.** Back up a board you already
|
|
177
|
+
use. The first toolkit launch installs optional GUI, compiler, and media
|
|
178
|
+
dependencies; keep internet access available until it finishes.
|
|
179
|
+
|
|
180
|
+
### 3. Configure Wi-Fi and open the web UI
|
|
181
|
+
|
|
182
|
+
On first startup, an unconfigured node creates its own Wi-Fi access point
|
|
183
|
+
when it cannot connect to your network:
|
|
184
|
+
|
|
185
|
+
1. Connect your computer to the `node01` Wi-Fi network using the
|
|
186
|
+
factory password `ADmin123`.
|
|
187
|
+
2. Start `devToolKit.py -s -c` and select `__device_on_AP__` at `192.168.4.1`.
|
|
188
|
+
3. Enter these commands **one line at a time in the micrOS shell**. Replace the
|
|
189
|
+
angle-bracket placeholders, including the brackets, with your own values.
|
|
190
|
+
The device password must be 8–9 characters long and contain uppercase and
|
|
191
|
+
lowercase letters and a digit. Check that each setting succeeds.
|
|
192
|
+
|
|
193
|
+
```text
|
|
194
|
+
conf
|
|
195
|
+
staessid <your-wifi-name>
|
|
196
|
+
stapwd <your-wifi-password>
|
|
197
|
+
devfid MyNode
|
|
198
|
+
appwd <new-device-password>
|
|
199
|
+
webui True
|
|
200
|
+
noconf
|
|
201
|
+
reboot
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
`webui True` enables the web interface. No boot-hook configuration is needed.
|
|
205
|
+
|
|
206
|
+
4. Reconnect your computer or phone to the normal local network.
|
|
207
|
+
5. Open `http://MyNode.local` in a browser. If you see **🚀 Load Web Apps**,
|
|
208
|
+
click it to load the dashboard and configuration apps. The page reloads
|
|
209
|
+
with links to the available apps.
|
|
210
|
+
|
|
211
|
+
If `.local` does not resolve, use the node IP shown by discovery or your router:
|
|
212
|
+
`http://<node-ip>`. The toolkit's default AP address is `192.168.4.1`; another
|
|
213
|
+
MicroPython port may use a different address. Keep your computer connected to
|
|
214
|
+
the board's Wi-Fi even if it reports that the network has no internet access.
|
|
215
|
+
|
|
216
|
+
If you deploy a previously prepared configuration containing valid Wi-Fi
|
|
217
|
+
credentials, the node can join that network directly and the access-point
|
|
218
|
+
configuration step is unnecessary. Change the factory device password during
|
|
219
|
+
initial setup.
|
|
220
|
+
|
|
221
|
+
### 4. Confirm the installation
|
|
222
|
+
|
|
223
|
+

|
|
224
|
+
|
|
225
|
+
Open `http://MyNode.local/rest/system/info` to call the first REST endpoint, or
|
|
226
|
+
connect through DevToolKit and try the shell:
|
|
227
|
+
|
|
228
|
+
```text
|
|
229
|
+
help
|
|
230
|
+
system info
|
|
231
|
+
system heartbeat
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
`system info` reports the board, MicroPython version, memory, filesystem, and
|
|
235
|
+
uptime. `help all` lists the installed Load Modules. From there, use the
|
|
236
|
+
[application catalog](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
|
|
237
|
+
or create a [custom Load Module](./micrOS/MODULE_GUIDE.md).
|
|
238
|
+
|
|
239
|
+
The dashboard displays controls for modules with widget metadata, so a fresh
|
|
240
|
+
node may have few controls until you load an application. Protected
|
|
241
|
+
configuration operations may prompt for your device password.
|
|
242
|
+
|
|
243
|
+
### What to try next
|
|
244
|
+
|
|
245
|
+
Choose a module from the [application catalog](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html),
|
|
246
|
+
check its wiring and help, then try its commands. The shell uses
|
|
247
|
+
`module function`; HTTP uses `/rest/module/function`, as in the system-info
|
|
248
|
+
example above. Module and hardware availability depend on your deployment.
|
|
249
|
+
|
|
250
|
+
You now have the basics. Use the network modes and configuration tables below
|
|
251
|
+
as your everyday reference; continue to Advanced use for custom behavior,
|
|
252
|
+
automation, different firmware, or multi-node tooling.
|
|
253
|
+
|
|
254
|
+
<a id="micros-video-tutorials"></a>
|
|
255
|
+
|
|
256
|
+
### Tutorials and community
|
|
257
|
+
|
|
258
|
+
[](https://www.youtube.com/channel/UChRlJw7OYAoKroC-Mi75joA)
|
|
259
|
+
[](https://www.instagram.com/micros_framework/)
|
|
260
|
+
[](https://www.facebook.com/Micros-Framework-103501302140755)
|
|
261
|
+
[](https://www.thingiverse.com/micros_framework/designs)
|
|
262
|
+
|
|
263
|
+
[](https://www.youtube.com/channel/UChRlJw7OYAoKroC-Mi75joA)
|
|
264
|
+
|
|
265
|
+
Questions, ideas, and technical requests are welcome in
|
|
266
|
+
[GitHub Discussions](https://github.com/BxNxM/micrOS/discussions). If micrOS is
|
|
267
|
+
useful to you, a GitHub star helps other MicroPython and embedded-automation
|
|
268
|
+
developers find it.
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
<a id="networking-modes"></a>
|
|
274
|
+
|
|
275
|
+
<a id="how-it-works"></a>
|
|
276
|
+
|
|
277
|
+
### Network modes
|
|
278
|
+
|
|
279
|
+

|
|
280
|
+
|
|
281
|
+
A node normally joins the local Wi-Fi network in station mode. It can fall back
|
|
282
|
+
to its own access point for configuration. Set `nwmd`, `staessid`, `stapwd`,
|
|
283
|
+
and `devip` using the configuration reference below. Clients communicate directly
|
|
284
|
+
with a node; nodes can invoke each other over sockets or ESP-NOW.
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
<a id="micros-node-configuration-parameters-with-description"></a>
|
|
288
|
+
|
|
289
|
+
### Node configuration reference
|
|
290
|
+
|
|
291
|
+
These parameters control micrOS core functionality and allow an entire system
|
|
292
|
+
to be assembled from configuration.
|
|
293
|
+
|
|
294
|
+
#### Basic parameters:
|
|
295
|
+
|
|
296
|
+
| Config keys | Default value and type | Reboot required | Description |
|
|
297
|
+
| :-----------------: | :-------------------------: | :-------------: | ----------------------------------------- |
|
|
298
|
+
| **`devfid`** | `node01` `<str>` | No | Device friendly "unique" ID - (1) defines AccessPoint (AP) network name and (2) in Station (STA) network mode the DHCP device name for IP address resolve also (3) this is the ShellCli prompt.
|
|
299
|
+
| **`staessid`** | `your_wifi_name` `<str>` | Yes | Wifi router name to connect (for STA default connection mode). You can list multiple wifi names separated with `;`
|
|
300
|
+
| **`stapwd`** | `your_wifi_passwd` `<str>` | Yes | Wifi router password (for STA default connection mode). You can list multiple wifi passwords separated with `;` connected in order to `staessid` wifi names.
|
|
301
|
+
| **`appwd`** | `ADmin123` `<str>` | Yes | Device system password.: Used in AP password (access point mode) + webrepl password + micrOS auth
|
|
302
|
+
| **`boothook`** | `n/a` `<str>` | Yes | Add Load Module execution(s) to the boot sequence. Separator `;`. Examples: `rgb load; cct load` but you can call any load module function here if you want to run it at boot time.
|
|
303
|
+
| **`webui`** | `False` `bool` | Yes | Launch http rest server on port 80 (in parallel with micrOS shell on port 9008 aka `socport`). It has 2 endpoints: / aka main page (index.html) and /rest aka rest (json) interface for load module execution. Example: `<devfid>.local` or `<devfid>.local/rest` + optional parameters: `/rgb/toggle`. **Apple shortcuts compatible**
|
|
304
|
+
| **`espnow`** | `False` `bool` | Yes | Enable **ESPNow communication protocol**. It starts `espnow.server` task, that can receive espnow messages and execute Load Module commands. It is an extension for **InterCon** feature example: `system heartbeat >>target.local`.
|
|
305
|
+
| | |
|
|
306
|
+
| **`cron`** | `False` `<bool>` | Yes | Enable timestamp based Load Module execution aka Cron scheduler (linux terminology), Timer(1) hardware interrupt enabler.
|
|
307
|
+
| **`crontasks`** | `n/a` `<str>` | No | Cron scheduler input, task format: `WD:H:M:S!module function` e.g.: `1:8:0:0!system heartbeat`, task separator in case of multiple tasks: `;`. [WD:0-6, H:0-23, M:0-59, S:0-59] in case of each use: `*`. Instead `WD:H:M:S` you can use suntime tags: `sunset`, `sunrise`, optional offset: `sunset+-<minutes>`, `sunrise+-<minutes>`, example: `sunset-30!system heartbeat`. Range of days: WD can be conrete day number or range like: 0-2 means Monday to Wednesday.
|
|
308
|
+
| | |
|
|
309
|
+
| **`irq1`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
|
|
310
|
+
| **`irq1_cbf`** | `n/a` `<str>` | Yes | `irq1` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
|
|
311
|
+
| **`irq1_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
|
|
312
|
+
| **`irq2`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
|
|
313
|
+
| **`irq2_cbf`** | `n/a` `<str>` | Yes | `irq2` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
|
|
314
|
+
| **`irq2_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
|
|
315
|
+
| **`irq3`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
|
|
316
|
+
| **`irq3_cbf`** | `n/a` `<str>` | Yes | `irq3` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
|
|
317
|
+
| **`irq3_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
|
|
318
|
+
| **`irq4`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
|
|
319
|
+
| **`irq4_cbf`** | `n/a` `<str>` | Yes | `irq4` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
|
|
320
|
+
| **`irq4_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
|
|
321
|
+
| **`irq_prell_ms`** | `300` `<int>` | Yes | "Prell": contact recurrence (hw property), for fake event filtering... :D Time window to ignore external IRQ events in ms.
|
|
322
|
+
| | |
|
|
323
|
+
| **`timirq`** | `False` `<bool>` | Yes | Timer(0) interrupt enabler - background "subprocess" like execution, timer based infinite loop for the LoadModule execution.
|
|
324
|
+
| **`timirqcbf`** | `n/a` `<str>` | Yes | if `timirq` enabled, calls the given Load Module(s), e.x.: `module function optional_parameter(s)`, task separator: `;`
|
|
325
|
+
| **`timirqseq`** | `1000` `<int>` | Yes | Timer interrupt period in ms, default: `1000` ms (for `timirq` infinite loop timer value)
|
|
326
|
+
|
|
327
|
+
#### Advanced parameter options:
|
|
328
|
+
|
|
329
|
+
| Config keys | Default value and type | Reboot required | Description |
|
|
330
|
+
| :-----------------: | :-------------------------: | :-------------: | ---------------------------------------- |
|
|
331
|
+
| **`utc`** | `60` `<int>` | Yes | NTP-RTC - timezone setup (UTC in minute) - it is automatically calibrated in STA mode based on geolocation.
|
|
332
|
+
| **`ha`** | `True` `<bool>` | Yes | High Availability mode for micrOS network runtime. This is **not Home Assistant** integration. When enabled, micrOS turns on the 30 second watchdog and the idle task checks STA connectivity about every 3 minutes. If the node is configured for `nwmd=STA`, loses Wi-Fi, and a configured SSID is visible again, micrOS reboots to repair the connection. In AP mode this mainly leaves the watchdog behavior active, while STA auto-repair is not used.
|
|
333
|
+
| **`cstmpmap`** | `n/a` `<str>` | Yes | Default (`n/a`), select pinmap automatically based on platform (`IO_<platform>`). Manual control / customization of application pins, syntax: `pin_map_name; pin_name:pin_number; ` etc. [1][optional] `pin_map_name` represented as `IO_<pin_map_name>.py/.mpy` file on device. [2+][optinal] `dht:22` overwrite individual existing load module pin(s). Hint: `<module> pinmap()` to get app pins, example: `neopixel pinmap()`
|
|
334
|
+
| **`boostmd`** | `True` `<bool>` | Yes | boost mode - set up cpu frequency low or high 80/160 MHz on ESP32-C3/C6; the current fallback is 160/240 MHz. Other ports require compatible clock settings.
|
|
335
|
+
| **`aioqueue`** | `5` `<int>` | Yes | System async queue controller (resource limiter).: `#1` Set asyc task queue limit (for soft tasks: `&`). Furthermore `#2` Socker server-s (webCli, ShellCli) client number limiter. 5 means: 5 cooperative connection (queue) shared by webCli and shellCli. It can be increased based on available resources.
|
|
336
|
+
| **`webui_max_con`** | `3` `<int>` | Yes | Maximum number of concurrent HTTP requests processed simultaneously. Each active request consumes heap memory. Lower this value to mitigate memory allocation failures caused by heap fragmentation. The effective concurrency limit is reduced if the memory requirement exceeds 10% of the available heap or if the value of webui_max_con exceeds the value of aioqueue.
|
|
337
|
+
| | |
|
|
338
|
+
| **`devip`** | `n/a` `<str>` | Yes(N/A) | Device IP address, (first stored IP in STA mode will be the device static IP on the network), you can set specific static IP address here.
|
|
339
|
+
| **`nwmd`** | `STA` `<str>` | Yes | Preferred network mode - `AP` or `STA`, default is `STA`.
|
|
340
|
+
| **`soctout`** | `30` `<int>` | Yes | Socket server connection timeout. If user is passive for `soctout` sec, and new connection incoming, then close passive connection. So it is time limit per connection in the `aioqueue`.
|
|
341
|
+
| **`socport`** | `9008` `<int>` | Yes | Socket server service port (should not be changed because of client and API incompatibility).
|
|
342
|
+
| **`auth`** | `False` `<bool>` | Yes | Enables socket password authentication, password: `appwd`. Passwordless functions: `hello`, `version`, `exit`. Plus access for loaded modules. Auth protects the configuration and new module loads.
|
|
343
|
+
| | |
|
|
344
|
+
| **`dbg`** | `True` `<bool>` | Yes | Debug mode - enable micrOS system printout, server info, etc. + progress LED.
|
|
345
|
+
| **`hwuid`** | `n/a` `<str>` | N/A | USED BY SYSTEM (state storage) - hardware address - dev uid
|
|
346
|
+
| **`guimeta`** | `...` `str` | No | Used by the micrOS client for widget metadata and offloaded parameter-type state.
|
|
347
|
+
|
|
348
|
+
Most unset string parameters use `n/a`. Cron requires Timer(1); the original
|
|
349
|
+
implementation targets the ESP32 port.
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Advanced use
|
|
355
|
+
|
|
356
|
+
Use this section as a reference, not a second setup checklist. It covers
|
|
357
|
+
operating and extending your nodes. Runtime design belongs in
|
|
358
|
+
[ARCHITECTURE.md](./micrOS/ARCHITECTURE.md); application APIs and examples belong
|
|
359
|
+
in [MODULE_GUIDE.md](./micrOS/MODULE_GUIDE.md).
|
|
360
|
+
|
|
361
|
+
- [Interfaces and applications](#interfaces-and-applications)
|
|
362
|
+
- [Automation commands](#configure-automation)
|
|
363
|
+
- [Boards and memory](#boards-and-memory) · [Peripherals](#built-in-peripheral-support) · [Pinouts](#device-pinouts-for-wiring)
|
|
364
|
+
- [Gateway and monitoring](#gateway-and-monitoring)
|
|
365
|
+
- [Development and customization](#developer-guide) — modules, firmware images, CLI, and examples
|
|
366
|
+
- [Documentation](#documentation-map)
|
|
367
|
+
- [Roadmap](#roadmap) · [Release history](#release-history)
|
|
368
|
+
- [Cheat sheets and maintainer notes](#operations-and-maintainer-notes)
|
|
369
|
+
|
|
370
|
+
<a id="micros-clients"></a>
|
|
371
|
+
|
|
372
|
+
### Interfaces and applications
|
|
373
|
+
|
|
374
|
+
| Interface | Purpose |
|
|
375
|
+
| --- | --- |
|
|
376
|
+
| **On-device web UI** | Configuration, generated dashboards, REST tools, and file management at `http://<nodename>.local`. |
|
|
377
|
+
| **WebCli / REST** | Exposes MicroPython module functions through HTTP endpoints. |
|
|
378
|
+
| **ShellCli** | Provides a generic, session-based TCP/IP operation and management (OAM) interface with a telnet-style shell. |
|
|
379
|
+
| **DevToolKit** | Deploys, updates, discovers, monitors, and simulates nodes. |
|
|
380
|
+
| **InterCon** | Executes commands between nodes over sockets or ESP-NOW. |
|
|
381
|
+
|
|
382
|
+
Load Modules are micrOS applications. Use the catalog to find one for your
|
|
383
|
+
hardware, or follow the development guide to write your own.
|
|
384
|
+
|
|
385
|
+
- [Browse the built-in application and peripheral catalog](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
|
|
386
|
+
- [Create a custom Load Module](./micrOS/MODULE_GUIDE.md)
|
|
387
|
+
- [Install shared micrOS packages](https://github.com/BxNxM/micrOSPackages)
|
|
388
|
+
- [Use the micrOS Gateway](./env/docker/README.md)
|
|
389
|
+
- AI integration: [](https://hub.docker.com/r/bxnxm/micros-mcp)
|
|
390
|
+
|
|
391
|
+
<details>
|
|
392
|
+
<summary><strong>Legacy mobile clients</strong></summary>
|
|
393
|
+
|
|
394
|
+
The original phone applications are obsolete and have been replaced by the
|
|
395
|
+
on-device web UI.
|
|
396
|
+
|
|
397
|
+
The store listings below returned 404 when checked on September 7, 2026.
|
|
398
|
+
Their original links and badges are preserved for historical reference, not
|
|
399
|
+
as installation options.
|
|
400
|
+
|
|
401
|
+
[](https://apps.apple.com/hu/app/micros-client/id1562342296)
|
|
402
|
+
[](https://play.google.com/store/apps/details?id=com.BMT.micrOSClient)
|
|
403
|
+
|
|
404
|
+
</details>
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
#### Optional file manager
|
|
408
|
+
|
|
409
|
+
Enable the file manager for this session with `web load fileserver=True` in
|
|
410
|
+
the shell. Use that command in `boothook` to enable it on subsequent boots,
|
|
411
|
+
preserving any other startup actions. Protected file operations may prompt
|
|
412
|
+
for your device password.
|
|
413
|
+
|
|
414
|
+
<a id="complete-guide-and-reference"></a>
|
|
415
|
+
<a id="micros-framework-features"></a>
|
|
416
|
+
|
|
417
|
+
<a id="detailed-runtime-capabilities"></a>
|
|
418
|
+
|
|
419
|
+
### Configure automation
|
|
420
|
+
|
|
421
|
+
<a id="boot-configuration-and-networking"></a>
|
|
422
|
+
|
|
423
|
+
#### Startup and network settings
|
|
424
|
+
|
|
425
|
+
OTA tooling monitors updates and restarts the node. To configure startup and
|
|
426
|
+
network behavior, edit `node_config.json` through the shell or web UI:
|
|
427
|
+
|
|
428
|
+
- `boothook` runs initialization before network setup—for example,
|
|
429
|
+
`rgb load; neopixel load` restores application pins and state. Prefix an
|
|
430
|
+
action with `#` to disable it while experimenting.
|
|
431
|
+
- `nwmd` selects station (`STA`) or access-point (`AP`) mode. `devip`
|
|
432
|
+
controls the stored/static IP and `devfid` the hostname (`<devfid>.local`).
|
|
433
|
+
- In STA mode, NTP and UTC handling set the clock, using
|
|
434
|
+
[ip-api.com](http://ip-api.com/json/?fields=lat,lon,timezone,offset) for
|
|
435
|
+
location/timezone data. The runtime also tracks uptime.
|
|
436
|
+
|
|
437
|
+
#### Schedules and external events
|
|
438
|
+
|
|
439
|
+
| Mechanism | Configuration and example |
|
|
440
|
+
| --- | --- |
|
|
441
|
+
| Periodic timer | Enable `timirq`; set `timirqseq` in milliseconds and `timirqcbf` to a command. With `5000` and `bme280 measure`, Timer(0) measures every five seconds. Callbacks support `#` comments. |
|
|
442
|
+
| Cron | Enable `cron` and set `crontasks`. Timer(1) runs timestamped entries such as `*:8:0:0!rgb rgb r=10 g=60 b=100` (daily at 08:00). |
|
|
443
|
+
| External interrupt | Enable `irqX` (X = 1–4), choose `irqX_trig` (`up`, `down`, or `both`), and set `irqX_cbf` to a Load Module callback. Callbacks support `#` comments. |
|
|
444
|
+
|
|
445
|
+
Cron timestamps use `WD:H:M:S!module function`, with ranges
|
|
446
|
+
`0–6:0–23:0–59:0–59` and `*` for any value. Monday is 0 and Sunday is 6;
|
|
447
|
+
`0-2` selects Monday through Wednesday. Separate entries with `;`, but use
|
|
448
|
+
only one command per entry; comments are not supported.
|
|
449
|
+
|
|
450
|
+
Instead of a timestamp, use `sunrise` or `sunset` with an optional minute
|
|
451
|
+
offset: `sunrise+30` or `sunset!rgb rgb r=10 g=60 b=100`. Times come from
|
|
452
|
+
[api.sunrise-sunset.org](https://api.sunrise-sunset.org/json?lat={lat}&lng={lon}&date=today&formatted=0).
|
|
453
|
+
Timer support depends on the MicroPython port.
|
|
454
|
+
|
|
455
|
+
#### Shell and background jobs
|
|
456
|
+
|
|
457
|
+
ShellCli provides wireless commands such as `help`, `version`, `reboot`,
|
|
458
|
+
`modules`, and `webrepl`. Enter `conf` to read or change configuration,
|
|
459
|
+
use `dump` to show it, and leave with `noconf`.
|
|
460
|
+
`webrepl --update` restarts into WebREPL mode and waits about 20 seconds
|
|
461
|
+
for an OTA update. For normal boot versus WebREPL recovery mode, see the
|
|
462
|
+
[loader and boot-flow reference](./micrOS/ARCHITECTURE.md#boot-flow).
|
|
463
|
+
|
|
464
|
+
Use `help` for shell commands and active modules, or `help all` to include all
|
|
465
|
+
installed modules. Older output examples below use the former `help lm` syntax.
|
|
466
|
+
|
|
467
|
+
Run Load Module functions in the background:
|
|
468
|
+
|
|
469
|
+
| Command | Effect |
|
|
470
|
+
| --- | --- |
|
|
471
|
+
| `system heartbeat &` | Run once in the background. |
|
|
472
|
+
| `system heartbeat &1000` | Wait one second, then run once. |
|
|
473
|
+
| `system heartbeat &&` | Repeat in the background. |
|
|
474
|
+
| `system heartbeat &&1000` | Repeat every second. |
|
|
475
|
+
| `task show system.heartbeat` | Show the task's latest output. |
|
|
476
|
+
| `task kill system.heartbeat` | Stop the task. |
|
|
477
|
+
| `task list` | List active tasks and queue/load information. |
|
|
478
|
+
|
|
479
|
+
Example task list (the active services depend on configuration):
|
|
480
|
+
|
|
481
|
+
```text
|
|
482
|
+
TinyDevBoard $ task list
|
|
483
|
+
---- micrOS top ----
|
|
484
|
+
#queue: 18 #load: 3%
|
|
485
|
+
|
|
486
|
+
#Active #taskID
|
|
487
|
+
Yes server
|
|
488
|
+
Yes idle
|
|
489
|
+
Yes telegram.server_bot
|
|
490
|
+
Yes espnow.server
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
The host-side socket client supports interactive and non-interactive use.
|
|
494
|
+
To discover nodes and connect:
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
./devToolKit.py --search_devices --connect
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### Hardware and peripherals
|
|
501
|
+
|
|
502
|
+
#### Boards and memory
|
|
503
|
+
|
|
504
|
+
<details>
|
|
505
|
+
<summary><strong>Capabilities and example boards</strong></summary>
|
|
506
|
+
|
|
507
|
+

|
|
508
|
+

|
|
509
|
+

|
|
510
|
+

|
|
511
|
+

|
|
512
|
+

|
|
513
|
+

|
|
514
|
+

|
|
515
|
+

|
|
516
|
+

|
|
517
|
+

|
|
518
|
+

|
|
519
|
+

|
|
520
|
+

|
|
521
|
+

|
|
522
|
+
|
|
523
|
+

|
|
524
|
+

|
|
525
|
+

|
|
526
|
+

|
|
527
|
+

|
|
528
|
+

|
|
529
|
+

|
|
530
|
+

|
|
531
|
+

|
|
532
|
+

|
|
533
|
+
|
|
534
|
+
Board support depends on the MicroPython port, Wi-Fi, available memory, and pin
|
|
535
|
+
map—not just the chip family or manufacturer. Included mappings cover Espressif
|
|
536
|
+
variants, TinyPICO, M5Stamp, QT Py, and RP2/Pico W. A pin map alone does not
|
|
537
|
+
guarantee compatibility: check the available firmware and your modules'
|
|
538
|
+
requirements.
|
|
539
|
+
|
|
540
|
+
</details>
|
|
541
|
+
|
|
542
|
+
micrOS targets compatible MicroPython boards with Wi-Fi, not one chip family or
|
|
543
|
+
manufacturer. Included mappings cover multiple Espressif boards as well as
|
|
544
|
+
RP2/Pico W and provider-specific boards such as TinyPICO, M5Stamp, and QT Py.
|
|
545
|
+
Deployment method and peripheral availability vary by MicroPython port.
|
|
546
|
+
|
|
547
|
+
Regardless of provider, enabling more than approximately two Load Modules
|
|
548
|
+
together with the full Web UI generally requires more than **150–200 KB** of
|
|
549
|
+
available RAM.
|
|
550
|
+
|
|
551
|
+
For larger applications, choose a board with **2, 4, or 8 MB of additional
|
|
552
|
+
PSRAM**. It may be described as PSRAM, SPIRAM, or octal PSRAM. Check the board
|
|
553
|
+
specification before buying; the selected MicroPython build must support it.
|
|
554
|
+
|
|
555
|
+
**Examples of higher-memory hardware:**
|
|
556
|
+
|
|
557
|
+
**`esp32s3`**: A fast Espressif MCU with PSRAM detection. Typical configurations
|
|
558
|
+
include **2 MB** for general use and **4–8 MB** for image processing, audio, and
|
|
559
|
+
larger combinations of GPIO applications.
|
|
560
|
+
|
|
561
|
+
**`esp32s3-octo`**: Uses an eight-bit PSRAM interface for higher throughput.
|
|
562
|
+
|
|
563
|
+
**`tinypico`**: Excellent compact hardware with 4 MB of PSRAM, at a higher price.
|
|
564
|
+
|
|
565
|
+
**`esp32cam`**: Uses a camera-capable image. The original project notes describe
|
|
566
|
+
an 8 MB configuration; check the actual board, as that is not a guarantee for
|
|
567
|
+
every board sold under this name.
|
|
568
|
+
|
|
569
|
+
The following figures are historical project measurements and estimates,
|
|
570
|
+
not limits enforced by the runtime. The original guide estimated roughly
|
|
571
|
+
**250 KB** for a fuller setup and recommended **2–8 MB** PSRAM configurations:
|
|
572
|
+
|
|
573
|
+
- A heavily loaded 4 MB system used approximately 230 KB (5.6%), including `oled_ui` and several other modules.
|
|
574
|
+
- Camera streaming can consume approximately 2 MB, or 50% of a 4 MB configuration.
|
|
575
|
+
|
|
576
|
+
> Note:
|
|
577
|
+
|
|
578
|
+
A standard **`esp32`** can work well with ShellCli and without WebCli. Web assets
|
|
579
|
+
and multiple asynchronous tasks each consume additional memory. The original
|
|
580
|
+
guide reported instability near 80% heap use in some setups; allocation sizes
|
|
581
|
+
and fragmentation matter too, so this is not a universal threshold. A spare ESP32 is
|
|
582
|
+
still a good way to explore a smaller set of micrOS features.
|
|
583
|
+
|
|
584
|
+
---
|
|
585
|
+
|
|
586
|
+
#### Built-in peripheral support
|
|
587
|
+
|
|
588
|
+
`#Sensors / inputs` `#Actuators / outputs`
|
|
589
|
+
|
|
590
|
+
[](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
|
|
591
|
+
|
|
592
|
+
[Browse Load Module functions](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)</br>
|
|
593
|
+
|
|
594
|
+
---
|
|
595
|
+
|
|
596
|
+
#### Device Pinouts for wiring
|
|
597
|
+
|
|
598
|
+
##### Logical pin association handling
|
|
599
|
+
|
|
600
|
+
microIO resolves logical pins through `modules/IO_*.py` board maps. Use an
|
|
601
|
+
existing map such as `IO_esp32.py` as a template for `IO_<name>.py`, then set
|
|
602
|
+
`cstmpmap` to `<name>`. You can override individual pins too:
|
|
603
|
+
`neop:25` maps the logical NeoPixel pin to GPIO 25. Inspect mappings with
|
|
604
|
+
`system pinmap`.
|
|
605
|
+
|
|
606
|
+
[micrOS/source/microIO.py](./micrOS/source/microIO.py)
|
|
607
|
+
|
|
608
|
+
LogicalPin lookup tables:
|
|
609
|
+
|
|
610
|
+
- [tinypico](micrOS/source/modules/IO_tinypico.py)
|
|
611
|
+
- [esp32](micrOS/source/modules/IO_esp32.py)
|
|
612
|
+
- [esp32s2](micrOS/source/modules/IO_esp32s2.py)
|
|
613
|
+
- [esp32s3](micrOS/source/modules/IO_esp32s3.py)
|
|
614
|
+
- [M5Stamp](micrOS/source/modules/IO_m5stamp.py)
|
|
615
|
+
- [QT Py](micrOS/source/modules/IO_qtpy.py)
|
|
616
|
+
- [raspberryPicoW](micrOS/source/modules/IO_rp2.py) - reset needed after ota update (webrepl limitation)
|
|
617
|
+
- `IO_*.py` [and other mappings](./micrOS/source/modules)
|
|
618
|
+
|
|
619
|
+
> Use constant variables for pin-map declarations; see the files for examples.
|
|
620
|
+
> These files are also precompiled automatically into `.mpy` bytecode.
|
|
621
|
+
|
|
622
|
+

|
|
623
|
+
|
|
624
|
+
GENERAL CONTROLLER CONCEPT: [microPLC](./media/microPLC.png)
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+

|
|
628
|
+
|
|
629
|
+
|
|
630
|
+

|
|
631
|
+
|
|
632
|
+
|
|
633
|
+

|
|
634
|
+
|
|
635
|
+
---
|
|
636
|
+
|
|
637
|
+
<a id="micros-gateway-in-docker"></a>
|
|
638
|
+
|
|
639
|
+
### Gateway and monitoring
|
|
640
|
+
|
|
641
|
+

|
|
642
|
+
|
|
643
|
+
Use the gateway with Prometheus for metrics and Grafana for dashboards. See
|
|
644
|
+
the [Docker setup guide](./env/docker/README.md) for the combined stack and
|
|
645
|
+
dashboard examples.
|
|
646
|
+
|
|
647
|
+
Resources:
|
|
648
|
+
|
|
649
|
+
> Modify `prometheus.yml` to select the sensor endpoints from which Prometheus should scrape data.
|
|
650
|
+
|
|
651
|
+
* [docker-compose](./env/docker/docker-compose.yaml)
|
|
652
|
+
* [prometheus config](./env/docker/prometheus.yml)
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
cd ./env/docker
|
|
656
|
+
docker-compose -p gateway up -d
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
Official [DockerHub image](https://hub.docker.com/r/bxnxm/micros-gateway)
|
|
660
|
+
|
|
661
|
+
<a id="developer-guide"></a>
|
|
662
|
+
|
|
663
|
+
### Development and customization
|
|
664
|
+
|
|
665
|
+
<a id="customization"></a>
|
|
666
|
+
<a id="load-modules-and-pin-maps"></a>
|
|
667
|
+
|
|
668
|
+
#### Create a Load Module
|
|
669
|
+
|
|
670
|
+
To add an application, create `LM_<your_app_name>.py`, write public Python
|
|
671
|
+
functions, and upload it through DevToolKit's drag-and-drop GUI. For example,
|
|
672
|
+
`system info` calls `info()` in `modules/LM_system.py`.
|
|
673
|
+
See the [Load Module guide](./micrOS/MODULE_GUIDE.md) for the API contract.
|
|
674
|
+
|
|
675
|
+
[](./micrOS/MODULE_GUIDE.md)
|
|
676
|
+
|
|
677
|
+
#### USB updates and custom images
|
|
678
|
+
|
|
679
|
+
The selected firmware filename controls which resources are copied from
|
|
680
|
+
`toolkit/workspace/precompiled/`:
|
|
681
|
+
|
|
682
|
+
- A stock MicroPython image keeps the full development deployment.
|
|
683
|
+
- A prebuilt `micrOS-*` image already contains the core and receives only the
|
|
684
|
+
configured web assets and minimum LM/IO modules.
|
|
685
|
+
|
|
686
|
+
USB deploy and update display the selected mode. USB update restores
|
|
687
|
+
`node_config.json` for both image types. **Skip MicroPython** keeps the current
|
|
688
|
+
firmware and copies only the required files.
|
|
689
|
+
|
|
690
|
+
Build all configured `micrOS-*` images with:
|
|
691
|
+
|
|
692
|
+
```bash
|
|
693
|
+
python3 toolkit/micrOSImageBuilder.py
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
Supported custom targets are `esp32`, `esp32c3`, `esp32c6`, and `esp32s3`.
|
|
697
|
+
The [MicroPython image guide](micrOS/micropython/README.md) contains the binary
|
|
698
|
+
catalog, custom image list, and image notes. Image settings and release
|
|
699
|
+
resources are defined in `toolkit/micrOSImageConfig.json`.
|
|
700
|
+
|
|
701
|
+
Custom images append a `[micrOS]` marker to the board description shown by
|
|
702
|
+
`system info`. Full OTA reads the `hello` mode and skips frozen core files on
|
|
703
|
+
`rel` devices.
|
|
704
|
+
|
|
705
|
+
#### Development branches and legacy deployments
|
|
706
|
+
|
|
707
|
+
Historical GUI terminology: “Secure Core” (OTA static modules) referred to
|
|
708
|
+
`boot.py`, `micrOSloader.mpy`, `Network.mpy`, `ConfigHandler.mpy`, and
|
|
709
|
+
`Debug.mpy`. These are legacy names, not the current release-image resource
|
|
710
|
+
list; see [deployment modes](#usb-updates-and-custom-images).
|
|
711
|
+
|
|
712
|
+
Alternative branches:
|
|
713
|
+
|
|
714
|
+
[micrOS-Core 3.0](https://github.com/BxNxM/micrOS/tree/core) - with minimal set of default Load Modules
|
|
715
|
+
|
|
716
|
+
[micrOS-develop](https://github.com/BxNxM/micrOS/tree/develop) - for experimentation
|
|
717
|
+
|
|
718
|
+
[lightweight-for-esp8266](https://github.com/BxNxM/micrOS/tree/lightweight) - really old legacy v1.3
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
#### Erase, flash MicroPython, and install micrOS
|
|
722
|
+
|
|
723
|
+
From the repository directory containing `devToolKit.py`, run:
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
devToolKit.py --make
|
|
727
|
+
```
|
|
728
|
+
Follow the interactive prompts. This operation erases the board.
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
Then discover and connect to the device:
|
|
732
|
+
|
|
733
|
+
```
|
|
734
|
+
devToolKit.py -s -c
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
|
|
739
|
+
**User commands**
|
|
740
|
+
|
|
741
|
+
```
|
|
742
|
+
devToolKit.py -h
|
|
743
|
+
|
|
744
|
+
optional arguments:
|
|
745
|
+
-h, --help show this help message and exit
|
|
746
|
+
|
|
747
|
+
Base commands:
|
|
748
|
+
-m, --make Erase & Deploy & Precompile (micrOS) & Install (micrOS)
|
|
749
|
+
-r, --update Update/redeploy connected (USB) micrOS
|
|
750
|
+
-s, --search_devices Search devices on connected wifi network.
|
|
751
|
+
-o, --OTA OTA (over-the-air update with WebREPL)
|
|
752
|
+
-c, --connect Connect through the socket client
|
|
753
|
+
-p CONNECT_PARAMETERS, --connect_parameters CONNECT_PARAMETERS
|
|
754
|
+
Parameters for connection in non-interactive mode.
|
|
755
|
+
-a APPLICATIONS, --applications APPLICATIONS
|
|
756
|
+
List/Execute frontend applications. [list]
|
|
757
|
+
-stat, --node_status Show all available micrOS devices status data.
|
|
758
|
+
-cl, --clean Clean user connection data: device_conn_cache.json
|
|
759
|
+
|
|
760
|
+
...
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
**Search devices**
|
|
764
|
+
|
|
765
|
+
```
|
|
766
|
+
devToolKit.py --search_devices
|
|
767
|
+
|
|
768
|
+
or
|
|
769
|
+
|
|
770
|
+
devToolKit.py -s
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
**List discovered devices with status updates**
|
|
774
|
+
|
|
775
|
+
```
|
|
776
|
+
devToolKit.py -stat
|
|
777
|
+
|
|
778
|
+
or
|
|
779
|
+
|
|
780
|
+
devToolKit.py --node_status
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
Output:
|
|
784
|
+
|
|
785
|
+
```
|
|
786
|
+
[ UID ] [ FUID ] [ IP ] [ STATUS ] [ VERSION ] [ MODE ] [COMM SEC] [WEBUI | ESPNOW | CRON | TIMIRQ]
|
|
787
|
+
__localhost__ __simulator__ 127.0.0.1 OFFLINE <n/a> n/a n/a n/a n/a n/a n/a
|
|
788
|
+
micr24587c53b170OS Entrance 10.0.1.55 ONLINE 3.5.0-0 rel 0.181 ON OFF OFF OFF
|
|
789
|
+
micr308398c73e88OS LivingKitchen 10.0.1.200 ONLINE 3.5.0-0 dev 0.685 ON ON ON OFF
|
|
790
|
+
micr7c9ebd6147c4OS node01 10.0.1.180 ONLINE 3.3.1-0 rel 0.280 ON ON OFF OFF
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
**Other Developer commands**
|
|
794
|
+
|
|
795
|
+
```
|
|
796
|
+
Development & Deployment & Connection:
|
|
797
|
+
-f, --force_update Force mode for -r/--update and -o/--OTA
|
|
798
|
+
-e, --erase Erase device
|
|
799
|
+
-d, --deploy Flash only the selected micropython image
|
|
800
|
+
-i, --install Copy the full precompiled micrOS tree
|
|
801
|
+
-l, --list_devs_n_bins
|
|
802
|
+
List connected devices & micropython binaries.
|
|
803
|
+
-ls, --node_ls List micrOS node filesystem content.
|
|
804
|
+
-u, --connect_via_usb
|
|
805
|
+
Connect via serial port - usb
|
|
806
|
+
-b, --backup_node_config
|
|
807
|
+
Backup usb connected node config.
|
|
808
|
+
-sim, --simulate start micrOS on your computer in simulated mode
|
|
809
|
+
-cc, --cross_compile_micros
|
|
810
|
+
Cross Compile micrOS system [py -> mpy] and optimize
|
|
811
|
+
precompiled web resources
|
|
812
|
+
-gw, --gateway Start micrOS Gateway rest-api server
|
|
813
|
+
-v, --version Get micrOS version - repo + connected device.
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
`-cc` copies `micrOS/source/web` into `toolkit/workspace/precompiled/web`,
|
|
817
|
+
then overwrites the copied `.js`, `.css`, and `.html` files with optimized
|
|
818
|
+
versions for deployment. Source web files stay readable.
|
|
819
|
+
|
|
820
|
+
Optional optimizer dependencies are installed by the normal toolkit bootstrap
|
|
821
|
+
unless `--light` is used.
|
|
822
|
+
|
|
823
|
+
#### Socket terminal examples
|
|
824
|
+
|
|
825
|
+
The following output snapshots are from earlier releases. Device names,
|
|
826
|
+
configuration keys, and output formatting may differ today; use the
|
|
827
|
+
[configuration reference](#node-configuration-reference) for current defaults.
|
|
828
|
+
|
|
829
|
+
##### Identify device
|
|
830
|
+
|
|
831
|
+
```
|
|
832
|
+
devToolKit.py -c -p '--dev slim01 hello'
|
|
833
|
+
Load MicrOS device cache: /Users/bnm/Documents/NodeMcu/MicrOs/tools/device_conn_cache.json
|
|
834
|
+
Activate MicrOS device connection address
|
|
835
|
+
[i] FUID IP UID
|
|
836
|
+
[0] Device: slim01 - 10.0.1.73 - 0x500x20x910x680xc0xf7
|
|
837
|
+
Device was found: slim01
|
|
838
|
+
hello:slim01:0x500x20x910x680xc0xf7:dev
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
##### Get help
|
|
842
|
+
|
|
843
|
+
```bash
|
|
844
|
+
devToolKit.py -c -p '--dev TinyDevBoard help'
|
|
845
|
+
[MICROS]
|
|
846
|
+
hello - device hello msg ID
|
|
847
|
+
modules - show active Load Modules
|
|
848
|
+
version - show micrOS version
|
|
849
|
+
exit - exit shell session
|
|
850
|
+
reboot - system soft reboot (vm), hard reboot (hw): reboot -h
|
|
851
|
+
webrepl - start webrepl, for file transfers use with --update
|
|
852
|
+
[CONF] Configuration mode
|
|
853
|
+
conf - Enter conf mode
|
|
854
|
+
dump - Dump all data, filter: dump [str]
|
|
855
|
+
key - Get value
|
|
856
|
+
key value - Set value
|
|
857
|
+
noconf - Exit conf mode
|
|
858
|
+
[TASK] Task operations
|
|
859
|
+
task list - list tasks by tags
|
|
860
|
+
task kill [tag] - stop task
|
|
861
|
+
task show [tag] - show task output
|
|
862
|
+
[EXEC] Command mode, syntax(...): <module> <function> <params> <postfix>
|
|
863
|
+
Postfix hints:
|
|
864
|
+
... &[x] - start one-shot task
|
|
865
|
+
... &&[x] - start periodic task, where [x]: delay ms [x min: 20ms]
|
|
866
|
+
... >json - request json formatted output
|
|
867
|
+
... >>hostname - remote command execution (intercon)
|
|
868
|
+
help [all/-] [match] - list Active/ALL modules with optional filtering
|
|
869
|
+
|
|
870
|
+
cct
|
|
871
|
+
help
|
|
872
|
+
cluster
|
|
873
|
+
help
|
|
874
|
+
fileserver
|
|
875
|
+
help
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
##### Load Modules - User defined functions
|
|
879
|
+
|
|
880
|
+
```
|
|
881
|
+
devToolKit.py -c -p '--dev BedLamp system info'
|
|
882
|
+
|
|
883
|
+
CPU clock: 24 [MHz]
|
|
884
|
+
Mem usage: 71.0 %
|
|
885
|
+
FS usage: 14.6 %
|
|
886
|
+
upython: v1.19.1 on 2022-06-18
|
|
887
|
+
board: ESP32 module with ESP32
|
|
888
|
+
mac: 7c:9e:bd:62:3f:f8
|
|
889
|
+
uptime: 0 1:29:19
|
|
890
|
+
```
|
|
891
|
+
|
|
892
|
+
##### SocketClient
|
|
893
|
+
|
|
894
|
+
###### Config:
|
|
895
|
+
|
|
896
|
+
micrOS/toolkit/user_data/device_conn_cache.json
|
|
897
|
+
|
|
898
|
+
```json
|
|
899
|
+
{
|
|
900
|
+
"__devuid__": [
|
|
901
|
+
"192.168.4.1",
|
|
902
|
+
9008,
|
|
903
|
+
"__device_on_AP__"
|
|
904
|
+
],
|
|
905
|
+
"__localhost__": [
|
|
906
|
+
"127.0.0.1",
|
|
907
|
+
9008,
|
|
908
|
+
"__simulator__"
|
|
909
|
+
],
|
|
910
|
+
"micr500291863428OS": [
|
|
911
|
+
"10.0.1.72",
|
|
912
|
+
9008,
|
|
913
|
+
"BedLamp"
|
|
914
|
+
]
|
|
915
|
+
}
|
|
916
|
+
```
|
|
917
|
+
|
|
918
|
+
###### Interactive mode
|
|
919
|
+
|
|
920
|
+
```
|
|
921
|
+
devToolKit.py -c
|
|
922
|
+
or
|
|
923
|
+
devToolKit.py --connect
|
|
924
|
+
|
|
925
|
+
[i] FUID IP UID
|
|
926
|
+
[0] Device: __device_on_AP__ - 192.168.4.1 - __devuid__
|
|
927
|
+
[1] Device: __simulator__ - 127.0.0.1 - __localhost__
|
|
928
|
+
[2] Device: BedLamp - 10.0.1.72 - micr500291863428OS
|
|
929
|
+
|
|
930
|
+
Choose a device index: 2
|
|
931
|
+
Device was selected: ['10.0.1.72', 9008, 'BedLamp']
|
|
932
|
+
BedLamp $ help
|
|
933
|
+
<the command list shown in "Get help" above>
|
|
934
|
+
BedLamp $ exit
|
|
935
|
+
Bye!
|
|
936
|
+
|
|
937
|
+
```
|
|
938
|
+
|
|
939
|
+
#### Project structure
|
|
940
|
+
|
|
941
|
+
Historical source-tree snapshot; see [the current runtime source](./micrOS/source)
|
|
942
|
+
and [architecture guide](./micrOS/ARCHITECTURE.md) for the maintained layout.
|
|
943
|
+
|
|
944
|
+
<details>
|
|
945
|
+
<summary><strong>Show historical project structure</strong></summary>
|
|
946
|
+
|
|
947
|
+
```
|
|
948
|
+
./micrOS/source
|
|
949
|
+
├── Common.py
|
|
950
|
+
├── Config.py
|
|
951
|
+
├── Debug.py
|
|
952
|
+
├── mespnow.py
|
|
953
|
+
├── Files.py
|
|
954
|
+
├── Hooks.py
|
|
955
|
+
├── InterConnect.py
|
|
956
|
+
├── Interrupts.py
|
|
957
|
+
├── Logger.py
|
|
958
|
+
├── Network.py
|
|
959
|
+
├── Notify.py
|
|
960
|
+
├── Scheduler.py
|
|
961
|
+
├── Server.py
|
|
962
|
+
├── Shell.py
|
|
963
|
+
├── Tasks.py
|
|
964
|
+
├── Time.py
|
|
965
|
+
├── Types.py
|
|
966
|
+
├── Web.py
|
|
967
|
+
├── main.py
|
|
968
|
+
├── micrOS.py
|
|
969
|
+
├── micrOSloader.py
|
|
970
|
+
├── reset.py
|
|
971
|
+
├── urequests.py
|
|
972
|
+
├── microIO.py
|
|
973
|
+
├── config
|
|
974
|
+
│ └── _git.keep
|
|
975
|
+
├── modules
|
|
976
|
+
│ ├── IO_esp32.py
|
|
977
|
+
│ ├── ...
|
|
978
|
+
│ ├── LM_ds18.py
|
|
979
|
+
│ ├── LM_esp32.py
|
|
980
|
+
│ ├── LM_espnow.py
|
|
981
|
+
│ ├── LM_gameOfLife.py
|
|
982
|
+
│ ├── LM_genIO.py
|
|
983
|
+
│ ├── LM_haptic.py
|
|
984
|
+
│ ├── LM_i2c.py
|
|
985
|
+
│ ├── LM_i2s_mic.py
|
|
986
|
+
│ ├── LM_keychain.py
|
|
987
|
+
│ ├── LM_ld2410.py
|
|
988
|
+
│ ├── LM_light_sensor.py
|
|
989
|
+
│ ├── ...
|
|
990
|
+
└── web
|
|
991
|
+
├── dashboard.html
|
|
992
|
+
├── index.html
|
|
993
|
+
├── ...
|
|
994
|
+
|
|
995
|
+
4 directories, 98 files
|
|
996
|
+
```
|
|
997
|
+
|
|
998
|
+
</details>
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
---
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
### Roadmap
|
|
1005
|
+
|
|
1006
|
+
Version **3.X.0-0** `micrOS-Waterbear`
|
|
1007
|
+
|
|
1008
|
+
```
|
|
1009
|
+
Core:
|
|
1010
|
+
- Low power mode (wake on event, hibernate command)?
|
|
1011
|
+
- Remote controller / Sensor on battery UseCases
|
|
1012
|
+
```
|
|
1013
|
+
|
|
1014
|
+
|
|
1015
|
+
Version **3.X+1.0-0** `micrOS-SecurePower`
|
|
1016
|
+
|
|
1017
|
+
```
|
|
1018
|
+
Core:
|
|
1019
|
+
- Async socket servers with SSL/TLS integration (with auth.)
|
|
1020
|
+
- ShellCli (with TLS) and InterCon adaptation (default port: 9008, new secure port 9009)
|
|
1021
|
+
- WebCli (https) and webUI adaptation
|
|
1022
|
+
|
|
1023
|
+
- Intercon-Wire (?)
|
|
1024
|
+
- Idea of wired message communication protocol same as Intercon-Shell/Intercon-ESPNow
|
|
1025
|
+
- Possible HW protocols: i2c / onewire / uart BUT it should support bidirectional message transfers
|
|
1026
|
+
- Goal: CoProcessor easy integration feature - Arduino env support
|
|
1027
|
+
|
|
1028
|
+
- Application deployment automation: /config/compose.json
|
|
1029
|
+
- enables application deployment:
|
|
1030
|
+
- configuration (node_config.json) handling - safe parameter injection (boothook and irqs)
|
|
1031
|
+
- [done] requirements.txt handling
|
|
1032
|
+
- Automatic behaviour in core system if file exists in STA mode
|
|
1033
|
+
```
|
|
1034
|
+
|
|
1035
|
+
<a id="release-note"></a>
|
|
1036
|
+
### Release history
|
|
1037
|
+
|
|
1038
|
+
[Development Metrics](toolkit/helper_scripts/analysis/timeline_visualization.pdf)
|
|
1039
|
+
|
|
1040
|
+
<details>
|
|
1041
|
+
<summary><strong>Show release history table</strong></summary>
|
|
1042
|
+
|
|
1043
|
+
| VERSION (TAG) | RELEASE INFO | MICROS CORE MEMORY USAGE | SUPPORTED DEVICE(S) | APP PROFILES | Load Modules | NOTE |
|
|
1044
|
+
| :----------: | :----------------: | :------------------------: | :-----------------: | :------------: | :------------:| -------------- |
|
|
1045
|
+
| **v0.1.0-0** | [release_Info-0.1.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_0.1.0-0_note.md)| **78,4%** 29 776 byte | esp8266 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_0.1.0-0.json)| Stable Core with applications - first release
|
|
1046
|
+
| **v0.4.0-0** | [release_Info-0.4.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_0.4.0-0_note_esp8266.md)| **81,0%** 30768 byte | esp8266 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_0.4.0-0.json)| micrOS multi device support with finalized core and so more. OTA update feature.
|
|
1047
|
+
| **v0.4.0-0** | [release_Info-0.4.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_0.4.0-0_note_esp32.md)| **47,1%** 52 416 byte | esp32 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_0.4.0-0.json)| *micrOS multi device support with finalized core and advanced task scheduler based on time, and and so more. OTA update feature.*
|
|
1048
|
+
| **v1.0.0-0** | [release_Info-1.0.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_1.0.0-0_note_esp32.md)| **47,9%** 53 280 byte | esp32 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_1.0.0-0.json)| Release of v1 micrOS, timer and event based irqs, cron task scheduling, realtime communication, multiple device support. OTA, etc.
|
|
1049
|
+
| **v1.2.2-0** | [release_Info-1.2.2-0](./micrOS/release_info/micrOS_ReleaseInfo/release_1.2.2-0_note_esp32.md)| **48,6%** 54 032 byte | esp32 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_1.2.2-0.json)| Public Release of v1 micrOS, timer and event based irqs, cron task scheduling, realtime communication, multiple device support. OTA update, thread from socket shell (beta) etc.
|
|
1050
|
+
| **v light-1.3.0-0** | - | - | **esp8266** | [lightweight branch](https://github.com/BxNxM/micrOS/tree/lightweight)| - |remove esp8266 due to memory limitation - BUT still supported with limited functionalities on **`lightweight`** branch. Hint: Change branch on github and download zip file, then start micrOSDevToolKit dashboard GUI
|
|
1051
|
+
| **v 1.5.0-1** | [release_Info-1.5.0-1](./micrOS/release_info/micrOS_ReleaseInfo/release_1.5.0-1_note_esp32.md) | **58,2%** 64 704 byte | esp32 (tinyPico) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/9d5dc0ffd34f85d05e1cb149cc8abe280fd02bd9/micrOS/client/sfuncman/sfuncman_1.5.0-1.json) | Advanced Timer IRQ based scheduling (cron & timirq), Geolocation based timing features, External IRQs with 4 channel (event filtering), finalized light controls, Device-Device comminucation support, etc.
|
|
1052
|
+
| **v 1.21.0-4** | [release_Info-1.21.0-4](./micrOS/release_info/micrOS_ReleaseInfo/release_1.21.0-4_note_esp32.md) | **57.3%** 63 728 byte | esp32 (tinyPico, esp32s2, esp32s3) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/c9a69814f32ab32d96c447c3e40e880df32bddd6/micrOS/client/sfuncman/sfuncman_1.21.0-4.json) | Full async core system with advanced task management and device to device communication, task scheduling and much more ... with more then 30 application/pheriphery support.
|
|
1053
|
+
| **v 2.0.0-0** | [release_Info-2.0.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_2.0.0-0_note_esp32.md) | **45.4%** 68.7 kb | esp32 (tinyPico, esp32s2, esp32s3) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](./micrOS/client/sfuncman/sfuncman_2.0.0-0.json) | Optimizations, WebCli with web frontends, Camera support. Micropython 1.21 async maxed out :D
|
|
1054
|
+
| **v 2.6.0-0** | [release_Info-2.6.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_2.6.0-0_note_esp32.md) | **48.3%** 72.6 kb | esp32 (tinyPico, esp32s2, esp32s3) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](./micrOS/client/sfuncman/sfuncman_2.6.0-0.json) | WebCli http server enhancements. New webapps: dashboard. Core system official interface finalization towards Load Modules: Common.py, Types.py (frontend generation), microIO.py (pinout handling).
|
|
1055
|
+
| **v 3.0.0-0** | [release_Info-3.0.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_3.0.0-0_note_esp32.md) | **66.0%** 95,5 kb | esp32 (tinyPico, esp32c6, esp32s3+PSRAM, etc.) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](./micrOS/client/sfuncman/sfuncman_3.0.0-0.json) | **Min. required RAM: 200kb**. Standalone micrOS with multi layer file system (resource separation) and advanced package management, etc. [more details](https://github.com/BxNxM/micrOS/discussions/55)
|
|
1056
|
+
|
|
1057
|
+
</details>
|
|
1058
|
+
|
|
1059
|
+
---
|
|
1060
|
+
|
|
1061
|
+
<details>
|
|
1062
|
+
<summary><strong>Architecture illustrations and walkthrough</strong></summary>
|
|
1063
|
+
|
|
1064
|
+
[](./micrOS/ARCHITECTURE.md)
|
|
1065
|
+
|
|
1066
|
+
For boot flow, feature activation, web authentication, and memory management,
|
|
1067
|
+
read the [architecture guide](./micrOS/ARCHITECTURE.md). The animation below
|
|
1068
|
+
illustrates system execution and message flow.
|
|
1069
|
+
|
|
1070
|
+

|
|
1071
|
+
|
|
1072
|
+
</details>
|
|
1073
|
+
|
|
1074
|
+
### Documentation map
|
|
1075
|
+
|
|
1076
|
+
- [Architecture](./micrOS/ARCHITECTURE.md)
|
|
1077
|
+
- [Load Module development](./micrOS/MODULE_GUIDE.md)
|
|
1078
|
+
- [Contributing](./CONTRIBUTING.md)
|
|
1079
|
+
- [MicroPython images](./micrOS/micropython/README.md)
|
|
1080
|
+
- [Gateway deployment](./env/docker/README.md)
|
|
1081
|
+
- [Advanced use reference](#advanced-use)
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
<a id="hints"></a>
|
|
1085
|
+
|
|
1086
|
+
### Operations and maintainer notes
|
|
1087
|
+
|
|
1088
|
+
- Save **screen** console buffer (**output**)
|
|
1089
|
+
Press `ctrl + A :` and type `hardcopy -h <filename>`
|
|
1090
|
+
|
|
1091
|
+
- Create a call graph: [PyCallGraph documentation](https://pycallgraph.readthedocs.io/en/master/) (legacy tool).
|
|
1092
|
+
|
|
1093
|
+
- Convert PNG/JPG-s to GIF: `convert -delay 60 ./*.png mygif.gif`
|
|
1094
|
+
|
|
1095
|
+
- **micrOS core and Load Module source code info**:
|
|
1096
|
+
|
|
1097
|
+
```bash
|
|
1098
|
+
devToolKit.py -lint
|
|
1099
|
+
# Or use the long option:
|
|
1100
|
+
devToolKit.py --linter
|
|
1101
|
+
```
|
|
1102
|
+
|
|
1103
|
+
#### micrOS gateway - Linux service template
|
|
1104
|
+
|
|
1105
|
+
> [BETA] service setup tool: `toolkit/helper_scripts/linux_service/make.bash`
|
|
1106
|
+
|
|
1107
|
+
- Prerequisite: install micrOS devtoolkit **PiP package**
|
|
1108
|
+
|
|
1109
|
+
- Create service: [micrOS gateway service](https://domoticproject.com/creating-raspberry-pi-service/)
|
|
1110
|
+
|
|
1111
|
+
- [1] Create `micros-gw.service`. Replace the credentials, working directory,
|
|
1112
|
+
user, and Python executable path for your installation. If you use a shell
|
|
1113
|
+
wrapper instead, set `ExecStart` to `/bin/bash` followed by that script's path.
|
|
1114
|
+
|
|
1115
|
+
```bash
|
|
1116
|
+
[Unit]
|
|
1117
|
+
Description=micrOS gateway REST API service
|
|
1118
|
+
After=network-online.target
|
|
1119
|
+
|
|
1120
|
+
[Service]
|
|
1121
|
+
Environment="API_AUTH=<usr_name>:<password>"
|
|
1122
|
+
ExecStart=/usr/bin/python3 -m devToolKit -gw
|
|
1123
|
+
WorkingDirectory=/home/gateway
|
|
1124
|
+
StandardOutput=inherit
|
|
1125
|
+
StandardError=inherit
|
|
1126
|
+
Restart=always
|
|
1127
|
+
User=<user>
|
|
1128
|
+
|
|
1129
|
+
[Install]
|
|
1130
|
+
WantedBy=multi-user.target
|
|
1131
|
+
```
|
|
1132
|
+
|
|
1133
|
+
- [2] copy service to `sudo cp micros-gw.service /lib/systemd/system/`
|
|
1134
|
+
|
|
1135
|
+
- [3] start service: `sudo systemctl start micros-gw.service`
|
|
1136
|
+
|
|
1137
|
+
- [4] enable service at bootup: `sudo systemctl enable micros-gw.service`
|
|
1138
|
+
|
|
1139
|
+
- [5] show service state: `sudo systemctl status micros-gw.service`
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
<a id="git"></a>
|
|
1143
|
+
|
|
1144
|
+
#### Git maintenance
|
|
1145
|
+
|
|
1146
|
+
- Add git tag: `git tag -a vX.Y.Z-K -m "tag message"`
|
|
1147
|
+
|
|
1148
|
+
- Publish tags: `git push origin --tags`
|
|
1149
|
+
|
|
1150
|
+
- Pretty git view: `git log --pretty=oneline`
|
|
1151
|
+
|
|
1152
|
+
- File change list: `git diff --name-only fbb4875609a3c0ee088b6a118ebf9f8a500be0fd HEAD | grep 'mpy-MicrOS'`
|
|
1153
|
+
|
|
1154
|
+
- GitHub embed youtube link: `https://github.com/itskeshav/Add-youtube-link-in-Readme.md`
|
|
1155
|
+
|
|
1156
|
+
- Git history visualization with Gource
|
|
1157
|
+
|
|
1158
|
+
```bash
|
|
1159
|
+
gource \
|
|
1160
|
+
--highlight-users \
|
|
1161
|
+
--hide filenames \
|
|
1162
|
+
--file-idle-time 0 \
|
|
1163
|
+
--max-files 0 \
|
|
1164
|
+
--seconds-per-day 0.01 \
|
|
1165
|
+
--auto-skip-seconds 1 \
|
|
1166
|
+
--title "micrOS Evolution" \
|
|
1167
|
+
--output-ppm-stream - \
|
|
1168
|
+
| ffmpeg -y -r 30 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 output.mp4
|
|
1169
|
+
```
|
|
1170
|
+
|
|
1171
|
+
```bash
|
|
1172
|
+
git push -u origin master
|
|
1173
|
+
```
|