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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from machine import I2C, Pin
|
|
2
|
-
from microIO import
|
|
2
|
+
from microIO import bind_pin, pinmap_search
|
|
3
3
|
from Common import syslog
|
|
4
4
|
from time import sleep
|
|
5
5
|
from binascii import hexlify
|
|
@@ -24,7 +24,7 @@ def _handle_connection_error(f):
|
|
|
24
24
|
|
|
25
25
|
class AHT10:
|
|
26
26
|
def __init__(self, address = 0x38):
|
|
27
|
-
self.i2c = I2C(-1, Pin(
|
|
27
|
+
self.i2c = I2C(-1, Pin(bind_pin('i2c_scl')), Pin(bind_pin('i2c_sda')), freq = 9600)
|
|
28
28
|
self.address = address
|
|
29
29
|
if not self.init_sensor():
|
|
30
30
|
raise Exception("Could not initialize the sensor!")
|
|
@@ -84,6 +84,14 @@ class AHT10:
|
|
|
84
84
|
return self._send_sensor(b'\xBA')
|
|
85
85
|
|
|
86
86
|
|
|
87
|
+
def load():
|
|
88
|
+
"""
|
|
89
|
+
Initialize AHT10 module
|
|
90
|
+
"""
|
|
91
|
+
__init_AHT10()
|
|
92
|
+
return "AHT10 temp/hum sensor - loaded"
|
|
93
|
+
|
|
94
|
+
|
|
87
95
|
def __init_AHT10():
|
|
88
96
|
global __AHT10_OBJ
|
|
89
97
|
if __AHT10_OBJ is None:
|
|
@@ -118,7 +126,7 @@ def pinmap():
|
|
|
118
126
|
- info which pins to use for this application
|
|
119
127
|
:return dict: pin name (str) - pin value (int) pairs
|
|
120
128
|
"""
|
|
121
|
-
return
|
|
129
|
+
return pinmap_search(['i2c_scl', 'i2c_sda'])
|
|
122
130
|
|
|
123
131
|
|
|
124
132
|
def help(widgets=False):
|
|
@@ -128,4 +136,4 @@ def help(widgets=False):
|
|
|
128
136
|
(widgets=False) list of functions implemented by this application
|
|
129
137
|
(widgets=True) list of widget json for UI generation
|
|
130
138
|
"""
|
|
131
|
-
return resolve(('
|
|
139
|
+
return resolve(('TEXTBOX measure', 'reset', 'load', 'pinmap'), widgets=widgets)
|
|
@@ -6,7 +6,7 @@ https://randomnerdtutorials.com/micropython-bme280-esp32-esp8266/
|
|
|
6
6
|
|
|
7
7
|
import utime as time
|
|
8
8
|
from machine import Pin, I2C
|
|
9
|
-
from microIO import
|
|
9
|
+
from microIO import bind_pin, pinmap_search
|
|
10
10
|
from Common import notify
|
|
11
11
|
from Types import resolve
|
|
12
12
|
|
|
@@ -299,7 +299,7 @@ class BME280:
|
|
|
299
299
|
def __init_bme280_i2c():
|
|
300
300
|
global BME280_OBJ
|
|
301
301
|
if BME280_OBJ is None:
|
|
302
|
-
i2c = I2C(scl=Pin(
|
|
302
|
+
i2c = I2C(scl=Pin(bind_pin('i2c_scl')), sda=Pin(bind_pin('i2c_sda')), freq=10000)
|
|
303
303
|
BME280_OBJ = BME280(i2c=i2c)
|
|
304
304
|
return BME280_OBJ
|
|
305
305
|
|
|
@@ -308,6 +308,14 @@ def __init_bme280_i2c():
|
|
|
308
308
|
# Application functions #
|
|
309
309
|
#########################
|
|
310
310
|
|
|
311
|
+
def load():
|
|
312
|
+
"""
|
|
313
|
+
Initialize BME280 module
|
|
314
|
+
"""
|
|
315
|
+
__init_bme280_i2c()
|
|
316
|
+
return "BME280 temp/hum/pressure sensor - loaded"
|
|
317
|
+
|
|
318
|
+
|
|
311
319
|
def measure(ntfy=False):
|
|
312
320
|
"""
|
|
313
321
|
Measure with bme280
|
|
@@ -320,30 +328,10 @@ def measure(ntfy=False):
|
|
|
320
328
|
return data
|
|
321
329
|
|
|
322
330
|
|
|
323
|
-
def measure_w_co2():
|
|
324
|
-
"""
|
|
325
|
-
Measure with bme280 and mq135 (CO2)
|
|
326
|
-
:return dict: temp, hum, pressure, co2
|
|
327
|
-
"""
|
|
328
|
-
from LM_co2 import measure_mq135
|
|
329
|
-
data = measure()
|
|
330
|
-
data['co2[ppm]'] = measure_mq135(data['temp[C]'], data['hum[%]'])
|
|
331
|
-
return data
|
|
332
|
-
|
|
333
|
-
|
|
334
331
|
#######################
|
|
335
332
|
# LM helper functions #
|
|
336
333
|
#######################
|
|
337
334
|
|
|
338
|
-
def lmdep():
|
|
339
|
-
"""
|
|
340
|
-
Show Load Module dependency
|
|
341
|
-
- List of load modules used by this application
|
|
342
|
-
:return: tuple
|
|
343
|
-
"""
|
|
344
|
-
return 'co2'
|
|
345
|
-
|
|
346
|
-
|
|
347
335
|
def pinmap():
|
|
348
336
|
"""
|
|
349
337
|
[i] micrOS LM naming convention
|
|
@@ -351,7 +339,7 @@ def pinmap():
|
|
|
351
339
|
- info which pins to use for this application
|
|
352
340
|
:return dict: pin name (str) - pin value (int) pairs
|
|
353
341
|
"""
|
|
354
|
-
return
|
|
342
|
+
return pinmap_search(['i2c_scl', 'i2c_sda'])
|
|
355
343
|
|
|
356
344
|
|
|
357
345
|
def help(widgets=False):
|
|
@@ -361,5 +349,5 @@ def help(widgets=False):
|
|
|
361
349
|
(widgets=False) list of functions implemented by this application
|
|
362
350
|
(widgets=True) list of widget json for UI generation
|
|
363
351
|
"""
|
|
364
|
-
return resolve(('TEXTBOX measure ntfy=False',
|
|
365
|
-
'
|
|
352
|
+
return resolve(('TEXTBOX{"refresh": 2000} measure ntfy=False',
|
|
353
|
+
'load', 'pinmap'), widgets=widgets)
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
from sys import platform
|
|
2
1
|
from utime import sleep
|
|
3
|
-
from microIO import
|
|
4
|
-
from Common import micro_task
|
|
5
|
-
|
|
2
|
+
from microIO import bind_pin, pinmap_search
|
|
3
|
+
from Common import micro_task, notify, data_dir
|
|
4
|
+
from Types import resolve
|
|
6
5
|
|
|
7
6
|
|
|
8
7
|
#########################################
|
|
@@ -13,12 +12,14 @@ __BUZZER_OBJ = None
|
|
|
13
12
|
__BUZZER_CACHE = [600]
|
|
14
13
|
__PERSISTENT_CACHE = False
|
|
15
14
|
__TASK_TAG = "buzzer._play"
|
|
15
|
+
__FILE_CACHE = data_dir('buzzer.cache')
|
|
16
|
+
CHECK_NOTIFY = False
|
|
16
17
|
|
|
17
18
|
#########################################
|
|
18
19
|
# BUZZER RTTL #
|
|
19
20
|
#########################################
|
|
20
21
|
|
|
21
|
-
NOTE =
|
|
22
|
+
NOTE = (
|
|
22
23
|
440.0, # A
|
|
23
24
|
493.9, # B or H
|
|
24
25
|
261.6, # C
|
|
@@ -35,8 +36,8 @@ NOTE = [
|
|
|
35
36
|
0.0,
|
|
36
37
|
370.0, # F#
|
|
37
38
|
415.3, # G#
|
|
38
|
-
0.0
|
|
39
|
-
|
|
39
|
+
0.0
|
|
40
|
+
)
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
# Ring Tone Transfer Language
|
|
@@ -142,7 +143,6 @@ class RTTTL:
|
|
|
142
143
|
|
|
143
144
|
def _builtin_tones(tone=None):
|
|
144
145
|
tones = (
|
|
145
|
-
("TheSimpsons", "d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6"),
|
|
146
146
|
("Indiana", "d=4,o=5,b=250:e,8p,8f,8g,8p,1c6,8p.,d,8p,8e,1f,p.,g,8p,8a,8b,8p,1f6,p,a,8p,8b,2c6,2d6,2e6,e,8p,8f,8g,8p,1c6,p,d6,8p,8e6,1f.6,g,8p,8g,e.6,8p,d6,8p,8g,e.6,8p,d6,8p,8g,f.6,8p,e6,8p,8d6,2c6"),
|
|
147
147
|
("TakeOnMe", "d=4,o=4,b=160:8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5,8f#5,8e5,8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5"),
|
|
148
148
|
("Entertainer", "d=4,o=5,b=140:8d,8d#,8e,c6,8e,c6,8e,2c.6,8c6,8d6,8d#6,8e6,8c6,8d6,e6,8b,d6,2c6,p,8d,8d#,8e,c6,8e,c6,8e,2c.6,8p,8a,8g,8f#,8a,8c6,e6,8d6,8c6,8a,2d6"),
|
|
@@ -155,7 +155,6 @@ def _builtin_tones(tone=None):
|
|
|
155
155
|
("Smurfs", "d=32,o=5,b=200:4c#6,16p,4f#6,p,16c#6,p,8d#6,p,8b,p,4g#,16p,4c#6,p,16a#,p,8f#,p,8a#,p,4g#,4p,g#,p,a#,p,b,p,c6,p,4c#6,16p,4f#6,p,16c#6,p,8d#6,p,8b,p,4g#,16p,4c#6,p,16a#,p,8b,p,8f,p,4f#"),
|
|
156
156
|
("MissionImp", "d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d"),
|
|
157
157
|
("smbdeath", "d=4,o=5,b=90:32c6,32c6,32c6,8p,16b,16f6,16p,16f6,16f.6,16e.6,16d6,16c6,16p,16e,16p,16c"),
|
|
158
|
-
("MontyP", "d=4,o=5,b=200:f6,8e6,d6,8c#6,c6,8b,a#,8a,8g,8a,8a#,a,8g,2c6,8p,8c6,8a,8p,8a,8a,8g#,8a,8f6,8p,8c6,8c6,8p,8a,8a#,8p,8a#,8a#,8p,8c6,2d6,8p,8a#,8g,8p,8g,8g,8f#,8g,8e6,8p,8d6,8d6,8p,8a#,8a,8p,8a,8a,8p,8a#,2c6,8p,8c6"),
|
|
159
158
|
("BarbieGirl", "d=4,o=5,b=125:8g#,8e,8g#,8c#6,a,p,8f#,8d#,8f#,8b,g#,8f#,8e,p,8e,8c#,f#,c#,p,8f#,8e,g#,f#"),
|
|
160
159
|
("TakeOnMe", "d=4,o=4,b=160:8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5,8f#5,8e5,8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5")
|
|
161
160
|
)
|
|
@@ -176,22 +175,22 @@ def _builtin_tones(tone=None):
|
|
|
176
175
|
#########################################
|
|
177
176
|
|
|
178
177
|
|
|
179
|
-
def __buzzer_init():
|
|
178
|
+
def __buzzer_init(pin=None):
|
|
179
|
+
"""
|
|
180
|
+
:param pin: optional number to overwrite default pin
|
|
181
|
+
"""
|
|
180
182
|
global __BUZZER_OBJ
|
|
181
183
|
if __BUZZER_OBJ is None:
|
|
182
184
|
from machine import Pin, PWM
|
|
183
|
-
dimmer_pin = Pin(
|
|
184
|
-
|
|
185
|
-
__BUZZER_OBJ = PWM(dimmer_pin, freq=600)
|
|
186
|
-
else:
|
|
187
|
-
__BUZZER_OBJ = PWM(dimmer_pin, freq=600)
|
|
185
|
+
dimmer_pin = Pin(bind_pin('buzzer', number=pin))
|
|
186
|
+
__BUZZER_OBJ = PWM(dimmer_pin, freq=600)
|
|
188
187
|
__BUZZER_OBJ.duty(512) # 50%
|
|
189
188
|
return __BUZZER_OBJ
|
|
190
189
|
|
|
191
190
|
|
|
192
191
|
def __persistent_cache_manager(mode='r'):
|
|
193
192
|
"""
|
|
194
|
-
|
|
193
|
+
File cache
|
|
195
194
|
modes:
|
|
196
195
|
r - recover, s - save
|
|
197
196
|
"""
|
|
@@ -200,12 +199,12 @@ def __persistent_cache_manager(mode='r'):
|
|
|
200
199
|
global __BUZZER_CACHE
|
|
201
200
|
if mode == 's':
|
|
202
201
|
# SAVE CACHE
|
|
203
|
-
with open(
|
|
202
|
+
with open(__FILE_CACHE, 'w') as f:
|
|
204
203
|
f.write(','.join([str(k) for k in __BUZZER_CACHE]))
|
|
205
204
|
return
|
|
206
205
|
try:
|
|
207
206
|
# RESTORE CACHE
|
|
208
|
-
with open(
|
|
207
|
+
with open(__FILE_CACHE, 'r') as f:
|
|
209
208
|
__BUZZER_CACHE = [int(data) for data in f.read().strip().split(',')]
|
|
210
209
|
except:
|
|
211
210
|
pass
|
|
@@ -231,7 +230,9 @@ def bipp(repeat=1, freq=None):
|
|
|
231
230
|
:param freq int: 0-1000 default: 600
|
|
232
231
|
:return str: Verdict string
|
|
233
232
|
"""
|
|
234
|
-
global __BUZZER_CACHE
|
|
233
|
+
global __BUZZER_CACHE, CHECK_NOTIFY
|
|
234
|
+
if CHECK_NOTIFY and not notify():
|
|
235
|
+
return "NoBipp - notify off"
|
|
235
236
|
# restore data from cache if it was not provided
|
|
236
237
|
freq = int(__BUZZER_CACHE[0] if freq is None else freq)
|
|
237
238
|
for _ in range(repeat):
|
|
@@ -245,7 +246,7 @@ def bipp(repeat=1, freq=None):
|
|
|
245
246
|
async def _play(rtttlstr):
|
|
246
247
|
"""
|
|
247
248
|
RTTTL Piezzo Player with async job
|
|
248
|
-
:param rtttlstr str: rttl string
|
|
249
|
+
:param rtttlstr str: rttl string
|
|
249
250
|
:return str: verdict
|
|
250
251
|
"""
|
|
251
252
|
# https://github.com/dhylands/upy-rtttl/blob/master/songs.py
|
|
@@ -255,7 +256,7 @@ async def _play(rtttlstr):
|
|
|
255
256
|
task.out = "Play song..."
|
|
256
257
|
for freq, msec in tune.notes():
|
|
257
258
|
__play_tone(freq, msec)
|
|
258
|
-
await
|
|
259
|
+
await task.feed(sleep_ms=10)
|
|
259
260
|
task.out = "Song played successfully"
|
|
260
261
|
del tune
|
|
261
262
|
|
|
@@ -266,10 +267,10 @@ def play(rtttlstr='Indiana'):
|
|
|
266
267
|
:param rtttlstr str: rttl string, default: 'd=4,o=5,b=250:e,8p,8f,8g,8p,1c6,8p.,d,8p,8e,1f,p.'
|
|
267
268
|
:return str: verdict
|
|
268
269
|
"""
|
|
269
|
-
|
|
270
|
-
if
|
|
271
|
-
return
|
|
272
|
-
return
|
|
270
|
+
global CHECK_NOTIFY
|
|
271
|
+
if CHECK_NOTIFY and not notify():
|
|
272
|
+
return "NoBipp - notify off"
|
|
273
|
+
return micro_task(tag=__TASK_TAG, task=_play(rtttlstr))
|
|
273
274
|
|
|
274
275
|
|
|
275
276
|
def list_tones():
|
|
@@ -279,22 +280,20 @@ def list_tones():
|
|
|
279
280
|
return '\n'.join(list(_builtin_tones()))
|
|
280
281
|
|
|
281
282
|
|
|
282
|
-
def
|
|
283
|
+
def load(check_notify=False, pin=None, cache=True):
|
|
283
284
|
"""
|
|
284
|
-
|
|
285
|
-
:param
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
:return str:
|
|
285
|
+
Initialize buzzer module
|
|
286
|
+
:param check_notify: check notify enabled/disabled - make noise if enabled only
|
|
287
|
+
:param pin: optional number to overwrite default pin
|
|
288
|
+
:param cache: default True, store stages on disk (.cache)
|
|
289
|
+
:return str: Verdict
|
|
289
290
|
"""
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
if cache is None:
|
|
293
|
-
__PERSISTENT_CACHE = False if platform == 'esp8266' else True
|
|
294
|
-
else:
|
|
295
|
-
__PERSISTENT_CACHE = cache
|
|
291
|
+
global __PERSISTENT_CACHE, CHECK_NOTIFY
|
|
292
|
+
__PERSISTENT_CACHE = cache
|
|
296
293
|
__persistent_cache_manager('r')
|
|
297
|
-
|
|
294
|
+
CHECK_NOTIFY = check_notify
|
|
295
|
+
__buzzer_init(pin=pin)
|
|
296
|
+
return f"CACHE: {__PERSISTENT_CACHE}, check notify: {CHECK_NOTIFY}"
|
|
298
297
|
|
|
299
298
|
|
|
300
299
|
#######################
|
|
@@ -308,7 +307,7 @@ def pinmap():
|
|
|
308
307
|
- info which pins to use for this application
|
|
309
308
|
:return dict: pin name (str) - pin value (int) pairs
|
|
310
309
|
"""
|
|
311
|
-
return
|
|
310
|
+
return pinmap_search('buzzer')
|
|
312
311
|
|
|
313
312
|
|
|
314
313
|
def help(widgets=False):
|
|
@@ -318,4 +317,7 @@ def help(widgets=False):
|
|
|
318
317
|
(widgets=False) list of functions implemented by this application
|
|
319
318
|
(widgets=True) list of widget json for UI generation
|
|
320
319
|
"""
|
|
321
|
-
return 'bipp repeat
|
|
320
|
+
return resolve(('BUTTON bipp repeat=3 freq=600',
|
|
321
|
+
'BUTTON play rtttlstr=<Indiana,TakeOnMe,StarWars,MissionImp>',
|
|
322
|
+
'list_tones',
|
|
323
|
+
'load check_notify=False', 'pinmap'), widgets=widgets)
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
from machine import Pin, PWM
|
|
5
5
|
from sys import platform
|
|
6
6
|
from utime import sleep_ms
|
|
7
|
-
from Common import transition_gen, micro_task
|
|
8
|
-
import
|
|
9
|
-
from microIO import physical_pin, pinmap_dump
|
|
7
|
+
from Common import transition_gen, micro_task, data_dir
|
|
8
|
+
from microIO import bind_pin, pinmap_search
|
|
10
9
|
from random import randint
|
|
11
10
|
from Types import resolve
|
|
12
11
|
|
|
@@ -19,16 +18,17 @@ class Data:
|
|
|
19
18
|
CCT_TASK_TAG = 'cct._tran'
|
|
20
19
|
HUE_TASK_TAG = 'cct._hue'
|
|
21
20
|
TASK_STATE = False
|
|
21
|
+
FILE_CACHE = data_dir('cwww.cache')
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
#########################################
|
|
25
25
|
# ANALOG CCT WITH 2 channel PWM #
|
|
26
26
|
#########################################
|
|
27
27
|
|
|
28
|
-
def __cwww_init():
|
|
28
|
+
def __cwww_init(pin_warm=None, pin_cold=None):
|
|
29
29
|
if Data.CWWW_OBJS[0] is None or Data.CWWW_OBJS[1] is None:
|
|
30
|
-
cw = Pin(
|
|
31
|
-
ww = Pin(
|
|
30
|
+
cw = Pin(bind_pin('cwhite', pin_cold))
|
|
31
|
+
ww = Pin(bind_pin('wwhite', pin_warm))
|
|
32
32
|
if platform == 'esp8266':
|
|
33
33
|
Data.CWWW_OBJS = (PWM(cw, freq=1024),
|
|
34
34
|
PWM(ww, freq=1024))
|
|
@@ -40,7 +40,7 @@ def __cwww_init():
|
|
|
40
40
|
|
|
41
41
|
def __persistent_cache_manager(mode):
|
|
42
42
|
"""
|
|
43
|
-
|
|
43
|
+
File state cache
|
|
44
44
|
modes:
|
|
45
45
|
r - recover, s - save
|
|
46
46
|
"""
|
|
@@ -48,12 +48,12 @@ def __persistent_cache_manager(mode):
|
|
|
48
48
|
return
|
|
49
49
|
if mode == 's':
|
|
50
50
|
# SAVE CACHE
|
|
51
|
-
with open(
|
|
51
|
+
with open(Data.FILE_CACHE, 'w') as f:
|
|
52
52
|
f.write(','.join([str(k) for k in Data.CWWW_CACHE]))
|
|
53
53
|
return
|
|
54
54
|
try:
|
|
55
55
|
# RESTORE CACHE
|
|
56
|
-
with open(
|
|
56
|
+
with open(Data.FILE_CACHE, 'r') as f:
|
|
57
57
|
Data.CWWW_CACHE = [float(data) for data in f.read().strip().split(',')]
|
|
58
58
|
except:
|
|
59
59
|
pass
|
|
@@ -73,19 +73,16 @@ def __state_machine(c, w):
|
|
|
73
73
|
# Application functions #
|
|
74
74
|
#########################
|
|
75
75
|
|
|
76
|
-
def
|
|
76
|
+
def load(pin_warm=None, pin_cold=None, cache=True):
|
|
77
77
|
"""
|
|
78
|
-
|
|
79
|
-
:param
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
Initialize Cold white / Warm white LED module
|
|
79
|
+
:param pin_warm: optional number to overwrite default pin
|
|
80
|
+
:param pin_cold: optional number to overwrite default pin
|
|
81
|
+
:param cache: save/load state machine to disk (.cache)
|
|
82
82
|
:return str: Cache state
|
|
83
83
|
"""
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
Data.PERSISTENT_CACHE = False if platform == 'esp8266' else True
|
|
87
|
-
else:
|
|
88
|
-
Data.PERSISTENT_CACHE = cache
|
|
84
|
+
__cwww_init(pin_warm, pin_cold)
|
|
85
|
+
Data.PERSISTENT_CACHE = cache
|
|
89
86
|
__persistent_cache_manager('r') # recover data cache
|
|
90
87
|
if Data.CWWW_CACHE[2] == 1:
|
|
91
88
|
Data.CWWW_CACHE[2] = 0 # Force ON at boot
|
|
@@ -229,7 +226,7 @@ def transition(cw=None, ww=None, sec=1.0, wake=False):
|
|
|
229
226
|
Data.CWWW_CACHE[0] = cw_val if cw_val > 5 else 5 # SAVE VALUE TO CACHE > 5 ! because toggle
|
|
230
227
|
Data.CWWW_CACHE[1] = ww_val if ww_val > 5 else 5 # SAVE VALUE TO CACHE > 5 ! because toggle
|
|
231
228
|
my_task.out = f"Dimming: CW:{cw_val} WW:{ww_val}"
|
|
232
|
-
await
|
|
229
|
+
await my_task.feed(sleep_ms=ms_period)
|
|
233
230
|
if Data.CWWW_CACHE[2] == 1 or wake:
|
|
234
231
|
__state_machine(c=cw_val, w=ww_val)
|
|
235
232
|
my_task.out = f"Dimming DONE: CW:{cw_val} WW:{ww_val}"
|
|
@@ -241,8 +238,7 @@ def transition(cw=None, ww=None, sec=1.0, wake=False):
|
|
|
241
238
|
# Create transition generator and calculate step_ms
|
|
242
239
|
cct_gen, step_ms = transition_gen(cw_from, cw_to, ww_from, ww_to, interval_sec=sec)
|
|
243
240
|
# [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
|
|
244
|
-
|
|
245
|
-
return "Starting transition" if state else "Transition already running"
|
|
241
|
+
return micro_task(tag=Data.CCT_TASK_TAG, task=_task(ms_period=step_ms, iterable=cct_gen))
|
|
246
242
|
|
|
247
243
|
|
|
248
244
|
def hue_transition(percent, sec=1.0, wake=False):
|
|
@@ -278,7 +274,7 @@ def hue_transition(percent, sec=1.0, wake=False):
|
|
|
278
274
|
Data.CWWW_CACHE[1] = warm if warm > 5 else 5
|
|
279
275
|
my_task.out = f"HUE {int(hue_precent*0.1)}%w - CW:{cold} WW:{warm}"
|
|
280
276
|
# Feed async loop
|
|
281
|
-
await
|
|
277
|
+
await my_task.feed(sleep_ms=ms_period)
|
|
282
278
|
__state_machine(cold, warm)
|
|
283
279
|
my_task.out = f"HUE DONE {int(hue_precent*0.001)}%w - CW:{cold} WW:{warm}"
|
|
284
280
|
|
|
@@ -291,8 +287,7 @@ def hue_transition(percent, sec=1.0, wake=False):
|
|
|
291
287
|
#print("Actual percent: {}, target percent: {}".format(actual_percent, warm_percent))
|
|
292
288
|
hue_gen, step_ms = transition_gen(hue_curr_percent, percent*10, interval_sec=sec)
|
|
293
289
|
# [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
|
|
294
|
-
|
|
295
|
-
return "Starting transition" if state else "Transition already running"
|
|
290
|
+
return micro_task(tag=Data.HUE_TASK_TAG, task=_task(ms_period=step_ms, iterable=hue_gen))
|
|
296
291
|
else:
|
|
297
292
|
return "Invalid range, percent=<0-100>"
|
|
298
293
|
|
|
@@ -341,7 +336,7 @@ def pinmap():
|
|
|
341
336
|
- info which pins to use for this application
|
|
342
337
|
:return dict: pin name (str) - pin value (int) pairs
|
|
343
338
|
"""
|
|
344
|
-
return
|
|
339
|
+
return pinmap_search(['cwhite', 'wwhite'])
|
|
345
340
|
|
|
346
341
|
|
|
347
342
|
def help(widgets=False):
|
|
@@ -352,7 +347,7 @@ def help(widgets=False):
|
|
|
352
347
|
(widgets=True) list of widget json for UI generation
|
|
353
348
|
"""
|
|
354
349
|
return resolve(('WHITE white cw=<0-1000-5> ww smooth=True force=True',
|
|
355
|
-
'
|
|
350
|
+
'BUTTON toggle state=<True,False> smooth=True', 'load',
|
|
356
351
|
'SLIDER brightness percent=<0-100> smooth=True wake=True',
|
|
357
352
|
'transition cw=None ww=None sec=1.0 wake=False',
|
|
358
353
|
'hue_transition percent=<0-100> sec=1.0 wake=False',
|