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/LM_i2c.py
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from microIO import physical_pin, pinmap_dump
|
|
2
|
-
|
|
3
|
-
__I2C = None
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def __init():
|
|
7
|
-
global __I2C
|
|
8
|
-
if __I2C is None:
|
|
9
|
-
from machine import Pin, I2C
|
|
10
|
-
__I2C = I2C(-1, Pin(physical_pin('i2c_scl')), Pin(physical_pin('i2c_sda')))
|
|
11
|
-
return __I2C
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def scan():
|
|
15
|
-
"""
|
|
16
|
-
I2C scan function - experimental
|
|
17
|
-
:return list: list of devices
|
|
18
|
-
"""
|
|
19
|
-
# https://docs.micropython.org/en/latest/library/machine.I2C.html
|
|
20
|
-
return __init().scan()
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
#######################
|
|
24
|
-
# LM helper functions #
|
|
25
|
-
#######################
|
|
26
|
-
|
|
27
|
-
def pinmap():
|
|
28
|
-
"""
|
|
29
|
-
[i] micrOS LM naming convention
|
|
30
|
-
Shows logical pins - pin number(s) used by this Load module
|
|
31
|
-
- info which pins to use for this application
|
|
32
|
-
:return dict: pin name (str) - pin value (int) pairs
|
|
33
|
-
"""
|
|
34
|
-
return pinmap_dump(['i2c_scl', 'i2c_sda'])
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def help(widgets=False):
|
|
38
|
-
"""
|
|
39
|
-
[i] micrOS LM naming convention - built-in help message
|
|
40
|
-
:return tuple:
|
|
41
|
-
(widgets=False) list of functions implemented by this application
|
|
42
|
-
(widgets=True) list of widget json for UI generation
|
|
43
|
-
"""
|
|
44
|
-
return 'scan', 'pinmap'
|
micrOS/source/LM_intercon.py
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
from InterConnect import send_cmd, host_cache
|
|
2
|
-
from Debug import errlog_add
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
def sendcmd(*args, **kwargs):
|
|
6
|
-
"""
|
|
7
|
-
Implements send command function towards micrOS devices
|
|
8
|
-
example: sendcmd "hello" host="IP/hostname.local") OR sendcmd host="IP/hostname.local" cmd="system rssi")
|
|
9
|
-
:param host[0]: host IP or Hostname
|
|
10
|
-
:param cmd[1]: command - module func arg(s)
|
|
11
|
-
:return str: reply
|
|
12
|
-
"""
|
|
13
|
-
def __send(_host, _cmd):
|
|
14
|
-
try:
|
|
15
|
-
out = send_cmd(_host, _cmd)
|
|
16
|
-
except Exception as e:
|
|
17
|
-
out = []
|
|
18
|
-
errlog_add(f'[intercon] sendcmd: {e}')
|
|
19
|
-
return out
|
|
20
|
-
|
|
21
|
-
host = kwargs.get('host', None)
|
|
22
|
-
cmd = kwargs.get('cmd', None)
|
|
23
|
-
|
|
24
|
-
# Host correction (lm_exec) if keyword-arg 'host' was not found
|
|
25
|
-
if host is None:
|
|
26
|
-
host = args[0]
|
|
27
|
-
args = args[1:]
|
|
28
|
-
|
|
29
|
-
# Cmd correction (lm_exec) if keyword-arg was not found
|
|
30
|
-
if cmd is None:
|
|
31
|
-
cmd = ''.join(args)
|
|
32
|
-
return __send(host, cmd)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def addr_cache():
|
|
36
|
-
"""
|
|
37
|
-
Dump intercon connection cache
|
|
38
|
-
:return dict: device-ip pairs
|
|
39
|
-
"""
|
|
40
|
-
return host_cache()
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
#######################
|
|
44
|
-
# LM helper functions #
|
|
45
|
-
#######################
|
|
46
|
-
|
|
47
|
-
def help(widgets=False):
|
|
48
|
-
"""
|
|
49
|
-
[i] micrOS LM naming convention - built-in help message
|
|
50
|
-
:return tuple:
|
|
51
|
-
(widgets=False) list of functions implemented by this application
|
|
52
|
-
(widgets=True) list of widget json for UI generation
|
|
53
|
-
"""
|
|
54
|
-
return 'sendcmd "hello" host="IP/hostname.local")',\
|
|
55
|
-
'sendcmd host="IP/hostname.local" cmd="system rssi")',\
|
|
56
|
-
'example: intercon sendcmd "10.0.1.84" "system rssi" OR intercon sendcmd "system rssi" host="node01.local"', \
|
|
57
|
-
'addr_cache'
|
micrOS/source/LM_keychain.py
DELETED
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
import uasyncio as asyncio
|
|
2
|
-
from Common import micro_task
|
|
3
|
-
from utime import localtime
|
|
4
|
-
from Network import ifconfig
|
|
5
|
-
from LM_oled import text, show, rect, pixel, clean, line, load_n_init as oled_lni
|
|
6
|
-
from LM_ds18 import measure
|
|
7
|
-
from LM_system import top
|
|
8
|
-
from microIO import physical_pin, pinmap_dump
|
|
9
|
-
from neopixel import NeoPixel
|
|
10
|
-
from machine import Pin
|
|
11
|
-
try:
|
|
12
|
-
from LM_gameOfLife import next_gen as gol_nextgen, reset as gol_reset
|
|
13
|
-
except:
|
|
14
|
-
gol_nextgen = None # Optional function handling
|
|
15
|
-
|
|
16
|
-
class KC:
|
|
17
|
-
INITED = False # Auto init module feature
|
|
18
|
-
DP_main_page = True # store display logical state: ON (main page) / OFF (screen saver)
|
|
19
|
-
DP_cnt = 0 # display "count back", when 0 go to sleep -> OFF
|
|
20
|
-
DP_cnt_default = None # store calculated sequence to sleep 30sec/period_ms
|
|
21
|
-
NEOPIXEL_OBJ = None # Neopixel LED handler object
|
|
22
|
-
COLOR_WHEEL = None # LED color wheel generator object for animation
|
|
23
|
-
NEOPIXEL_BR = 30 # default neopixel brightness
|
|
24
|
-
|
|
25
|
-
#############################
|
|
26
|
-
# INTERNAL FUNCTIONS #
|
|
27
|
-
#############################
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
async def _screen_saver(scale=2):
|
|
31
|
-
"""
|
|
32
|
-
Conway's game of life screen saver simulation
|
|
33
|
-
:param scale: default (2) game of life matrix (16x32) upscale to real display size 32x64
|
|
34
|
-
"""
|
|
35
|
-
# Default mode
|
|
36
|
-
if gol_nextgen is None:
|
|
37
|
-
return # screen off - no screen saver...
|
|
38
|
-
# Screen saver mode
|
|
39
|
-
matrix = gol_nextgen(raw=True)
|
|
40
|
-
if matrix is None:
|
|
41
|
-
# Reset Game of life
|
|
42
|
-
gol_reset()
|
|
43
|
-
# quick view - show (enable) main page
|
|
44
|
-
KC.DP_main_page = True
|
|
45
|
-
else:
|
|
46
|
-
# Update display with Conway's Game of Life
|
|
47
|
-
clean()
|
|
48
|
-
for line_idx, _line in enumerate(matrix):
|
|
49
|
-
for x_idx, v in enumerate(_line):
|
|
50
|
-
if scale == 1:
|
|
51
|
-
pixel(x_idx, line_idx, color=v)
|
|
52
|
-
else:
|
|
53
|
-
rect(x_idx*scale, line_idx*scale, w=scale, h=scale, state=v, fill=True)
|
|
54
|
-
show()
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def _color_wheel():
|
|
58
|
-
"""
|
|
59
|
-
RGB LED color wheel generator - rainbow
|
|
60
|
-
"""
|
|
61
|
-
max_val = 10 # normally up to 255, but must be limited due to heat problems (4%)
|
|
62
|
-
half_val = max_val // 2
|
|
63
|
-
colors = ((0, 0, half_val), (0, 0, max_val), (0, half_val, max_val), (0, max_val, half_val), (0, max_val, 0),
|
|
64
|
-
(half_val, max_val, 0), (max_val, half_val, 0), (max_val, 0, 0), (half_val, 0, 0), (max_val, 0, half_val),
|
|
65
|
-
(half_val, 0, max_val), (0, 0, half_val))
|
|
66
|
-
while True:
|
|
67
|
-
# Loop through the colors to generate smooth transitions
|
|
68
|
-
for i in range(len(colors) - 1):
|
|
69
|
-
start_color = colors[i]
|
|
70
|
-
end_color = colors[i + 1]
|
|
71
|
-
# Generate a smooth transition from start_color to end_color
|
|
72
|
-
for j in range(5): # Adjust this value for smoother or faster transition
|
|
73
|
-
# Linear interpolation for each color component
|
|
74
|
-
yield tuple(int(start + (end - start) * j / 10) for start, end in zip(start_color, end_color))
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
async def _main_page():
|
|
78
|
-
"""
|
|
79
|
-
Run display content refresh
|
|
80
|
-
# H:M
|
|
81
|
-
S/A: 1.92
|
|
82
|
-
40.0 C
|
|
83
|
-
"""
|
|
84
|
-
def _timer():
|
|
85
|
-
# 5x5 px cube (25px overall)
|
|
86
|
-
_offset, _l_width = 2, 5 # Initial size + positioning
|
|
87
|
-
_view = int(25*(KC.DP_cnt/KC.DP_cnt_default)) # overall pixel to be visualized
|
|
88
|
-
_complete_lines = int(_view / _l_width) # complete lines number
|
|
89
|
-
_sub_line = _view - (_complete_lines*_l_width) # incomplete line width
|
|
90
|
-
for _l in range(0, 5):
|
|
91
|
-
if _l < _complete_lines:
|
|
92
|
-
line(0+_offset, _l+_offset, _l_width+_offset, _l+_offset)
|
|
93
|
-
else:
|
|
94
|
-
line(0+_offset, _l+_offset, _sub_line+_offset, _l+_offset)
|
|
95
|
-
break
|
|
96
|
-
|
|
97
|
-
def _cpu_mem():
|
|
98
|
-
sys_usage = top()
|
|
99
|
-
cpu = sys_usage.get('CPU load [%]', 100)
|
|
100
|
-
cpu = 100 if cpu > 100 else cpu # limit cpu overload in visualization
|
|
101
|
-
mem = sys_usage.get('Mem usage [%]', 100)
|
|
102
|
-
_cpu_limit, _mem_limit = cpu > 90, mem > 70 # fill indicator (limit)
|
|
103
|
-
_offset, _height = 1, 6
|
|
104
|
-
_cpu, _mem = int(_height * (cpu/100)), int(_height * (mem/100))
|
|
105
|
-
rect(55, _height+_offset-_cpu, w=3, h=_cpu+_offset, fill=_cpu_limit) # cpu usage indicator
|
|
106
|
-
rect(60, _height+_offset-_mem, w=3, h=_mem+_offset, fill=_mem_limit) # memory usage indicator
|
|
107
|
-
|
|
108
|
-
# Clean display and collect input data: time, network mode, IP address
|
|
109
|
-
clean()
|
|
110
|
-
ltime = localtime()
|
|
111
|
-
h = f"0{ltime[-5]}" if len(str(ltime[-5])) < 2 else ltime[-5]
|
|
112
|
-
m = f"0{ltime[-4]}" if len(str(ltime[-4])) < 2 else ltime[-4]
|
|
113
|
-
nwmd, nwif = ifconfig()
|
|
114
|
-
nwmd, devip = nwmd[0] if len(nwmd) > 0 else "0", ".".join(nwif[0].split(".")[-2:])
|
|
115
|
-
|
|
116
|
-
# Draw data to display
|
|
117
|
-
_timer() # Draw display timer (until screen saver)
|
|
118
|
-
_cpu_mem() # Draw cpu and memory indicator
|
|
119
|
-
text(f"{h}:{m}", x=12, y=1) # Header: time
|
|
120
|
-
text(f"{nwmd}:{devip}", x=4, y=15) # Network mode and IP
|
|
121
|
-
try:
|
|
122
|
-
text(f"{round(tuple(measure().values())[0], 1)} C", x=4, y=25) # ds18 sensor value
|
|
123
|
-
except Exception:
|
|
124
|
-
text("? C", x=4, y=25) # ds18 read issue (default: ?)
|
|
125
|
-
show()
|
|
126
|
-
return "Display show"
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
async def _task(period_ms):
|
|
130
|
-
"""
|
|
131
|
-
Async display refresh task
|
|
132
|
-
- main page (main mode) - auto sleep after 30 sec
|
|
133
|
-
- screen saver (sleep mode)
|
|
134
|
-
"""
|
|
135
|
-
# Auto init keychain module (if needed) - failsafe
|
|
136
|
-
if not KC.INITED:
|
|
137
|
-
_v = load_n_init()
|
|
138
|
-
if not KC.INITED:
|
|
139
|
-
return _v
|
|
140
|
-
|
|
141
|
-
KC.DP_cnt_default = int(30_000 / period_ms) # After 30 sec go to sleep mode
|
|
142
|
-
KC.DP_cnt = KC.DP_cnt_default # Set sleep counter
|
|
143
|
-
fast_period = int(period_ms/3) # Calculate faster refresh period
|
|
144
|
-
fast_period = fast_period if fast_period > 100 else 100
|
|
145
|
-
|
|
146
|
-
# Run keychain main async loop, with update ID: kc._display
|
|
147
|
-
with micro_task(tag="kc._display") as my_task:
|
|
148
|
-
while True:
|
|
149
|
-
if KC.DP_main_page:
|
|
150
|
-
# [MAIN MODE] Execute main page
|
|
151
|
-
await _main_page() #1 Run main page function
|
|
152
|
-
my_task.out = f'main page: {KC.DP_cnt}' #2 Update task data for (task show kc._display)
|
|
153
|
-
KC.DP_cnt -= 1 #3 Update sleep counter
|
|
154
|
-
# Async sleep - feed event loop
|
|
155
|
-
await asyncio.sleep_ms(period_ms)
|
|
156
|
-
else:
|
|
157
|
-
# [SLEEP MODE] Execute screen saver page
|
|
158
|
-
await _screen_saver() # Run sleep page function
|
|
159
|
-
# Async sleep - feed event loop
|
|
160
|
-
await asyncio.sleep_ms(fast_period)
|
|
161
|
-
|
|
162
|
-
# Auto sleep event handler - off event - go to (sleep mode)
|
|
163
|
-
if KC.DP_cnt <= 0:
|
|
164
|
-
KC.DP_main_page = False #1 disable main screen
|
|
165
|
-
clean() #2 clean screen
|
|
166
|
-
show() #3 show cleaned display
|
|
167
|
-
KC.DP_cnt = KC.DP_cnt_default #4 reset sleep counter to default
|
|
168
|
-
my_task.out = 'sleep...'
|
|
169
|
-
neopixel_color_wheel() # update neopixel color wheel
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
def _boot_page(msg):
|
|
173
|
-
clean()
|
|
174
|
-
msg_len = len(msg)*8 # message text length in pixels
|
|
175
|
-
x_offset = int((64 - msg_len)/2) # x (width) center-ing offset
|
|
176
|
-
text(msg, x=x_offset, y=11) # y(height):32 TODO: Auto positioning in y axes (multi line...)
|
|
177
|
-
show()
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
#############################
|
|
181
|
-
# PUBLIC FUNCTIONS #
|
|
182
|
-
#############################
|
|
183
|
-
|
|
184
|
-
def load_n_init(width=64, height=32, bootmsg="micrOS"):
|
|
185
|
-
"""
|
|
186
|
-
Init OLED display 64x32 (default)
|
|
187
|
-
Init Neopixel LED (1 segment)
|
|
188
|
-
:param width: screen width (pixel)
|
|
189
|
-
:param height: screen height (pixel)
|
|
190
|
-
:param bootmsg: First text on page at bootup, default: "micrOS"
|
|
191
|
-
"""
|
|
192
|
-
KC.COLOR_WHEEL = _color_wheel() #1 Init neopixel color wheel generator
|
|
193
|
-
try:
|
|
194
|
-
oled_lni(width, height, brightness=20) #2 Init oled display
|
|
195
|
-
_boot_page(bootmsg) #3 Show boot page text
|
|
196
|
-
KC.INITED = True # Set display was successfully inited (for _task auto init)
|
|
197
|
-
return "OLED INIT OK"
|
|
198
|
-
except Exception as e:
|
|
199
|
-
KC.INITED = False # display init failed (for _task auto init)
|
|
200
|
-
return f"OLED INIT NOK: {e}"
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
def display(period=1000):
|
|
204
|
-
"""
|
|
205
|
-
Create kc._display task - refresh loop
|
|
206
|
-
:param period: display refresh period in ms (min. 500ms)
|
|
207
|
-
"""
|
|
208
|
-
# [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
|
|
209
|
-
period_ms = 500 if period < 500 else period
|
|
210
|
-
state = micro_task(tag="kc._display", task=_task(period_ms=period_ms))
|
|
211
|
-
return "Starting" if state else "Already running"
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
def temperature():
|
|
215
|
-
"""
|
|
216
|
-
Measure ds18B20 temperature sensor
|
|
217
|
-
"""
|
|
218
|
-
return measure()
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
def neopixel_color_wheel(br=None):
|
|
222
|
-
"""
|
|
223
|
-
Neopixel color wheel
|
|
224
|
-
:param br: brightness value 0-100 percent
|
|
225
|
-
:param run: run led update / disable
|
|
226
|
-
"""
|
|
227
|
-
def _init():
|
|
228
|
-
if KC.NEOPIXEL_OBJ is None:
|
|
229
|
-
neopixel_pin = Pin(physical_pin('neop')) # Get Neopixel pin from LED PIN pool
|
|
230
|
-
KC.NEOPIXEL_OBJ = NeoPixel(neopixel_pin, n=1) # initialize for max 1 segment
|
|
231
|
-
return KC.NEOPIXEL_OBJ
|
|
232
|
-
# INIT
|
|
233
|
-
neo_led = _init()
|
|
234
|
-
if br is None or not isinstance(br, int): # Optional brightness param handling (load from cache)
|
|
235
|
-
br = KC.NEOPIXEL_BR
|
|
236
|
-
else:
|
|
237
|
-
KC.NEOPIXEL_BR = br # update neopixel brightness cache
|
|
238
|
-
if KC.COLOR_WHEEL is None:
|
|
239
|
-
KC.COLOR_WHEEL = _color_wheel() # init color wheel generator
|
|
240
|
-
# UPDATE
|
|
241
|
-
r, g, b = next(KC.COLOR_WHEEL) # get next color
|
|
242
|
-
br = br if br == 100 else br/100 # calculate brightness multiplier
|
|
243
|
-
r, g, b = int(r*br), int(g*br), int(b*br) # apply brightness parameter
|
|
244
|
-
neo_led[0] = (r, g, b) # Set LED element color
|
|
245
|
-
neo_led.write() # Send data to LED device
|
|
246
|
-
return {'R': r, 'G': g, 'B': b, 'S': 1, 'br': br} # Return verdict
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
def display_toggle():
|
|
250
|
-
"""
|
|
251
|
-
Display mode toggle (main/screensaver)
|
|
252
|
-
"""
|
|
253
|
-
KC.DP_main_page = not KC.DP_main_page
|
|
254
|
-
if not KC.DP_main_page:
|
|
255
|
-
# Reset display counter when goes to sleep
|
|
256
|
-
KC.DP_cnt = KC.DP_cnt_default
|
|
257
|
-
v = 'main view' if KC.DP_main_page else 'screensaver'
|
|
258
|
-
return f"Display mode: {v}"
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
def neopixel_toggle():
|
|
262
|
-
"""
|
|
263
|
-
Disable/Enable neopixel LED (brightness 0/default)
|
|
264
|
-
"""
|
|
265
|
-
KC.NEOPIXEL_BR = 0 if KC.NEOPIXEL_BR > 0 else 30
|
|
266
|
-
v = 'disabled' if KC.NEOPIXEL_BR == 0 else 'enabled'
|
|
267
|
-
return f"Neopixel: {v} br: {KC.NEOPIXEL_BR}"
|
|
268
|
-
|
|
269
|
-
def press_event():
|
|
270
|
-
"""
|
|
271
|
-
IRQ1 keychain module control function
|
|
272
|
-
- neopixel ON/OFF
|
|
273
|
-
- display wake-up (ON)
|
|
274
|
-
"""
|
|
275
|
-
# If display is ON call neopixel toggle function
|
|
276
|
-
if KC.DP_main_page:
|
|
277
|
-
# Reset display counter
|
|
278
|
-
KC.DP_cnt = KC.DP_cnt_default
|
|
279
|
-
# Neopixel color wheel disable/enable
|
|
280
|
-
return neopixel_toggle()
|
|
281
|
-
# Wake display
|
|
282
|
-
KC.DP_main_page = True
|
|
283
|
-
return f"Display mode: main view"
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
def lmdep():
|
|
287
|
-
"""
|
|
288
|
-
Load Module dependencies
|
|
289
|
-
"""
|
|
290
|
-
return 'oled', 'ds18', 'gameOfLife'
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
def pinmap():
|
|
294
|
-
"""
|
|
295
|
-
PIN MAP dump
|
|
296
|
-
"""
|
|
297
|
-
from LM_oled import pinmap as o_pmp
|
|
298
|
-
from LM_ds18 import pinmap as t_pmp
|
|
299
|
-
pmp = o_pmp()
|
|
300
|
-
pmp.update(t_pmp())
|
|
301
|
-
pmp.update(pinmap_dump(['neop']))
|
|
302
|
-
return pmp
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
def help(widgets=False):
|
|
306
|
-
"""
|
|
307
|
-
[i] micrOS LM naming convention - built-in help message
|
|
308
|
-
:return tuple:
|
|
309
|
-
(widgets=False) list of functions implemented by this application
|
|
310
|
-
(widgets=True) list of widget json for UI generation
|
|
311
|
-
"""
|
|
312
|
-
return ('load_n_init width=64 height=32 bootmsg="micrOS"',
|
|
313
|
-
'temperature', 'display period>=1000',
|
|
314
|
-
'press_event',
|
|
315
|
-
'display_toggle',
|
|
316
|
-
'neopixel_toggle',
|
|
317
|
-
'neopixel_color_wheel br=<0-100>',
|
|
318
|
-
'pinmap', 'lmdep')
|
micrOS/source/LM_lmpacman.py
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
from os import listdir, remove
|
|
2
|
-
from sys import modules
|
|
3
|
-
from Common import socket_stream
|
|
4
|
-
|
|
5
|
-
WEB_EXT = ('html', 'js', 'css')
|
|
6
|
-
|
|
7
|
-
@socket_stream
|
|
8
|
-
def listmods(msgobj=None):
|
|
9
|
-
"""
|
|
10
|
-
Load module package manager
|
|
11
|
-
- list all load modules
|
|
12
|
-
"""
|
|
13
|
-
# Dump available LMs
|
|
14
|
-
msg_buf = []
|
|
15
|
-
for k in (res.replace('LM_', '') for res in listdir()
|
|
16
|
-
if res.startswith('LM_') or res.split('.')[-1] in WEB_EXT):
|
|
17
|
-
if msgobj is None:
|
|
18
|
-
msg_buf.append(f' {k}')
|
|
19
|
-
else:
|
|
20
|
-
msgobj(f' {k}')
|
|
21
|
-
return msg_buf if len(msg_buf) > 0 else ''
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def delmod(mod=None):
|
|
25
|
-
"""
|
|
26
|
-
Module package manager
|
|
27
|
-
:param mod:
|
|
28
|
-
Delete Load Module with full name: module.py or module.mpy
|
|
29
|
-
OR delete any web resource: *.js, *.css, *.html
|
|
30
|
-
"""
|
|
31
|
-
if mod is not None and (mod.endswith('py') or mod.split('.')[-1] in WEB_EXT):
|
|
32
|
-
# LM exception list - system and lmpacman cannot be deleted
|
|
33
|
-
if 'lmpacman.' in mod or 'system.' in mod:
|
|
34
|
-
return f'Load module {mod} is in use, skip delete.'
|
|
35
|
-
try:
|
|
36
|
-
to_remove = mod if mod.split('.')[-1] in WEB_EXT else f'LM_{mod}'
|
|
37
|
-
remove(to_remove)
|
|
38
|
-
return f'Delete module: {mod}'
|
|
39
|
-
except Exception as e:
|
|
40
|
-
return f'Cannot delete: {mod}: {e}'
|
|
41
|
-
return f'Invalid value: {mod}'
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def del_duplicates():
|
|
45
|
-
"""
|
|
46
|
-
Load module package manager (Not just load modules)
|
|
47
|
-
- delete duplicated .mpy and .py resources, keep .mpy resource!
|
|
48
|
-
"""
|
|
49
|
-
msg_buf = []
|
|
50
|
-
py = list((res.split('.')[0] for res in listdir() if res.endswith('.py'))) # Normally smaller list
|
|
51
|
-
mpy = (res.split('.')[0] for res in listdir() if res.endswith('.mpy'))
|
|
52
|
-
for m in mpy:
|
|
53
|
-
# Iterate over mpy resources
|
|
54
|
-
state = True
|
|
55
|
-
if m in py and m != 'main':
|
|
56
|
-
to_delete = f'{m}.py'
|
|
57
|
-
try:
|
|
58
|
-
remove(to_delete)
|
|
59
|
-
except:
|
|
60
|
-
state = False
|
|
61
|
-
msg_buf.append(f' Delete {to_delete} {state}')
|
|
62
|
-
return '\n'.join(msg_buf) if len(msg_buf) > 0 else 'Nothing to delete.'
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def module(unload=None):
|
|
66
|
-
"""
|
|
67
|
-
List / unload loaded upython Load Modules
|
|
68
|
-
:param unload: module name to unload
|
|
69
|
-
:param unload: None - list active modules
|
|
70
|
-
:return str: verdict
|
|
71
|
-
"""
|
|
72
|
-
if unload is None:
|
|
73
|
-
return list(modules.keys())
|
|
74
|
-
if unload in modules.keys():
|
|
75
|
-
del modules[unload]
|
|
76
|
-
return f"Module unload {unload} done."
|
|
77
|
-
return f"Module unload {unload} failed."
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
@socket_stream
|
|
81
|
-
def cachedump(cdel=None, msgobj=None):
|
|
82
|
-
"""
|
|
83
|
-
Cache system persistent data storage files (.pds)
|
|
84
|
-
"""
|
|
85
|
-
if cdel is None:
|
|
86
|
-
# List pds files aka application cache
|
|
87
|
-
msg_buf = []
|
|
88
|
-
for pds in (_pds for _pds in listdir() if _pds.endswith('.pds')):
|
|
89
|
-
with open(pds, 'r') as f:
|
|
90
|
-
if msgobj is None:
|
|
91
|
-
msg_buf.append(f'{pds}: {f.read()}')
|
|
92
|
-
else:
|
|
93
|
-
msgobj(f'{pds}: {f.read()}')
|
|
94
|
-
return msg_buf if len(msg_buf) > 0 else ''
|
|
95
|
-
# Remove given pds file
|
|
96
|
-
try:
|
|
97
|
-
remove(f'{cdel}.pds')
|
|
98
|
-
return f'{cdel}.pds delete done.'
|
|
99
|
-
except:
|
|
100
|
-
return f'{cdel}.pds not exists'
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
@socket_stream
|
|
104
|
-
def micros_checksum(msgobj=None):
|
|
105
|
-
from hashlib import sha1
|
|
106
|
-
from binascii import hexlify
|
|
107
|
-
from Config import cfgget
|
|
108
|
-
|
|
109
|
-
for f_name in (_pds for _pds in listdir() if _pds.endswith('py')):
|
|
110
|
-
with open(f_name, 'rb') as f:
|
|
111
|
-
cs = hexlify(sha1(f.read()).digest()).decode('utf-8')
|
|
112
|
-
msgobj(f"{cs} {f_name}")
|
|
113
|
-
# GC collect?
|
|
114
|
-
return f"micrOS version: {cfgget('version')}"
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
def help(widgets=False):
|
|
118
|
-
"""
|
|
119
|
-
[i] micrOS LM naming convention - built-in help message
|
|
120
|
-
:return tuple:
|
|
121
|
-
(widgets=False) list of functions implemented by this application
|
|
122
|
-
(widgets=True) list of widget json for UI generation
|
|
123
|
-
"""
|
|
124
|
-
return 'listmods', 'delmod mod=<module>.py/.mpy or .js/.html/.css', 'del_duplicates',\
|
|
125
|
-
'module unload="LM_rgb/None"',\
|
|
126
|
-
'cachedump cdel="rgb.pds/None"', 'micros_checksum'
|