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,327 +0,0 @@
1
- from LM_neopixel import load_n_init, segment, Data, status
2
- from LM_neopixel import pinmap as pm
3
- from random import randint
4
-
5
-
6
- #################################
7
- # NEOPIXEL EFFECT DRAWER CLASS #
8
- #################################
9
-
10
- class DrawEffect:
11
- __instance = None
12
-
13
- def __new__(cls, pixcnt=24):
14
- if DrawEffect.__instance is None:
15
- # SocketServer singleton properties
16
- DrawEffect.__instance = super().__new__(cls)
17
- DrawEffect.__instance.pix_cnt = None
18
- DrawEffect.__instance.index_offset = 0
19
- DrawEffect.__instance.color_wheel = 0
20
- DrawEffect.__instance.__init_effect(pixcnt)
21
- DrawEffect.__instance.offset_gen = None
22
- DrawEffect.__instance.auto_shift = False
23
- return DrawEffect.__instance
24
-
25
- def __init_effect(cls, ledcnt):
26
- """
27
- Set neopixel object & store pixel cnt
28
- """
29
- if Data.NEOPIXEL_OBJ is None:
30
- load_n_init(ledcnt=ledcnt)
31
- cls.pix_cnt = Data.NEOPIXEL_OBJ.n
32
- if cls.pix_cnt is None:
33
- cls.pix_cnt = Data.NEOPIXEL_OBJ.n
34
- return cls.pix_cnt
35
-
36
- def __offset(cls, shift):
37
- def _gen():
38
- while True:
39
- if cls.auto_shift:
40
- # Step rotation cycle - shift True
41
- cls.index_offset += 1
42
- if cls.index_offset > cls.pix_cnt - 1:
43
- cls.index_offset = 0
44
- for k in range(cls.index_offset, cls.pix_cnt):
45
- yield k
46
- for k in range(0, cls.index_offset):
47
- yield k
48
- cls.auto_shift = shift
49
- if cls.offset_gen is None:
50
- cls.offset_gen = _gen()
51
- return cls.offset_gen
52
-
53
- def draw(cls, iterable, shift=False):
54
- """
55
- DRAW GENERATED COLORS (RGB)
56
- HELPER FUNCTION with auto shift (offset) sub function
57
- :param iterable: Colors generator object / iterable
58
- :param shift: automatic color map rotation
59
- :return: None
60
- """
61
- offset_gen = cls.__offset(shift=shift)
62
- r, g, b, i = 0, 0, 0, 0
63
- for r, g, b in iterable:
64
- # Handle index offset - rotate effect
65
- i = next(offset_gen)
66
- # Write data to neopixel - write / segment :)
67
- segment(int(r), int(g), int(b), s=i, cache=False, write=False)
68
- segment(int(r), int(g), int(b), s=i, cache=False, write=True)
69
- return True
70
-
71
-
72
- def __color_input(r, g, b):
73
- _r, _g, _b, _ = Data.DCACHE
74
- r = _r if r is None else r
75
- g = _g if g is None else g
76
- b = _b if b is None else b
77
- return r, g, b
78
-
79
-
80
- #################################
81
- # DEFINE EFFECTS #
82
- #################################
83
-
84
- def meteor(r=None, g=None, b=None, shift=True, ledcnt=24):
85
- """
86
- Meteor effect
87
- :param r int: red value 0-1000
88
- :param g int: green value 0-1000
89
- :param b int: blue value 0-1000
90
- :param shift bool: automatic effect shifting
91
- :param ledcnt int: number of neopixel elements in chain (default: 24)
92
- :return str: verdict
93
- """
94
- def __effect(r, g, b, pixel):
95
- """
96
- Describe one full length color map
97
- :param r: red target color
98
- :param g: green target color
99
- :param b: blue target color
100
- :param pixel: number of led segments
101
- :return: yield tuple with r,g,b
102
- """
103
- step = float(0.9 / pixel)
104
- for k in range(0, pixel):
105
- fade = (k+1) * step
106
- data = round(r * fade), round(g * fade), round(b * fade)
107
- yield data
108
-
109
- # Conditional value load - with neopixel cache
110
- r, g, b = __color_input(r, g, b)
111
-
112
- # Init custom params
113
- effect = DrawEffect(pixcnt=ledcnt)
114
- # Create effect data
115
- cgen = __effect(r, g, b, effect.pix_cnt)
116
- # Draw effect data
117
- effect.draw(cgen, shift=shift)
118
- return 'Meteor R{}:G{}:B{} N:{}'.format(r, g, b, effect.pix_cnt)
119
-
120
-
121
- def cycle(r=None, g=None, b=None, shift=True, ledcnt=24):
122
- """
123
- Cycle effect
124
- :param r int: red value 0-1000
125
- :param g int: green value 0-1000
126
- :param b int: blue value 0-1000
127
- :param shift bool: automatic effect shifting
128
- :param ledcnt int: number of neopixel elements in chain (default: 24)
129
- :return str: verdict
130
- """
131
- def __effect(r, g, b, pixel):
132
- """
133
- Describe one full length color map
134
- :param r: red target color
135
- :param g: green target color
136
- :param b: blue target color
137
- :param pixel: number of led segments
138
- :return: yield tuple with r,g,b
139
- """
140
- lightrgb = round(r*0.1), round(g*0.1), round(b*0.1)
141
- yield lightrgb
142
- yield r, g, b
143
- yield lightrgb
144
- for i in range(3, pixel):
145
- yield 0, 0, 0
146
-
147
- # Conditional value load - with neopixel cache
148
- r, g, b = __color_input(r, g, b)
149
-
150
- effect = DrawEffect(pixcnt=ledcnt)
151
- cgen = __effect(r, g, b, effect.pix_cnt)
152
- effect.draw(cgen, shift=shift)
153
- return 'Cycle R{}:G{}:B{} N:{}'.format(r, g, b, effect.pix_cnt)
154
-
155
-
156
- def rainbow(step=1, br=50, ledcnt=24):
157
- """
158
- Rainbow effect
159
- :param step int: color weel resolution in step (default: 1)
160
- :param br int: brightness in percentage
161
- :param ledcnt int: number of neopixel elements in chain (default: 24)
162
- :return str: verdict
163
- """
164
- def __wheel(pos):
165
- # Input a value 0 to 255 to get a color value.
166
- # The colours are a transition r - g - b - back to r.
167
- if pos < 0 or pos > 255:
168
- return 0, 0, 0
169
- if pos < 85:
170
- return 255 - pos * 3, pos * 3, 0
171
- if pos < 170:
172
- pos -= 85
173
- return 0, 255 - pos * 3, pos * 3
174
- pos -= 170
175
- return pos * 3, 0, 255 - pos * 3
176
-
177
- def __effect(cnt, step, br):
178
- """
179
- :param cnt: led segment count
180
- :param br: max brightness 0-100%
181
- :param step: step size
182
- """
183
- cw = DrawEffect().color_wheel
184
- DrawEffect().color_wheel = 0 if cw >= 255 else cw+step
185
- for i in range(0, cnt):
186
- rc_index = (i * 256 // cnt) + DrawEffect().color_wheel
187
- r, g, b = __wheel(rc_index & 255)
188
- yield round(r*br*0.01), round(g*br*0.01), round(b*br*0.01)
189
-
190
- effect = DrawEffect(pixcnt=ledcnt)
191
- cgen = __effect(effect.pix_cnt, step=step, br=br)
192
- effect.draw(cgen, shift=True)
193
- return 'Rainbow'
194
-
195
-
196
- def shader(size=6, offset=0, shift=False, ledcnt=24):
197
- """
198
- Shader for ring lamp
199
- :param size int: shader size (disabled LEDs)
200
- :param offset int: rotate shader 0-(ledcnt-1)
201
- :param shift bool: auto shift shader effect (False)
202
- :param ledcnt int: number of neopixel elements in chain (default: 24)
203
- :return str: verdict
204
- """
205
- def __effect(size, offset, pixcnt):
206
- # Conditional value load - with neopixel cache
207
- r, g, b, _ = Data.DCACHE
208
- # calculate 0->24 range
209
- _slice1 = pixcnt if size + offset > pixcnt else size + offset
210
- # calculate 24->0-> range (overflow)
211
- _slice2 = size + offset - pixcnt if size + offset > pixcnt else 0
212
- for i in range(0, pixcnt):
213
- if offset < i < _slice1:
214
- yield 0, 0, 0
215
- elif 0 <= i < _slice2:
216
- yield 0, 0, 0
217
- else:
218
- yield r, g, b
219
-
220
- # Init custom params
221
- effect = DrawEffect(pixcnt=ledcnt)
222
- # Create effect data
223
- if size < effect.pix_cnt:
224
- cgen = __effect(size, offset, effect.pix_cnt)
225
- # Draw effect data
226
- effect.index_offset = 0 # reset auto shift offset
227
- effect.draw(cgen, shift=shift)
228
- return 'Shader size: {} ->{} ({})'.format(size, offset, effect.pix_cnt)
229
- return 'Shader invalid size: {} ({})'.format(size, effect.pix_cnt)
230
-
231
-
232
- def random(max_val=255):
233
- """
234
- Demo function: implements random color change
235
- :param max_val: set channel maximum generated value: 0-255
236
- :return str: rgb status - states: R, G, B
237
- """
238
- r = randint(0, max_val)
239
- g = randint(0, max_val)
240
- b = randint(0, max_val)
241
- Data.DCACHE[0] = r
242
- Data.DCACHE[1] = g
243
- Data.DCACHE[2] = b
244
- return "Set random: R:{} G: B:{}".format(r, g, b)
245
-
246
-
247
- def color(r=None, g=None, b=None):
248
- """
249
- Set color buffer - for runtime effect color change
250
- :param r int: red channel 0-255 (default: None - cached value)
251
- :param g int: green channel 0-255 (default: None - cached value)
252
- :param b int: blue channel 0-255 (default: None - cached value)
253
- :return dict: rgb status - states: R, G, B, S
254
- """
255
- # Conditional value load - with neopixel cache
256
- r, g, b = __color_input(r, g, b)
257
- Data.DCACHE[0] = r
258
- Data.DCACHE[1] = g
259
- Data.DCACHE[2] = b
260
- return status()
261
-
262
-
263
- def fire(r=None, g=None, b=None, ledcnt=24):
264
-
265
- def __effect(r, g, b, pixcnt):
266
- for _ in range(pixcnt):
267
- rand_percent = round(randint(1, 200)/100, 2)
268
-
269
- rgb = [
270
- r * rand_percent,
271
- g * rand_percent,
272
- b * rand_percent
273
- ]
274
-
275
- for i, color in enumerate(rgb):
276
- if color > 255:
277
- rgb[i] = 255
278
- if color < 0:
279
- rgb[i] = 0
280
- yield rgb
281
-
282
- # Conditional value load - with neopixel cache
283
- r, g, b = __color_input(r, g, b)
284
-
285
- effect = DrawEffect(pixcnt=ledcnt)
286
- cgen = __effect(r, g, b, effect.pix_cnt)
287
- effect.draw(cgen, shift=False)
288
- return 'fire R{}:G{}:B{} N:{}'.format(r, g, b, effect.pix_cnt)
289
-
290
-
291
- #######################
292
- # LM helper functions #
293
- #######################
294
-
295
- def lmdep():
296
- """
297
- Show Load Module dependency
298
- - List of load modules used by this application
299
- :return: tuple
300
- """
301
- return 'neopixel'
302
-
303
-
304
- def pinmap():
305
- """
306
- [i] micrOS LM naming convention
307
- Shows logical pins - pin number(s) used by this Load module
308
- - info which pins to use for this application
309
- :return dict: pin name (str) - pin value (int) pairs
310
- """
311
- return pm()
312
-
313
-
314
- def help(widgets=False):
315
- """
316
- [i] micrOS LM naming convention - built-in help message
317
- :return tuple:
318
- (widgets=False) list of functions implemented by this application
319
- (widgets=True) list of widget json for UI generation
320
- """
321
- return 'meteor r=<0-255> g=<0-255> b=<0-255> shift=True ledcnt=24',\
322
- 'cycle r g b shift=True ledcnt=24',\
323
- 'rainbow step=1 br=<5-100> ledcnt=24',\
324
- 'fire r=None g=None b=None ledcnt=24',\
325
- 'shader size=4 offset=0 shift=True ledcnt=24',\
326
- 'random max_val=255',\
327
- 'color r g b', 'pinmap'
@@ -1,76 +0,0 @@
1
- import uasyncio as asyncio
2
- from LM_servo import sduty, deinit
3
- from LM_stepper import step
4
- from Common import micro_task
5
-
6
-
7
- class Data:
8
- TASK_TAG = "pet_feeder.portion"
9
-
10
-
11
- async def __portion_task(portion, posmin, posmax):
12
- # ASYNC TASK ADAPTER [*2] with automatic state management
13
- # [micro_task->Task] TaskManager access to task internals (out, done attributes)
14
- with micro_task(tag=Data.TASK_TAG) as my_task:
15
- for p in range(0, portion):
16
- # [1]Run pos fill up
17
- for pos in range(posmin, posmax):
18
- sduty(pos)
19
- await asyncio.sleep_ms(15)
20
- # [2]Wait between fill up / food out
21
- await asyncio.sleep_ms(500)
22
- # [3]Run pos food out
23
- for pos in range(posmax, posmin, -1):
24
- sduty(pos)
25
- await asyncio.sleep_ms(20)
26
- my_task.out = "{}/{} serving".format(p+1, portion)
27
- deinit()
28
- my_task.out += ": {} task done".format(Data.TASK_TAG)
29
-
30
-
31
- def serve(portion=1, posmin=65, posmax=97):
32
- """
33
- Pet feeder - with servo motor
34
- :param portion: number of portions (min/max positions to repeat)
35
- :param posmin: servo "start" position
36
- :param posmax: servo "stop" position
37
- """
38
- # [!] ASYNC TASK CREATION [1*] with async task callback + taskID (TAG) handling
39
- state = micro_task(tag=Data.TASK_TAG, task=__portion_task(portion=portion, posmin=posmin, posmax=posmax))
40
- return "Starting" if state else "Already running"
41
-
42
-
43
- def serve_w_stepper(portion=1, forward=135, back=10):
44
- """
45
- Pet feeder (beta) - with stepper motor
46
- :param count: number of portions
47
- :param forward: s
48
- :param back:
49
- """
50
- for _ in range(portion):
51
- # portion move
52
- step(forward)
53
- # Safety anti-block solution?
54
- step(-back)
55
- step(back)
56
- step(-back)
57
- step(back)
58
-
59
-
60
- def lmdep():
61
- """
62
- Show Load Module dependency
63
- - List of load modules used by this application
64
- :return: tuple
65
- """
66
- return 'servo', 'stepper'
67
-
68
-
69
- def help(widgets=False):
70
- """
71
- [i] micrOS LM naming convention - built-in help message
72
- :return tuple:
73
- (widgets=False) list of functions implemented by this application
74
- (widgets=True) list of widget json for UI generation
75
- """
76
- return 'serve portion=1 \t\t[info] servo control', 'serve_w_stepper portion=1 \t[info] stepper control', 'lmdep'
@@ -1,51 +0,0 @@
1
- from time import sleep
2
- from microIO import physical_pin, pinmap_dump
3
- from Common import SmartADC
4
-
5
- """
6
- https://cimpleo.com/blog/simple-arduino-ph-meter/
7
- ADC.ATTN_0DB — the full range voltage: 1.2V
8
- ADC.ATTN_2_5DB — the full range voltage: 1.5V
9
- ADC.ATTN_6DB — the full range voltage: 2.0V
10
- ADC.ATTN_11DB — the full range voltage: 3.3V
11
- """
12
-
13
-
14
- def __measure(samples=10):
15
- adc_obj = SmartADC.get_singleton(physical_pin('ph'))
16
- mbuf = 0
17
- for k in range(0, samples):
18
- mbuf += adc_obj.get()['volt']
19
- sleep(0.1)
20
- voltage = round(mbuf / samples, 3)
21
- return voltage
22
-
23
-
24
- def measure():
25
- data = SmartADC.get_singleton(physical_pin('ph')).get()
26
- return "ADC data: {}\nAVG V: {}".format(data, __measure())
27
-
28
-
29
- #######################
30
- # LM helper functions #
31
- #######################
32
-
33
- def pinmap():
34
- """
35
- [i] micrOS LM naming convention
36
- Shows logical pins - pin number(s) used by this Load module
37
- - info which pins to use for this application
38
- :return dict: pin name (str) - pin value (int) pairs
39
- """
40
- return pinmap_dump('ph')
41
-
42
-
43
- def help(widgets=False):
44
- """
45
- [i] micrOS LM naming convention - built-in help message
46
- :return tuple:
47
- (widgets=False) list of functions implemented by this application
48
- (widgets=True) list of widget json for UI generation
49
- """
50
- return 'measure', 'pinmap'
51
-
micrOS/source/LM_rest.py DELETED
@@ -1,40 +0,0 @@
1
- from urequests import get as http_get
2
-
3
- class Rest:
4
- GATEWAY_HOST = None
5
-
6
-
7
- def load_n_init(gateway_url=None):
8
- """
9
- Set gateway url aka main domain
10
- :param gateway_url: base url of gateway, like: http://gateway.local:5000
11
- """
12
- if gateway_url is None:
13
- if Rest.GATEWAY_HOST is None:
14
- return 'Missing Gateway url'
15
- return Rest.GATEWAY_HOST
16
- Rest.GATEWAY_HOST = gateway_url
17
- return f'Set gateway url: {gateway_url}'
18
-
19
-
20
- def url(subdomain):
21
- """
22
- Execute rest call with given subdomain
23
- :param subdomain: command parameters of url, like: /webhooks/template
24
- """
25
- if Rest.GATEWAY_HOST is None:
26
- return 'Missing Gateway url'
27
- if not subdomain.startswith('/'):
28
- subdomain = '/' + subdomain
29
- domain = f'{Rest.GATEWAY_HOST}{subdomain}'
30
- status_code, response = http_get(domain, jsonify=True)
31
- return {'status': status_code, 'response': response}
32
-
33
- def help(widgets=False):
34
- """
35
- [i] micrOS LM naming convention - built-in help message
36
- :return tuple:
37
- (widgets=False) list of functions implemented by this application
38
- (widgets=True) list of widget json for UI generation
39
- """
40
- return 'load_n_init gateway_url=<http://gateway.local:5000>', 'url subdomain=</webhooks/template>'
@@ -1,73 +0,0 @@
1
- from LM_system import memory_usage
2
- from Common import socket_stream
3
-
4
-
5
- @socket_stream
6
- def raise_error(msgobj=None):
7
- """
8
- Test function - raise LM exception
9
- """
10
- if msgobj is not None:
11
- msgobj("Raise test exception")
12
- raise Exception("Test exception")
13
-
14
-
15
- @socket_stream
16
- def memory_leak(cnt=160, msgobj=None):
17
- """
18
- Test function - allocate lot of memory
19
- :param cnt: data counter, default 160 iteration
20
- :return: verdict
21
- """
22
- dict_test = {}
23
- mem_start = memory_usage()['mem_used']
24
- for k in range(cnt):
25
- mem = memory_usage()['percent']
26
- data = "micrOS memory usage: {} %".format(mem)
27
- if msgobj is not None:
28
- msgobj("[{}] gen: {}".format(k, data))
29
- dict_test[k] = data
30
- mem_end = memory_usage()['mem_used']
31
- delta = mem_start - mem_end
32
- return '[{}] RAM Alloc.: {} kB {} byte'.format(len(dict_test), int(delta / 1024), int(delta % 1024))
33
-
34
- @socket_stream
35
- def recursion_limit(limit=14, msgobj=None):
36
- cnt = 0
37
- for cnt in range(1, limit+1):
38
- try:
39
- _recursion(cnt, msgobj=msgobj)
40
- except Exception as e:
41
- msgobj(f"ok error: {e}")
42
- break
43
- return f"Recursion limit: {cnt}"
44
-
45
-
46
- def _recursion(cnt, msgobj=None):
47
- """
48
- Test function - recursion test
49
- :param cnt: recursion depth
50
- :return: verdict
51
- Error example:
52
- node01 $ robustness recursion_limit 15
53
- lm_exec LM_robustness->recursion_limit: maximum recursion depth exceeded
54
- """
55
- if cnt > 0:
56
- remain = _recursion(cnt-1)
57
- if msgobj is not None:
58
- msgobj("recalled {}".format(cnt))
59
- else:
60
- remain = 0
61
- return remain
62
-
63
-
64
- def help(widgets=False):
65
- """
66
- [i] micrOS LM naming convention - built-in help message
67
- :return tuple:
68
- (widgets=False) list of functions implemented by this application
69
- (widgets=True) list of widget json for UI generation
70
- """
71
- return 'NOTE: This is a test module to validate system robustness', \
72
- 'raise_error', 'memory_leak cnt=160', 'recursion_limit cnt=14'
73
-
@@ -1,96 +0,0 @@
1
- import uasyncio as asyncio
2
- from Notify import Telegram
3
- from Common import micro_task
4
- from Network import ifconfig
5
-
6
- #########################################
7
- # micrOS Notifications #
8
- #########################################
9
-
10
- # ENABLE TELEGRAM IF NW IS STA - CONNECTED TO THE WEB
11
- _ENABLE = True if ifconfig()[0] == "STA" else False
12
- if _ENABLE:
13
- TELEGRAM_OBJ = Telegram()
14
- else:
15
- # NO NETWORK CONNECTION (STA)
16
- TELEGRAM_OBJ = None
17
-
18
-
19
- def load_n_init():
20
- """
21
- Set custom chat commands for Telegram
22
- - /ping
23
- - /cmd module function (params)
24
- """
25
- if TELEGRAM_OBJ is None:
26
- return "Network unavailable."
27
- verdict = TELEGRAM_OBJ.set_commands()
28
- return "Missing telegram bot token" if verdict is None else verdict
29
-
30
-
31
- def send(text):
32
- """
33
- Send Telegram message - micrOS notification
34
- :param text: text to send
35
- return verdict
36
- """
37
- if TELEGRAM_OBJ is None:
38
- return "Network unavailable."
39
- verdict = TELEGRAM_OBJ.send_msg(text)
40
- return "Missing telegram bot token" if verdict is None else verdict
41
-
42
-
43
- def receive():
44
- """
45
- Receive Telegram message
46
- - if all value None, then no incoming messages
47
- One successful msg receive is necessary to get chat_id for msg send as well!
48
- """
49
- if TELEGRAM_OBJ is None:
50
- return "Network unavailable."
51
- verdict = TELEGRAM_OBJ.get_msg()
52
- return "Missing telegram bot token" if verdict is None else verdict
53
-
54
-
55
- async def __task():
56
- cancel_cnt = 0
57
- with micro_task(tag='telegram._loop') as my_task:
58
- my_task.out = "[UP] Running"
59
- while True:
60
- # Normal task period
61
- await asyncio.sleep(5)
62
- try:
63
- v = TELEGRAM_OBJ.receive_eval()
64
- my_task.out = "Missing bot token" if v is None else v
65
- cancel_cnt = 0
66
- except Exception as e:
67
- my_task.out = str(e)
68
- # Auto scale - blocking nature - in case of serial failures (5) - hibernate task (increase async sleep)
69
- cancel_cnt += 1
70
- if cancel_cnt > 5:
71
- my_task.out = f"[DOWN] {e}"
72
- cancel_cnt = 5
73
- # SLOW DOWN - hibernate task
74
- asyncio.sleep(115)
75
-
76
-
77
- def receiver_loop():
78
- """
79
- Telegram msg receiver loop - automatic LM execution
80
- - Only executes module (function) if the module is already loaded
81
- on the endpoint / micrOS node
82
- """
83
- if TELEGRAM_OBJ is None:
84
- return "Network unavailable."
85
- state = micro_task(tag='telegram._loop', task=__task())
86
- return "Starting" if state else "Already running"
87
-
88
-
89
- def help(widgets=False):
90
- """
91
- [i] micrOS LM naming convention - built-in help message
92
- :return tuple:
93
- (widgets=False) list of functions implemented by this application
94
- (widgets=True) list of widget json for UI generation
95
- """
96
- return 'send "text"', 'receive', 'receiver_loop', 'load_n_init', 'INFO: Send & Receive messages with Telegram bot'
micrOS/source/reset.py DELETED
@@ -1,11 +0,0 @@
1
- from os import listdir
2
- from time import sleep
3
- from machine import soft_reset, reset
4
-
5
- print('Device reboot now, boot micrOSloader...')
6
- sleep(1)
7
-
8
- if "main.py" in listdir():
9
- soft_reset()
10
- else:
11
- reset()