micrOSDevToolKit 2.1.3__tar.gz → 2.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {micrOSDevToolKit-2.1.3/micrOSDevToolKit.egg-info → micrOSDevToolKit-2.1.4}/PKG-INFO +1 -1
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +6 -6
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_OV2640.py +12 -16
- {micrOSDevToolKit-2.1.3/toolkit/workspace/precompiled → micrOSDevToolKit-2.1.4/micrOS/source}/LM_dashboard_be.py +1 -24
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_neopixel.py +1 -1
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Shell.py +1 -1
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Types.py +7 -10
- {micrOSDevToolKit-2.1.3/toolkit/workspace/precompiled → micrOSDevToolKit-2.1.4/micrOS/source}/dashboard.html +0 -2
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/udashboard.js +28 -32
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/uwidgets.js +26 -14
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOSDevToolKit.egg-info/SOURCES.txt +1 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/setup.py +1 -1
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/file_extensions.py +0 -1
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- micrOSDevToolKit-2.1.4/toolkit/simulator_lib/node_config.json +7 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/simulator.py +11 -0
- micrOSDevToolKit-2.1.4/toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
- {micrOSDevToolKit-2.1.3/micrOS/source → micrOSDevToolKit-2.1.4/toolkit/workspace/precompiled}/LM_dashboard_be.py +1 -24
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Shell.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Types.mpy +0 -0
- {micrOSDevToolKit-2.1.3/micrOS/source → micrOSDevToolKit-2.1.4/toolkit/workspace/precompiled}/dashboard.html +0 -2
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/udashboard.js +28 -32
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/uwidgets.js +26 -14
- micrOSDevToolKit-2.1.3/toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/LICENSE +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/MANIFEST.in +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/README.md +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/devToolKit.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/__init__.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/.DS_Store +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CH34XSER_MAC/CH34X_DRV_INSTALL_INSTRUCTIONS.pdf +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CH34XSER_MAC/CH34xVCPDriver.pkg +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/media/__init__.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/media/dnd.png +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/media/logo.png +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/media/logo_mini.png +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/media/usb_port_icon.png +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/media/wifi_icon.png +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/__init__.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32-20231005-v1.21.0.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32c3-GENERIC-20240105-v1.22.1.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32c3-GENERIC-20240222-v1.22.2.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32s2-GENERIC-20240105-v1.22.1.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32s3-GENERIC-20240105-v1.22.1.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/rpi-pico-w-20231005-v1.21.0.uf2 +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/tinypico-20231005-v1.21.0.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/micropython/tinypico-usbc-UM-20240105-v1.22.1.bin +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/.DS_Store +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Common.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Config.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Debug.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Hooks.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/IO_esp32.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/IO_esp32c3.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/IO_esp32s2.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/IO_esp32s3.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/IO_qtpy.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/IO_rp2.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/IO_tinypico.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/InterConnect.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Interrupts.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_L298N_DCmotor.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_L9110_DCmotor.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_VL53L0X.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_aht10.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_bme280.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_buzzer.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_catgame.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_cct.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_co2.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_demo.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_dht11.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_dht22.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_dimmer.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_distance.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_ds18.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_esp32.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_gameOfLife.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_genIO.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_i2c.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_i2s_mic.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_intercon.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_keychain.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_ld2410.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_light_sensor.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_lmpacman.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_neoeffects.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_oled.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_oled_sh1106.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_oled_ui.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_pet_feeder.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_ph_sensor.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_presence.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_rencoder.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_rest.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_rgb.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_rgbcct.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_roboarm.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_robustness.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_rp2w.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_sdcard.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_servo.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_stepper.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_switch.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_system.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_telegram.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/LM_tinyrgb.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Network.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Notify.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Scheduler.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Server.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Tasks.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/Time.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/index.html +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/main.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/micrOS.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/micrOSloader.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/microIO.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/reset.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/uapi.js +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/urequests.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOS/source/ustyle.css +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOSDevToolKit.egg-info/requires.txt +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/setup.cfg +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/DevEnvCompile.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/DevEnvOTA.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/DevEnvUSB.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/Gateway.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/LM_to_compile.dat +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/MicrOSDevEnv.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/__init__.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/AirQualityBME280.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/CCTDemo.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/CCTTest.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/CamStream.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/CatGame.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/Dimmer.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/GetVersion.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/PresenceTest.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/RGBTest.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/RoboArm.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/SED_test.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/SystemTest.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/Template_app.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/__init__.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/_capture.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/_micPlotting.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/dashboard_apps/uLightDemo.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/img_stream.html +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/index.html +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/LocalMachine.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/SafeInput.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/SearchDevices.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/SerialDriverHandler.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/TerminalColors.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/__init__.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/micrOSClient.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/lib/pip_package_installer.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/micrOSdashboard.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/micrOSlint.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/LP_darwin.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/LP_darwin.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/LP_darwin.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/LP_darwin.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/dht.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/dotstar.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/ds18x20.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/esp32.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/framebuf.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/machine.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/micropython.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/neopixel.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/network.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/ntptime.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/onewire.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/sim_console.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/simgc.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/tinypico.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/uasyncio.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/usocket.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/ussl.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/ustruct.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/utime.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/simulator_lib/webrepl.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/socketClient.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/user_data/.include +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/user_data/node_config_archive/.include +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/user_data/webhooks/generic.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/user_data/webhooks/template.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/__init__.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Common.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Config.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Debug.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/IO_esp32.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/IO_esp32c3.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/IO_esp32s2.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_L9110_DCmotor.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_VL53L0X.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_aht10.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_bme280.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_buzzer.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_catgame.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_cct.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_co2.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_demo.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_dht11.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_dht22.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_distance.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_ds18.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_esp32.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_gameOfLife.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_i2c.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_ld2410.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_oled.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_oled_sh1106.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_pet_feeder.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_ph_sensor.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_presence.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_rencoder.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_rest.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_rgbcct.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_robustness.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_rp2w.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_sdcard.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_servo.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_stepper.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_switch.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_system.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_tinyrgb.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Network.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Notify.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Server.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/Time.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/_mpy.version +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/index.html +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/main.py +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/microIO.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/reset.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/uapi.js +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/urequests.mpy +0 -0
- {micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/ustyle.css +0 -0
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
],
|
|
39
39
|
"Types.py": [
|
|
40
40
|
9.69,
|
|
41
|
-
|
|
41
|
+
11
|
|
42
42
|
],
|
|
43
43
|
"Common.py": [
|
|
44
44
|
9.1,
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
0
|
|
210
210
|
],
|
|
211
211
|
"LM_OV2640.py": [
|
|
212
|
-
|
|
212
|
+
9.06,
|
|
213
213
|
0
|
|
214
214
|
],
|
|
215
215
|
"LM_rgb.py": [
|
|
@@ -237,8 +237,8 @@
|
|
|
237
237
|
4
|
|
238
238
|
],
|
|
239
239
|
"LM_dashboard_be.py": [
|
|
240
|
-
6.
|
|
241
|
-
|
|
240
|
+
6.5,
|
|
241
|
+
0
|
|
242
242
|
],
|
|
243
243
|
"LM_dimmer.py": [
|
|
244
244
|
8.22,
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
20
|
|
284
284
|
],
|
|
285
285
|
"load": [
|
|
286
|
-
|
|
286
|
+
6822,
|
|
287
287
|
49
|
|
288
288
|
],
|
|
289
289
|
"core_dep": [
|
|
@@ -296,6 +296,6 @@
|
|
|
296
296
|
],
|
|
297
297
|
"core_score": 9.21,
|
|
298
298
|
"load_score": 8.01,
|
|
299
|
-
"version": "2.1.
|
|
299
|
+
"version": "2.1.4-0"
|
|
300
300
|
}
|
|
301
301
|
}
|
|
@@ -5,11 +5,7 @@ except Exception as e:
|
|
|
5
5
|
import time
|
|
6
6
|
from Debug import console_write
|
|
7
7
|
from Common import rest_endpoint, syslog
|
|
8
|
-
|
|
9
|
-
try:
|
|
10
|
-
from LM_dashboard_be import widget_add
|
|
11
|
-
except:
|
|
12
|
-
widget_add = None
|
|
8
|
+
from Types import resolve
|
|
13
9
|
|
|
14
10
|
IN_CAPTURE = False # Make sure single capture in progress in the same time
|
|
15
11
|
CAM_INIT = False
|
|
@@ -62,12 +58,6 @@ def _set_web_endpoints():
|
|
|
62
58
|
# Register rest endpoint
|
|
63
59
|
rest_endpoint('cam/snapshot', _snapshot_clb)
|
|
64
60
|
rest_endpoint('cam/stream', _image_stream_clb)
|
|
65
|
-
# Add custom widgets to /dashboard (generated frontend)
|
|
66
|
-
if widget_add is not None:
|
|
67
|
-
widget_add({'OV2640': {'settings/saturation=': 'slider',
|
|
68
|
-
'settings/brightness=': 'slider',
|
|
69
|
-
'settings/contrast=': 'slider',
|
|
70
|
-
'flashlight': 'button'}})
|
|
71
61
|
|
|
72
62
|
|
|
73
63
|
def settings(quality=None, flip=None, mirror=None, effect=None, saturation=None, brightness=None, contrast=None, whitebalace=None, q=None):
|
|
@@ -238,8 +228,14 @@ def help(widgets=False):
|
|
|
238
228
|
(widgets=False) list of functions implemented by this application
|
|
239
229
|
(widgets=True) list of widget json for UI generation
|
|
240
230
|
"""
|
|
241
|
-
return 'load_n_init quality="medium/low/high" freq="default/high"'
|
|
242
|
-
'settings quality=None flip=None
|
|
243
|
-
'
|
|
244
|
-
'
|
|
245
|
-
'
|
|
231
|
+
return resolve(('load_n_init quality="medium/low/high" freq="default/high"',
|
|
232
|
+
'settings quality=None flip=None mirror=None effect="NONE"',
|
|
233
|
+
'SLIDER settings saturation=<0-100>',
|
|
234
|
+
'SLIDER settings brightness=<0-100>',
|
|
235
|
+
'SLIDER settings contrast=<0-100>',
|
|
236
|
+
'capture',
|
|
237
|
+
'photo',
|
|
238
|
+
'set_photo_endpoint',
|
|
239
|
+
'BUTTON flashlight state=None',
|
|
240
|
+
'[HINT] after load_n_init you can access the /cam/snapshot and /cam/stream endpoints',
|
|
241
|
+
'Thanks to :) https://github.com/lemariva/micropython-camera-driver'), widgets=widgets)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from Common import rest_endpoint, syslog
|
|
2
|
-
from sys import modules
|
|
3
2
|
|
|
4
|
-
WIDGETS={}
|
|
5
3
|
ENDPOINT_INITED = False
|
|
6
4
|
|
|
7
5
|
def load_n_init():
|
|
@@ -29,27 +27,6 @@ def create_dashboard():
|
|
|
29
27
|
return 'Endpoint created: /dashboard'
|
|
30
28
|
|
|
31
29
|
|
|
32
|
-
def widget_list():
|
|
33
|
-
"""
|
|
34
|
-
API HELPER: return custom widgets dict
|
|
35
|
-
"""
|
|
36
|
-
return WIDGETS
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def widget_add(widget=None):
|
|
41
|
-
"""
|
|
42
|
-
:param widget: {'OV2640': {'settings/saturation=': 'slider',
|
|
43
|
-
'settings/brightness=': <type>}}
|
|
44
|
-
<type>: 'slider', 'button', 'box', 'h1', 'h2', 'p', etc...
|
|
45
|
-
"""
|
|
46
|
-
global WIDGETS
|
|
47
|
-
if not ENDPOINT_INITED:
|
|
48
|
-
load_n_init() # auto-enable dashboard endpoint
|
|
49
|
-
if isinstance(widget, dict):
|
|
50
|
-
WIDGETS.update(widget)
|
|
51
|
-
|
|
52
|
-
|
|
53
30
|
def help(widgets=False):
|
|
54
31
|
"""
|
|
55
32
|
[i] micrOS LM naming convention - built-in help message
|
|
@@ -57,4 +34,4 @@ def help(widgets=False):
|
|
|
57
34
|
(widgets=False) list of functions implemented by this application
|
|
58
35
|
(widgets=True) list of widget json for UI generation
|
|
59
36
|
"""
|
|
60
|
-
return 'load_n_init', 'create_dashboard', '
|
|
37
|
+
return 'load_n_init', 'create_dashboard', 'help'
|
|
@@ -78,18 +78,15 @@ def resolve(help_data, widgets=False):
|
|
|
78
78
|
for msg in help_data:
|
|
79
79
|
tag = msg.split()[0].strip()
|
|
80
80
|
# TYPE DECORATION detect in help strings
|
|
81
|
-
if tag
|
|
81
|
+
if tag.isupper():
|
|
82
82
|
resolved_tag = _resolve_key(tag)
|
|
83
83
|
if resolved_tag == tag:
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
#
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
else:
|
|
91
|
-
# Remove tag - Human readable mode (decorated functions)
|
|
92
|
-
help_msg.append(msg.replace(tag, '').strip())
|
|
84
|
+
if widgets:
|
|
85
|
+
continue # Invalid tag in widget mode
|
|
86
|
+
help_msg.append(msg.replace(tag, '').strip()) # Invalid tag (OK) in human readable mode
|
|
87
|
+
continue
|
|
88
|
+
# Create json string type + extract widgets from help message
|
|
89
|
+
help_msg.append(_generate(resolved_tag, msg))
|
|
93
90
|
elif not widgets:
|
|
94
91
|
# Human readable mode (non decorated functions)
|
|
95
92
|
help_msg.append(msg)
|
|
@@ -50,8 +50,6 @@
|
|
|
50
50
|
|
|
51
51
|
// INIT DASHBOARD (load active modules -> build page)
|
|
52
52
|
DynamicWidgetLoad();
|
|
53
|
-
// INIT DASHBOARD (load custom widget commands -> build page)
|
|
54
|
-
CustomWidgetLoad('dashboard_be/widget_list')
|
|
55
53
|
|
|
56
54
|
// INIT [hidden] debug section
|
|
57
55
|
document.getElementById('toggleDebugSection').addEventListener('click', function() {
|
|
@@ -36,27 +36,41 @@ function generateElement(type, data, options={}) {
|
|
|
36
36
|
// data: rest command
|
|
37
37
|
var container = document.getElementById('dynamicContent');
|
|
38
38
|
var element;
|
|
39
|
-
paragraph = document.createElement('p');
|
|
40
39
|
if (type.toLowerCase() === 'slider') {
|
|
41
40
|
// Create slider widget
|
|
42
|
-
sliderWidget(container,
|
|
41
|
+
sliderWidget(container, data, options)
|
|
43
42
|
} else if (type.toLowerCase() === 'button') {
|
|
44
43
|
// Create button widget
|
|
45
|
-
buttonWidget(container,
|
|
44
|
+
buttonWidget(container, data, options)
|
|
46
45
|
} else if (type.toLowerCase() === 'box') {
|
|
47
46
|
// Create textbox widget
|
|
48
|
-
textBoxWidget(container,
|
|
47
|
+
textBoxWidget(container, data, options)
|
|
49
48
|
} else if (type.toLowerCase() === 'color') {
|
|
50
49
|
// Create color palette widget
|
|
51
|
-
colorPaletteWidget(container,
|
|
50
|
+
colorPaletteWidget(container, data, options)
|
|
52
51
|
} else {
|
|
53
52
|
// Create other elements
|
|
53
|
+
paragraph = document.createElement('p');
|
|
54
54
|
element = document.createElement(type);
|
|
55
55
|
element.textContent = data;
|
|
56
56
|
containerAppendChild([paragraph, element], container);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
function autoTitleLen(widgets, func) {
|
|
61
|
+
try {
|
|
62
|
+
// Create function list for comparation
|
|
63
|
+
const funcNames = widgets.map(command => command.lm_call.split(' ')[0]);
|
|
64
|
+
// Count the occurrences of the func name
|
|
65
|
+
const count = funcNames.filter(word => word === func).length;
|
|
66
|
+
// Return 2 if count is greater than 1, otherwise return 1
|
|
67
|
+
return count > 1 ? 2 : 1;
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error(error);
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
60
74
|
function craftModuleWidgets(module, widgets) {
|
|
61
75
|
// Create ALL exposed module function widgets
|
|
62
76
|
if (widgets.length === 0) {
|
|
@@ -75,18 +89,26 @@ function craftModuleWidgets(module, widgets) {
|
|
|
75
89
|
if (type === 'slider') {
|
|
76
90
|
html_type='slider';
|
|
77
91
|
type_options['range'] = item.range;
|
|
92
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
78
93
|
} else if (type === 'button' || type === 'toggle') {
|
|
79
94
|
html_type='button';
|
|
80
95
|
type_options['range'] = item.range;
|
|
96
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
81
97
|
} else if (type === 'textbox') {
|
|
82
98
|
html_type = 'box'
|
|
99
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
83
100
|
} else if (type === 'color') {
|
|
84
101
|
html_type = 'color'
|
|
102
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
85
103
|
} else {
|
|
86
104
|
console.log(`Unsupported micrOS widget html_type: ${type}`)
|
|
87
105
|
return;
|
|
88
106
|
}
|
|
89
|
-
|
|
107
|
+
try {
|
|
108
|
+
generateElement(type=html_type, data=`${module}/${lm_call}`, options=type_options);
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error(error);
|
|
111
|
+
}
|
|
90
112
|
})
|
|
91
113
|
}
|
|
92
114
|
|
|
@@ -111,30 +133,4 @@ function DynamicWidgetLoad() {
|
|
|
111
133
|
});
|
|
112
134
|
}
|
|
113
135
|
|
|
114
|
-
|
|
115
|
-
function CustomWidgetLoad(endpoint) {
|
|
116
|
-
// INIT DASHBOARD (load custom widget commands -> build page)
|
|
117
|
-
// endpoint: 'dashboard_be/widget_list' returns special dict
|
|
118
|
-
restAPI(endpoint).then(commands => {
|
|
119
|
-
console.log(commands.result)
|
|
120
|
-
const widget_dict=commands.result;
|
|
121
|
-
var opts = {};
|
|
122
|
-
opts.title_len = 3;
|
|
123
|
-
for (const module in widget_dict) {
|
|
124
|
-
if (Object.hasOwnProperty.call(widget_dict, module)) {
|
|
125
|
-
const innerObject = widget_dict[module];
|
|
126
|
-
generateElement(type='h2', data=`🧬 ${module}`);
|
|
127
|
-
// Iterate through the inner object
|
|
128
|
-
for (const func in innerObject) {
|
|
129
|
-
if (Object.hasOwnProperty.call(innerObject, func)) {
|
|
130
|
-
const api_type = innerObject[func];
|
|
131
|
-
const api_cmd = `${module}/${func}`;
|
|
132
|
-
console.log(`Gen custom Type: ${api_type} Cmd: ${api_cmd}`);
|
|
133
|
-
generateElement(type=api_type, data=api_cmd, options=opts);
|
|
134
|
-
};};};}
|
|
135
|
-
}).catch(error => {
|
|
136
|
-
console.error(error);
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
|
|
140
136
|
// craftModuleWidgets
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
// WIDGETS ELEMENTS
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const widget_indent = '40px';
|
|
4
|
+
|
|
5
|
+
function sliderWidget(container, command, options={}) {
|
|
6
|
+
var title_len = options.title_len || 1;
|
|
7
|
+
paragraph = document.createElement('p');
|
|
8
|
+
paragraph.style.textIndent = widget_indent;
|
|
9
|
+
paragraph.textContent = command.split('/').slice(1, title_len+1).join('-').replace(/=/g, '').replace(':range:', '');
|
|
6
10
|
// Create a slider
|
|
7
11
|
element = document.createElement('input');
|
|
12
|
+
element.style.marginLeft = widget_indent;
|
|
8
13
|
element.type = 'range';
|
|
9
|
-
element.min = options.
|
|
10
|
-
element.max = options.
|
|
11
|
-
element.step = options.
|
|
14
|
+
element.min = options.range[0] || 0;
|
|
15
|
+
element.max = options.range[1] || 100;
|
|
16
|
+
element.step = options.range[2] || 5;
|
|
12
17
|
element.value = Math.round((element.max-element.min)/2);
|
|
13
18
|
|
|
14
19
|
// Create a span to display the slider value
|
|
@@ -37,11 +42,14 @@ function sliderWidget(container, paragraph, command, options={}) {
|
|
|
37
42
|
containerAppendChild([paragraph, element, valueDisplay], container);
|
|
38
43
|
}
|
|
39
44
|
|
|
40
|
-
function buttonWidget(container,
|
|
41
|
-
var title_len = options.title_len ||
|
|
45
|
+
function buttonWidget(container, command, options={}) {
|
|
46
|
+
var title_len = options.title_len || 1;
|
|
47
|
+
paragraph = document.createElement('p');
|
|
48
|
+
paragraph.style.textIndent = widget_indent;
|
|
42
49
|
// Create a button
|
|
43
50
|
element = document.createElement('button');
|
|
44
|
-
element.
|
|
51
|
+
element.style.marginLeft = widget_indent;
|
|
52
|
+
element.textContent = command.split('/').slice(1, title_len+1).join('-');
|
|
45
53
|
// Add an event listener for API CALL
|
|
46
54
|
element.addEventListener('click', function () {
|
|
47
55
|
var call_cmd;
|
|
@@ -58,11 +66,14 @@ function buttonWidget(container, paragraph, command, options={}) {
|
|
|
58
66
|
containerAppendChild([paragraph, element], container);
|
|
59
67
|
}
|
|
60
68
|
|
|
61
|
-
function textBoxWidget(container,
|
|
62
|
-
var title_len = options.title_len ||
|
|
63
|
-
paragraph
|
|
69
|
+
function textBoxWidget(container, command, options={}) {
|
|
70
|
+
var title_len = options.title_len || 1;
|
|
71
|
+
paragraph = document.createElement('p');
|
|
72
|
+
paragraph.style.textIndent = widget_indent;
|
|
73
|
+
paragraph.textContent = command.split('/').slice(1, title_len+1).join('-');
|
|
64
74
|
// Create a small box (div)
|
|
65
75
|
element = document.createElement('div');
|
|
76
|
+
element.style.marginLeft = widget_indent;
|
|
66
77
|
element.style.width = '30%';
|
|
67
78
|
element.style.height = '60px';
|
|
68
79
|
element.style.paddingTop = '10px';
|
|
@@ -81,11 +92,12 @@ function textBoxWidget(container, paragraph, command, options={}) {
|
|
|
81
92
|
console.log(`[API] textBox exec: ${call_cmd}`);
|
|
82
93
|
restAPI(call_cmd).then(resp => {
|
|
83
94
|
console.log(resp.result);
|
|
84
|
-
element.textContent = JSON.stringify(resp.result, null, 4);
|
|
95
|
+
element.textContent = JSON.stringify(resp.result, null, 4);
|
|
85
96
|
containerAppendChild([paragraph, element], container);
|
|
97
|
+
});
|
|
86
98
|
}
|
|
87
99
|
|
|
88
|
-
function colorPaletteWidget(container,
|
|
100
|
+
function colorPaletteWidget(container, command, options) {
|
|
89
101
|
// TODO
|
|
90
102
|
console.log(`Dummy color widget: ${command}`)
|
|
91
103
|
}
|
|
@@ -180,6 +180,7 @@ toolkit/simulator_lib/machine.py
|
|
|
180
180
|
toolkit/simulator_lib/micropython.py
|
|
181
181
|
toolkit/simulator_lib/neopixel.py
|
|
182
182
|
toolkit/simulator_lib/network.py
|
|
183
|
+
toolkit/simulator_lib/node_config.json
|
|
183
184
|
toolkit/simulator_lib/ntptime.py
|
|
184
185
|
toolkit/simulator_lib/onewire.py
|
|
185
186
|
toolkit/simulator_lib/sim_console.py
|
|
@@ -18,7 +18,7 @@ dependencies = ['adafruit-ampy', 'mpremote', 'esptool', 'ipaddress', 'netaddr',
|
|
|
18
18
|
|
|
19
19
|
setuptools.setup(
|
|
20
20
|
name='micrOSDevToolKit',
|
|
21
|
-
version='2.1.
|
|
21
|
+
version='2.1.4',
|
|
22
22
|
author='Marcell Ban',
|
|
23
23
|
author_email='miros.framework@gmail.com',
|
|
24
24
|
description='Development and deployment environment for micrOS, the diy micropython automation OS (IoT)',
|
|
Binary file
|
|
@@ -12,6 +12,15 @@ from sim_console import console
|
|
|
12
12
|
import micrOSloader
|
|
13
13
|
import LocalMachine
|
|
14
14
|
|
|
15
|
+
ENABLE_SIM_CONFIG = True
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def apply_sim_node_config():
|
|
19
|
+
if ENABLE_SIM_CONFIG:
|
|
20
|
+
print("Copy SIM config - for testing: enable webui, etc.")
|
|
21
|
+
sim_config = os.path.join(MYPATH, 'node_config.json')
|
|
22
|
+
LocalMachine.FileHandler().copy(sim_config, os.path.join(SIM_PATH))
|
|
23
|
+
|
|
15
24
|
|
|
16
25
|
class micrOSIM():
|
|
17
26
|
SIM_PROCESS_LIST = []
|
|
@@ -47,6 +56,8 @@ class micrOSIM():
|
|
|
47
56
|
if trace:
|
|
48
57
|
# Trace handling - DEBUG
|
|
49
58
|
sys.settrace(trace_func)
|
|
59
|
+
|
|
60
|
+
apply_sim_node_config()
|
|
50
61
|
micrOSloader.main()
|
|
51
62
|
|
|
52
63
|
console("[micrOSIM] Stop micrOS ({})".format(SIM_PATH))
|
|
Binary file
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from Common import rest_endpoint, syslog
|
|
2
|
-
from sys import modules
|
|
3
2
|
|
|
4
|
-
WIDGETS={}
|
|
5
3
|
ENDPOINT_INITED = False
|
|
6
4
|
|
|
7
5
|
def load_n_init():
|
|
@@ -29,27 +27,6 @@ def create_dashboard():
|
|
|
29
27
|
return 'Endpoint created: /dashboard'
|
|
30
28
|
|
|
31
29
|
|
|
32
|
-
def widget_list():
|
|
33
|
-
"""
|
|
34
|
-
API HELPER: return custom widgets dict
|
|
35
|
-
"""
|
|
36
|
-
return WIDGETS
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def widget_add(widget=None):
|
|
41
|
-
"""
|
|
42
|
-
:param widget: {'OV2640': {'settings/saturation=': 'slider',
|
|
43
|
-
'settings/brightness=': <type>}}
|
|
44
|
-
<type>: 'slider', 'button', 'box', 'h1', 'h2', 'p', etc...
|
|
45
|
-
"""
|
|
46
|
-
global WIDGETS
|
|
47
|
-
if not ENDPOINT_INITED:
|
|
48
|
-
load_n_init() # auto-enable dashboard endpoint
|
|
49
|
-
if isinstance(widget, dict):
|
|
50
|
-
WIDGETS.update(widget)
|
|
51
|
-
|
|
52
|
-
|
|
53
30
|
def help(widgets=False):
|
|
54
31
|
"""
|
|
55
32
|
[i] micrOS LM naming convention - built-in help message
|
|
@@ -57,4 +34,4 @@ def help(widgets=False):
|
|
|
57
34
|
(widgets=False) list of functions implemented by this application
|
|
58
35
|
(widgets=True) list of widget json for UI generation
|
|
59
36
|
"""
|
|
60
|
-
return 'load_n_init', 'create_dashboard', '
|
|
37
|
+
return 'load_n_init', 'create_dashboard', 'help'
|
{micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/LM_neopixel.mpy
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -50,8 +50,6 @@
|
|
|
50
50
|
|
|
51
51
|
// INIT DASHBOARD (load active modules -> build page)
|
|
52
52
|
DynamicWidgetLoad();
|
|
53
|
-
// INIT DASHBOARD (load custom widget commands -> build page)
|
|
54
|
-
CustomWidgetLoad('dashboard_be/widget_list')
|
|
55
53
|
|
|
56
54
|
// INIT [hidden] debug section
|
|
57
55
|
document.getElementById('toggleDebugSection').addEventListener('click', function() {
|
{micrOSDevToolKit-2.1.3 → micrOSDevToolKit-2.1.4}/toolkit/workspace/precompiled/udashboard.js
RENAMED
|
@@ -36,27 +36,41 @@ function generateElement(type, data, options={}) {
|
|
|
36
36
|
// data: rest command
|
|
37
37
|
var container = document.getElementById('dynamicContent');
|
|
38
38
|
var element;
|
|
39
|
-
paragraph = document.createElement('p');
|
|
40
39
|
if (type.toLowerCase() === 'slider') {
|
|
41
40
|
// Create slider widget
|
|
42
|
-
sliderWidget(container,
|
|
41
|
+
sliderWidget(container, data, options)
|
|
43
42
|
} else if (type.toLowerCase() === 'button') {
|
|
44
43
|
// Create button widget
|
|
45
|
-
buttonWidget(container,
|
|
44
|
+
buttonWidget(container, data, options)
|
|
46
45
|
} else if (type.toLowerCase() === 'box') {
|
|
47
46
|
// Create textbox widget
|
|
48
|
-
textBoxWidget(container,
|
|
47
|
+
textBoxWidget(container, data, options)
|
|
49
48
|
} else if (type.toLowerCase() === 'color') {
|
|
50
49
|
// Create color palette widget
|
|
51
|
-
colorPaletteWidget(container,
|
|
50
|
+
colorPaletteWidget(container, data, options)
|
|
52
51
|
} else {
|
|
53
52
|
// Create other elements
|
|
53
|
+
paragraph = document.createElement('p');
|
|
54
54
|
element = document.createElement(type);
|
|
55
55
|
element.textContent = data;
|
|
56
56
|
containerAppendChild([paragraph, element], container);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
function autoTitleLen(widgets, func) {
|
|
61
|
+
try {
|
|
62
|
+
// Create function list for comparation
|
|
63
|
+
const funcNames = widgets.map(command => command.lm_call.split(' ')[0]);
|
|
64
|
+
// Count the occurrences of the func name
|
|
65
|
+
const count = funcNames.filter(word => word === func).length;
|
|
66
|
+
// Return 2 if count is greater than 1, otherwise return 1
|
|
67
|
+
return count > 1 ? 2 : 1;
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error(error);
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
60
74
|
function craftModuleWidgets(module, widgets) {
|
|
61
75
|
// Create ALL exposed module function widgets
|
|
62
76
|
if (widgets.length === 0) {
|
|
@@ -75,18 +89,26 @@ function craftModuleWidgets(module, widgets) {
|
|
|
75
89
|
if (type === 'slider') {
|
|
76
90
|
html_type='slider';
|
|
77
91
|
type_options['range'] = item.range;
|
|
92
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
78
93
|
} else if (type === 'button' || type === 'toggle') {
|
|
79
94
|
html_type='button';
|
|
80
95
|
type_options['range'] = item.range;
|
|
96
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
81
97
|
} else if (type === 'textbox') {
|
|
82
98
|
html_type = 'box'
|
|
99
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
83
100
|
} else if (type === 'color') {
|
|
84
101
|
html_type = 'color'
|
|
102
|
+
type_options['title_len'] = autoTitleLen(widgets, lm_call.split('/')[0]);
|
|
85
103
|
} else {
|
|
86
104
|
console.log(`Unsupported micrOS widget html_type: ${type}`)
|
|
87
105
|
return;
|
|
88
106
|
}
|
|
89
|
-
|
|
107
|
+
try {
|
|
108
|
+
generateElement(type=html_type, data=`${module}/${lm_call}`, options=type_options);
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error(error);
|
|
111
|
+
}
|
|
90
112
|
})
|
|
91
113
|
}
|
|
92
114
|
|
|
@@ -111,30 +133,4 @@ function DynamicWidgetLoad() {
|
|
|
111
133
|
});
|
|
112
134
|
}
|
|
113
135
|
|
|
114
|
-
|
|
115
|
-
function CustomWidgetLoad(endpoint) {
|
|
116
|
-
// INIT DASHBOARD (load custom widget commands -> build page)
|
|
117
|
-
// endpoint: 'dashboard_be/widget_list' returns special dict
|
|
118
|
-
restAPI(endpoint).then(commands => {
|
|
119
|
-
console.log(commands.result)
|
|
120
|
-
const widget_dict=commands.result;
|
|
121
|
-
var opts = {};
|
|
122
|
-
opts.title_len = 3;
|
|
123
|
-
for (const module in widget_dict) {
|
|
124
|
-
if (Object.hasOwnProperty.call(widget_dict, module)) {
|
|
125
|
-
const innerObject = widget_dict[module];
|
|
126
|
-
generateElement(type='h2', data=`🧬 ${module}`);
|
|
127
|
-
// Iterate through the inner object
|
|
128
|
-
for (const func in innerObject) {
|
|
129
|
-
if (Object.hasOwnProperty.call(innerObject, func)) {
|
|
130
|
-
const api_type = innerObject[func];
|
|
131
|
-
const api_cmd = `${module}/${func}`;
|
|
132
|
-
console.log(`Gen custom Type: ${api_type} Cmd: ${api_cmd}`);
|
|
133
|
-
generateElement(type=api_type, data=api_cmd, options=opts);
|
|
134
|
-
};};};}
|
|
135
|
-
}).catch(error => {
|
|
136
|
-
console.error(error);
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
|
|
140
136
|
// craftModuleWidgets
|