micrOSDevToolKit 2.1.5__py3-none-any.whl → 2.26.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. env/driver_cp210x/.DS_Store +0 -0
  2. env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  3. env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +17 -1
  4. micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  5. micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  6. micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  7. micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  8. micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  9. micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  10. micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  11. micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  12. micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  13. micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  14. micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +191 -151
  15. micrOS/source/Auth.py +37 -0
  16. micrOS/source/Common.py +376 -102
  17. micrOS/source/Config.py +55 -25
  18. micrOS/source/Debug.py +54 -193
  19. micrOS/source/Espnow.py +404 -0
  20. micrOS/source/Files.py +207 -0
  21. micrOS/source/Hooks.py +88 -16
  22. micrOS/source/InterConnect.py +130 -46
  23. micrOS/source/Interrupts.py +8 -8
  24. micrOS/source/Logger.py +131 -0
  25. micrOS/source/Network.py +41 -21
  26. micrOS/source/Notify.py +74 -198
  27. micrOS/source/Pacman.py +326 -0
  28. micrOS/source/Scheduler.py +18 -55
  29. micrOS/source/Server.py +84 -217
  30. micrOS/source/Shell.py +103 -93
  31. micrOS/source/Tasks.py +239 -173
  32. micrOS/source/Time.py +21 -22
  33. micrOS/source/Types.py +89 -54
  34. micrOS/source/Web.py +485 -0
  35. micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  36. micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  37. micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  38. micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  39. micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  40. micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  41. micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  42. micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  43. micrOS/source/helpers.py +132 -0
  44. micrOS/source/micrOS.py +25 -21
  45. micrOS/source/micrOSloader.py +14 -23
  46. micrOS/source/microIO.py +94 -57
  47. toolkit/simulator_lib/LP_darwin.py → micrOS/source/modules/IO_esp32.py +22 -11
  48. micrOS/source/{IO_esp32c3.py → modules/IO_esp32c3.py} +6 -1
  49. micrOS/source/modules/IO_esp32c6.py +38 -0
  50. micrOS/source/{IO_esp32s2.py → modules/IO_esp32s2.py} +6 -1
  51. micrOS/source/{IO_esp32s3.py → modules/IO_esp32s3.py} +43 -2
  52. micrOS/source/modules/IO_m5stamp.py +86 -0
  53. micrOS/source/{IO_qtpy.py → modules/IO_qtpy.py} +28 -18
  54. micrOS/source/{IO_tinypico.py → modules/IO_tinypico.py} +48 -3
  55. micrOS/source/modules/LM_L298N.py +161 -0
  56. {toolkit/workspace/precompiled → micrOS/source/modules}/LM_L9110_DCmotor.py +4 -4
  57. micrOS/source/{LM_OV2640.py → modules/LM_OV2640.py} +53 -42
  58. micrOS/source/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
  59. micrOS/source/{LM_aht10.py → modules/LM_aht10.py} +12 -4
  60. micrOS/source/{LM_bme280.py → modules/LM_bme280.py} +13 -25
  61. micrOS/source/{LM_buzzer.py → modules/LM_buzzer.py} +42 -40
  62. micrOS/source/{LM_cct.py → modules/LM_cct.py} +22 -27
  63. micrOS/source/modules/LM_cluster.py +255 -0
  64. micrOS/source/{LM_co2.py → modules/LM_co2.py} +13 -6
  65. micrOS/source/{LM_dht11.py → modules/LM_dht11.py} +13 -29
  66. micrOS/source/{LM_dht22.py → modules/LM_dht22.py} +13 -28
  67. micrOS/source/{LM_dimmer.py → modules/LM_dimmer.py} +19 -16
  68. micrOS/source/modules/LM_distance.py +135 -0
  69. micrOS/source/{LM_ds18.py → modules/LM_ds18.py} +12 -4
  70. micrOS/source/{LM_esp32.py → modules/LM_esp32.py} +16 -4
  71. micrOS/source/modules/LM_espnow.py +53 -0
  72. micrOS/source/modules/LM_fileserver.py +265 -0
  73. micrOS/source/{LM_gameOfLife.py → modules/LM_gameOfLife.py} +5 -5
  74. micrOS/source/{LM_genIO.py → modules/LM_genIO.py} +49 -35
  75. micrOS/source/modules/LM_haptic.py +111 -0
  76. micrOS/source/modules/LM_i2c.py +61 -0
  77. micrOS/source/{LM_i2s_mic.py → modules/LM_i2s_mic.py} +20 -23
  78. micrOS/source/{LM_ld2410.py → modules/LM_ld2410.py} +3 -3
  79. micrOS/source/{LM_light_sensor.py → modules/LM_light_sensor.py} +22 -26
  80. micrOS/source/modules/LM_mh_z19c.py +198 -0
  81. micrOS/source/modules/LM_neoeffects.py +284 -0
  82. micrOS/source/{LM_neopixel.py → modules/LM_neopixel.py} +26 -31
  83. micrOS/source/{LM_oled.py → modules/LM_oled.py} +28 -20
  84. micrOS/source/{LM_oled_sh1106.py → modules/LM_oled_sh1106.py} +28 -24
  85. micrOS/source/{LM_oled_ui.py → modules/LM_oled_ui.py} +132 -174
  86. micrOS/source/modules/LM_pacman.py +320 -0
  87. micrOS/source/{LM_presence.py → modules/LM_presence.py} +24 -36
  88. micrOS/source/modules/LM_qmi8658.py +204 -0
  89. micrOS/source/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
  90. micrOS/source/modules/LM_rest.py +81 -0
  91. micrOS/source/{LM_rgb.py → modules/LM_rgb.py} +25 -34
  92. micrOS/source/{LM_rgbcct.py → modules/LM_rgbcct.py} +5 -5
  93. micrOS/source/{LM_roboarm.py → modules/LM_roboarm.py} +37 -45
  94. micrOS/source/modules/LM_robustness.py +137 -0
  95. micrOS/source/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
  96. micrOS/source/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
  97. micrOS/source/{LM_servo.py → modules/LM_servo.py} +4 -4
  98. micrOS/source/modules/LM_sound_event.py +751 -0
  99. micrOS/source/{LM_stepper.py → modules/LM_stepper.py} +8 -8
  100. micrOS/source/{LM_switch.py → modules/LM_switch.py} +21 -18
  101. micrOS/source/{LM_system.py → modules/LM_system.py} +96 -59
  102. micrOS/source/modules/LM_tcs3472.py +187 -0
  103. micrOS/source/modules/LM_telegram.py +388 -0
  104. micrOS/source/modules/LM_trackball.py +287 -0
  105. micrOS/source/modules/LM_veml7700.py +159 -0
  106. micrOS/source/modules/LM_web.py +38 -0
  107. micrOS/source/urequests.py +204 -91
  108. {toolkit/workspace/precompiled → micrOS/source/web}/dashboard.html +9 -4
  109. micrOS/source/web/editor.js +440 -0
  110. micrOS/source/web/filesui.html +178 -0
  111. micrOS/source/web/filesui.js +338 -0
  112. micrOS/source/{index.html → web/index.html} +44 -2
  113. micrOS/source/web/uapi.js +103 -0
  114. micrOS/source/web/udashboard.js +129 -0
  115. micrOS/source/web/ustyle.css +55 -0
  116. micrOS/source/web/uwidgets.js +172 -0
  117. micrOS/source/web/uwidgets_pro.js +99 -0
  118. micrOS/utests/__init__.py +0 -0
  119. micrOS/utests/test_scheduler.py +435 -0
  120. {micrOSDevToolKit-2.1.5.data → microsdevtoolkit-2.26.1.data}/scripts/devToolKit.py +47 -4
  121. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/METADATA +392 -279
  122. microsdevtoolkit-2.26.1.dist-info/RECORD +396 -0
  123. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/WHEEL +1 -1
  124. toolkit/DevEnvCompile.py +63 -33
  125. toolkit/DevEnvOTA.py +72 -22
  126. toolkit/DevEnvUSB.py +147 -77
  127. toolkit/Gateway.py +9 -9
  128. toolkit/LM_to_compile.dat +12 -4
  129. toolkit/MicrOSDevEnv.py +129 -51
  130. toolkit/WebRepl.py +73 -0
  131. toolkit/dashboard_apps/BackupRestore.py +171 -0
  132. toolkit/dashboard_apps/CCTDemo.py +12 -17
  133. toolkit/dashboard_apps/CCTTest.py +20 -24
  134. toolkit/dashboard_apps/CamStream.py +2 -6
  135. toolkit/dashboard_apps/CatGame.py +14 -16
  136. toolkit/dashboard_apps/Dimmer.py +11 -21
  137. toolkit/dashboard_apps/GetVersion.py +11 -19
  138. toolkit/dashboard_apps/MicrophoneTest.py +2 -7
  139. toolkit/dashboard_apps/NeoEffectsDemo.py +22 -35
  140. toolkit/dashboard_apps/NeopixelTest.py +20 -25
  141. toolkit/dashboard_apps/PresenceTest.py +2 -8
  142. toolkit/dashboard_apps/QMI8685_GYRO.py +68 -0
  143. toolkit/dashboard_apps/RGBTest.py +20 -24
  144. toolkit/dashboard_apps/RoboArm.py +24 -32
  145. toolkit/dashboard_apps/SED_test.py +10 -14
  146. toolkit/dashboard_apps/SensorsTest.py +61 -0
  147. toolkit/dashboard_apps/SystemTest.py +219 -117
  148. toolkit/dashboard_apps/Template_app.py +12 -19
  149. toolkit/dashboard_apps/_app_base.py +34 -0
  150. toolkit/dashboard_apps/_gyro_visualizer.py +78 -0
  151. toolkit/dashboard_apps/uLightDemo.py +15 -24
  152. toolkit/index.html +6 -5
  153. toolkit/lib/LocalMachine.py +6 -1
  154. toolkit/lib/MicrosFiles.py +46 -0
  155. toolkit/lib/Repository.py +64 -0
  156. toolkit/lib/TerminalColors.py +4 -0
  157. toolkit/lib/macroScript.py +371 -0
  158. toolkit/lib/micrOSClient.py +124 -51
  159. toolkit/lib/micrOSClientHistory.py +156 -0
  160. toolkit/lib/pip_package_installer.py +31 -4
  161. toolkit/micrOSdashboard.py +16 -21
  162. toolkit/micrOSlint.py +28 -10
  163. toolkit/simulator_lib/.DS_Store +0 -0
  164. micrOS/source/IO_esp32.py → toolkit/simulator_lib/IO_darwin.py +3 -0
  165. toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  166. toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  167. toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  168. toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  169. toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  170. toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  171. toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  172. toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  173. toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  174. toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  175. toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  176. toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  177. toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  178. toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  179. toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  180. toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  181. toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  182. toolkit/simulator_lib/aioespnow.py +28 -0
  183. toolkit/simulator_lib/camera.py +84 -0
  184. toolkit/simulator_lib/dht.py +1 -1
  185. toolkit/simulator_lib/framebuf.py +49 -1
  186. toolkit/simulator_lib/machine.py +32 -2
  187. toolkit/simulator_lib/micropython.py +3 -3
  188. toolkit/simulator_lib/mip.py +165 -0
  189. toolkit/simulator_lib/neopixel.py +3 -2
  190. toolkit/simulator_lib/network.py +2 -1
  191. toolkit/simulator_lib/node_config.json +2 -3
  192. toolkit/simulator_lib/ntptime.py +1 -1
  193. toolkit/simulator_lib/{sim_console.py → sim_common.py} +2 -3
  194. toolkit/simulator_lib/simgc.py +6 -2
  195. toolkit/simulator_lib/simulator.py +138 -46
  196. toolkit/simulator_lib/uasyncio.py +34 -3
  197. toolkit/simulator_lib/uos.py +147 -0
  198. toolkit/simulator_lib/urandom.py +4 -0
  199. toolkit/simulator_lib/usocket.py +5 -1
  200. toolkit/simulator_lib/view01.jpg +0 -0
  201. toolkit/simulator_lib/view02.jpg +0 -0
  202. toolkit/socketClient.py +43 -23
  203. toolkit/user_data/webhooks/generic.py +1 -1
  204. toolkit/user_data/webhooks/macro.py +44 -0
  205. toolkit/user_data/webhooks/template.macro +20 -0
  206. toolkit/user_data/webhooks/template.py +1 -1
  207. toolkit/workspace/precompiled/Auth.mpy +0 -0
  208. toolkit/workspace/precompiled/Common.mpy +0 -0
  209. toolkit/workspace/precompiled/Config.mpy +0 -0
  210. toolkit/workspace/precompiled/Debug.mpy +0 -0
  211. toolkit/workspace/precompiled/Espnow.mpy +0 -0
  212. toolkit/workspace/precompiled/Files.mpy +0 -0
  213. toolkit/workspace/precompiled/Hooks.mpy +0 -0
  214. toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  215. toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  216. toolkit/workspace/precompiled/Logger.mpy +0 -0
  217. toolkit/workspace/precompiled/Network.mpy +0 -0
  218. toolkit/workspace/precompiled/Notify.mpy +0 -0
  219. toolkit/workspace/precompiled/Pacman.mpy +0 -0
  220. toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  221. toolkit/workspace/precompiled/Server.mpy +0 -0
  222. toolkit/workspace/precompiled/Shell.mpy +0 -0
  223. toolkit/workspace/precompiled/Tasks.mpy +0 -0
  224. toolkit/workspace/precompiled/Time.mpy +0 -0
  225. toolkit/workspace/precompiled/Types.mpy +0 -0
  226. toolkit/workspace/precompiled/Web.mpy +0 -0
  227. toolkit/workspace/precompiled/_mpy.version +1 -1
  228. toolkit/workspace/precompiled/config/_git.keep +0 -0
  229. toolkit/workspace/precompiled/helpers.mpy +0 -0
  230. toolkit/workspace/precompiled/micrOS.mpy +0 -0
  231. toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  232. toolkit/workspace/precompiled/microIO.mpy +0 -0
  233. toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  234. toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  235. toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  236. toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  237. toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  238. toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  239. toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  240. toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  241. toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  242. toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
  243. {micrOS/source → toolkit/workspace/precompiled/modules}/LM_L9110_DCmotor.py +4 -4
  244. toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  245. toolkit/workspace/precompiled/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +5 -5
  246. toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  247. toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  248. toolkit/workspace/precompiled/{LM_buzzer.mpy → modules/LM_buzzer.mpy} +0 -0
  249. toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  250. toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  251. toolkit/workspace/precompiled/modules/LM_co2.mpy +0 -0
  252. toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  253. toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  254. toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  255. toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
  256. toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  257. toolkit/workspace/precompiled/{LM_esp32.py → modules/LM_esp32.py} +16 -4
  258. toolkit/workspace/precompiled/modules/LM_espnow.py +53 -0
  259. toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  260. toolkit/workspace/precompiled/{LM_gameOfLife.mpy → modules/LM_gameOfLife.mpy} +0 -0
  261. toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  262. toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
  263. toolkit/workspace/precompiled/modules/LM_i2c.py +61 -0
  264. toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  265. toolkit/workspace/precompiled/{LM_ld2410.mpy → modules/LM_ld2410.mpy} +0 -0
  266. toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  267. toolkit/workspace/precompiled/modules/LM_mh_z19c.py +198 -0
  268. toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  269. toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  270. toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  271. toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  272. toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  273. toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  274. toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  275. toolkit/workspace/precompiled/modules/LM_qmi8658.py +204 -0
  276. toolkit/workspace/precompiled/{LM_rencoder.py → modules/LM_rencoder.py} +40 -11
  277. toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  278. toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  279. toolkit/workspace/precompiled/{LM_rgbcct.mpy → modules/LM_rgbcct.mpy} +0 -0
  280. toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
  281. toolkit/workspace/precompiled/modules/LM_robustness.py +137 -0
  282. toolkit/workspace/precompiled/{LM_rp2w.py → modules/LM_rp2w.py} +3 -0
  283. toolkit/workspace/precompiled/{LM_sdcard.py → modules/LM_sdcard.py} +3 -0
  284. toolkit/workspace/precompiled/{LM_servo.mpy → modules/LM_servo.mpy} +0 -0
  285. toolkit/workspace/precompiled/modules/LM_sound_event.mpy +0 -0
  286. toolkit/workspace/precompiled/{LM_stepper.mpy → modules/LM_stepper.mpy} +0 -0
  287. toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  288. toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  289. toolkit/workspace/precompiled/modules/LM_tcs3472.py +187 -0
  290. toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  291. toolkit/workspace/precompiled/{LM_tinyrgb.mpy → modules/LM_tinyrgb.mpy} +0 -0
  292. toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
  293. toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  294. toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  295. toolkit/workspace/precompiled/urequests.mpy +0 -0
  296. {micrOS/source → toolkit/workspace/precompiled/web}/dashboard.html +9 -4
  297. toolkit/workspace/precompiled/web/editor.js +440 -0
  298. toolkit/workspace/precompiled/web/filesui.html +178 -0
  299. toolkit/workspace/precompiled/web/filesui.js +338 -0
  300. toolkit/workspace/precompiled/{index.html → web/index.html} +44 -2
  301. toolkit/workspace/precompiled/web/uapi.js +103 -0
  302. toolkit/workspace/precompiled/web/udashboard.js +129 -0
  303. toolkit/workspace/precompiled/web/ustyle.css +55 -0
  304. toolkit/workspace/precompiled/web/uwidgets.js +172 -0
  305. toolkit/workspace/precompiled/web/uwidgets_pro.js +99 -0
  306. env/driver_cp210x/CH34XSER_MAC/CH34X_DRV_INSTALL_INSTRUCTIONS.pdf +0 -0
  307. env/driver_cp210x/CH34XSER_MAC/CH34xVCPDriver.pkg +0 -0
  308. micrOS/micropython/esp32-20231005-v1.21.0.bin +0 -0
  309. micrOS/micropython/esp32c3-GENERIC-20240105-v1.22.1.bin +0 -0
  310. micrOS/micropython/esp32c3-GENERIC-20240222-v1.22.2.bin +0 -0
  311. micrOS/micropython/esp32s2-GENERIC-20240105-v1.22.1.bin +0 -0
  312. micrOS/micropython/esp32s2-LOLIN_MINI-20220618-v1.19.1.bin +0 -0
  313. micrOS/micropython/esp32s3-GENERIC-20240105-v1.22.1.bin +0 -0
  314. micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin +0 -0
  315. micrOS/micropython/rpi-pico-w-20231005-v1.21.0.uf2 +0 -0
  316. micrOS/micropython/tinypico-20231005-v1.21.0.bin +0 -0
  317. micrOS/micropython/tinypico-usbc-UM-20240105-v1.22.1.bin +0 -0
  318. micrOS/source/LM_L298N_DCmotor.py +0 -86
  319. micrOS/source/LM_catgame.py +0 -74
  320. micrOS/source/LM_dashboard_be.py +0 -37
  321. micrOS/source/LM_demo.py +0 -85
  322. micrOS/source/LM_distance.py +0 -88
  323. micrOS/source/LM_i2c.py +0 -44
  324. micrOS/source/LM_intercon.py +0 -57
  325. micrOS/source/LM_keychain.py +0 -318
  326. micrOS/source/LM_lmpacman.py +0 -126
  327. micrOS/source/LM_neoeffects.py +0 -327
  328. micrOS/source/LM_pet_feeder.py +0 -76
  329. micrOS/source/LM_ph_sensor.py +0 -51
  330. micrOS/source/LM_rest.py +0 -40
  331. micrOS/source/LM_robustness.py +0 -73
  332. micrOS/source/LM_telegram.py +0 -96
  333. micrOS/source/reset.py +0 -11
  334. micrOS/source/uapi.js +0 -76
  335. micrOS/source/udashboard.js +0 -137
  336. micrOS/source/ustyle.css +0 -28
  337. micrOS/source/uwidgets.js +0 -179
  338. micrOSDevToolKit-2.1.5.dist-info/RECORD +0 -337
  339. toolkit/dashboard_apps/AirQualityBME280.py +0 -36
  340. toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -36
  341. toolkit/lib/file_extensions.py +0 -16
  342. toolkit/simulator_lib/__pycache__/LP_darwin.cpython-312.pyc +0 -0
  343. toolkit/simulator_lib/__pycache__/LP_darwin.cpython-38.pyc +0 -0
  344. toolkit/simulator_lib/__pycache__/LP_darwin.cpython-39.pyc +0 -0
  345. toolkit/simulator_lib/__pycache__/sim_console.cpython-312.pyc +0 -0
  346. toolkit/simulator_lib/__pycache__/sim_console.cpython-38.pyc +0 -0
  347. toolkit/simulator_lib/__pycache__/sim_console.cpython-39.pyc +0 -0
  348. toolkit/workspace/precompiled/IO_esp32.mpy +0 -0
  349. toolkit/workspace/precompiled/IO_esp32c3.mpy +0 -0
  350. toolkit/workspace/precompiled/IO_esp32s2.mpy +0 -0
  351. toolkit/workspace/precompiled/IO_esp32s3.mpy +0 -0
  352. toolkit/workspace/precompiled/IO_qtpy.mpy +0 -0
  353. toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
  354. toolkit/workspace/precompiled/IO_tinypico.mpy +0 -0
  355. toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
  356. toolkit/workspace/precompiled/LM_OV2640.mpy +0 -0
  357. toolkit/workspace/precompiled/LM_aht10.mpy +0 -0
  358. toolkit/workspace/precompiled/LM_bme280.mpy +0 -0
  359. toolkit/workspace/precompiled/LM_catgame.py +0 -74
  360. toolkit/workspace/precompiled/LM_cct.mpy +0 -0
  361. toolkit/workspace/precompiled/LM_co2.mpy +0 -0
  362. toolkit/workspace/precompiled/LM_dashboard_be.py +0 -37
  363. toolkit/workspace/precompiled/LM_demo.py +0 -85
  364. toolkit/workspace/precompiled/LM_dht11.mpy +0 -0
  365. toolkit/workspace/precompiled/LM_dht22.mpy +0 -0
  366. toolkit/workspace/precompiled/LM_dimmer.mpy +0 -0
  367. toolkit/workspace/precompiled/LM_distance.py +0 -88
  368. toolkit/workspace/precompiled/LM_ds18.mpy +0 -0
  369. toolkit/workspace/precompiled/LM_genIO.mpy +0 -0
  370. toolkit/workspace/precompiled/LM_i2c.py +0 -44
  371. toolkit/workspace/precompiled/LM_i2s_mic.mpy +0 -0
  372. toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
  373. toolkit/workspace/precompiled/LM_keychain.mpy +0 -0
  374. toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
  375. toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
  376. toolkit/workspace/precompiled/LM_neoeffects.mpy +0 -0
  377. toolkit/workspace/precompiled/LM_neopixel.mpy +0 -0
  378. toolkit/workspace/precompiled/LM_oled.mpy +0 -0
  379. toolkit/workspace/precompiled/LM_oled_sh1106.mpy +0 -0
  380. toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
  381. toolkit/workspace/precompiled/LM_pet_feeder.py +0 -76
  382. toolkit/workspace/precompiled/LM_ph_sensor.py +0 -51
  383. toolkit/workspace/precompiled/LM_presence.mpy +0 -0
  384. toolkit/workspace/precompiled/LM_rest.mpy +0 -0
  385. toolkit/workspace/precompiled/LM_rgb.mpy +0 -0
  386. toolkit/workspace/precompiled/LM_roboarm.mpy +0 -0
  387. toolkit/workspace/precompiled/LM_robustness.py +0 -73
  388. toolkit/workspace/precompiled/LM_switch.mpy +0 -0
  389. toolkit/workspace/precompiled/LM_system.mpy +0 -0
  390. toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
  391. toolkit/workspace/precompiled/reset.mpy +0 -0
  392. toolkit/workspace/precompiled/uapi.js +0 -76
  393. toolkit/workspace/precompiled/udashboard.js +0 -137
  394. toolkit/workspace/precompiled/ustyle.css +0 -28
  395. toolkit/workspace/precompiled/uwidgets.js +0 -179
  396. /toolkit/user_data/node_config_archive/.include → /micrOS/source/config/_git.keep +0 -0
  397. /micrOS/source/{IO_rp2.py → modules/IO_rp2.py} +0 -0
  398. /micrOS/source/{LM_tinyrgb.py → modules/LM_tinyrgb.py} +0 -0
  399. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info/licenses}/LICENSE +0 -0
  400. {micrOSDevToolKit-2.1.5.dist-info → microsdevtoolkit-2.26.1.dist-info}/top_level.txt +0 -0
micrOS/source/Time.py CHANGED
@@ -14,27 +14,29 @@ from network import WLAN, STA_IF
14
14
  from utime import sleep_ms, time, mktime, localtime
15
15
 
16
16
  from Config import cfgput, cfgget
17
- from Debug import errlog_add, console_write
17
+ from Debug import syslog, console_write
18
18
  from urequests import get as http_get
19
+ from Files import OSPath, path_join
19
20
 
20
21
 
21
22
  class Sun:
22
23
  TIME = {}
23
24
  UTC = cfgget('utc') # STORED IN MINUTE
24
25
  BOOTIME = None # Initialize BOOTIME: Not SUN, but for system uptime
26
+ FILE_CACHE = path_join(OSPath.DATA, 'sun.cache')
25
27
 
26
28
 
27
- def set_time(year, month, mday, hour, min, sec):
29
+ def set_time(year, month, mday, hour, minute, sec):
28
30
  """
29
31
  Set Localtime + RTC Clock manually + update BOOTIME/uptime
30
32
  https://docs.micropython.org/en/latest/library/machine.RTC.html
31
33
  """
32
34
  # Make time from tuple to sec
33
- time_sec = mktime((year, month, mday, hour, min, sec, 0, 0))
35
+ time_sec = mktime((year, month, mday, hour, minute, sec, 0, 0))
34
36
  # Set localtime
35
37
  localtime(time_sec)
36
38
  # Set RTC
37
- RTC().datetime((year, month, mday, 0, hour, min, sec, 0))
39
+ RTC().datetime((year, month, mday, 0, hour, minute, sec, 0))
38
40
  # (re)set uptime when settime - normally at boot time
39
41
  if Sun.BOOTIME is None:
40
42
  Sun.BOOTIME = time()
@@ -47,7 +49,7 @@ def ntp_time():
47
49
  :return: ntp date struct
48
50
  """
49
51
  if not WLAN(STA_IF).isconnected():
50
- errlog_add("STA not connected: ntptime")
52
+ syslog("[WARN] STA not connected: ntptime")
51
53
  return False
52
54
 
53
55
  def get_ntp():
@@ -83,31 +85,30 @@ def ntp_time():
83
85
  console_write(f"ntptime error.:{e}")
84
86
  err = e
85
87
  sleep_ms(100)
86
- errlog_add(f"[ERR] ntptime: {err}")
88
+ syslog(f"[ERR] ntptime: {err}")
87
89
  return False
88
90
 
89
91
 
90
92
  def __sun_cache(mode):
91
93
  """
92
- pds - persistent data structure
94
+ File cache
93
95
  modes:
94
96
  r - recover, s - save
95
97
  """
96
98
  if mode == 's':
97
99
  # SAVE CACHE
98
- temp = {}
99
100
  try:
100
- with open('sun.pds', 'w') as f:
101
- for k, v in Sun.TIME.items():
102
- temp[k] = tuple([str(t) for t in v])
103
- f.write(';'.join([f'{k}:{"-".join(v)}' for k, v in temp.items()]))
101
+ with open(Sun.FILE_CACHE, 'w') as f:
102
+ cache = {k:tuple([str(t) for t in v]) for k, v in Sun.TIME.items()}
103
+ f.write(';'.join([f'{k}:{"-".join(v)}' for k, v in cache.items()]))
104
104
  except:
105
- errlog_add("[ERR] Cannot write sun cache")
105
+ syslog("[ERR] Cannot write sun cache")
106
106
  return
107
107
  try:
108
108
  # RESTORE CACHE
109
- with open('sun.pds', 'r') as f:
110
- buff = {data.split(':')[0]: data.split(':')[1].split('-') for data in f.read().strip().split(';')}
109
+ with open(Sun.FILE_CACHE, 'r') as f:
110
+ buff = {data.split(':')[0]: data.split(':')[1].split('-')
111
+ for data in f.read().strip().split(';')}
111
112
  for k, v in buff.items():
112
113
  Sun.TIME[k] = tuple([int(e) for e in v])
113
114
  except:
@@ -140,7 +141,7 @@ def suntime():
140
141
  Sun.UTC = int(response.get('offset') / 60) # IN MINUTE
141
142
  cfgput('utc', Sun.UTC, True)
142
143
  except Exception as e:
143
- errlog_add(f'[ERR] ip-api: {e} data: {response}')
144
+ syslog(f'[ERR] ip-api: {e} data: {response}')
144
145
  return Sun.TIME
145
146
 
146
147
  # SUNSET-SUNRISE API REQUEST HANDLING
@@ -152,12 +153,10 @@ def suntime():
152
153
  _, response = http_get(url, sock_size=512, jsonify=True)
153
154
  results = response.get('results')
154
155
  time_regex = re_comp(r'T([0-9:]+)')
155
- sun = {
156
- 'sunrise': time_regex.search(results.get('sunrise')).group(1).split(':'),
157
- 'sunset': time_regex.search(results.get('sunset')).group(1).split(':')
158
- }
156
+ sun = {'sunrise': time_regex.search(results.get('sunrise')).group(1).split(':'),
157
+ 'sunset': time_regex.search(results.get('sunset')).group(1).split(':')}
159
158
  except Exception as e:
160
- errlog_add(f'[ERR] sunrise-api: {e} data: {response}')
159
+ syslog(f'[ERR] sunrise-api: {e} data: {response}')
161
160
  # Try to parse response by expected sun_keys
162
161
  try:
163
162
  for key in sun:
@@ -165,7 +164,7 @@ def suntime():
165
164
  sun[key][0] += int(Sun.UTC / 60)
166
165
  sun[key] = tuple(sun[key])
167
166
  except Exception as e:
168
- errlog_add(f'sunrise-api parse error: {e} sun: {sun}')
167
+ syslog(f'[WARN] sunrise-api parse error: {e} sun: {sun}')
169
168
  # Retrieve cached data and return
170
169
  __sun_cache('r') # Using Sun.TIME
171
170
  console_write('[suntime] loaded from cache')
micrOS/source/Types.py CHANGED
@@ -11,25 +11,25 @@ USAGE:
11
11
  SLIDER brightness br=<0-100>
12
12
  SLIDER brightness br=<0-100-5>
13
13
  """
14
- from json import dumps
15
- from Debug import errlog_add
14
+ from json import dumps, loads
15
+ from Debug import syslog
16
16
 
17
17
  ########################################################
18
18
  # HELP TUPLE RESOLVER #
19
19
  ########################################################
20
+
20
21
  __TEMPLATE = {'type': 'n/a', 'lm_call': ''}
21
22
  __RANGE_100 = {'range': (0, 100, 2)}
22
23
  __RANGE_255 = {'range': (0, 255, 2)}
23
- __RANGE_OPTS = {'range': ("True", "False")}
24
-
24
+ __OPTIONS = {'options': ("None",)}
25
25
 
26
- # WIDGET TYPES - STRUCTURE (DYNAMIC)
27
- BUTTON = __TEMPLATE | {'type': 'button'} # Mandatory func params: n/a
28
- TOGGLE = __TEMPLATE | {'type': 'toggle'} | __RANGE_OPTS # Mandatory func params: state
29
- SLIDER = __TEMPLATE | {'type': 'slider'} | __RANGE_100 # Mandatory func params: br
30
- TEXTBOX = __TEMPLATE | {'type': 'textbox', 'refresh': 5000} # Mandatory func params: n/a
31
- COLOR = __TEMPLATE | {'type': 'color'} | __RANGE_255 # Mandatory func params: r, g, b
32
- WHITE = __TEMPLATE | {'type': 'white'} | __RANGE_255 # Mandatory func params: wc, ww
26
+ # Widget Types
27
+ BUTTON = lambda: __TEMPLATE | {'type': 'button'} | __OPTIONS
28
+ SLIDER = lambda: __TEMPLATE | {'type': 'slider'} | __RANGE_100
29
+ TEXTBOX = lambda: __TEMPLATE | {'type': 'textbox', 'refresh': 10000}
30
+ COLOR = lambda: __TEMPLATE | {'type': 'color'} | __RANGE_255
31
+ WHITE = lambda: __TEMPLATE | {'type': 'white'} | __RANGE_255
32
+ JOYSTICK = lambda: __TEMPLATE | {'type': 'joystick'} | __RANGE_100
33
33
 
34
34
 
35
35
  ########################################################
@@ -41,67 +41,102 @@ def _placeholder(var, value, type_dict):
41
41
  try:
42
42
  int(data)
43
43
  return True
44
- except:
44
+ except ValueError:
45
45
  return False
46
46
 
47
- new_range = None
48
47
  if value.startswith('<') and value.endswith('>'):
49
48
  if '-' in value:
50
49
  _range = value[1:-1].split('-')
51
- # Range param int check
52
- if len([r for r in _range if not _is_int(r)]) == 0:
53
- # Get custom range values
54
- _min, _max, _step = (_range[0], _range[1], _range[2]) if len(_range) > 2 else (_range[0], _range[1], None)
55
- if _step is None:
56
- _step = type_dict['range'][2]
57
- new_range = (int(_min), int(_max), int(_step))
58
- #print(f"[i] Range overwrite[{var}]: {_range}")
59
- return f"{var}=:range:", new_range
60
- # Ignore param
61
- return "", new_range
62
- # Keep param value
63
- return f"{var}={value}", new_range
50
+ if all(_is_int(r) for r in _range):
51
+ _min, _max = int(_range[0]), int(_range[1])
52
+ _step = int(_range[2]) if len(_range) > 2 else type_dict['range'][2]
53
+ return f"{var}=:range:", (_min, _max, _step), 'range'
54
+ return "", None, None
55
+ if ',' in value:
56
+ _opts = tuple(value[1:-1].split(','))
57
+ return f"{var}=:options:", _opts, 'options'
58
+ return f"{var}={value}", None, None
64
59
 
65
60
 
66
61
  def _generate(type_dict, help_msg):
67
- func = help_msg.split()[1]
68
- params = help_msg.split()[2:] if len(help_msg.split()) > 2 else []
69
- valid_params = []
62
+ parts = help_msg.split()
63
+ func, params = parts[1], parts[2:] if len(parts) > 2 else []
64
+ valid_params, overwrite = [], {}
70
65
  for p in params:
71
66
  if '=' in p:
72
67
  var, value = p.split("=")
68
+ param_str, values, value_type = _placeholder(var, value, type_dict)
69
+ if value_type:
70
+ overwrite[value_type] = values
71
+ valid_params.append(param_str)
72
+ else:
73
+ if p.startswith("&"):
74
+ # Handle special use case - task postfix
75
+ valid_params.append(p)
76
+ else:
77
+ param_str = f'{p}=:{"range" if "range" in type_dict else "options"}:'
78
+ valid_params.append(param_str)
79
+ type_dict['lm_call'] = f"{func} {' '.join(valid_params)}"
80
+ return dumps(type_dict | overwrite)
81
+
82
+
83
+ def _extract_tag_and_overrides(msg):
84
+ """
85
+ Example:
86
+ "TEXTBOX{'refresh': 5000} measure ntfy=False"
87
+ OR with default refresh value:
88
+ "TEXTBOX measure ntfy=False"
89
+ return:
90
+ tag -> "TEXTBOX"
91
+ overrides(optional) -> {'refresh': 5000}
92
+ cmd -> "measure ntfy=False"
93
+ """
94
+ msg = msg.strip()
95
+ if not msg:
96
+ return "", {}, ""
97
+ tag_end = len(msg)
98
+ for i, c in enumerate(msg):
99
+ if c in " {":
100
+ tag_end = i
101
+ break
102
+ tag = msg[:tag_end]
103
+ cmd = msg[tag_end:].lstrip()
104
+ overrides = {}
105
+ if tag.isupper() and cmd.startswith('{'):
106
+ i = cmd.find('}')
107
+ if i >= 0:
73
108
  try:
74
- p, new_range = _placeholder(var, value, type_dict)
75
- if new_range is not None:
76
- type_dict['range'] = new_range
109
+ overrides = loads('{' + cmd[1:i].replace("'", '"') + '}')
77
110
  except Exception as e:
78
- errlog_add(f"[ERR] Type.resolve._placeholder: {e}")
79
- else:
80
- # Empty param fallback
81
- p = f'{p}=:range:'
82
- valid_params.append(p)
83
- type_dict['lm_call'] = f"{func} " + " ".join(valid_params)
84
- return dumps(type_dict)
111
+ syslog(f"[ERR] Types tag overrides: {e}")
112
+ cmd = cmd[i + 1:].lstrip()
113
+ return tag, overrides, cmd
114
+
85
115
 
86
116
  def resolve(help_data, widgets=False):
87
117
  help_msg = []
88
118
  for msg in help_data:
89
- tag = msg.split()[0].strip()
90
- # TYPE DECORATION detect in help strings
91
- if tag.isupper():
92
- try:
93
- resolved_tag = eval(tag)
94
- except NameError:
95
- resolved_tag = tag
119
+ tag, overrides, cmd = _extract_tag_and_overrides(msg)
120
+ if tag and tag.isupper():
121
+ # TAG exists in help message
96
122
  if widgets:
97
- if isinstance(resolved_tag, dict):
98
- # Create json string type + extract widgets from help message
99
- help_msg.append(_generate(resolved_tag, msg))
123
+ # Format output as widget - machine-readable
124
+ factory = globals().get(tag, None)
125
+ resolved_tag = factory() if callable(factory) else factory
126
+ if isinstance(resolved_tag, dict) and overrides:
127
+ # Apply inline widget-only overrides, e.g. TEXTBOX{'refresh': 5000}
128
+ resolved_tag.update(overrides)
129
+ try:
130
+ # Build a clean message for _generate, without inline {...}
131
+ cleaned_msg = (tag + ' ' + cmd).strip()
132
+ # Generate JSON output with TAG
133
+ help_msg.append(_generate(resolved_tag, cleaned_msg))
134
+ except Exception as e:
135
+ syslog(f"[ERR] resolve {tag} help msg: {e}")
100
136
  continue
101
- # Human readable mode (decorated functions)
102
- help_msg.append(msg.replace(tag, '').strip())
137
+ # Widgets OFF - TAG exists - remove TAG from output
138
+ help_msg.append(cmd.strip())
103
139
  elif not widgets:
104
- # Human readable mode (non decorated functions)
105
- help_msg.append(f"{msg}")
140
+ # No TAG - Widgets OFF output
141
+ help_msg.append(msg)
106
142
  return tuple(help_msg)
107
-