micrOSDevToolKit 2.1.5__py3-none-any.whl → 2.26.1__py3-none-any.whl
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.
- env/driver_cp210x/.DS_Store +0 -0
- env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +17 -1
- micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +191 -151
- micrOS/source/Auth.py +37 -0
- micrOS/source/Common.py +376 -102
- micrOS/source/Config.py +55 -25
- micrOS/source/Debug.py +54 -193
- micrOS/source/Espnow.py +404 -0
- micrOS/source/Files.py +207 -0
- micrOS/source/Hooks.py +88 -16
- micrOS/source/InterConnect.py +130 -46
- micrOS/source/Interrupts.py +8 -8
- micrOS/source/Logger.py +131 -0
- micrOS/source/Network.py +41 -21
- micrOS/source/Notify.py +74 -198
- micrOS/source/Pacman.py +326 -0
- micrOS/source/Scheduler.py +18 -55
- micrOS/source/Server.py +84 -217
- micrOS/source/Shell.py +103 -93
- micrOS/source/Tasks.py +239 -173
- micrOS/source/Time.py +21 -22
- micrOS/source/Types.py +89 -54
- micrOS/source/Web.py +485 -0
- micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- micrOS/source/helpers.py +132 -0
- micrOS/source/micrOS.py +25 -21
- micrOS/source/micrOSloader.py +14 -23
- micrOS/source/microIO.py +94 -57
- toolkit/simulator_lib/LP_darwin.py → micrOS/source/modules/IO_esp32.py +22 -11
- micrOS/source/{IO_esp32c3.py → modules/IO_esp32c3.py} +6 -1
- micrOS/source/modules/IO_esp32c6.py +38 -0
- micrOS/source/{IO_esp32s2.py → modules/IO_esp32s2.py} +6 -1
- micrOS/source/{IO_esp32s3.py → modules/IO_esp32s3.py} +43 -2
- micrOS/source/modules/IO_m5stamp.py +86 -0
- micrOS/source/{IO_qtpy.py → modules/IO_qtpy.py} +28 -18
- micrOS/source/{IO_tinypico.py → modules/IO_tinypico.py} +48 -3
- micrOS/source/modules/LM_L298N.py +161 -0
- {toolkit/workspace/precompiled → micrOS/source/modules}/LM_L9110_DCmotor.py +4 -4
- micrOS/source/{LM_OV2640.py → modules/LM_OV2640.py} +53 -42
- micrOS/source/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
- micrOS/source/{LM_aht10.py → modules/LM_aht10.py} +12 -4
- micrOS/source/{LM_bme280.py → modules/LM_bme280.py} +13 -25
- micrOS/source/{LM_buzzer.py → modules/LM_buzzer.py} +42 -40
- micrOS/source/{LM_cct.py → modules/LM_cct.py} +22 -27
- micrOS/source/modules/LM_cluster.py +255 -0
- micrOS/source/{LM_co2.py → modules/LM_co2.py} +13 -6
- micrOS/source/{LM_dht11.py → modules/LM_dht11.py} +13 -29
- micrOS/source/{LM_dht22.py → modules/LM_dht22.py} +13 -28
- micrOS/source/{LM_dimmer.py → modules/LM_dimmer.py} +19 -16
- micrOS/source/modules/LM_distance.py +135 -0
- micrOS/source/{LM_ds18.py → modules/LM_ds18.py} +12 -4
- micrOS/source/{LM_esp32.py → modules/LM_esp32.py} +16 -4
- micrOS/source/modules/LM_espnow.py +53 -0
- micrOS/source/modules/LM_fileserver.py +265 -0
- micrOS/source/{LM_gameOfLife.py → modules/LM_gameOfLife.py} +5 -5
- micrOS/source/{LM_genIO.py → modules/LM_genIO.py} +49 -35
- micrOS/source/modules/LM_haptic.py +111 -0
- micrOS/source/modules/LM_i2c.py +61 -0
- micrOS/source/{LM_i2s_mic.py → modules/LM_i2s_mic.py} +20 -23
- micrOS/source/{LM_ld2410.py → modules/LM_ld2410.py} +3 -3
- micrOS/source/{LM_light_sensor.py → modules/LM_light_sensor.py} +22 -26
- micrOS/source/modules/LM_mh_z19c.py +198 -0
- micrOS/source/modules/LM_neoeffects.py +284 -0
- micrOS/source/{LM_neopixel.py → modules/LM_neopixel.py} +26 -31
- micrOS/source/{LM_oled.py → modules/LM_oled.py} +28 -20
- micrOS/source/{LM_oled_sh1106.py → modules/LM_oled_sh1106.py} +28 -24
- micrOS/source/{LM_oled_ui.py → modules/LM_oled_ui.py} +132 -174
- micrOS/source/modules/LM_pacman.py +320 -0
- micrOS/source/{LM_presence.py → modules/LM_presence.py} +24 -36
- micrOS/source/modules/LM_qmi8658.py +204 -0
- micrOS/source/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
- micrOS/source/modules/LM_rest.py +81 -0
- micrOS/source/{LM_rgb.py → modules/LM_rgb.py} +25 -34
- micrOS/source/{LM_rgbcct.py → modules/LM_rgbcct.py} +5 -5
- micrOS/source/{LM_roboarm.py → modules/LM_roboarm.py} +37 -45
- micrOS/source/modules/LM_robustness.py +137 -0
- micrOS/source/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
- micrOS/source/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
- micrOS/source/{LM_servo.py → modules/LM_servo.py} +4 -4
- micrOS/source/modules/LM_sound_event.py +751 -0
- micrOS/source/{LM_stepper.py → modules/LM_stepper.py} +8 -8
- micrOS/source/{LM_switch.py → modules/LM_switch.py} +21 -18
- micrOS/source/{LM_system.py → modules/LM_system.py} +96 -59
- micrOS/source/modules/LM_tcs3472.py +187 -0
- micrOS/source/modules/LM_telegram.py +388 -0
- micrOS/source/modules/LM_trackball.py +287 -0
- micrOS/source/modules/LM_veml7700.py +159 -0
- micrOS/source/modules/LM_web.py +38 -0
- micrOS/source/urequests.py +204 -91
- {toolkit/workspace/precompiled → micrOS/source/web}/dashboard.html +9 -4
- micrOS/source/web/editor.js +440 -0
- micrOS/source/web/filesui.html +178 -0
- micrOS/source/web/filesui.js +338 -0
- micrOS/source/{index.html → web/index.html} +44 -2
- micrOS/source/web/uapi.js +103 -0
- micrOS/source/web/udashboard.js +129 -0
- micrOS/source/web/ustyle.css +55 -0
- micrOS/source/web/uwidgets.js +172 -0
- micrOS/source/web/uwidgets_pro.js +99 -0
- micrOS/utests/__init__.py +0 -0
- micrOS/utests/test_scheduler.py +435 -0
- {micrOSDevToolKit-2.1.5.data → microsdevtoolkit-2.26.1.data}/scripts/devToolKit.py +47 -4
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/METADATA +392 -279
- microsdevtoolkit-2.26.1.dist-info/RECORD +396 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/WHEEL +1 -1
- toolkit/DevEnvCompile.py +63 -33
- toolkit/DevEnvOTA.py +72 -22
- toolkit/DevEnvUSB.py +147 -77
- toolkit/Gateway.py +9 -9
- toolkit/LM_to_compile.dat +12 -4
- toolkit/MicrOSDevEnv.py +129 -51
- toolkit/WebRepl.py +73 -0
- toolkit/dashboard_apps/BackupRestore.py +171 -0
- toolkit/dashboard_apps/CCTDemo.py +12 -17
- toolkit/dashboard_apps/CCTTest.py +20 -24
- toolkit/dashboard_apps/CamStream.py +2 -6
- toolkit/dashboard_apps/CatGame.py +14 -16
- toolkit/dashboard_apps/Dimmer.py +11 -21
- toolkit/dashboard_apps/GetVersion.py +11 -19
- toolkit/dashboard_apps/MicrophoneTest.py +2 -7
- toolkit/dashboard_apps/NeoEffectsDemo.py +22 -35
- toolkit/dashboard_apps/NeopixelTest.py +20 -25
- toolkit/dashboard_apps/PresenceTest.py +2 -8
- toolkit/dashboard_apps/QMI8685_GYRO.py +68 -0
- toolkit/dashboard_apps/RGBTest.py +20 -24
- toolkit/dashboard_apps/RoboArm.py +24 -32
- toolkit/dashboard_apps/SED_test.py +10 -14
- toolkit/dashboard_apps/SensorsTest.py +61 -0
- toolkit/dashboard_apps/SystemTest.py +219 -117
- toolkit/dashboard_apps/Template_app.py +12 -19
- toolkit/dashboard_apps/_app_base.py +34 -0
- toolkit/dashboard_apps/_gyro_visualizer.py +78 -0
- toolkit/dashboard_apps/uLightDemo.py +15 -24
- toolkit/index.html +6 -5
- toolkit/lib/LocalMachine.py +6 -1
- toolkit/lib/MicrosFiles.py +46 -0
- toolkit/lib/Repository.py +64 -0
- toolkit/lib/TerminalColors.py +4 -0
- toolkit/lib/macroScript.py +371 -0
- toolkit/lib/micrOSClient.py +124 -51
- toolkit/lib/micrOSClientHistory.py +156 -0
- toolkit/lib/pip_package_installer.py +31 -4
- toolkit/micrOSdashboard.py +16 -21
- toolkit/micrOSlint.py +28 -10
- toolkit/simulator_lib/.DS_Store +0 -0
- micrOS/source/IO_esp32.py → toolkit/simulator_lib/IO_darwin.py +3 -0
- toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- toolkit/simulator_lib/aioespnow.py +28 -0
- toolkit/simulator_lib/camera.py +84 -0
- toolkit/simulator_lib/dht.py +1 -1
- toolkit/simulator_lib/framebuf.py +49 -1
- toolkit/simulator_lib/machine.py +32 -2
- toolkit/simulator_lib/micropython.py +3 -3
- toolkit/simulator_lib/mip.py +165 -0
- toolkit/simulator_lib/neopixel.py +3 -2
- toolkit/simulator_lib/network.py +2 -1
- toolkit/simulator_lib/node_config.json +2 -3
- toolkit/simulator_lib/ntptime.py +1 -1
- toolkit/simulator_lib/{sim_console.py → sim_common.py} +2 -3
- toolkit/simulator_lib/simgc.py +6 -2
- toolkit/simulator_lib/simulator.py +138 -46
- toolkit/simulator_lib/uasyncio.py +34 -3
- toolkit/simulator_lib/uos.py +147 -0
- toolkit/simulator_lib/urandom.py +4 -0
- toolkit/simulator_lib/usocket.py +5 -1
- toolkit/simulator_lib/view01.jpg +0 -0
- toolkit/simulator_lib/view02.jpg +0 -0
- toolkit/socketClient.py +43 -23
- toolkit/user_data/webhooks/generic.py +1 -1
- toolkit/user_data/webhooks/macro.py +44 -0
- toolkit/user_data/webhooks/template.macro +20 -0
- toolkit/user_data/webhooks/template.py +1 -1
- toolkit/workspace/precompiled/Auth.mpy +0 -0
- toolkit/workspace/precompiled/Common.mpy +0 -0
- toolkit/workspace/precompiled/Config.mpy +0 -0
- toolkit/workspace/precompiled/Debug.mpy +0 -0
- toolkit/workspace/precompiled/Espnow.mpy +0 -0
- toolkit/workspace/precompiled/Files.mpy +0 -0
- toolkit/workspace/precompiled/Hooks.mpy +0 -0
- toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- toolkit/workspace/precompiled/Logger.mpy +0 -0
- toolkit/workspace/precompiled/Network.mpy +0 -0
- toolkit/workspace/precompiled/Notify.mpy +0 -0
- toolkit/workspace/precompiled/Pacman.mpy +0 -0
- toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- toolkit/workspace/precompiled/Server.mpy +0 -0
- toolkit/workspace/precompiled/Shell.mpy +0 -0
- toolkit/workspace/precompiled/Tasks.mpy +0 -0
- toolkit/workspace/precompiled/Time.mpy +0 -0
- toolkit/workspace/precompiled/Types.mpy +0 -0
- toolkit/workspace/precompiled/Web.mpy +0 -0
- toolkit/workspace/precompiled/_mpy.version +1 -1
- toolkit/workspace/precompiled/config/_git.keep +0 -0
- toolkit/workspace/precompiled/helpers.mpy +0 -0
- toolkit/workspace/precompiled/micrOS.mpy +0 -0
- toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- toolkit/workspace/precompiled/microIO.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
- {micrOS/source → toolkit/workspace/precompiled/modules}/LM_L9110_DCmotor.py +4 -4
- toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
- toolkit/workspace/precompiled/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
- toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- toolkit/workspace/precompiled/{LM_buzzer.mpy → modules/LM_buzzer.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- toolkit/workspace/precompiled/{LM_esp32.py → modules/LM_esp32.py} +16 -4
- toolkit/workspace/precompiled/modules/LM_espnow.py +53 -0
- toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- toolkit/workspace/precompiled/{LM_gameOfLife.mpy → modules/LM_gameOfLife.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_i2c.py +61 -0
- toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- toolkit/workspace/precompiled/{LM_ld2410.mpy → modules/LM_ld2410.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_mh_z19c.py +198 -0
- toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_qmi8658.py +204 -0
- toolkit/workspace/precompiled/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
- toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- toolkit/workspace/precompiled/{LM_rgbcct.mpy → modules/LM_rgbcct.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_robustness.py +137 -0
- toolkit/workspace/precompiled/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
- toolkit/workspace/precompiled/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
- toolkit/workspace/precompiled/{LM_servo.mpy → modules/LM_servo.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
- toolkit/workspace/precompiled/{LM_stepper.mpy → modules/LM_stepper.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_tcs3472.py +187 -0
- toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/{LM_tinyrgb.mpy → modules/LM_tinyrgb.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- toolkit/workspace/precompiled/urequests.mpy +0 -0
- {micrOS/source → toolkit/workspace/precompiled/web}/dashboard.html +9 -4
- toolkit/workspace/precompiled/web/editor.js +440 -0
- toolkit/workspace/precompiled/web/filesui.html +178 -0
- toolkit/workspace/precompiled/web/filesui.js +338 -0
- toolkit/workspace/precompiled/{index.html → web/index.html} +44 -2
- toolkit/workspace/precompiled/web/uapi.js +103 -0
- toolkit/workspace/precompiled/web/udashboard.js +129 -0
- toolkit/workspace/precompiled/web/ustyle.css +55 -0
- toolkit/workspace/precompiled/web/uwidgets.js +172 -0
- toolkit/workspace/precompiled/web/uwidgets_pro.js +99 -0
- env/driver_cp210x/CH34XSER_MAC/CH34X_DRV_INSTALL_INSTRUCTIONS.pdf +0 -0
- env/driver_cp210x/CH34XSER_MAC/CH34xVCPDriver.pkg +0 -0
- micrOS/micropython/esp32-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/esp32c3-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32c3-GENERIC-20240222-v1.22.2.bin +0 -0
- micrOS/micropython/esp32s2-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
- micrOS/micropython/esp32s3-GENERIC-20240105-v1.22.1.bin +0 -0
- micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/rpi-pico-w-20231005-v1.21.0.uf2 +0 -0
- micrOS/micropython/tinypico-20231005-v1.21.0.bin +0 -0
- micrOS/micropython/tinypico-usbc-UM-20240105-v1.22.1.bin +0 -0
- micrOS/source/LM_L298N_DCmotor.py +0 -86
- micrOS/source/LM_catgame.py +0 -74
- micrOS/source/LM_dashboard_be.py +0 -37
- micrOS/source/LM_demo.py +0 -85
- micrOS/source/LM_distance.py +0 -88
- micrOS/source/LM_i2c.py +0 -44
- micrOS/source/LM_intercon.py +0 -57
- micrOS/source/LM_keychain.py +0 -318
- micrOS/source/LM_lmpacman.py +0 -126
- micrOS/source/LM_neoeffects.py +0 -327
- micrOS/source/LM_pet_feeder.py +0 -76
- micrOS/source/LM_ph_sensor.py +0 -51
- micrOS/source/LM_rest.py +0 -40
- micrOS/source/LM_robustness.py +0 -73
- micrOS/source/LM_telegram.py +0 -96
- micrOS/source/reset.py +0 -11
- micrOS/source/uapi.js +0 -76
- micrOS/source/udashboard.js +0 -137
- micrOS/source/ustyle.css +0 -28
- micrOS/source/uwidgets.js +0 -179
- micrOSDevToolKit-2.1.5.dist-info/RECORD +0 -337
- toolkit/dashboard_apps/AirQualityBME280.py +0 -36
- toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -36
- toolkit/lib/file_extensions.py +0 -16
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-38.pyc +0 -0
- toolkit/simulator_lib/__pycache__/LP_darwin.cpython-39.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
- toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
- toolkit/workspace/precompiled/IO_esp32.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32c3.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32s2.mpy +0 -0
- toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
- toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
- toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
- toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
- toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
- toolkit/workspace/precompiled/LM_aht10.mpy +0 -0
- toolkit/workspace/precompiled/LM_bme280.mpy +0 -0
- toolkit/workspace/precompiled/LM_catgame.py +0 -74
- toolkit/workspace/precompiled/LM_cct.mpy +0 -0
- toolkit/workspace/precompiled/LM_co2.mpy +0 -0
- toolkit/workspace/precompiled/LM_dashboard_be.py +0 -37
- toolkit/workspace/precompiled/LM_demo.py +0 -85
- toolkit/workspace/precompiled/LM_dht11.mpy +0 -0
- toolkit/workspace/precompiled/LM_dht22.mpy +0 -0
- toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
- toolkit/workspace/precompiled/LM_distance.py +0 -88
- toolkit/workspace/precompiled/LM_ds18.mpy +0 -0
- toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
- toolkit/workspace/precompiled/LM_i2c.py +0 -44
- toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
- toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
- toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
- toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
- toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
- toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_sh1106.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/LM_pet_feeder.py +0 -76
- toolkit/workspace/precompiled/LM_ph_sensor.py +0 -51
- toolkit/workspace/precompiled/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/LM_rest.mpy +0 -0
- toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
- toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
- toolkit/workspace/precompiled/LM_robustness.py +0 -73
- toolkit/workspace/precompiled/LM_switch.mpy +0 -0
- toolkit/workspace/precompiled/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/reset.mpy +0 -0
- toolkit/workspace/precompiled/uapi.js +0 -76
- toolkit/workspace/precompiled/udashboard.js +0 -137
- toolkit/workspace/precompiled/ustyle.css +0 -28
- toolkit/workspace/precompiled/uwidgets.js +0 -179
- /toolkit/user_data/node_config_archive/.include → /micrOS/source/config/_git.keep +0 -0
- /micrOS/source/{IO_rp2.py → modules/IO_rp2.py} +0 -0
- /micrOS/source/{LM_tinyrgb.py → modules/LM_tinyrgb.py} +0 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info/licenses}/LICENSE +0 -0
- {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
from LM_system import memory_usage
|
|
2
|
+
from Common import socket_stream, syslog, micro_task
|
|
3
|
+
from Auth import sudo
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@socket_stream
|
|
7
|
+
def raise_error(msgobj=None):
|
|
8
|
+
"""
|
|
9
|
+
Test function - raise LM exception
|
|
10
|
+
"""
|
|
11
|
+
if msgobj is not None:
|
|
12
|
+
msgobj("Raise test exception")
|
|
13
|
+
state = syslog('Robustness TeSt ErRoR')
|
|
14
|
+
raise Exception(f"Test exception: {'OK' if state else 'NOK'}")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@socket_stream
|
|
18
|
+
def memory_leak(cnt=160, msgobj=None):
|
|
19
|
+
"""
|
|
20
|
+
Test function - allocate lot of memory
|
|
21
|
+
:param cnt: data counter, default 160 iteration
|
|
22
|
+
:return: verdict
|
|
23
|
+
"""
|
|
24
|
+
dict_test = {}
|
|
25
|
+
mem_start = memory_usage()['mem_used']
|
|
26
|
+
for k in range(cnt):
|
|
27
|
+
mem = memory_usage()['percent']
|
|
28
|
+
data = "micrOS memory usage: {} %".format(mem)
|
|
29
|
+
if msgobj is not None:
|
|
30
|
+
msgobj("[{}] gen: {}".format(k, data))
|
|
31
|
+
dict_test[k] = data
|
|
32
|
+
mem_end = memory_usage()['mem_used']
|
|
33
|
+
delta = mem_start - mem_end
|
|
34
|
+
return '[{}] RAM Alloc.: {} kB {} byte'.format(len(dict_test), int(delta / 1024), int(delta % 1024))
|
|
35
|
+
|
|
36
|
+
@socket_stream
|
|
37
|
+
def recursion_limit(limit=14, msgobj=None):
|
|
38
|
+
cnt = 0
|
|
39
|
+
for cnt in range(1, limit+1):
|
|
40
|
+
try:
|
|
41
|
+
_recursion(cnt, msgobj=msgobj)
|
|
42
|
+
except Exception as e:
|
|
43
|
+
msgobj(f"ok error: {e}")
|
|
44
|
+
break
|
|
45
|
+
return f"Recursion limit: {cnt}"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _recursion(cnt, msgobj=None):
|
|
49
|
+
"""
|
|
50
|
+
Test function - recursion test
|
|
51
|
+
:param cnt: recursion depth
|
|
52
|
+
:return: verdict
|
|
53
|
+
Error example:
|
|
54
|
+
node01 $ robustness recursion_limit 15
|
|
55
|
+
lm_exec LM_robustness->recursion_limit: maximum recursion depth exceeded
|
|
56
|
+
"""
|
|
57
|
+
if cnt > 0:
|
|
58
|
+
remain = _recursion(cnt-1)
|
|
59
|
+
if msgobj is not None:
|
|
60
|
+
msgobj("recalled {}".format(cnt))
|
|
61
|
+
else:
|
|
62
|
+
remain = 0
|
|
63
|
+
return remain
|
|
64
|
+
|
|
65
|
+
################## TEST micro_task UCs ##########################
|
|
66
|
+
|
|
67
|
+
async def __task(tag, period_ms):
|
|
68
|
+
counter = 0
|
|
69
|
+
with micro_task(tag=tag) as my_task:
|
|
70
|
+
while True:
|
|
71
|
+
# DO something here in the async loop...
|
|
72
|
+
counter += 1
|
|
73
|
+
|
|
74
|
+
# Store data in task cache (task show mytask)
|
|
75
|
+
my_task.out = f'MyTask Counter: {counter}'
|
|
76
|
+
|
|
77
|
+
# Async sleep - feed event loop
|
|
78
|
+
await my_task.feed(sleep_ms=period_ms)
|
|
79
|
+
# [i] feed same as "await asyncio.sleep_ms(period_ms)" with micrOS features (WDT)
|
|
80
|
+
|
|
81
|
+
def create_task():
|
|
82
|
+
"""
|
|
83
|
+
Legacy way of task creation (with exact task tagging)
|
|
84
|
+
"""
|
|
85
|
+
# [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
|
|
86
|
+
task_tag = "microtask.run"
|
|
87
|
+
return micro_task(tag=task_tag, task=__task(tag=task_tag, period_ms=5))
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@micro_task("microtask", _wrap=True)
|
|
91
|
+
async def mytask(tag, period_ms=30):
|
|
92
|
+
"""
|
|
93
|
+
New shorter way of task creation
|
|
94
|
+
with decorator function
|
|
95
|
+
"""
|
|
96
|
+
counter = 0
|
|
97
|
+
with micro_task(tag=tag) as my_task:
|
|
98
|
+
while True:
|
|
99
|
+
# DO something here in the async loop...
|
|
100
|
+
counter += 1
|
|
101
|
+
|
|
102
|
+
# Store data in task cache (task show mytask)
|
|
103
|
+
my_task.out = f'MyTask Counter: {counter}'
|
|
104
|
+
|
|
105
|
+
# Async sleep - feed event loop
|
|
106
|
+
await my_task.feed(sleep_ms=period_ms)
|
|
107
|
+
# [i] feed same as "await asyncio.sleep_ms(period_ms)" with micrOS features (WDT)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
@sudo
|
|
111
|
+
def func_sudo():
|
|
112
|
+
"""
|
|
113
|
+
Function execution requires pwd=<...>
|
|
114
|
+
"""
|
|
115
|
+
return "Access granted"
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@sudo(_force_only=(True, 0))
|
|
119
|
+
def func_sudo_force(force=False):
|
|
120
|
+
"""
|
|
121
|
+
Function requires pwd=<...> when force=True
|
|
122
|
+
"""
|
|
123
|
+
return f"Access granted, force flag: {force}"
|
|
124
|
+
|
|
125
|
+
##############################################################################
|
|
126
|
+
|
|
127
|
+
def help(widgets=False):
|
|
128
|
+
"""
|
|
129
|
+
[i] micrOS LM naming convention - built-in help message
|
|
130
|
+
:return tuple:
|
|
131
|
+
(widgets=False) list of functions implemented by this application
|
|
132
|
+
(widgets=True) list of widget json for UI generation
|
|
133
|
+
"""
|
|
134
|
+
return 'NOTE: This is a test module to validate system robustness', \
|
|
135
|
+
'raise_error', 'memory_leak cnt=160', 'recursion_limit cnt=14', \
|
|
136
|
+
'create_task', 'mytask', "func_sudo", "func_sudo_force"
|
|
137
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"""
|
|
2
|
+
A MicroPython library for the TCS3472 light sensing chip
|
|
3
|
+
https://github.com/tti0/tcs3472-micropython
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2021 tti0
|
|
6
|
+
Licensed under the MIT License
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from struct import unpack
|
|
10
|
+
from time import sleep
|
|
11
|
+
from machine import I2C, Pin, PWM
|
|
12
|
+
from microIO import bind_pin, pinmap_search
|
|
13
|
+
from Types import resolve
|
|
14
|
+
|
|
15
|
+
from LM_neopixel import load as neo_load, color as neo_color, toggle as neo_toggle # local neopixel light indicator
|
|
16
|
+
from LM_cluster import run as cluster_run # DEMO: neomatrix cluster
|
|
17
|
+
|
|
18
|
+
CURRENT_ANIMATION_INDEX = 0 # DEMO: neomatrix cluster animation
|
|
19
|
+
|
|
20
|
+
class TCS3472:
|
|
21
|
+
INSTANCE = None
|
|
22
|
+
|
|
23
|
+
def __init__(self, address=0x29, led_pin=None):
|
|
24
|
+
self._bus = I2C(sda=Pin(bind_pin('i2c_sda')), scl=Pin(bind_pin('i2c_scl')))
|
|
25
|
+
self._i2c_address = address
|
|
26
|
+
self._bus.writeto(self._i2c_address, b'\x80\x03')
|
|
27
|
+
self._bus.writeto(self._i2c_address, b'\x81\x2b')
|
|
28
|
+
self.led = PWM(Pin(bind_pin('led', led_pin), Pin.OUT), freq=20480)
|
|
29
|
+
self.led_brightness = 20
|
|
30
|
+
TCS3472.INSTANCE = self
|
|
31
|
+
|
|
32
|
+
def scaled(self, saturation=1.5):
|
|
33
|
+
"""
|
|
34
|
+
Normalize by strongest color, then adjust saturation.
|
|
35
|
+
saturation = 1.0 -> normal
|
|
36
|
+
saturation > 1.0 -> more vibrant
|
|
37
|
+
saturation < 1.0 -> more pastel
|
|
38
|
+
"""
|
|
39
|
+
_, r, g, b = self.raw()
|
|
40
|
+
m = max(r, g, b)
|
|
41
|
+
if m == 0:
|
|
42
|
+
return 0.0, 0.0, 0.0
|
|
43
|
+
|
|
44
|
+
# Normalize by strongest channel
|
|
45
|
+
r, g, b = r / m, g / m, b / m
|
|
46
|
+
|
|
47
|
+
# Grayscale = average of channels
|
|
48
|
+
gray = (r + g + b) / 3
|
|
49
|
+
|
|
50
|
+
# Interpolate between gray and color
|
|
51
|
+
r = gray + (r - gray) * saturation
|
|
52
|
+
g = gray + (g - gray) * saturation
|
|
53
|
+
b = gray + (b - gray) * saturation
|
|
54
|
+
|
|
55
|
+
# Clamp to 0..1
|
|
56
|
+
return max(0, min(1, r)), max(0, min(1, g)), max(0, min(1, b))
|
|
57
|
+
|
|
58
|
+
def rgb(self):
|
|
59
|
+
return tuple(int(x * 255) for x in self.scaled())
|
|
60
|
+
|
|
61
|
+
def light(self):
|
|
62
|
+
return self.raw()[0]
|
|
63
|
+
|
|
64
|
+
def brightness(self, level=65.535):
|
|
65
|
+
return int((self.light() / level))
|
|
66
|
+
|
|
67
|
+
def valid(self):
|
|
68
|
+
self._bus.writeto(self._i2c_address, b'\x93')
|
|
69
|
+
return self._bus.readfrom(self._i2c_address, 1)[0] & 1
|
|
70
|
+
|
|
71
|
+
def raw(self):
|
|
72
|
+
self._bus.writeto(self._i2c_address, b'\xb4')
|
|
73
|
+
return unpack("<HHHH", self._bus.readfrom(self._i2c_address, 8))
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
############################ Exposed functions ############################
|
|
77
|
+
|
|
78
|
+
def load(led_pin=20):
|
|
79
|
+
"""
|
|
80
|
+
Load the TCS3472 Color sensor instance.
|
|
81
|
+
"""
|
|
82
|
+
if TCS3472.INSTANCE is None:
|
|
83
|
+
TCS3472(led_pin=led_pin)
|
|
84
|
+
neo_load(ledcnt=1)
|
|
85
|
+
led(False)
|
|
86
|
+
return TCS3472.INSTANCE
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def pinmap():
|
|
90
|
+
"""
|
|
91
|
+
Show used pin mapping for this module.
|
|
92
|
+
"""
|
|
93
|
+
return pinmap_search(['i2c_scl', 'i2c_sda', 'led'])
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def measure():
|
|
97
|
+
"""
|
|
98
|
+
MEASURE sensor
|
|
99
|
+
"""
|
|
100
|
+
sensor = load()
|
|
101
|
+
measurement = {"rgb": sensor.rgb(), "light": sensor.light(), "brightness": sensor.brightness()}
|
|
102
|
+
return measurement
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def led(state:bool=None, br:int=None):
|
|
106
|
+
"""
|
|
107
|
+
SENSOR LED toggle
|
|
108
|
+
:param state: None-automatic, True-ON, False-OFF
|
|
109
|
+
:param br: brightness 0-100
|
|
110
|
+
"""
|
|
111
|
+
def _set_duty(_br):
|
|
112
|
+
_br = sensor.led_brightness if _br is None else _br
|
|
113
|
+
sensor.led.duty(int(_br * 10))
|
|
114
|
+
if _br != 0:
|
|
115
|
+
sensor.led_brightness = _br
|
|
116
|
+
|
|
117
|
+
sensor = load()
|
|
118
|
+
if state is None:
|
|
119
|
+
# INVERT STATE
|
|
120
|
+
led_current_state = sensor.led.duty() > 0
|
|
121
|
+
if led_current_state:
|
|
122
|
+
_set_duty(br)
|
|
123
|
+
_set_duty(0)
|
|
124
|
+
neo_toggle(False)
|
|
125
|
+
else:
|
|
126
|
+
_set_duty(br)
|
|
127
|
+
neo_toggle(True)
|
|
128
|
+
else:
|
|
129
|
+
# SET STATE: ON/OFF
|
|
130
|
+
if state:
|
|
131
|
+
_set_duty(br)
|
|
132
|
+
neo_toggle(True)
|
|
133
|
+
else:
|
|
134
|
+
_set_duty(br)
|
|
135
|
+
_set_duty(0)
|
|
136
|
+
neo_toggle(False)
|
|
137
|
+
return f"LED on, {sensor.led_brightness}%" if sensor.led.duty()>0 else f"LED off"
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def indicator(br=5):
|
|
141
|
+
"""
|
|
142
|
+
Color indicator Neopixel LED update
|
|
143
|
+
:param br: brightness 0-100
|
|
144
|
+
"""
|
|
145
|
+
r, g, b = measure()['rgb']
|
|
146
|
+
br = float(br / 100)
|
|
147
|
+
_r, _g, _b = int(r*br), int(g*br), int(b*br)
|
|
148
|
+
neo_color(_r, _g, _b, smooth=False)
|
|
149
|
+
return r, g, b
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def neomatrix_update():
|
|
153
|
+
"""
|
|
154
|
+
DEMO - Send color codes for all neomatrix devices over espnow cluster
|
|
155
|
+
"""
|
|
156
|
+
r, g, b = indicator()
|
|
157
|
+
command = f"neomatrix color_fill {r} {g} {b}"
|
|
158
|
+
cluster_run(command)
|
|
159
|
+
return {"cmd": command, "cluster": "task show con.espnow.*"}
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def neomatrix_animation():
|
|
163
|
+
"""
|
|
164
|
+
DEMO - Set random animation on neomatrix espnow cluster
|
|
165
|
+
"""
|
|
166
|
+
global CURRENT_ANIMATION_INDEX
|
|
167
|
+
animations = ('spiral', 'snake', 'noise')
|
|
168
|
+
|
|
169
|
+
next_animation = CURRENT_ANIMATION_INDEX + 1
|
|
170
|
+
CURRENT_ANIMATION_INDEX = 0 if next_animation >= len(animations) else next_animation
|
|
171
|
+
command = f"neomatrix {animations[CURRENT_ANIMATION_INDEX]}"
|
|
172
|
+
cluster_run(command)
|
|
173
|
+
return {"cmd": command, "cluster": "task show con.espnow.*"}
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def help(widgets=False):
|
|
177
|
+
"""
|
|
178
|
+
TCS3472 Color sensor
|
|
179
|
+
"""
|
|
180
|
+
return resolve(('load led_pin=20',
|
|
181
|
+
'TEXTBOX measure',
|
|
182
|
+
'BUTTON led state=<True,False>',
|
|
183
|
+
'SLIDER led state=True br=<0-100-5>',
|
|
184
|
+
'indicator br=<0-100>',
|
|
185
|
+
'BUTTON neomatrix_update',
|
|
186
|
+
'BUTTON neomatrix_animation',
|
|
187
|
+
'pinmap'), widgets=widgets)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -31,14 +31,18 @@
|
|
|
31
31
|
transition: border-color 0.3s ease; /* Smooth transition for border color */
|
|
32
32
|
}
|
|
33
33
|
</style>
|
|
34
|
-
<script src="uapi.js"
|
|
35
|
-
<script src="uwidgets.js"
|
|
36
|
-
<script src="
|
|
34
|
+
<script src="uapi.js" ></script>
|
|
35
|
+
<script src="uwidgets.js" ></script>
|
|
36
|
+
<script src="uwidgets_pro.js" ></script>
|
|
37
|
+
<script src="udashboard.js" ></script>
|
|
37
38
|
</head>
|
|
38
39
|
<body>
|
|
39
40
|
<h1> micrOS dashboard </h1>
|
|
41
|
+
<div id="restInfo">
|
|
42
|
+
<div id="restInfoHeader"></div>
|
|
43
|
+
</div>
|
|
40
44
|
<!-- Container for the dynamically generated list -->
|
|
41
|
-
<
|
|
45
|
+
<section id="widgets-section"></section>
|
|
42
46
|
<br><br><br>
|
|
43
47
|
<button id="toggleDebugSection">console</button>
|
|
44
48
|
<div id="debugSection" style="display: none;">
|
|
@@ -53,6 +57,7 @@
|
|
|
53
57
|
<script>
|
|
54
58
|
document.addEventListener("DOMContentLoaded", function() {
|
|
55
59
|
// Init basic info from board after DOM is fully loaded
|
|
60
|
+
restInfo(showPages=false);
|
|
56
61
|
|
|
57
62
|
// INIT DASHBOARD (load active modules -> build page)
|
|
58
63
|
DynamicWidgetLoad();
|