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