micrOSDevToolKit 2.2.0__tar.gz → 2.4.0__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.
Files changed (356) hide show
  1. {micrOSDevToolKit-2.2.0/micrOSDevToolKit.egg-info → micrOSDevToolKit-2.4.0}/PKG-INFO +1 -1
  2. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +17 -13
  3. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Common.py +7 -7
  4. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Debug.py +15 -96
  5. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_OV2640.py +1 -0
  6. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_buzzer.py +1 -1
  7. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_cct.py +1 -1
  8. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_dimmer.py +1 -1
  9. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_keychain.py +11 -11
  10. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_neopixel.py +3 -3
  11. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_oled_ui.py +1 -6
  12. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_rgb.py +2 -2
  13. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_rgbcct.py +1 -1
  14. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_robustness.py +2 -1
  15. micrOSDevToolKit-2.4.0/micrOS/source/Logger.py +79 -0
  16. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Server.py +13 -14
  17. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Shell.py +1 -1
  18. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Time.py +2 -4
  19. micrOSDevToolKit-2.4.0/micrOS/source/Types.py +94 -0
  20. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/microIO.py +25 -30
  21. {micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled → micrOSDevToolKit-2.4.0/micrOS/source}/uapi.js +25 -34
  22. micrOSDevToolKit-2.4.0/micrOS/source/udashboard.js +109 -0
  23. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/urequests.py +4 -1
  24. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/ustyle.css +1 -1
  25. micrOSDevToolKit-2.4.0/micrOS/source/uwidgets.js +172 -0
  26. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
  27. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOSDevToolKit.egg-info/SOURCES.txt +3 -0
  28. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/setup.py +1 -1
  29. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/SystemTest.py +21 -16
  30. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/Common.mpy +0 -0
  31. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/Debug.mpy +0 -0
  32. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
  33. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_buzzer.mpy +0 -0
  34. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_cct.mpy +0 -0
  35. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
  36. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
  37. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
  38. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
  39. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
  40. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_rgbcct.mpy +0 -0
  41. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_robustness.py +2 -1
  42. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/Logger.mpy +0 -0
  43. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/Server.mpy +0 -0
  44. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  45. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Time.mpy +0 -0
  46. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/Types.mpy +0 -0
  47. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/microIO.mpy +0 -0
  48. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/node_config.json +1 -0
  49. {micrOSDevToolKit-2.2.0/micrOS/source → micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled}/uapi.js +25 -34
  50. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/udashboard.js +109 -0
  51. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/urequests.mpy +0 -0
  52. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/ustyle.css +1 -1
  53. micrOSDevToolKit-2.4.0/toolkit/workspace/precompiled/uwidgets.js +172 -0
  54. micrOSDevToolKit-2.2.0/micrOS/source/Types.py +0 -106
  55. micrOSDevToolKit-2.2.0/micrOS/source/udashboard.js +0 -137
  56. micrOSDevToolKit-2.2.0/micrOS/source/uwidgets.js +0 -179
  57. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/Common.mpy +0 -0
  58. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/Debug.mpy +0 -0
  59. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/Server.mpy +0 -0
  60. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/Types.mpy +0 -0
  61. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/microIO.mpy +0 -0
  62. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/udashboard.js +0 -137
  63. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/urequests.mpy +0 -0
  64. micrOSDevToolKit-2.2.0/toolkit/workspace/precompiled/uwidgets.js +0 -179
  65. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/LICENSE +0 -0
  66. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/MANIFEST.in +0 -0
  67. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/README.md +0 -0
  68. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/devToolKit.py +0 -0
  69. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/__init__.py +0 -0
  70. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/.DS_Store +0 -0
  71. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CH34XSER_MAC/CH34X_DRV_INSTALL_INSTRUCTIONS.pdf +0 -0
  72. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CH34XSER_MAC/CH34xVCPDriver.pkg +0 -0
  73. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  74. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  75. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  76. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  77. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  78. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  79. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  80. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  81. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  82. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  83. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  84. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  85. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  86. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/media/__init__.py +0 -0
  87. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/media/dnd.png +0 -0
  88. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/media/logo.png +0 -0
  89. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/media/logo_mini.png +0 -0
  90. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/media/usb_port_icon.png +0 -0
  91. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/media/wifi_icon.png +0 -0
  92. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/__init__.py +0 -0
  93. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32-20231005-v1.21.0.bin +0 -0
  94. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32c3-GENERIC-20240105-v1.22.1.bin +0 -0
  95. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32c3-GENERIC-20240222-v1.22.2.bin +0 -0
  96. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  97. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32s2-GENERIC-20240105-v1.22.1.bin +0 -0
  98. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
  99. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32s3-GENERIC-20240105-v1.22.1.bin +0 -0
  100. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
  101. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/rpi-pico-w-20231005-v1.21.0.uf2 +0 -0
  102. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/tinypico-20231005-v1.21.0.bin +0 -0
  103. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/micropython/tinypico-usbc-UM-20240105-v1.22.1.bin +0 -0
  104. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/.DS_Store +0 -0
  105. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Config.py +0 -0
  106. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Hooks.py +0 -0
  107. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/IO_esp32.py +0 -0
  108. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/IO_esp32c3.py +0 -0
  109. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/IO_esp32s2.py +0 -0
  110. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/IO_esp32s3.py +0 -0
  111. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/IO_qtpy.py +0 -0
  112. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/IO_rp2.py +0 -0
  113. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/IO_tinypico.py +0 -0
  114. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/InterConnect.py +0 -0
  115. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Interrupts.py +0 -0
  116. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_L298N_DCmotor.py +0 -0
  117. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_L9110_DCmotor.py +0 -0
  118. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_VL53L0X.py +0 -0
  119. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_aht10.py +0 -0
  120. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_bme280.py +0 -0
  121. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_catgame.py +0 -0
  122. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_co2.py +0 -0
  123. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_dashboard_be.py +0 -0
  124. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_demo.py +0 -0
  125. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_dht11.py +0 -0
  126. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_dht22.py +0 -0
  127. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_distance.py +0 -0
  128. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_ds18.py +0 -0
  129. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_esp32.py +0 -0
  130. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_gameOfLife.py +0 -0
  131. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_genIO.py +0 -0
  132. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_i2c.py +0 -0
  133. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_i2s_mic.py +0 -0
  134. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_intercon.py +0 -0
  135. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_ld2410.py +0 -0
  136. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_light_sensor.py +0 -0
  137. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_lmpacman.py +0 -0
  138. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_neoeffects.py +0 -0
  139. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_oled.py +0 -0
  140. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_oled_sh1106.py +0 -0
  141. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_pet_feeder.py +0 -0
  142. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_ph_sensor.py +0 -0
  143. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_presence.py +0 -0
  144. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_rencoder.py +0 -0
  145. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_rest.py +0 -0
  146. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_roboarm.py +0 -0
  147. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_rp2w.py +0 -0
  148. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_sdcard.py +0 -0
  149. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_servo.py +0 -0
  150. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_stepper.py +0 -0
  151. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_switch.py +0 -0
  152. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_system.py +0 -0
  153. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_telegram.py +0 -0
  154. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/LM_tinyrgb.py +0 -0
  155. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Network.py +0 -0
  156. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Notify.py +0 -0
  157. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Scheduler.py +0 -0
  158. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/Tasks.py +0 -0
  159. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/dashboard.html +0 -0
  160. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/index.html +0 -0
  161. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/main.py +0 -0
  162. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/micrOS.py +0 -0
  163. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/micrOSloader.py +0 -0
  164. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOS/source/reset.py +0 -0
  165. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  166. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  167. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  168. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/setup.cfg +0 -0
  169. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/DevEnvCompile.py +0 -0
  170. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/DevEnvOTA.py +0 -0
  171. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/DevEnvUSB.py +0 -0
  172. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/Gateway.py +0 -0
  173. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/LM_to_compile.dat +0 -0
  174. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/MicrOSDevEnv.py +0 -0
  175. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/__init__.py +0 -0
  176. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/AirQualityBME280.py +0 -0
  177. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -0
  178. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  179. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/CCTTest.py +0 -0
  180. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/CamStream.py +0 -0
  181. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/CatGame.py +0 -0
  182. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/Dimmer.py +0 -0
  183. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/GetVersion.py +0 -0
  184. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  185. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  186. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  187. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  188. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/RGBTest.py +0 -0
  189. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/RoboArm.py +0 -0
  190. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/SED_test.py +0 -0
  191. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/Template_app.py +0 -0
  192. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/__init__.py +0 -0
  193. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/_capture.py +0 -0
  194. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  195. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  196. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  197. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/img_stream.html +0 -0
  198. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/index.html +0 -0
  199. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/LocalMachine.py +0 -0
  200. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/SafeInput.py +0 -0
  201. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/SearchDevices.py +0 -0
  202. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/SerialDriverHandler.py +0 -0
  203. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/TerminalColors.py +0 -0
  204. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/__init__.py +0 -0
  205. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/file_extensions.py +0 -0
  206. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/micrOSClient.py +0 -0
  207. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/lib/pip_package_installer.py +0 -0
  208. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/micrOSdashboard.py +0 -0
  209. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/micrOSlint.py +0 -0
  210. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/LP_darwin.py +0 -0
  211. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/LP_darwin.cpython-312.pyc +0 -0
  212. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/LP_darwin.cpython-38.pyc +0 -0
  213. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/LP_darwin.cpython-39.pyc +0 -0
  214. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  215. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  216. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  217. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  218. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  219. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  220. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  221. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  222. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  223. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  224. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  225. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  226. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  227. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  228. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  229. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  230. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  231. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  232. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  233. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  234. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  235. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  236. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  237. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  238. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  239. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  240. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  241. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  242. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  243. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  244. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
  245. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
  246. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
  247. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  248. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  249. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  250. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  251. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  252. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  253. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  254. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  255. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  256. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  257. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  258. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  259. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  260. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  261. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  262. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  263. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  264. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  265. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  266. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  267. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  268. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  269. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/dht.py +0 -0
  270. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/dotstar.py +0 -0
  271. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/ds18x20.py +0 -0
  272. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/esp32.py +0 -0
  273. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/framebuf.py +0 -0
  274. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/machine.py +0 -0
  275. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/micropython.py +0 -0
  276. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/neopixel.py +0 -0
  277. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/network.py +0 -0
  278. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/node_config.json +0 -0
  279. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/ntptime.py +0 -0
  280. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/onewire.py +0 -0
  281. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/sim_console.py +0 -0
  282. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/simgc.py +0 -0
  283. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/simulator.py +0 -0
  284. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/tinypico.py +0 -0
  285. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/uasyncio.py +0 -0
  286. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/usocket.py +0 -0
  287. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/ussl.py +0 -0
  288. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/ustruct.py +0 -0
  289. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/utime.py +0 -0
  290. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/simulator_lib/webrepl.py +0 -0
  291. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/socketClient.py +0 -0
  292. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/user_data/.include +0 -0
  293. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/user_data/webhooks/generic.py +0 -0
  294. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/user_data/webhooks/template.py +0 -0
  295. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/__init__.py +0 -0
  296. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Config.mpy +0 -0
  297. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  298. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/IO_esp32.mpy +0 -0
  299. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/IO_esp32c3.mpy +0 -0
  300. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/IO_esp32s2.mpy +0 -0
  301. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
  302. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
  303. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
  304. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
  305. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  306. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  307. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
  308. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_L9110_DCmotor.py +0 -0
  309. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_VL53L0X.py +0 -0
  310. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_aht10.mpy +0 -0
  311. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_bme280.mpy +0 -0
  312. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_catgame.py +0 -0
  313. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_co2.mpy +0 -0
  314. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_dashboard_be.py +0 -0
  315. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_demo.py +0 -0
  316. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_dht11.mpy +0 -0
  317. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_dht22.mpy +0 -0
  318. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_distance.py +0 -0
  319. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_ds18.mpy +0 -0
  320. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_esp32.py +0 -0
  321. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_gameOfLife.mpy +0 -0
  322. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
  323. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_i2c.py +0 -0
  324. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
  325. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
  326. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_ld2410.mpy +0 -0
  327. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
  328. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
  329. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
  330. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_oled.mpy +0 -0
  331. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_oled_sh1106.mpy +0 -0
  332. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_pet_feeder.py +0 -0
  333. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_ph_sensor.py +0 -0
  334. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_presence.mpy +0 -0
  335. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_rencoder.py +0 -0
  336. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_rest.mpy +0 -0
  337. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
  338. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_rp2w.py +0 -0
  339. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_sdcard.py +0 -0
  340. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_servo.mpy +0 -0
  341. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_stepper.mpy +0 -0
  342. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_switch.mpy +0 -0
  343. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_system.mpy +0 -0
  344. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
  345. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/LM_tinyrgb.mpy +0 -0
  346. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Network.mpy +0 -0
  347. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  348. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  349. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  350. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/_mpy.version +0 -0
  351. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/dashboard.html +0 -0
  352. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/index.html +0 -0
  353. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/main.py +0 -0
  354. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  355. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  356. {micrOSDevToolKit-2.2.0 → micrOSDevToolKit-2.4.0}/toolkit/workspace/precompiled/reset.mpy +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: micrOSDevToolKit
3
- Version: 2.2.0
3
+ Version: 2.4.0
4
4
  Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
5
  Home-page: https://github.com/BxNxM/micrOS
6
6
  Author: Marcell Ban
@@ -13,8 +13,8 @@
13
13
  1
14
14
  ],
15
15
  "Server.py": [
16
- 9.29,
17
- 4
16
+ 9.38,
17
+ 3
18
18
  ],
19
19
  "Tasks.py": [
20
20
  9.71,
@@ -37,11 +37,15 @@
37
37
  2
38
38
  ],
39
39
  "Types.py": [
40
- 9.54,
40
+ 9.84,
41
41
  22
42
42
  ],
43
+ "Logger.py": [
44
+ 8.33,
45
+ 3
46
+ ],
43
47
  "Common.py": [
44
- 9.21,
48
+ 9.33,
45
49
  26
46
50
  ],
47
51
  "InterConnect.py": [
@@ -49,7 +53,7 @@
49
53
  1
50
54
  ],
51
55
  "Debug.py": [
52
- 8.72,
56
+ 8.54,
53
57
  20
54
58
  ],
55
59
  "Network.py": [
@@ -61,7 +65,7 @@
61
65
  1
62
66
  ],
63
67
  "microIO.py": [
64
- 9.08,
68
+ 9.17,
65
69
  38
66
70
  ],
67
71
  "micrOS.py": [
@@ -77,7 +81,7 @@
77
81
  0
78
82
  ],
79
83
  "urequests.py": [
80
- 8.9,
84
+ 8.83,
81
85
  4
82
86
  ],
83
87
  "LM_roboarm.py": [
@@ -101,7 +105,7 @@
101
105
  3
102
106
  ],
103
107
  "LM_robustness.py": [
104
- 7.5,
108
+ 7.57,
105
109
  0
106
110
  ],
107
111
  "LM_co2.py": [
@@ -279,11 +283,11 @@
279
283
  },
280
284
  "summary": {
281
285
  "core": [
282
- 3108,
283
- 20
286
+ 3100,
287
+ 21
284
288
  ],
285
289
  "load": [
286
- 6930,
290
+ 6927,
287
291
  49
288
292
  ],
289
293
  "core_dep": [
@@ -294,8 +298,8 @@
294
298
  true,
295
299
  7
296
300
  ],
297
- "core_score": 9.2,
301
+ "core_score": 9.17,
298
302
  "load_score": 8.07,
299
- "version": "2.2.1-0"
303
+ "version": "2.4.0-0"
300
304
  }
301
305
  }
@@ -3,15 +3,15 @@ micrOS Load Module programming API-s
3
3
  Designed by Marcell Ban aka BxNxM
4
4
  """
5
5
 
6
- from Server import SocketServer
7
- from Server import WebCli
6
+ from Server import SocketServer, WebCli
7
+ from Debug import errlog_add
8
+ from Logger import logger, log_get
8
9
  from microIO import physical_pin
9
- from Debug import logger, log_get, errlog_add
10
10
  from machine import Pin, ADC
11
11
  try:
12
12
  from Tasks import TaskBase, Manager
13
- except Exception as e:
14
- print(f"Import ERROR, TaskManager: {e}")
13
+ except Exception as ie:
14
+ print(f"Import ERROR, TaskManager: {ie}")
15
15
  TaskBase, Manager = None, None
16
16
  TELEGRAM = None
17
17
 
@@ -178,10 +178,10 @@ def notify(text):
178
178
  def web_endpoint(endpoint, function):
179
179
  """
180
180
  Add test endpoint <localhost.local>/endpoint from Load Modules
181
- Simple:
181
+ Simple function:
182
182
  image/jpeg | text/html | text/plain, <data>
183
183
  <data>: binary | string
184
- Stream:
184
+ Stream function:
185
185
  multipart/x-mixed-replace | multipart/form-data, <data>
186
186
  <data>: {'callback':<func>, 'content-type': image/jpeg | audio/l16;*}
187
187
  """
@@ -1,7 +1,9 @@
1
- import os
2
- from time import localtime
1
+ from os import listdir, remove
3
2
  from machine import Pin
4
-
3
+ try:
4
+ from Logger import syslog
5
+ except:
6
+ syslog = None
5
7
  try:
6
8
  from microIO import physical_pin, pinmap_dump, detect_platform
7
9
  except:
@@ -26,11 +28,12 @@ class DebugCfg:
26
28
  # Check LogicalPins module loadable (robustness...)
27
29
  return
28
30
  micro_platform = detect_platform()
29
- pled = pinmap_dump('builtin')['builtin']
30
31
  if micro_platform == "tinypico":
31
32
  # Progress led for TinyPico
32
33
  DebugCfg._init_apa102()
33
- elif pled is not None:
34
+ return
35
+ pled = pinmap_dump('builtin')['builtin']
36
+ if pled is not None:
34
37
  if isinstance(pled, int):
35
38
  # SET PROGRESS LED WITH BUILT-IN step FUNCTION
36
39
  if micro_platform == "esp32s3":
@@ -131,85 +134,6 @@ def console_write(msg):
131
134
  except Exception as e:
132
135
  errlog_add(f"[ERR] console_write: {e}", console=False)
133
136
 
134
- #############################################
135
- # LOGGING WITH DATA ROTATION #
136
- #############################################
137
-
138
-
139
- def logger(data, f_name, limit):
140
- """
141
- Create generic logger function
142
- - implements log line rotation
143
- - automatic time stump
144
- :param data: input string data to log
145
- :param f_name: file name to use
146
- :param limit: line limit for log rotation
147
- return write verdict - true / false
148
- INFO: hardcoded max data number = 30
149
- """
150
- def _logger(_data, _f_name, _limit, f_mode='r+'):
151
- _limit = 30 if _limit > 30 else _limit
152
- # [1] GET TIME STUMP
153
- ts_buff = [str(k) for k in localtime()]
154
- ts = ".".join(ts_buff[0:3]) + "-" + ":".join(ts_buff[3:6])
155
- # [2] OPEN FILE - WRITE DATA WITH TS
156
- with open(_f_name, f_mode) as f:
157
- _data = f"{ts} {_data}\n"
158
- # read file lines and filter by time stump chunks (hack for replace truncate)
159
- lines = [_l for _l in f.readlines() if '-' in _l and '.' in _l]
160
- # get file params
161
- lines_len = len(lines)
162
- lines.append(_data)
163
- f.seek(0)
164
- # line data rotate
165
- if lines_len >= _limit:
166
- lines = lines[-_limit:]
167
- lines_str = ''.join(lines)
168
- else:
169
- lines_str = ''.join(lines)
170
- # write file
171
- f.write(lines_str)
172
-
173
- # Run logger
174
- try:
175
- # There is file - append 'r+'
176
- _logger(data, f_name, limit)
177
- except:
178
- try:
179
- # There is no file - create 'a+'
180
- _logger(data, f_name, limit, 'a+')
181
- except:
182
- return False
183
- return True
184
-
185
-
186
- def log_get(f_name, msgobj=None):
187
- """
188
- Get and stream (ver osocket/stdout) .log file's content and count "critical" errors
189
- - critical error tag in log line: [ERR]
190
- """
191
- err_cnt = 0
192
- try:
193
- with open(f_name, 'r') as f:
194
- eline = f.readline().strip()
195
- while eline:
196
- # GET error from log line (tag: [ERR])
197
- err_cnt += 1 if "[ERR]" in eline else 0
198
- # GIVE BACK .log file contents
199
- if msgobj is None:
200
- console_write(eline)
201
- else:
202
- msgobj(eline)
203
- eline = f.readline().strip()
204
- except:
205
- pass
206
- return err_cnt
207
-
208
-
209
- #############################################
210
- # ERROR LOGGING #
211
- #############################################
212
-
213
137
 
214
138
  def errlog_add(data, console=True):
215
139
  """
@@ -218,23 +142,18 @@ def errlog_add(data, console=True):
218
142
  :return: is ok
219
143
  """
220
144
  if console:
221
- console_write(msg=data)
222
- return logger(data, 'err.log', limit=6)
145
+ console_write(data)
146
+ return False if syslog is None else syslog(data)
223
147
 
224
148
 
225
149
  def errlog_get(msgobj=None):
226
- f_name = 'err.log'
227
- errcnt = log_get(f_name, msgobj)
228
150
  # Return error number
229
- return errcnt
151
+ return -1 if syslog is None else syslog(msgobj=msgobj)
230
152
 
231
153
 
232
154
  def errlog_clean(msgobj=None):
233
- to_del = [file for file in os.listdir() if file.endswith('.log')]
155
+ to_del = [file for file in listdir() if file.endswith('.log')]
234
156
  for _del in to_del:
235
- del_msg = f" Delete: {_del}"
236
- if msgobj is None:
237
- console_write(del_msg)
238
- else:
239
- msgobj(del_msg)
240
- os.remove(_del)
157
+ if msgobj is not None:
158
+ msgobj(f" Delete: {_del}")
159
+ remove(_del)
@@ -233,6 +233,7 @@ def help(widgets=False):
233
233
  'SLIDER settings saturation=<0-100>',
234
234
  'SLIDER settings brightness=<0-100>',
235
235
  'SLIDER settings contrast=<0-100>',
236
+ 'BUTTON settings effect=<NONE,NEG,BW,RED,GREEN,BLUE,RETRO>',
236
237
  'capture',
237
238
  'photo',
238
239
  'set_photo_endpoint',
@@ -320,5 +320,5 @@ def help(widgets=False):
320
320
  (widgets=True) list of widget json for UI generation
321
321
  """
322
322
  return resolve(('BUTTON bipp repeat=3 freq=600',
323
- 'play <rtttlstr/title>', 'list_tones',
323
+ 'TOGGLE play rtttlstr=<Indiana,TakeOnMe,StarWars,MissionImp>', 'list_tones',
324
324
  'load', 'pinmap'), widgets=widgets)
@@ -352,7 +352,7 @@ def help(widgets=False):
352
352
  (widgets=True) list of widget json for UI generation
353
353
  """
354
354
  return resolve(('WHITE white cw=<0-1000-5> ww smooth=True force=True',
355
- 'TOGGLE toggle state=None smooth=True', 'load',
355
+ 'BUTTON toggle state=<True,False> smooth=True', 'load',
356
356
  'SLIDER brightness percent=<0-100> smooth=True wake=True',
357
357
  'transition cw=None ww=None sec=1.0 wake=False',
358
358
  'hue_transition percent=<0-100> sec=1.0 wake=False',
@@ -232,7 +232,7 @@ def help(widgets=False):
232
232
  (widgets=True) list of widget json for UI generation
233
233
  """
234
234
  return resolve(('SLIDER set_value value=<0-1000> smooth=True force=True',
235
- 'BUTTON toggle state=None smooth=True',
235
+ 'BUTTON toggle state=<True,False> smooth=True',
236
236
  'subscribe_presence',
237
237
  'transition value=<0-1000> sec wake=False',
238
238
  'status', 'load', 'pinmap'), widgets=widgets)
@@ -20,7 +20,7 @@ class KC:
20
20
  DP_cnt_default = None # store calculated sequence to sleep 30sec/period_ms
21
21
  NEOPIXEL_OBJ = None # Neopixel LED handler object
22
22
  COLOR_WHEEL = None # LED color wheel generator object for animation
23
- NEOPIXEL_BR = 30 # default neopixel brightness
23
+ NEOPIXEL_BR = 20 # default neopixel brightness
24
24
 
25
25
  #############################
26
26
  # INTERNAL FUNCTIONS #
@@ -54,7 +54,7 @@ async def _screen_saver(scale=2):
54
54
  show()
55
55
 
56
56
 
57
- def _color_wheel():
57
+ def __color_wheel():
58
58
  """
59
59
  RGB LED color wheel generator - rainbow
60
60
  """
@@ -126,7 +126,7 @@ async def _main_page():
126
126
  return "Display show"
127
127
 
128
128
 
129
- async def _task(period_ms):
129
+ async def _ui_task(period_ms):
130
130
  """
131
131
  Async display refresh task
132
132
  - main page (main mode) - auto sleep after 30 sec
@@ -166,7 +166,7 @@ async def _task(period_ms):
166
166
  show() #3 show cleaned display
167
167
  KC.DP_cnt = KC.DP_cnt_default #4 reset sleep counter to default
168
168
  my_task.out = 'sleep...'
169
- neopixel_color_wheel() # update neopixel color wheel
169
+ color_wheel() # update neopixel color wheel
170
170
 
171
171
 
172
172
  def _boot_page(msg):
@@ -189,7 +189,7 @@ def load(width=64, height=32, bootmsg="micrOS"):
189
189
  :param height: screen height (pixel)
190
190
  :param bootmsg: First text on page at bootup, default: "micrOS"
191
191
  """
192
- KC.COLOR_WHEEL = _color_wheel() #1 Init neopixel color wheel generator
192
+ KC.COLOR_WHEEL = __color_wheel() #1 Init neopixel color wheel generator
193
193
  try:
194
194
  oled_lni(width, height, brightness=20) #2 Init oled display
195
195
  _boot_page(bootmsg) #3 Show boot page text
@@ -207,7 +207,7 @@ def display(period=1000):
207
207
  """
208
208
  # [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
209
209
  period_ms = 500 if period < 500 else period
210
- state = micro_task(tag="kc._display", task=_task(period_ms=period_ms))
210
+ state = micro_task(tag="kc._display", task=_ui_task(period_ms=period_ms))
211
211
  return "Starting" if state else "Already running"
212
212
 
213
213
 
@@ -218,7 +218,7 @@ def temperature():
218
218
  return measure()
219
219
 
220
220
 
221
- def neopixel_color_wheel(br=None):
221
+ def color_wheel(br=None):
222
222
  """
223
223
  Neopixel color wheel
224
224
  :param br: brightness value 0-100 percent
@@ -236,7 +236,7 @@ def neopixel_color_wheel(br=None):
236
236
  else:
237
237
  KC.NEOPIXEL_BR = br # update neopixel brightness cache
238
238
  if KC.COLOR_WHEEL is None:
239
- KC.COLOR_WHEEL = _color_wheel() # init color wheel generator
239
+ KC.COLOR_WHEEL = __color_wheel() # init color wheel generator
240
240
  # UPDATE
241
241
  r, g, b = next(KC.COLOR_WHEEL) # get next color
242
242
  br = br if br == 100 else br/100 # calculate brightness multiplier
@@ -266,7 +266,7 @@ def neopixel_toggle():
266
266
  v = 'disabled' if KC.NEOPIXEL_BR == 0 else 'enabled'
267
267
  return f"Neopixel: {v} br: {KC.NEOPIXEL_BR}"
268
268
 
269
- def press_event():
269
+ def button():
270
270
  """
271
271
  IRQ1 keychain module control function
272
272
  - neopixel ON/OFF
@@ -311,8 +311,8 @@ def help(widgets=False):
311
311
  """
312
312
  return ('load width=64 height=32 bootmsg="micrOS"',
313
313
  'temperature', 'display period>=1000',
314
- 'press_event',
314
+ 'button',
315
315
  'display_toggle',
316
316
  'neopixel_toggle',
317
- 'neopixel_color_wheel br=<0-100>',
317
+ 'color_wheel br=<0-100>',
318
318
  'pinmap', 'lmdep')
@@ -342,12 +342,12 @@ def help(widgets=False):
342
342
  (widgets=False) list of functions implemented by this application
343
343
  (widgets=True) list of widget json for UI generation
344
344
  """
345
- return resolve(('COLOR color r=<0-255> g b smooth=True force=True',
346
- 'TOGGLE toggle state smooth=True',
345
+ return resolve(('COLOR color r=<0-255-5> g b smooth=True force=True',
346
+ 'BUTTON toggle state=<True,False> smooth=True',
347
347
  'load ledcnt=24',
348
348
  'SLIDER brightness percent=<0-100> smooth=True wake=True',
349
349
  'COLOR segment r g b s=<0-n>',
350
- 'transition r=None g=None b=None sec=1.0 wake=False',
350
+ 'transition r g b sec=1.0 wake=False',
351
351
  'BUTTON random smooth=True max_val=254',
352
352
  'status',
353
353
  'subscribe_presence',
@@ -643,12 +643,7 @@ def help(widgets=False):
643
643
  (widgets=True) list of widget json for UI generation
644
644
  """
645
645
  return resolve(('pageui page=0 pwr_sec=None/int(sec) oled_type="ssd1306 or sh1106"',
646
- 'control next/prev/press/on/off',
647
- 'BUTTON control cmd="next"',
648
- 'BUTTON control cmd="prev"',
649
- 'BUTTON control cmd="press"',
650
- 'BUTTON control cmd="on"',
651
- 'BUTTON control cmd="off"',
646
+ 'BUTTON control cmd=<next,prev,press,on,off>',
652
647
  'msgbox "msg"',
653
648
  'intercon_genpage "host" "cmd" run=False',
654
649
  'cmd_genpage "cmd" run=False',
@@ -313,8 +313,8 @@ def help(widgets=False):
313
313
  (widgets=False) list of functions implemented by this application
314
314
  (widgets=True) list of widget json for UI generation
315
315
  """
316
- return resolve(( 'COLOR color r=<0-1000> g b smooth=True force=True',
317
- 'TOGGLE toggle state smooth=True', 'load',
316
+ return resolve(( 'COLOR color r=<0-1000-10> g b smooth=True force=True',
317
+ 'BUTTON toggle state=<True,False> smooth=True', 'load',
318
318
  'SLIDER brightness percent=<0-100> smooth=True wake=True',
319
319
  'transition r=None g=None b=None sec=1.0 wake=False',
320
320
  'BUTTON random smooth=True max_val=1000',
@@ -60,6 +60,6 @@ def help(widgets=False):
60
60
  (widgets=True) list of widget json for UI generation
61
61
  """
62
62
  return resolve(('load',
63
- 'BUTTON toggle state smooth=True',
63
+ 'BUTTON toggle state=<True,False> smooth=True',
64
64
  'SLIDER brightness percent smooth=True wake=True',
65
65
  'status', 'pinmap'), widgets=widgets)
@@ -1,5 +1,5 @@
1
1
  from LM_system import memory_usage
2
- from Common import socket_stream
2
+ from Common import socket_stream, syslog
3
3
 
4
4
 
5
5
  @socket_stream
@@ -9,6 +9,7 @@ def raise_error(msgobj=None):
9
9
  """
10
10
  if msgobj is not None:
11
11
  msgobj("Raise test exception")
12
+ syslog("Raise test exception")
12
13
  raise Exception("Test exception")
13
14
 
14
15
 
@@ -0,0 +1,79 @@
1
+ from time import localtime
2
+
3
+ #############################################
4
+ # LOGGING WITH DATA ROTATION #
5
+ #############################################
6
+
7
+
8
+ def logger(data, f_name, limit):
9
+ """
10
+ Create generic logger function
11
+ - implements log line rotation
12
+ - automatic time stump
13
+ :param data: input string data to log
14
+ :param f_name: file name to use
15
+ :param limit: line limit for log rotation
16
+ return write verdict - true / false
17
+ INFO: hardcoded max data number = 30
18
+ """
19
+ def _logger(_data, _f_name, _limit, f_mode='r+'):
20
+ _limit = 30 if _limit > 30 else _limit
21
+ # [1] GET TIME STUMP
22
+ ts_buff = [str(k) for k in localtime()]
23
+ ts = ".".join(ts_buff[0:3]) + "-" + ":".join(ts_buff[3:6])
24
+ # [2] OPEN FILE - WRITE DATA WITH TS
25
+ with open(_f_name, f_mode) as f:
26
+ _data = f"{ts} {_data}\n"
27
+ # read file lines and filter by time stump chunks (hack for replace truncate)
28
+ lines = [_l for _l in f.readlines() if '-' in _l and '.' in _l]
29
+ # get file params
30
+ lines_len = len(lines)
31
+ lines.append(_data)
32
+ f.seek(0)
33
+ # line data rotate
34
+ if lines_len >= _limit:
35
+ lines = lines[-_limit:]
36
+ lines_str = ''.join(lines)
37
+ else:
38
+ lines_str = ''.join(lines)
39
+ # write file
40
+ f.write(lines_str)
41
+
42
+ # Run logger
43
+ try:
44
+ # There is file - append 'r+'
45
+ _logger(data, f_name, limit)
46
+ except:
47
+ try:
48
+ # There is no file - create 'a+'
49
+ _logger(data, f_name, limit, 'a+')
50
+ except:
51
+ return False
52
+ return True
53
+
54
+
55
+ def log_get(f_name, msgobj=None):
56
+ """
57
+ Get and stream (ver osocket/stdout) .log file's content and count "critical" errors
58
+ - critical error tag in log line: [ERR]
59
+ """
60
+ err_cnt = 0
61
+ try:
62
+ with open(f_name, 'r') as f:
63
+ eline = f.readline().strip()
64
+ while eline:
65
+ # GET error from log line (tag: [ERR])
66
+ err_cnt += 1 if "[ERR]" in eline else 0
67
+ # GIVE BACK .log file contents
68
+ if msgobj is not None:
69
+ msgobj(eline)
70
+ eline = f.readline().strip()
71
+ except:
72
+ pass
73
+ return err_cnt
74
+
75
+
76
+ def syslog(data=None, msgobj=None):
77
+ if data is None:
78
+ return log_get('err.log', msgobj)
79
+ return logger(data, 'err.log', limit=6)
@@ -18,10 +18,10 @@ from Network import ifconfig
18
18
  from Tasks import Manager
19
19
  from Shell import Shell
20
20
  try:
21
- from gc import collect, mem_free
21
+ from gc import collect
22
22
  except:
23
23
  console_write("[SIMULATOR MODE GC IMPORT]")
24
- from simgc import collect, mem_free
24
+ from simgc import collect
25
25
 
26
26
  # Module load optimization, needed only for webui
27
27
  if cfgget('webui'):
@@ -107,7 +107,7 @@ class Client:
107
107
  Client.console(f"[Client] Drain error -> close conn: {e}")
108
108
  await self.close()
109
109
  else:
110
- console_write(f"[Client] NoCon: response>dev/nul")
110
+ console_write("[Client] NoCon: response>dev/nul")
111
111
 
112
112
  def send(self, response):
113
113
  # Implement in child class - synchronous send method
@@ -177,14 +177,13 @@ class WebCli(Client):
177
177
  @staticmethod
178
178
  def file_type(path):
179
179
  """File dynamic Content-Type handling"""
180
- if path.endswith(".html"):
181
- return "text/html"
182
- elif path.endswith(".css"):
183
- return "text/css"
184
- elif path.endswith(".js"):
185
- return "application/javascript"
186
- else:
187
- return "text/plain"
180
+ content_types = {".html": "text/html",
181
+ ".css": "text/css",
182
+ ".js": "application/javascript"}
183
+ # Extract the file extension
184
+ ext = path.rsplit('.', 1)[-1]
185
+ # Return the content type based on the file extension
186
+ return content_types.get(f".{ext}", "text/plain")
188
187
 
189
188
  async def response(self, request):
190
189
  """HTTP GET REQUEST - WEB INTERFACE"""
@@ -192,7 +191,7 @@ class WebCli(Client):
192
191
  _method, url, _version = request.split('\n')[0].split()
193
192
  # Protocol validation
194
193
  if _method != "GET" and _version.startswith('HTTP'):
195
- _err = f"Bad Request: not GET HTTP/1.1"
194
+ _err = "Bad Request: not GET HTTP/1.1"
196
195
  await self.a_send(self.REQ400.format(len=len(_err), data=_err))
197
196
  return
198
197
 
@@ -339,10 +338,10 @@ class ShellCli(Client, Shell):
339
338
  # Store data in stream buffer
340
339
  try:
341
340
  self.writer.write(response.encode('utf8'))
342
- except Exception as e:
341
+ except:
343
342
  # Maintain ACTIVE_CLIS - remove closed connection by peer.
344
343
  Client.drop_client(self.client_id)
345
- errlog_add(f"[WARN] ShellCli.send (auto-drop) {self.client_id}: {e}")
344
+ errlog_add(f"[WARN] ShellCli.send (auto-drop) {self.client_id}")
346
345
  # Send buffered data with async task - hacky
347
346
  if self.drain_event.is_set():
348
347
  self.drain_event.clear() # set drain busy (False)
@@ -24,7 +24,7 @@ from Debug import errlog_add
24
24
  #################################################################
25
25
 
26
26
  class Shell:
27
- MICROS_VERSION = '2.2.1-0'
27
+ MICROS_VERSION = '2.4.0-0'
28
28
 
29
29
  def __init__(self):
30
30
  """
@@ -152,10 +152,8 @@ def suntime():
152
152
  _, response = http_get(url, sock_size=512, jsonify=True)
153
153
  results = response.get('results')
154
154
  time_regex = re_comp(r'T([0-9:]+)')
155
- sun = {
156
- 'sunrise': time_regex.search(results.get('sunrise')).group(1).split(':'),
157
- 'sunset': time_regex.search(results.get('sunset')).group(1).split(':')
158
- }
155
+ sun = {'sunrise': time_regex.search(results.get('sunrise')).group(1).split(':'),
156
+ 'sunset': time_regex.search(results.get('sunset')).group(1).split(':')}
159
157
  except Exception as e:
160
158
  errlog_add(f'[ERR] sunrise-api: {e} data: {response}')
161
159
  # Try to parse response by expected sun_keys