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/Shell.py CHANGED
@@ -2,7 +2,7 @@
2
2
  Module is responsible for shell like environment
3
3
  dedicated to micrOS framework.
4
4
  Built-in-function:
5
- - Shell wrapper for safe InterpreterCore interface
5
+ - Shell wrapper for lm_exec interface
6
6
  - Configuration handling interface - state machine handling
7
7
  - Help (runtime) message generation
8
8
 
@@ -11,12 +11,12 @@ Designed by Marcell Ban aka BxNxM
11
11
  #################################################################
12
12
  # IMPORTS #
13
13
  #################################################################
14
- from os import listdir
15
14
  from sys import modules
16
15
  from machine import reset as hard_reset, soft_reset
17
16
  from Config import cfgget, cfgput
17
+ from Files import OSPath, ilist_fs, path_join
18
18
  from Tasks import lm_exec
19
- from Debug import errlog_add
19
+ from Debug import syslog
20
20
 
21
21
 
22
22
  #################################################################
@@ -24,7 +24,8 @@ from Debug import errlog_add
24
24
  #################################################################
25
25
 
26
26
  class Shell:
27
- MICROS_VERSION = '2.1.5-0'
27
+ __slots__ = ['__devfid', '__auth_mode', '__hwuid', '__auth_ok', '__conf_mode']
28
+ MICROS_VERSION = '2.26.1-0'
28
29
 
29
30
  def __init__(self):
30
31
  """
@@ -42,57 +43,53 @@ class Shell:
42
43
  try:
43
44
  cfgput('version', Shell.MICROS_VERSION)
44
45
  except Exception as e:
45
- errlog_add(f"[ERR] micrOS version export failed (config): {e}")
46
+ syslog(f"[ERR] micrOS version export failed (config): {e}")
46
47
 
47
- def send(self, msg):
48
- """
49
- Must be defined by child class...
50
- """
51
- pass
48
+ async def a_send(self, msg):
49
+ """ Must be defined by child class... """
50
+ raise NotImplementedError("Child class must implement a_send method")
52
51
 
53
52
  def reset(self):
54
53
  """Reset shell state"""
55
54
  self.__auth_ok = False
56
55
  self.__conf_mode = False
57
56
 
58
- def reboot(self, hard=False):
59
- """Reboot micropython VM"""
60
- self.send(f"{'[HARD] ' if hard else ''}Reboot micrOS system.")
61
- self.send("Bye!")
57
+ async def reboot(self, hard=False):
58
+ """ Reboot micropython VM """
59
+ await self.a_send(f"{'[HARD] ' if hard else ''}Reboot micrOS system.\nBye!")
62
60
  if hard:
63
61
  hard_reset()
64
62
  soft_reset()
65
63
 
66
64
  def prompt(self):
67
- """Generate prompt"""
65
+ """ Generate prompt """
68
66
  auth = "[password] " if self.__auth_mode and not self.__auth_ok else ""
69
67
  mode = "[configure] " if self.__conf_mode else ""
70
68
  return f"{auth}{mode}{self.__devfid} $ "
71
69
 
72
- def __auth(self, msg_list):
73
- """Authorize user"""
70
+ async def __auth(self, msg_list):
71
+ """ Authorize user """
74
72
  # Set user auth state
75
73
  if self.__auth_mode and not self.__auth_ok:
76
74
  # check password
77
- usrpwd = cfgget('appwd')
78
- if usrpwd == msg_list[0].strip():
75
+ if cfgget('appwd') == msg_list[0].strip():
79
76
  self.__auth_ok = True
80
- self.send("AuthOk")
77
+ await self.a_send("AuthOk")
81
78
  return True, []
82
- self.send("AuthFailed\nBye!")
79
+ await self.a_send("AuthFailed\nBye!")
83
80
  return False, []
84
81
  return True, msg_list
85
82
 
86
- def shell(self, msg):
83
+ async def shell(self, msg):
87
84
  """
88
85
  micrOS Shell main - input string handling
89
86
  :param msg: incoming shell command (command or load module call)
90
87
  """
91
- state = self.__shell(msg)
92
- self.send(self.prompt())
88
+ state = await self.__shell(msg)
89
+ await self.a_send(self.prompt())
93
90
  return state
94
91
 
95
- def __shell(self, msg):
92
+ async def __shell(self, msg):
96
93
  """
97
94
  Socket server - interpreter shell
98
95
  :param msg: socket input string
@@ -108,6 +105,8 @@ class Shell:
108
105
  # No msg to work with
109
106
  return True
110
107
  msg_list = msg.strip().split()
108
+ # INTERCON embedding: conf mode and remote call request check
109
+ is_local_cmd = self.__conf_mode or not msg_list[-1].startswith(">>")
111
110
 
112
111
  ##########################################
113
112
  # [1] Handle built-in shell commands #
@@ -115,75 +114,80 @@ class Shell:
115
114
  ##########################################
116
115
 
117
116
  # Hello message
118
- if msg_list[0] == 'hello':
117
+ if is_local_cmd and msg_list[0] == 'hello':
119
118
  # For low level device identification - hello msg
120
- self.send(f"hello:{self.__devfid}:{self.__hwuid}")
119
+ await self.a_send(f"hello:{self.__devfid}:{self.__hwuid}")
121
120
  return True
122
121
 
123
122
  # [!] AUTH
124
- state, msg_list = self.__auth(msg_list)
123
+ state, msg_list = await self.__auth(msg_list)
125
124
  if not state:
126
125
  return False
127
126
  if len(msg_list) == 0:
128
127
  return True
129
128
 
130
129
  # Version handling
131
- if msg_list[0] == 'version':
130
+ if is_local_cmd and msg_list[0] == 'version':
132
131
  # For micrOS system version info
133
- self.send(str(Shell.MICROS_VERSION))
132
+ await self.a_send(str(Shell.MICROS_VERSION))
134
133
  return True
135
134
 
136
135
  # Reboot micropython VM
137
- if msg_list[0] == 'reboot':
136
+ if is_local_cmd and msg_list[0] == 'reboot':
138
137
  hard = False
139
138
  if len(msg_list) >= 2 and "-h" in msg_list[1]:
140
139
  # reboot / reboot -h
141
140
  hard = True
142
- self.reboot(hard)
141
+ await self.reboot(hard)
143
142
 
144
- if msg_list[0].startswith('webrepl'):
143
+ if is_local_cmd and msg_list[0].startswith('webrepl'):
145
144
  if len(msg_list) == 2 and '-u' in msg_list[1]:
146
- Shell.webrepl(msg_obj=self.send, update=True)
147
- Shell.webrepl(msg_obj=self.send)
145
+ await Shell.webrepl(msg_obj=self.a_send, update=True)
146
+ return await Shell.webrepl(msg_obj=self.a_send)
148
147
 
149
148
  # CONFIGURE MODE STATE: ACCESS FOR NODE_CONFIG.JSON
150
- if msg_list[0].startswith('conf'):
149
+ if is_local_cmd and msg_list[0].startswith('conf'):
151
150
  self.__conf_mode = True
152
151
  return True
153
- if msg_list[0].startswith('noconf'):
152
+ if is_local_cmd and msg_list[0].startswith('noconf'):
154
153
  self.__conf_mode = False
155
154
  return True
156
155
 
157
156
  # HELP MSG
158
- if msg_list[0] == "help":
159
- self.send("[MICROS] - built-in shell commands")
160
- self.send(" hello - hello msg - for device identification")
161
- self.send(" modules - show active Load Modules")
162
- self.send(" version - returns micrOS version")
163
- self.send(" exit - exit from shell socket prompt")
164
- self.send(" reboot - system soft reboot (vm), hard reboot (hw): reboot -h")
165
- self.send(" webrepl - start webrepl, for file transfers use with --update")
166
- self.send("[CONF] Configure mode - built-in shell commands")
167
- self.send(" conf - Enter conf mode")
168
- self.send(" dump - Dump all data")
169
- self.send(" key - Get value")
170
- self.send(" key value - Set value")
171
- self.send(" noconf - Exit conf mode")
172
- self.send("[TASK] postfix: &x - one-time, &&x - periodic, x: wait ms [x min: 20ms]")
173
- self.send(" task list - list tasks with <tag>s")
174
- self.send(" task kill <tag> - stop task")
175
- self.send(" task show <tag> - show task output")
176
- self.send("[EXEC] Command mode (LMs):")
177
- self.send(" help lm - list ALL LoadModules")
157
+ if is_local_cmd and msg_list[0] == "help":
158
+ await self.a_send("[MICROS]")
159
+ await self.a_send(" hello - hello msg - for device identification")
160
+ await self.a_send(" modules - show active Load Modules")
161
+ await self.a_send(" version - returns micrOS version")
162
+ await self.a_send(" exit - exit shell session")
163
+ await self.a_send(" reboot - system soft reboot (vm), hard reboot (hw): reboot -h")
164
+ await self.a_send(" webrepl - start webrepl, for file transfers use with --update")
165
+ await self.a_send("[CONF] Configuration mode")
166
+ await self.a_send(" conf - Enter conf mode")
167
+ await self.a_send(" dump - Dump all data, filter: dump <str>")
168
+ await self.a_send(" key - Get value")
169
+ await self.a_send(" key value - Set value")
170
+ await self.a_send(" noconf - Exit conf mode")
171
+ await self.a_send("[TASK] Task operations")
172
+ await self.a_send(" task list - list tasks by tags")
173
+ await self.a_send(" task kill <tag> - stop task")
174
+ await self.a_send(" task show <tag> - show task output")
175
+ await self.a_send("[EXEC] Command mode, syntax(...): <module> <function> <params> <postfix>")
176
+ await self.a_send(" Postfix hints:")
177
+ await self.a_send(" ... &<x> - start one-shot task")
178
+ await self.a_send(" ... &&<x> - start periodic task, where <x>: delay ms [x min: 20ms]")
179
+ await self.a_send(" ... >json - request json formatted output")
180
+ await self.a_send(" ... >>hostname - remote command execution (intercon)")
181
+ await self.a_send(" help lm - list ALL available LoadModules")
178
182
  if "lm" in str(msg_list):
179
- return Shell._show_lm_funcs(msg_obj=self.send)
180
- return Shell._show_lm_funcs(msg_obj=self.send, active_only=True)
183
+ return await Shell._show_lm_funcs(msg_obj=self.a_send)
184
+ return await Shell._show_lm_funcs(msg_obj=self.a_send, active_only=True)
181
185
 
182
186
  # [2] EXECUTE:
183
187
  # @1 Configure mode
184
- if self.__conf_mode and len(msg_list) > 0:
188
+ if is_local_cmd and self.__conf_mode and len(msg_list) > 0:
185
189
  # Lock thread under config handling is threads available
186
- return Shell._configure(self.send, msg_list)
190
+ return await Shell._configure(self.a_send, msg_list)
187
191
  # @2 Command mode
188
192
  """
189
193
  INPUT MSG STRUCTURE
@@ -192,43 +196,43 @@ class Shell:
192
196
  """
193
197
  try:
194
198
  # Execute command via InterpreterCore
195
- self.send(lm_exec(arg_list=msg_list)[1])
199
+ await self.a_send(lm_exec(arg_list=msg_list)[1])
196
200
  return True
197
201
  except Exception as e:
198
- self.send(f"[ERROR] shell.lm_exec internal error: {e}")
202
+ await self.a_send(f"[ERROR] shell.lm_exec internal error: {e}")
199
203
  return False
200
204
 
201
205
  #################################################################
202
206
  # CONFIGURE MODE HANDLER #
203
207
  #################################################################
204
208
  @staticmethod
205
- def _configure(msg_obj, msg_list):
209
+ async def _configure(msg_obj, msg_list):
206
210
  """
207
211
  :param msg_obj: shell output stream function reference (write object)
208
212
  :param msg_list: socket input param list
209
213
  :return: execution status
210
214
  """
211
- def dump():
215
+ async def dump():
212
216
  nonlocal msg_obj, msg_list
213
217
  if msg_list[0] == 'dump':
214
218
  search = msg_list[1] if len(msg_list) == 2 else None
215
219
  # DUMP DATA
216
220
  for _key, value in cfgget().items():
217
221
  if search is None or search in _key:
218
- msg_obj(f" {_key}{' ' * (10 - len(_key))}:{' ' * 7} {value}")
222
+ await msg_obj(f" {_key}{' ' * (10 - len(_key))}:{' ' * 7} {value}")
219
223
  return True
220
224
  return False
221
225
 
222
226
  # [CONFIG] Get value
223
227
  if len(msg_list) == 1:
224
- if dump(): # Simple dump without param filter
228
+ if await dump(): # Simple dump without param filter
225
229
  return True
226
230
  # GET SINGLE PARAMETER VALUE
227
- msg_obj(cfgget(msg_list[0]))
231
+ await msg_obj(cfgget(msg_list[0]))
228
232
  return True
229
233
  # [CONFIG] Set value
230
234
  if len(msg_list) >= 2:
231
- if dump(): # Dump with search option
235
+ if await dump(): # Dump with search option
232
236
  return True
233
237
  # Deserialize params
234
238
  key = msg_list[0]
@@ -236,67 +240,73 @@ class Shell:
236
240
  try:
237
241
  output = cfgput(key, " ".join(msg_list[1:]), type_check=True)
238
242
  except Exception as e:
239
- msg_obj(f"node_config write error: {e}")
243
+ await msg_obj(f"node_config write error: {e}")
240
244
  output = False
241
245
  # Evaluation and reply
242
- msg_obj('Saved' if output else 'Invalid key' if cfgget(key) is None else 'Failed to save')
246
+ await msg_obj('Saved' if output else 'Invalid key' if cfgget(key) is None else 'Failed to save')
243
247
  return True
244
248
 
245
249
  #################################################################
246
250
  # COMMAND MODE & LMS HANDLER #
247
251
  #################################################################
248
252
  @staticmethod
249
- def _show_lm_funcs(msg_obj, active_only=False):
253
+ async def _show_lm_funcs(msg_obj, active_only=False):
250
254
  """
251
255
  Dump LM modules with functions - in case of [py] files
252
256
  Dump LM module with help function call - in case of [mpy] files
253
257
  """
254
- def _help(mod):
255
- for lm_path in (i for i in mod if i.startswith('LM_') and (i.endswith('py'))):
258
+ async def _help(mods):
259
+ nonlocal mpath
260
+ for lm_path in mods:
256
261
  lm_name = lm_path.replace('LM_', '').split('.')[0]
257
262
  try:
258
- msg_obj(f" {lm_name}")
263
+ await msg_obj(f" {lm_name}")
259
264
  if lm_path.endswith('.mpy'):
260
- msg_obj(f" {' ' * len(lm_path.replace('LM_', '').split('.')[0])}help")
265
+ await msg_obj(f" {' ' * len(lm_path.replace('LM_', '').split('.')[0])}help")
261
266
  continue
262
- with open(lm_path, 'r') as f:
267
+ with open(path_join(mpath, lm_path), 'r') as f:
263
268
  line = "micrOSisTheBest"
264
269
  while line:
265
270
  line = f.readline()
266
- if line.strip().startswith('def') and '_' not in line and 'self' not in line:
267
- msg_obj(f" {' ' * len(lm_name)}{line.replace('def ', '').split('(')[0]}")
271
+ ldata = line.strip()
272
+ if ldata.startswith('def ') and not ldata.split()[1].startswith("_") and 'self' not in ldata:
273
+ await msg_obj(f" {' ' * len(lm_name)}{ldata.replace('def ', '').split('(')[0]}")
268
274
  except Exception as e:
269
- msg_obj(f"[{lm_path}] SHOW LM PARSER WARNING: {e}")
275
+ await msg_obj(f"[{lm_path}] SHOW LM PARSER WARNING: {e}")
270
276
  return False
271
277
  return True
272
278
 
279
+ await msg_obj("")
273
280
  # [1] list active modules (default in shell)
281
+ mpath = OSPath.MODULES
274
282
  if active_only:
275
283
  mod_keys = modules.keys()
276
- active_modules = (dir_mod for dir_mod in listdir() if dir_mod.split('.')[0] in mod_keys)
277
- return _help(active_modules)
284
+ active_modules = (dir_mod for dir_mod in ilist_fs(path=mpath, type_filter='f', select="LM")
285
+ if dir_mod.split('.')[0] in mod_keys)
286
+ return await _help(active_modules)
278
287
  # [2] list all LMs on file system (ALL - help lm) - manual
279
- return _help(listdir())
288
+ return await _help(ilist_fs(path=mpath, type_filter='f', select="LM"))
280
289
 
281
290
  @staticmethod
282
- def webrepl(msg_obj, update=False):
291
+ async def webrepl(msg_obj, update=False):
283
292
  from Network import ifconfig
284
293
 
285
- msg_obj(" Start micropython WEBREPL - file transfer and debugging")
286
- msg_obj(" [i] restart machine shortcut: import reset")
287
- msg_obj(f" Connect over http://micropython.org/webrepl/#{ifconfig()[1][0]}:8266/")
288
- msg_obj(f" \t[!] webrepl password: {cfgget('appwd')}")
294
+ await msg_obj(" Start micropython WEBREPL - file transfer and debugging")
295
+ await msg_obj(" [i] restart machine shortcut: import reset")
296
+ await msg_obj(f" Connect over http://micropython.org/webrepl/#{ifconfig()[1][0]}:8266/")
297
+ await msg_obj(f" \t[!] webrepl password: {cfgget('appwd')}")
289
298
  if update:
290
- msg_obj(" Restart node then start webrepl...")
291
- msg_obj(" Bye!")
299
+ await msg_obj(" Restart node then start webrepl...")
300
+ await msg_obj(" Bye!")
292
301
  # Set .if_mode->webrepl (start webrepl after reboot and poll update status...)
293
302
  with open('.if_mode', 'w') as f:
294
303
  f.write('webrepl')
295
304
  hard_reset()
296
305
  try:
297
306
  import webrepl
298
- msg_obj(webrepl.start(password=cfgget('appwd')))
307
+ await msg_obj(webrepl.start(password=cfgget('appwd')))
299
308
  except Exception as e:
300
309
  _err_msg = f"[ERR] while starting webrepl: {e}"
301
- msg_obj(_err_msg)
302
- errlog_add(_err_msg)
310
+ await msg_obj(_err_msg)
311
+ syslog(_err_msg)
312
+ return True