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
micrOS/source/Time.py
CHANGED
|
@@ -14,27 +14,29 @@ from network import WLAN, STA_IF
|
|
|
14
14
|
from utime import sleep_ms, time, mktime, localtime
|
|
15
15
|
|
|
16
16
|
from Config import cfgput, cfgget
|
|
17
|
-
from Debug import
|
|
17
|
+
from Debug import syslog, console_write
|
|
18
18
|
from urequests import get as http_get
|
|
19
|
+
from Files import OSPath, path_join
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
class Sun:
|
|
22
23
|
TIME = {}
|
|
23
24
|
UTC = cfgget('utc') # STORED IN MINUTE
|
|
24
25
|
BOOTIME = None # Initialize BOOTIME: Not SUN, but for system uptime
|
|
26
|
+
FILE_CACHE = path_join(OSPath.DATA, 'sun.cache')
|
|
25
27
|
|
|
26
28
|
|
|
27
|
-
def set_time(year, month, mday, hour,
|
|
29
|
+
def set_time(year, month, mday, hour, minute, sec):
|
|
28
30
|
"""
|
|
29
31
|
Set Localtime + RTC Clock manually + update BOOTIME/uptime
|
|
30
32
|
https://docs.micropython.org/en/latest/library/machine.RTC.html
|
|
31
33
|
"""
|
|
32
34
|
# Make time from tuple to sec
|
|
33
|
-
time_sec = mktime((year, month, mday, hour,
|
|
35
|
+
time_sec = mktime((year, month, mday, hour, minute, sec, 0, 0))
|
|
34
36
|
# Set localtime
|
|
35
37
|
localtime(time_sec)
|
|
36
38
|
# Set RTC
|
|
37
|
-
RTC().datetime((year, month, mday, 0, hour,
|
|
39
|
+
RTC().datetime((year, month, mday, 0, hour, minute, sec, 0))
|
|
38
40
|
# (re)set uptime when settime - normally at boot time
|
|
39
41
|
if Sun.BOOTIME is None:
|
|
40
42
|
Sun.BOOTIME = time()
|
|
@@ -47,7 +49,7 @@ def ntp_time():
|
|
|
47
49
|
:return: ntp date struct
|
|
48
50
|
"""
|
|
49
51
|
if not WLAN(STA_IF).isconnected():
|
|
50
|
-
|
|
52
|
+
syslog("[WARN] STA not connected: ntptime")
|
|
51
53
|
return False
|
|
52
54
|
|
|
53
55
|
def get_ntp():
|
|
@@ -83,31 +85,30 @@ def ntp_time():
|
|
|
83
85
|
console_write(f"ntptime error.:{e}")
|
|
84
86
|
err = e
|
|
85
87
|
sleep_ms(100)
|
|
86
|
-
|
|
88
|
+
syslog(f"[ERR] ntptime: {err}")
|
|
87
89
|
return False
|
|
88
90
|
|
|
89
91
|
|
|
90
92
|
def __sun_cache(mode):
|
|
91
93
|
"""
|
|
92
|
-
|
|
94
|
+
File cache
|
|
93
95
|
modes:
|
|
94
96
|
r - recover, s - save
|
|
95
97
|
"""
|
|
96
98
|
if mode == 's':
|
|
97
99
|
# SAVE CACHE
|
|
98
|
-
temp = {}
|
|
99
100
|
try:
|
|
100
|
-
with open(
|
|
101
|
-
for k, v in Sun.TIME.items()
|
|
102
|
-
|
|
103
|
-
f.write(';'.join([f'{k}:{"-".join(v)}' for k, v in temp.items()]))
|
|
101
|
+
with open(Sun.FILE_CACHE, 'w') as f:
|
|
102
|
+
cache = {k:tuple([str(t) for t in v]) for k, v in Sun.TIME.items()}
|
|
103
|
+
f.write(';'.join([f'{k}:{"-".join(v)}' for k, v in cache.items()]))
|
|
104
104
|
except:
|
|
105
|
-
|
|
105
|
+
syslog("[ERR] Cannot write sun cache")
|
|
106
106
|
return
|
|
107
107
|
try:
|
|
108
108
|
# RESTORE CACHE
|
|
109
|
-
with open(
|
|
110
|
-
buff = {data.split(':')[0]: data.split(':')[1].split('-')
|
|
109
|
+
with open(Sun.FILE_CACHE, 'r') as f:
|
|
110
|
+
buff = {data.split(':')[0]: data.split(':')[1].split('-')
|
|
111
|
+
for data in f.read().strip().split(';')}
|
|
111
112
|
for k, v in buff.items():
|
|
112
113
|
Sun.TIME[k] = tuple([int(e) for e in v])
|
|
113
114
|
except:
|
|
@@ -140,7 +141,7 @@ def suntime():
|
|
|
140
141
|
Sun.UTC = int(response.get('offset') / 60) # IN MINUTE
|
|
141
142
|
cfgput('utc', Sun.UTC, True)
|
|
142
143
|
except Exception as e:
|
|
143
|
-
|
|
144
|
+
syslog(f'[ERR] ip-api: {e} data: {response}')
|
|
144
145
|
return Sun.TIME
|
|
145
146
|
|
|
146
147
|
# SUNSET-SUNRISE API REQUEST HANDLING
|
|
@@ -152,12 +153,10 @@ def suntime():
|
|
|
152
153
|
_, response = http_get(url, sock_size=512, jsonify=True)
|
|
153
154
|
results = response.get('results')
|
|
154
155
|
time_regex = re_comp(r'T([0-9:]+)')
|
|
155
|
-
sun = {
|
|
156
|
-
|
|
157
|
-
'sunset': time_regex.search(results.get('sunset')).group(1).split(':')
|
|
158
|
-
}
|
|
156
|
+
sun = {'sunrise': time_regex.search(results.get('sunrise')).group(1).split(':'),
|
|
157
|
+
'sunset': time_regex.search(results.get('sunset')).group(1).split(':')}
|
|
159
158
|
except Exception as e:
|
|
160
|
-
|
|
159
|
+
syslog(f'[ERR] sunrise-api: {e} data: {response}')
|
|
161
160
|
# Try to parse response by expected sun_keys
|
|
162
161
|
try:
|
|
163
162
|
for key in sun:
|
|
@@ -165,7 +164,7 @@ def suntime():
|
|
|
165
164
|
sun[key][0] += int(Sun.UTC / 60)
|
|
166
165
|
sun[key] = tuple(sun[key])
|
|
167
166
|
except Exception as e:
|
|
168
|
-
|
|
167
|
+
syslog(f'[WARN] sunrise-api parse error: {e} sun: {sun}')
|
|
169
168
|
# Retrieve cached data and return
|
|
170
169
|
__sun_cache('r') # Using Sun.TIME
|
|
171
170
|
console_write('[suntime] loaded from cache')
|
micrOS/source/Types.py
CHANGED
|
@@ -11,25 +11,25 @@ USAGE:
|
|
|
11
11
|
SLIDER brightness br=<0-100>
|
|
12
12
|
SLIDER brightness br=<0-100-5>
|
|
13
13
|
"""
|
|
14
|
-
from json import dumps
|
|
15
|
-
from Debug import
|
|
14
|
+
from json import dumps, loads
|
|
15
|
+
from Debug import syslog
|
|
16
16
|
|
|
17
17
|
########################################################
|
|
18
18
|
# HELP TUPLE RESOLVER #
|
|
19
19
|
########################################################
|
|
20
|
+
|
|
20
21
|
__TEMPLATE = {'type': 'n/a', 'lm_call': ''}
|
|
21
22
|
__RANGE_100 = {'range': (0, 100, 2)}
|
|
22
23
|
__RANGE_255 = {'range': (0, 255, 2)}
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
__OPTIONS = {'options': ("None",)}
|
|
25
25
|
|
|
26
|
-
#
|
|
27
|
-
BUTTON = __TEMPLATE | {'type': 'button'}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
# Widget Types
|
|
27
|
+
BUTTON = lambda: __TEMPLATE | {'type': 'button'} | __OPTIONS
|
|
28
|
+
SLIDER = lambda: __TEMPLATE | {'type': 'slider'} | __RANGE_100
|
|
29
|
+
TEXTBOX = lambda: __TEMPLATE | {'type': 'textbox', 'refresh': 10000}
|
|
30
|
+
COLOR = lambda: __TEMPLATE | {'type': 'color'} | __RANGE_255
|
|
31
|
+
WHITE = lambda: __TEMPLATE | {'type': 'white'} | __RANGE_255
|
|
32
|
+
JOYSTICK = lambda: __TEMPLATE | {'type': 'joystick'} | __RANGE_100
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
########################################################
|
|
@@ -41,67 +41,102 @@ def _placeholder(var, value, type_dict):
|
|
|
41
41
|
try:
|
|
42
42
|
int(data)
|
|
43
43
|
return True
|
|
44
|
-
except:
|
|
44
|
+
except ValueError:
|
|
45
45
|
return False
|
|
46
46
|
|
|
47
|
-
new_range = None
|
|
48
47
|
if value.startswith('<') and value.endswith('>'):
|
|
49
48
|
if '-' in value:
|
|
50
49
|
_range = value[1:-1].split('-')
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
# Ignore param
|
|
61
|
-
return "", new_range
|
|
62
|
-
# Keep param value
|
|
63
|
-
return f"{var}={value}", new_range
|
|
50
|
+
if all(_is_int(r) for r in _range):
|
|
51
|
+
_min, _max = int(_range[0]), int(_range[1])
|
|
52
|
+
_step = int(_range[2]) if len(_range) > 2 else type_dict['range'][2]
|
|
53
|
+
return f"{var}=:range:", (_min, _max, _step), 'range'
|
|
54
|
+
return "", None, None
|
|
55
|
+
if ',' in value:
|
|
56
|
+
_opts = tuple(value[1:-1].split(','))
|
|
57
|
+
return f"{var}=:options:", _opts, 'options'
|
|
58
|
+
return f"{var}={value}", None, None
|
|
64
59
|
|
|
65
60
|
|
|
66
61
|
def _generate(type_dict, help_msg):
|
|
67
|
-
|
|
68
|
-
params =
|
|
69
|
-
valid_params = []
|
|
62
|
+
parts = help_msg.split()
|
|
63
|
+
func, params = parts[1], parts[2:] if len(parts) > 2 else []
|
|
64
|
+
valid_params, overwrite = [], {}
|
|
70
65
|
for p in params:
|
|
71
66
|
if '=' in p:
|
|
72
67
|
var, value = p.split("=")
|
|
68
|
+
param_str, values, value_type = _placeholder(var, value, type_dict)
|
|
69
|
+
if value_type:
|
|
70
|
+
overwrite[value_type] = values
|
|
71
|
+
valid_params.append(param_str)
|
|
72
|
+
else:
|
|
73
|
+
if p.startswith("&"):
|
|
74
|
+
# Handle special use case - task postfix
|
|
75
|
+
valid_params.append(p)
|
|
76
|
+
else:
|
|
77
|
+
param_str = f'{p}=:{"range" if "range" in type_dict else "options"}:'
|
|
78
|
+
valid_params.append(param_str)
|
|
79
|
+
type_dict['lm_call'] = f"{func} {' '.join(valid_params)}"
|
|
80
|
+
return dumps(type_dict | overwrite)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _extract_tag_and_overrides(msg):
|
|
84
|
+
"""
|
|
85
|
+
Example:
|
|
86
|
+
"TEXTBOX{'refresh': 5000} measure ntfy=False"
|
|
87
|
+
OR with default refresh value:
|
|
88
|
+
"TEXTBOX measure ntfy=False"
|
|
89
|
+
return:
|
|
90
|
+
tag -> "TEXTBOX"
|
|
91
|
+
overrides(optional) -> {'refresh': 5000}
|
|
92
|
+
cmd -> "measure ntfy=False"
|
|
93
|
+
"""
|
|
94
|
+
msg = msg.strip()
|
|
95
|
+
if not msg:
|
|
96
|
+
return "", {}, ""
|
|
97
|
+
tag_end = len(msg)
|
|
98
|
+
for i, c in enumerate(msg):
|
|
99
|
+
if c in " {":
|
|
100
|
+
tag_end = i
|
|
101
|
+
break
|
|
102
|
+
tag = msg[:tag_end]
|
|
103
|
+
cmd = msg[tag_end:].lstrip()
|
|
104
|
+
overrides = {}
|
|
105
|
+
if tag.isupper() and cmd.startswith('{'):
|
|
106
|
+
i = cmd.find('}')
|
|
107
|
+
if i >= 0:
|
|
73
108
|
try:
|
|
74
|
-
|
|
75
|
-
if new_range is not None:
|
|
76
|
-
type_dict['range'] = new_range
|
|
109
|
+
overrides = loads('{' + cmd[1:i].replace("'", '"') + '}')
|
|
77
110
|
except Exception as e:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
valid_params.append(p)
|
|
83
|
-
type_dict['lm_call'] = f"{func} " + " ".join(valid_params)
|
|
84
|
-
return dumps(type_dict)
|
|
111
|
+
syslog(f"[ERR] Types tag overrides: {e}")
|
|
112
|
+
cmd = cmd[i + 1:].lstrip()
|
|
113
|
+
return tag, overrides, cmd
|
|
114
|
+
|
|
85
115
|
|
|
86
116
|
def resolve(help_data, widgets=False):
|
|
87
117
|
help_msg = []
|
|
88
118
|
for msg in help_data:
|
|
89
|
-
tag = msg
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
try:
|
|
93
|
-
resolved_tag = eval(tag)
|
|
94
|
-
except NameError:
|
|
95
|
-
resolved_tag = tag
|
|
119
|
+
tag, overrides, cmd = _extract_tag_and_overrides(msg)
|
|
120
|
+
if tag and tag.isupper():
|
|
121
|
+
# TAG exists in help message
|
|
96
122
|
if widgets:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
123
|
+
# Format output as widget - machine-readable
|
|
124
|
+
factory = globals().get(tag, None)
|
|
125
|
+
resolved_tag = factory() if callable(factory) else factory
|
|
126
|
+
if isinstance(resolved_tag, dict) and overrides:
|
|
127
|
+
# Apply inline widget-only overrides, e.g. TEXTBOX{'refresh': 5000}
|
|
128
|
+
resolved_tag.update(overrides)
|
|
129
|
+
try:
|
|
130
|
+
# Build a clean message for _generate, without inline {...}
|
|
131
|
+
cleaned_msg = (tag + ' ' + cmd).strip()
|
|
132
|
+
# Generate JSON output with TAG
|
|
133
|
+
help_msg.append(_generate(resolved_tag, cleaned_msg))
|
|
134
|
+
except Exception as e:
|
|
135
|
+
syslog(f"[ERR] resolve {tag} help msg: {e}")
|
|
100
136
|
continue
|
|
101
|
-
#
|
|
102
|
-
help_msg.append(
|
|
137
|
+
# Widgets OFF - TAG exists - remove TAG from output
|
|
138
|
+
help_msg.append(cmd.strip())
|
|
103
139
|
elif not widgets:
|
|
104
|
-
#
|
|
105
|
-
help_msg.append(
|
|
140
|
+
# No TAG - Widgets OFF output
|
|
141
|
+
help_msg.append(msg)
|
|
106
142
|
return tuple(help_msg)
|
|
107
|
-
|