micrOSDevToolKit 3.0.2__tar.gz → 3.0.4__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.0.2 → microsdevtoolkit-3.0.4}/MANIFEST.in +1 -3
- {microsdevtoolkit-3.0.2/micrOSDevToolKit.egg-info → microsdevtoolkit-3.0.4}/PKG-INFO +1 -1
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +3 -3
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Config.py +27 -33
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Scheduler.py +1 -1
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Shell.py +1 -1
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
- microsdevtoolkit-3.0.4/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
- microsdevtoolkit-3.0.4/micrOS/utests/test_config.py +152 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/utests/test_scheduler.py +1 -1
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOSDevToolKit.egg-info/SOURCES.txt +4 -2
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/setup.py +1 -1
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/Gateway.py +30 -11
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/MicrOSDevEnv.py +327 -61
- microsdevtoolkit-3.0.4/toolkit/gateway/gateway.css +422 -0
- microsdevtoolkit-3.0.4/toolkit/gateway/img_stream.html +128 -0
- microsdevtoolkit-3.0.4/toolkit/gateway/index.html +252 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/micrOSdashboard.py +2 -1
- microsdevtoolkit-3.0.4/toolkit/workspace/precompiled/Config.mpy +0 -0
- microsdevtoolkit-3.0.4/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Shell.mpy +0 -0
- microsdevtoolkit-3.0.2/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
- microsdevtoolkit-3.0.2/toolkit/img_stream.html +0 -126
- microsdevtoolkit-3.0.2/toolkit/index.html +0 -209
- microsdevtoolkit-3.0.2/toolkit/workspace/precompiled/Config.mpy +0 -0
- microsdevtoolkit-3.0.2/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/LICENSE +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/README.md +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/devToolKit.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/.DS_Store +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/media/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/media/dnd.png +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/media/logo.png +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/media/logo_mini.png +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/media/usb_port_icon.png +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/media/wifi_icon.png +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/board_commands.json +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/.DS_Store +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Auth.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Buffer.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Common.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Debug.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Espnow.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Files.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Hooks.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/InterConnect.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Interrupts.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Logger.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Network.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Notify.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Pacman.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Server.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Tasks.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Time.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Types.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/Web.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/config/_git.keep +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/helpers.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/main.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/micrOS.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/micrOSloader.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/microIO.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_esp32.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_esp32c3.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_esp32c5.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_esp32c6.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_esp32s2.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_esp32s3.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_m5stamp.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_qtpy.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_rp2.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/IO_tinypico.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_L298N.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_L9110_DCmotor.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_OV2640.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_VL53L0X.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_aht10.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_bme280.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_buzzer.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_cct.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_cluster.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_co2.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_dht11.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_dht22.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_dimmer.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_distance.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_ds18.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_fileserver.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_gameOfLife.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_genIO.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_haptic.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_i2s_mic.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_ld2410.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_light_sensor.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_mh_z19c.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_neoeffects.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_neopixel.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_oled.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_oled_ui.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_pacman.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_presence.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_qmi8658.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_rest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_rgb.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_rgbcct.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_roboarm.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_servo.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_sound_event.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_stepper.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_switch.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_system.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_tcs3472.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_telegram.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_tinyrgb.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_trackball.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_veml7700.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/modules/LM_web.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/urequests.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/dashboard.html +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/editor.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/filesui.html +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/filesui.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/index.html +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/uapi.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/udashboard.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/ustyle.css +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/web/uwidgets_pro.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/utests/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/utests/test_buffer.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/utests/test_time.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/utests/test_urequests.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/utests/test_urequests_real_api.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/utests/test_web_engine.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOSDevToolKit.egg-info/requires.txt +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/setup.cfg +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/DevEnvCompile.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/DevEnvOTA.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/DevEnvUSB.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/LM_to_compile.dat +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/WebRepl.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/BackupRestore.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/CCTDemo.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/CCTTest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/CamStream.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/CatGame.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/Dimmer.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/GetVersion.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/PresenceTest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/RGBTest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/RoboArm.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/SED_test.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/SensorsTest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/SystemTest.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/Template_app.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/_app_base.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/_capture.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/_micPlotting.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/dashboard_apps/uLightDemo.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/LocalMachine.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/MicrosFiles.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/Repository.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/SafeInput.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/SearchDevices.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/SerialDriverHandler.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/TerminalColors.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/macroScript.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/micrOSClient.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/micrOSClientHistory.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/lib/pip_package_installer.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/micrOSlint.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/.DS_Store +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/IO_darwin.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/aioespnow.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/camera.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/dht.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/dotstar.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/ds18x20.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/esp32.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/framebuf.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/machine.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/micropython.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/mip.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/neopixel.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/network.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/node_config.json +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/ntptime.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/onewire.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/sim_common.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/simgc.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/simulator.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/tinypico.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/uasyncio.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/uos.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/urandom.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/usocket.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/ussl.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/ustruct.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/utime.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/view01.jpg +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/view02.jpg +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/simulator_lib/webrepl.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/socketClient.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/user_data/.include +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/user_data/webhooks/generic.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/user_data/webhooks/macro.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/user_data/webhooks/template.macro +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/user_data/webhooks/template.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/__init__.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Auth.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Common.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Debug.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Espnow.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Files.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Logger.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Network.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Notify.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Server.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Time.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Types.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/Web.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/_mpy.version +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/config/_git.keep +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/helpers.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/main.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/microIO.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_VL53L0X.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_ld2410.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_mh_z19c.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_qmi8658.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_tcs3472.py +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/urequests.mpy +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/editor.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/filesui.html +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/filesui.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/index.html +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/uapi.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
|
@@ -8,10 +8,9 @@ graft env/driver_cp210x/
|
|
|
8
8
|
|
|
9
9
|
graft toolkit/simulator_lib
|
|
10
10
|
graft toolkit/workspace/precompiled
|
|
11
|
+
graft toolkit/gateway
|
|
11
12
|
recursive-include toolkit/user_data .include
|
|
12
13
|
recursive-include toolkit/user_data/node_config_archive/.include
|
|
13
|
-
include toolkit/index.html
|
|
14
|
-
include toolkit/img_stream.html
|
|
15
14
|
include toolkit/LM_to_compile.dat
|
|
16
15
|
graft toolkit/user_data/webhooks/
|
|
17
16
|
|
|
@@ -20,4 +19,3 @@ include media/logo_mini.png
|
|
|
20
19
|
include media/logo.png
|
|
21
20
|
include media/wifi_icon.png
|
|
22
21
|
include media/usb_port_icon.png
|
|
23
|
-
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
13
|
|
38
38
|
],
|
|
39
39
|
"Config.py": [
|
|
40
|
-
9.
|
|
40
|
+
9.62,
|
|
41
41
|
17
|
|
42
42
|
],
|
|
43
43
|
"Shell.py": [
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
},
|
|
324
324
|
"summary": {
|
|
325
325
|
"core": [
|
|
326
|
-
|
|
326
|
+
5303,
|
|
327
327
|
27
|
|
328
328
|
],
|
|
329
329
|
"load": [
|
|
@@ -340,6 +340,6 @@
|
|
|
340
340
|
],
|
|
341
341
|
"core_score": 9.26,
|
|
342
342
|
"load_score": 8.44,
|
|
343
|
-
"version": "3.0.
|
|
343
|
+
"version": "3.0.4-0"
|
|
344
344
|
}
|
|
345
345
|
}
|
|
@@ -14,7 +14,6 @@ Designed by Marcell Ban aka BxNxM
|
|
|
14
14
|
#################################################################
|
|
15
15
|
from re import search
|
|
16
16
|
from json import load, dump
|
|
17
|
-
from utime import sleep
|
|
18
17
|
from Debug import DebugCfg, console_write, syslog
|
|
19
18
|
from Files import OSPath, path_join, is_file
|
|
20
19
|
from uos import remove, rename
|
|
@@ -142,7 +141,7 @@ class Config:
|
|
|
142
141
|
@classmethod
|
|
143
142
|
def _inject_default_conf(cls):
|
|
144
143
|
# Load config and template
|
|
145
|
-
liveconf = cls.read_cfg_file(
|
|
144
|
+
liveconf = cls.read_cfg_file()
|
|
146
145
|
_persist = False
|
|
147
146
|
# Remove obsolete keys from conf
|
|
148
147
|
try:
|
|
@@ -166,43 +165,38 @@ class Config:
|
|
|
166
165
|
break
|
|
167
166
|
if _persist:
|
|
168
167
|
# Only persist when migration cleanup removed keys or defaults are missing from the file.
|
|
169
|
-
cls.write_cfg_file()
|
|
170
|
-
console_write("[CONF] Save conf
|
|
168
|
+
state = "successful" if cls.write_cfg_file() else "failed"
|
|
169
|
+
console_write(f"[CONF] Save conf {state}")
|
|
171
170
|
except Exception as e:
|
|
172
171
|
syslog(f"[ERR] Save (__inject) conf failed: {e}")
|
|
173
172
|
finally:
|
|
174
173
|
del liveconf
|
|
175
174
|
|
|
176
175
|
@staticmethod
|
|
177
|
-
def read_cfg_file(
|
|
178
|
-
|
|
179
|
-
|
|
176
|
+
def read_cfg_file():
|
|
177
|
+
if not is_file(Config.CONFIG_PATH):
|
|
178
|
+
return {}
|
|
179
|
+
try:
|
|
180
|
+
with open(Config.CONFIG_PATH, 'r') as f:
|
|
181
|
+
return load(f)
|
|
182
|
+
except Exception as e:
|
|
183
|
+
syslog(f'[ERR] read_cfg_file error: {e}')
|
|
180
184
|
try:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
# Write out initial config, if no config exists.
|
|
187
|
-
if nosafe:
|
|
188
|
-
break
|
|
189
|
-
sleep(0.2)
|
|
190
|
-
syslog(f'[ERR] read_cfg_file error: {e}')
|
|
191
|
-
# Return config cache
|
|
192
|
-
return conf
|
|
185
|
+
rename(Config.CONFIG_PATH, f"{Config.CONFIG_PATH}.bad")
|
|
186
|
+
console_write(f"[CONF] Corrupted config moved: {Config.CONFIG_PATH}.bad")
|
|
187
|
+
except Exception as e2:
|
|
188
|
+
syslog(f'[ERR] read_cfg_file quarantine failed: {e2}')
|
|
189
|
+
return {}
|
|
193
190
|
|
|
194
191
|
@staticmethod
|
|
195
192
|
def write_cfg_file():
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
syslog(f'[ERR] write_cfg_file {Config.CONFIG_PATH} (json): {e}')
|
|
204
|
-
sleep(0.2)
|
|
205
|
-
return True
|
|
193
|
+
try:
|
|
194
|
+
with open(Config.CONFIG_PATH, 'w') as f:
|
|
195
|
+
dump({key: value for key, value in Config.INSTANCE.items()}, f)
|
|
196
|
+
return True
|
|
197
|
+
except Exception as e:
|
|
198
|
+
syslog(f'[ERR] write_cfg_file {Config.CONFIG_PATH}: {e}')
|
|
199
|
+
return False
|
|
206
200
|
|
|
207
201
|
@staticmethod
|
|
208
202
|
def type_handler(key, value):
|
|
@@ -251,16 +245,16 @@ class Config:
|
|
|
251
245
|
def validate_pwd(password):
|
|
252
246
|
"""
|
|
253
247
|
Validate appwd parameter
|
|
254
|
-
- webrepl password
|
|
248
|
+
- webrepl password (max 9 char)
|
|
255
249
|
- micrOS auth password (Shell/WebCli)
|
|
256
|
-
- wifi access point password
|
|
250
|
+
- wifi access point password (WPA2-PSK)
|
|
257
251
|
"""
|
|
258
252
|
# Check password rules
|
|
259
|
-
if
|
|
253
|
+
if 8 <= len(password) <= 9:
|
|
260
254
|
if search(r"[A-Z]", password) and search(r"[a-z]", password):
|
|
261
255
|
if search(r"\d", password):
|
|
262
256
|
return True, ''
|
|
263
|
-
return False, 'Password must include [0-9] both [a-z][A-Z] and length between
|
|
257
|
+
return False, 'Password must include [0-9] both [a-z][A-Z] and length between 8-9 char.'
|
|
264
258
|
|
|
265
259
|
|
|
266
260
|
#################################################################
|
|
@@ -43,7 +43,7 @@ def __cron_task_cache_manager(now_in_sec, sec_tolerant):
|
|
|
43
43
|
tasktime_in_sec = int(str(taskid.split('|')[0]).split(':')[1])
|
|
44
44
|
sec_diff = tasktime_in_sec - (now_in_sec - sec_tolerant)
|
|
45
45
|
# Remove outdated cache registration
|
|
46
|
-
if sec_diff < 0 or sec_diff >
|
|
46
|
+
if sec_diff < 0 or sec_diff > sec_tolerant * 2:
|
|
47
47
|
LAST_CRON_TASKS.remove(LAST_CRON_TASKS[index])
|
|
48
48
|
|
|
49
49
|
|
{microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Buffer.cpython-312.pyc
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
{microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Time.cpython-312.pyc
RENAMED
|
Binary file
|
{microsdevtoolkit-3.0.2 → microsdevtoolkit-3.0.4}/micrOS/source/__pycache__/Web.cpython-312.pyc
RENAMED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import importlib.util
|
|
2
|
+
import json
|
|
3
|
+
import sys
|
|
4
|
+
import tempfile
|
|
5
|
+
import types
|
|
6
|
+
import unittest
|
|
7
|
+
from itertools import count
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from unittest import mock
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def setUpModule():
|
|
13
|
+
print(f"== RUN {Path(__file__).name} ==")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
_LOAD_ID = count()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class _ConfigStubEnv:
|
|
20
|
+
def __init__(self, root: Path):
|
|
21
|
+
self.root = root
|
|
22
|
+
self.config_dir = root / "config"
|
|
23
|
+
self.logs = []
|
|
24
|
+
self.console = []
|
|
25
|
+
self._saved = {}
|
|
26
|
+
|
|
27
|
+
def _resolve(self, path):
|
|
28
|
+
path = Path(path)
|
|
29
|
+
return path if path.is_absolute() else self.root / path
|
|
30
|
+
|
|
31
|
+
def install(self):
|
|
32
|
+
for name in ("Debug", "Files", "uos", "microIO"):
|
|
33
|
+
self._saved[name] = sys.modules.get(name)
|
|
34
|
+
|
|
35
|
+
env = self
|
|
36
|
+
|
|
37
|
+
debug_mod = types.ModuleType("Debug")
|
|
38
|
+
|
|
39
|
+
class DebugCfg:
|
|
40
|
+
DEBUG = True
|
|
41
|
+
init_calls = 0
|
|
42
|
+
|
|
43
|
+
@staticmethod
|
|
44
|
+
def init_pled():
|
|
45
|
+
DebugCfg.init_calls += 1
|
|
46
|
+
|
|
47
|
+
debug_mod.DebugCfg = DebugCfg
|
|
48
|
+
debug_mod.console_write = lambda msg, *_a, **_k: env.console.append(str(msg))
|
|
49
|
+
debug_mod.syslog = lambda msg, *_a, **_k: env.logs.append(str(msg))
|
|
50
|
+
sys.modules["Debug"] = debug_mod
|
|
51
|
+
|
|
52
|
+
files_mod = types.ModuleType("Files")
|
|
53
|
+
|
|
54
|
+
class OSPath:
|
|
55
|
+
CONFIG = str(env.config_dir)
|
|
56
|
+
|
|
57
|
+
def path_join(*parts):
|
|
58
|
+
path = "/".join(str(part).strip("/") for part in parts if part)
|
|
59
|
+
if parts and str(parts[0]).startswith("/"):
|
|
60
|
+
path = path if path.startswith("/") else "/" + path
|
|
61
|
+
return path
|
|
62
|
+
|
|
63
|
+
files_mod.OSPath = OSPath
|
|
64
|
+
files_mod.path_join = path_join
|
|
65
|
+
files_mod.is_file = lambda path: env._resolve(path).is_file()
|
|
66
|
+
sys.modules["Files"] = files_mod
|
|
67
|
+
|
|
68
|
+
uos_mod = types.ModuleType("uos")
|
|
69
|
+
uos_mod.remove = lambda path: env._resolve(path).unlink()
|
|
70
|
+
uos_mod.rename = lambda src, dst: env._resolve(src).rename(env._resolve(dst))
|
|
71
|
+
sys.modules["uos"] = uos_mod
|
|
72
|
+
|
|
73
|
+
microio_mod = types.ModuleType("microIO")
|
|
74
|
+
microio_mod.set_pinmap = None
|
|
75
|
+
sys.modules["microIO"] = microio_mod
|
|
76
|
+
|
|
77
|
+
def restore(self):
|
|
78
|
+
for name, module in self._saved.items():
|
|
79
|
+
if module is None:
|
|
80
|
+
sys.modules.pop(name, None)
|
|
81
|
+
else:
|
|
82
|
+
sys.modules[name] = module
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def _load_config_module(raw_config=None):
|
|
86
|
+
tempdir = tempfile.TemporaryDirectory()
|
|
87
|
+
root = Path(tempdir.name)
|
|
88
|
+
config_dir = root / "config"
|
|
89
|
+
config_dir.mkdir(parents=True, exist_ok=True)
|
|
90
|
+
|
|
91
|
+
config_path = config_dir / "node_config.json"
|
|
92
|
+
if raw_config is not None:
|
|
93
|
+
config_path.write_text(raw_config, encoding="utf-8")
|
|
94
|
+
|
|
95
|
+
env = _ConfigStubEnv(root)
|
|
96
|
+
env.install()
|
|
97
|
+
try:
|
|
98
|
+
here = Path(__file__).resolve()
|
|
99
|
+
config_py = (here.parent.parent / "source" / "Config.py").resolve()
|
|
100
|
+
module_name = f"micros_config_under_test_{next(_LOAD_ID)}"
|
|
101
|
+
spec = importlib.util.spec_from_file_location(module_name, str(config_py))
|
|
102
|
+
mod = importlib.util.module_from_spec(spec)
|
|
103
|
+
sys.modules[module_name] = mod
|
|
104
|
+
spec.loader.exec_module(mod)
|
|
105
|
+
return mod, env, tempdir, config_path
|
|
106
|
+
finally:
|
|
107
|
+
env.restore()
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class TestConfig(unittest.TestCase):
|
|
111
|
+
def test_init_bootstraps_missing_config(self):
|
|
112
|
+
mod, env, tempdir, config_path = _load_config_module()
|
|
113
|
+
self.addCleanup(tempdir.cleanup)
|
|
114
|
+
|
|
115
|
+
self.assertTrue(config_path.is_file())
|
|
116
|
+
self.assertEqual(mod.cfgget("devfid"), "node01")
|
|
117
|
+
self.assertFalse(any("read_cfg_file error" in msg for msg in env.logs))
|
|
118
|
+
|
|
119
|
+
persisted = json.loads(config_path.read_text(encoding="utf-8"))
|
|
120
|
+
self.assertEqual(persisted["devfid"], "node01")
|
|
121
|
+
self.assertEqual(persisted["appwd"], "ADmin123")
|
|
122
|
+
|
|
123
|
+
def test_init_quarantines_corrupted_config_and_regenerates_defaults(self):
|
|
124
|
+
raw_corrupt = '{"devfid": "broken"'
|
|
125
|
+
mod, env, tempdir, config_path = _load_config_module(raw_config=raw_corrupt)
|
|
126
|
+
self.addCleanup(tempdir.cleanup)
|
|
127
|
+
|
|
128
|
+
bad_path = config_path.with_name("node_config.json.bad")
|
|
129
|
+
self.assertTrue(bad_path.is_file())
|
|
130
|
+
self.assertEqual(bad_path.read_text(encoding="utf-8"), raw_corrupt)
|
|
131
|
+
self.assertEqual(mod.cfgget("devfid"), "node01")
|
|
132
|
+
self.assertTrue(any("read_cfg_file error" in msg for msg in env.logs))
|
|
133
|
+
|
|
134
|
+
persisted = json.loads(config_path.read_text(encoding="utf-8"))
|
|
135
|
+
self.assertEqual(persisted["devfid"], "node01")
|
|
136
|
+
|
|
137
|
+
def test_cfgput_keeps_runtime_value_and_logs_when_write_fails(self):
|
|
138
|
+
mod, env, tempdir, config_path = _load_config_module(raw_config='{"devfid": "orig"}')
|
|
139
|
+
self.addCleanup(tempdir.cleanup)
|
|
140
|
+
|
|
141
|
+
self.assertEqual(mod.cfgget("devfid"), "orig")
|
|
142
|
+
with mock.patch("builtins.open", side_effect=OSError("disk full")):
|
|
143
|
+
self.assertTrue(mod.cfgput("devfid", "updated"))
|
|
144
|
+
self.assertEqual(mod.cfgget("devfid"), "updated")
|
|
145
|
+
self.assertTrue(any("write_cfg_file" in msg for msg in env.logs))
|
|
146
|
+
|
|
147
|
+
persisted = json.loads(config_path.read_text(encoding="utf-8"))
|
|
148
|
+
self.assertEqual(persisted["devfid"], "orig")
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
if __name__ == "__main__":
|
|
152
|
+
unittest.main(verbosity=2)
|
|
@@ -62,7 +62,7 @@ RUN_DAYS = 365
|
|
|
62
62
|
# - scheduler sampling/tolerance window (deltasec)
|
|
63
63
|
# - execution period (how frequently scheduler() is called)
|
|
64
64
|
# - virtual time tick step
|
|
65
|
-
EXEC_PERIOD_SEC =
|
|
65
|
+
EXEC_PERIOD_SEC = 30 # default 30 seconds
|
|
66
66
|
|
|
67
67
|
# Provide sunrise/sunset times for tag resolution (Sun.TIME)
|
|
68
68
|
SUN_TIME = {"sunrise": (6, 0, 0), "sunset": (18, 0, 0)}
|
|
@@ -160,6 +160,7 @@ micrOS/source/web/uwidgets.js
|
|
|
160
160
|
micrOS/source/web/uwidgets_pro.js
|
|
161
161
|
micrOS/utests/__init__.py
|
|
162
162
|
micrOS/utests/test_buffer.py
|
|
163
|
+
micrOS/utests/test_config.py
|
|
163
164
|
micrOS/utests/test_scheduler.py
|
|
164
165
|
micrOS/utests/test_time.py
|
|
165
166
|
micrOS/utests/test_urequests.py
|
|
@@ -178,8 +179,6 @@ toolkit/LM_to_compile.dat
|
|
|
178
179
|
toolkit/MicrOSDevEnv.py
|
|
179
180
|
toolkit/WebRepl.py
|
|
180
181
|
toolkit/__init__.py
|
|
181
|
-
toolkit/img_stream.html
|
|
182
|
-
toolkit/index.html
|
|
183
182
|
toolkit/micrOSdashboard.py
|
|
184
183
|
toolkit/micrOSlint.py
|
|
185
184
|
toolkit/socketClient.py
|
|
@@ -208,6 +207,9 @@ toolkit/dashboard_apps/_gyro_visualizer.py
|
|
|
208
207
|
toolkit/dashboard_apps/_micPlotting.py
|
|
209
208
|
toolkit/dashboard_apps/_presencePlotting.py
|
|
210
209
|
toolkit/dashboard_apps/uLightDemo.py
|
|
210
|
+
toolkit/gateway/gateway.css
|
|
211
|
+
toolkit/gateway/img_stream.html
|
|
212
|
+
toolkit/gateway/index.html
|
|
211
213
|
toolkit/lib/LocalMachine.py
|
|
212
214
|
toolkit/lib/MicrosFiles.py
|
|
213
215
|
toolkit/lib/Repository.py
|
|
@@ -17,7 +17,7 @@ dependencies = ['adafruit-ampy', 'mpremote', 'esptool', 'ipaddress', 'netaddr',
|
|
|
17
17
|
|
|
18
18
|
setuptools.setup(
|
|
19
19
|
name='micrOSDevToolKit',
|
|
20
|
-
version='3.0.
|
|
20
|
+
version='3.0.4',
|
|
21
21
|
author='Marcell Ban',
|
|
22
22
|
author_email='miros.framework@gmail.com',
|
|
23
23
|
description='Development and deployment environment for micrOS, the diy micropython automation OS (IoT)',
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
# using flask_restful
|
|
4
4
|
import json
|
|
5
5
|
import os
|
|
6
|
+
import ipaddress
|
|
6
7
|
from flask import Flask, jsonify, Response, make_response, request, send_file, abort
|
|
7
8
|
from flask_restful import Resource, Api
|
|
8
9
|
import threading
|
|
9
10
|
import time
|
|
10
11
|
import concurrent.futures
|
|
11
12
|
MYPATH = os.path.dirname(__file__)
|
|
13
|
+
WEBUI_PATH = os.path.join(MYPATH, 'gateway')
|
|
12
14
|
import requests
|
|
13
15
|
from io import BytesIO
|
|
14
16
|
from socket import gethostbyname
|
|
@@ -35,6 +37,11 @@ API_URL_CACHE = ""
|
|
|
35
37
|
# creating the flask app
|
|
36
38
|
app = Flask(__name__)
|
|
37
39
|
|
|
40
|
+
|
|
41
|
+
@app.route('/gateway.css')
|
|
42
|
+
def gateway_css():
|
|
43
|
+
return send_file(os.path.join(WEBUI_PATH, 'gateway.css'), mimetype='text/css')
|
|
44
|
+
|
|
38
45
|
# --------------------- AUTH BEGIN ------------------------- #
|
|
39
46
|
ADDRESS_CACHE = {}
|
|
40
47
|
try:
|
|
@@ -52,6 +59,8 @@ except Exception as e:
|
|
|
52
59
|
print("[GW-AUTH][DISABLED] API_AUTH ENV VAR NOT FOUND.")
|
|
53
60
|
__rest_usr_name, __rest_usr_pwd, ALLOWED_COUNTRY = None, None, []
|
|
54
61
|
|
|
62
|
+
if (__rest_usr_name and __rest_usr_pwd) and BasicAuth is None:
|
|
63
|
+
raise RuntimeError("API_AUTH is configured, but flask_basicauth is not available")
|
|
55
64
|
|
|
56
65
|
if BasicAuth is not None and (__rest_usr_name and __rest_usr_pwd):
|
|
57
66
|
basic_auth = BasicAuth(app)
|
|
@@ -62,15 +71,16 @@ if BasicAuth is not None and (__rest_usr_name and __rest_usr_pwd):
|
|
|
62
71
|
#app.config['BASIC_AUTH_PASSWORD'] = f'{__rest_usr_pwd}{datetime.now().day}' # month-day (21)
|
|
63
72
|
|
|
64
73
|
def _is_local_network():
|
|
65
|
-
# Define local network IP prefixes (adjust as needed)
|
|
66
|
-
local_network_prefixes = ['192.168.', '10.0.', '172.']
|
|
67
74
|
#local_network_prefixes = []
|
|
68
75
|
remote_ip = request.remote_addr
|
|
69
76
|
print(f"\t[GW-AUTH] Check incoming IP address: {remote_ip}")
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
try:
|
|
78
|
+
remote_addr = ipaddress.ip_address(remote_ip)
|
|
79
|
+
if remote_addr.is_private or remote_addr.is_loopback:
|
|
80
|
+
print(f"\t\t[GW-AUTH] SKIP AUTH - LOCAL NETWORK: {remote_ip}")
|
|
73
81
|
return True, remote_ip
|
|
82
|
+
except ValueError:
|
|
83
|
+
print(f"\t\t[GW-AUTH] INVALID REMOTE IP: {remote_ip}")
|
|
74
84
|
return False, remote_ip
|
|
75
85
|
|
|
76
86
|
|
|
@@ -142,7 +152,7 @@ class Hello(Resource):
|
|
|
142
152
|
# is a GET request for this resource
|
|
143
153
|
|
|
144
154
|
def get(self):
|
|
145
|
-
index_html = os.path.join(
|
|
155
|
+
index_html = os.path.join(WEBUI_PATH, 'index.html')
|
|
146
156
|
try:
|
|
147
157
|
with open(index_html, 'r') as file:
|
|
148
158
|
html = file.read()
|
|
@@ -185,6 +195,8 @@ class SendCmd(Resource):
|
|
|
185
195
|
cmd_str = ' '.join(cmd_list)
|
|
186
196
|
|
|
187
197
|
ip, port, fid, uid = socketClient.ConnectionData.select_device(device_tag=device)
|
|
198
|
+
if uid is None:
|
|
199
|
+
abort(404, description=f"Unknown device: {device}")
|
|
188
200
|
device_detailed = (uid, ip, port, fid)
|
|
189
201
|
|
|
190
202
|
print("[Gateway] Raw command params: --dev {} {}".format(uid, cmd_str))
|
|
@@ -322,7 +334,7 @@ class DeviceStatus(Resource):
|
|
|
322
334
|
|
|
323
335
|
# Clean Alarms
|
|
324
336
|
clean_alarms = DeviceStatus.CLEAN_MICROS_ALARMS
|
|
325
|
-
log_data = alarms.get('log', None)
|
|
337
|
+
log_data = alarms.get('log', None) if isinstance(alarms, dict) else None
|
|
326
338
|
if clean_alarms and log_data and len(log_data) > 0:
|
|
327
339
|
_, _ = socketClient.run(['--dev', fuid.strip(), 'system alarms True'])
|
|
328
340
|
|
|
@@ -341,7 +353,7 @@ class DeviceStatus(Resource):
|
|
|
341
353
|
|
|
342
354
|
# Get cpu temp
|
|
343
355
|
_status4, cpu_temp = socketClient.run(['--dev', fuid.strip(), 'esp32 temp'])
|
|
344
|
-
if 'temp' in cpu_temp:
|
|
356
|
+
if isinstance(cpu_temp, str) and 'temp' in cpu_temp:
|
|
345
357
|
try:
|
|
346
358
|
cpu_temp = cpu_temp.split(":")[1].strip()
|
|
347
359
|
except:
|
|
@@ -352,6 +364,7 @@ class DeviceStatus(Resource):
|
|
|
352
364
|
output_dev_struct = {}
|
|
353
365
|
online_dev_cnt = 0
|
|
354
366
|
device_struct = socketClient.ConnectionData.list_devices()
|
|
367
|
+
real_device_count = max(1, len(device_struct) - 2)
|
|
355
368
|
dev_query_list = []
|
|
356
369
|
|
|
357
370
|
# Start parallel status queries
|
|
@@ -362,7 +375,11 @@ class DeviceStatus(Resource):
|
|
|
362
375
|
|
|
363
376
|
# Collect results from queries
|
|
364
377
|
for query in dev_query_list:
|
|
365
|
-
|
|
378
|
+
try:
|
|
379
|
+
node_info = query.result()
|
|
380
|
+
except Exception as e:
|
|
381
|
+
print(f"Node status worker error: {e}")
|
|
382
|
+
continue
|
|
366
383
|
|
|
367
384
|
if node_info is None:
|
|
368
385
|
continue
|
|
@@ -372,7 +389,7 @@ class DeviceStatus(Resource):
|
|
|
372
389
|
# Status calculation
|
|
373
390
|
if status:
|
|
374
391
|
online_dev_cnt += 1
|
|
375
|
-
DeviceStatus.DEVS_AVAIL = round((online_dev_cnt /
|
|
392
|
+
DeviceStatus.DEVS_AVAIL = round((online_dev_cnt / real_device_count) * 100, 1)
|
|
376
393
|
status = 'HEALTHY'
|
|
377
394
|
else:
|
|
378
395
|
status = 'UNHEALTHY'
|
|
@@ -574,7 +591,7 @@ class ImgStream(Resource):
|
|
|
574
591
|
# is a GET request for this resource
|
|
575
592
|
|
|
576
593
|
def get(self):
|
|
577
|
-
index_html = os.path.join(
|
|
594
|
+
index_html = os.path.join(WEBUI_PATH, 'img_stream.html')
|
|
578
595
|
try:
|
|
579
596
|
with open(index_html, 'r') as file:
|
|
580
597
|
html = file.read()
|
|
@@ -620,6 +637,8 @@ api.add_resource(WebHook, '/webhooks', '/webhooks/<string:payload>', '/webhooks/
|
|
|
620
637
|
|
|
621
638
|
|
|
622
639
|
def gateway(debug=True):
|
|
640
|
+
if (__rest_usr_name and __rest_usr_pwd) and BasicAuth is None:
|
|
641
|
+
raise RuntimeError("API_AUTH is set but flask_basicauth is unavailable. Refusing to start unsecured gateway.")
|
|
623
642
|
global API_URL_CACHE
|
|
624
643
|
API_URL_CACHE = f"http://{my_local_ip()}:5005"
|
|
625
644
|
print("\n############### START MICROS GATEWAY ###############")
|