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,85 +0,0 @@
1
- from random import randint
2
- from microIO import detect_platform
3
- from Debug import console_write
4
- from Time import uptime
5
-
6
- CNT = 0
7
-
8
-
9
- def _debug(func):
10
- """
11
- Debug wrapper
12
- - console logging
13
- - handled cmd counter (exec_info to get the value)
14
- """
15
- def __wrapper(*args, **kwargs):
16
- global CNT
17
- CNT += 1
18
- console_write("debug module cmd executed") # + Progress LED
19
- return func(*args, **kwargs)
20
- return __wrapper
21
-
22
-
23
- @_debug
24
- def hello(name="MrNobody"):
25
- return f"Hello {name}! This is a micrOS smart endpoint ☁️, running on {detect_platform()}.\
26
- \nFor more info call `demo links` function :D"
27
-
28
-
29
- @_debug
30
- def calculator(a, b, op="+"):
31
- if op.strip() == "+":
32
- return f"{a} + {b} = {a + b}"
33
- if op.strip() == "-":
34
- return f"{a} - {b} = {a - b}"
35
- if op.strip() == "/":
36
- return f"{a} / {b} = {round(a / b, 3)}"
37
- if op.strip() == "*":
38
- return f"{a} * {b} = {a * b}"
39
-
40
-
41
- @_debug
42
- def dice_cube():
43
- value = randint(1, 6)
44
- return f"🎲 {value}"
45
-
46
-
47
- @_debug
48
- def yes_no():
49
- val = randint(0, 1)
50
- return 'NO👎' if val == 0 else 'YES👍'
51
-
52
-
53
- @_debug
54
- def links():
55
- descript = f"Platform: {detect_platform()}\nGITHUB: https://github.com/BxNxM/micrOS\nYOUTUBE: https://www.youtube.com/@micrOSframework\nINSTAGRAM: https://instagram.com/micros_framework"
56
- return descript
57
-
58
-
59
- @_debug
60
- def source():
61
- return 'https://github.com/BxNxM/micrOS/blob/master/micrOS/source/LM_demo.py'
62
-
63
-
64
- @_debug
65
- def exec_info():
66
- global CNT
67
- return f"Under {uptime()}: {CNT} cmd served."
68
-
69
-
70
- @_debug
71
- def help(widgets=False):
72
- """
73
- [i] micrOS LM naming convention - built-in help message
74
- :return tuple:
75
- (widgets=False) list of functions implemented by this application
76
- (widgets=True) list of widget json for UI generation
77
- """
78
- return 'hello name="MrNobody"',\
79
- 'calculator a b op="+"',\
80
- '\t=>op: + - / *',\
81
- 'dice_cube - show number, roll a dice',\
82
- 'yes_no - show random yes/no',\
83
- 'links - show micrOS links',\
84
- 'source - show demo module source code',\
85
- 'exec_info - Execution info, demo module usage'
Binary file
Binary file
Binary file
@@ -1,88 +0,0 @@
1
- from machine import Pin, time_pulse_us
2
- from utime import sleep_us
3
- from microIO import physical_pin, pinmap_dump
4
-
5
- __TRIGGER_OBJ = None
6
- __ECHO_OBJ = None
7
-
8
-
9
- def __init_HCSR04():
10
- global __TRIGGER_OBJ, __ECHO_OBJ
11
- if __TRIGGER_OBJ is None or __ECHO_OBJ is None:
12
- trigger_pin = physical_pin('hcsrtrig')
13
- echo_pin = physical_pin('hcsrecho')
14
- # Init trigger pin (out)
15
- __TRIGGER_OBJ = Pin(trigger_pin, mode=Pin.OUT, pull=None)
16
- __TRIGGER_OBJ.value(0)
17
- # Init echo pin (in)
18
- __ECHO_OBJ = Pin(echo_pin, mode=Pin.IN, pull=None)
19
- return __TRIGGER_OBJ, __ECHO_OBJ
20
-
21
-
22
- def __send_pulse_and_wait(echo_timeout_us=1000000):
23
- trigger_pin, echo_pin = __init_HCSR04()
24
- trigger_pin.value(0) # Stabilize the sensor
25
- sleep_us(5)
26
- trigger_pin.value(1)
27
- # Send a 10us pulse.
28
- sleep_us(10)
29
- trigger_pin.value(0)
30
- try:
31
- pulse_time = time_pulse_us(echo_pin, 1, echo_timeout_us)
32
- return pulse_time
33
- except OSError as ex:
34
- if ex.args[0] == 110: # 110 = ETIMEDOUT
35
- raise OSError('Out of range')
36
- raise ex
37
-
38
-
39
- #########################
40
- # Application functions #
41
- #########################
42
-
43
- def distance_mm():
44
- """
45
- To calculate the distance we get the pulse_time and divide it by 2
46
- (the pulse walk the distance twice) and by 29.1 becasue
47
- the sound speed on air (343.2 m/s), that It's equivalent to
48
- 0.34320 mm/us that is 1mm each 2.91us
49
- pulse_time // 2 // 2.91 -> pulse_time // 5.82 -> pulse_time * 100 // 582
50
- """
51
- return __send_pulse_and_wait() * 100 // 582
52
-
53
-
54
- def distance_cm():
55
- return (__send_pulse_and_wait() / 2) / 29.1
56
-
57
-
58
- def deinit():
59
- global __TRIGGER_OBJ, __ECHO_OBJ
60
- trigger_pin, echo_pin = __init_HCSR04()
61
- trigger_pin.deinit()
62
- echo_pin.deinit()
63
- __TRIGGER_OBJ = None
64
- __ECHO_OBJ = None
65
-
66
-
67
- #######################
68
- # LM helper functions #
69
- #######################
70
-
71
- def pinmap():
72
- """
73
- [i] micrOS LM naming convention
74
- Shows logical pins - pin number(s) used by this Load module
75
- - info which pins to use for this application
76
- :return dict: pin name (str) - pin value (int) pairs
77
- """
78
- return pinmap_dump(['hcsrtrig', 'hcsrecho'])
79
-
80
-
81
- def help(widgets=False):
82
- """
83
- [i] micrOS LM naming convention - built-in help message
84
- :return tuple:
85
- (widgets=False) list of functions implemented by this application
86
- (widgets=True) list of widget json for UI generation
87
- """
88
- return 'distance_mm', 'distance_cm', 'deinit', 'pinmap'
Binary file
Binary file
@@ -1,44 +0,0 @@
1
- from microIO import physical_pin, pinmap_dump
2
-
3
- __I2C = None
4
-
5
-
6
- def __init():
7
- global __I2C
8
- if __I2C is None:
9
- from machine import Pin, I2C
10
- __I2C = I2C(-1, Pin(physical_pin('i2c_scl')), Pin(physical_pin('i2c_sda')))
11
- return __I2C
12
-
13
-
14
- def scan():
15
- """
16
- I2C scan function - experimental
17
- :return list: list of devices
18
- """
19
- # https://docs.micropython.org/en/latest/library/machine.I2C.html
20
- return __init().scan()
21
-
22
-
23
- #######################
24
- # LM helper functions #
25
- #######################
26
-
27
- def pinmap():
28
- """
29
- [i] micrOS LM naming convention
30
- Shows logical pins - pin number(s) used by this Load module
31
- - info which pins to use for this application
32
- :return dict: pin name (str) - pin value (int) pairs
33
- """
34
- return pinmap_dump(['i2c_scl', 'i2c_sda'])
35
-
36
-
37
- def help(widgets=False):
38
- """
39
- [i] micrOS LM naming convention - built-in help message
40
- :return tuple:
41
- (widgets=False) list of functions implemented by this application
42
- (widgets=True) list of widget json for UI generation
43
- """
44
- return 'scan', 'pinmap'
Binary file
@@ -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
-
Binary file
Binary file
@@ -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
-
Binary file
Binary file
Binary file
@@ -1,76 +0,0 @@
1
- // Get the current hostname and create the REST API URL
2
- const currentHostname = window.location.hostname;
3
- const port = window.location.port ? `:${window.location.port}` : "";
4
-
5
-
6
- function restAPICore(cmd) {
7
- // Core micrOS rest API handler
8
- cmd = cmd.trim().replace(/\s+/g, '/');
9
- let query = `http://${currentHostname}${port}/rest/${cmd}`;
10
- const startTime = performance.now();
11
- let endTime;
12
- // Call rest api with command parameter and return the promise
13
- return fetch(query).then(response => {
14
- if (!response.ok) {
15
- throw new Error('restAPICore code NOK: ' + response.status);
16
- }
17
- endTime = performance.now();
18
- return response.json();
19
- }).then(response => {
20
- // return cmd result
21
- const delta = (endTime - startTime).toFixed(0);
22
- return { response, delta, query }; // RETURN DATA
23
- }).catch(error => {
24
- console.error('Error in restAPICore:', error);
25
- throw error;
26
- });
27
- }
28
-
29
- function restAPI(cmd='', console=true) {
30
- // micrOS rest API handler with built-in restCmdInput
31
- // UPDATES: restConsole(...)
32
- if (cmd == '') {
33
- cmd = document.getElementById('restCmdInput').value;
34
- }
35
- return restAPICore(cmd)
36
- .then(({ response, delta, query }) => {
37
- if (console) {
38
- restConsole(query, response, delta);
39
- }
40
- return response
41
- }).catch(error => {
42
- console.error('Error in restAPI:', error);
43
- });
44
- }
45
-
46
- function restConsole(apiUrl, data, delta) {
47
- // UPDATES: restConsoleUrl, restConsoleResponse, restConsoleTime
48
- document.getElementById('restConsoleUrl').innerHTML = `<strong>Generated URL:</strong><br> <a href="${apiUrl}" target="_blank" style="color: white;">${apiUrl}</a>`;
49
- document.getElementById('restConsoleResponse').innerHTML = JSON.stringify(data, null, 4).replace(/\\n/g, "<br/>" + "&nbsp;".repeat(15));
50
- document.getElementById('restConsoleTime').innerHTML = `⏱ Response time: ${delta} ms`;
51
- }
52
-
53
- function restInfo() {
54
- // UPDATES: 'restInfo' and restConsole(...)
55
- restAPICore(cmd='').then(({ response, delta, query }) => {
56
- // Update API Console
57
- restConsole(query, response, delta)
58
- // Update 'SysApiInfo' tag
59
- let infoHeader = Object.entries(response['result'])
60
- .filter(([key]) => key !== 'usr_endpoints') // Exclude usr_endpoints
61
- .map(([key, value]) => `${key}: ${JSON.stringify(value)}`);
62
- if (infoHeader[2].endsWith("true")) { // check auth: true
63
- infoHeader[2] = "🔑";
64
- } else {infoHeader.splice(2, 1);}
65
- infoHeader = infoHeader.join(' ❖ ').replace(/"/g, '');
66
- let infoSubpages = (response['result']['usr_endpoints'] ? "<br><br>📎 " + Object.entries(response['result']['usr_endpoints'])
67
- .map(([key, value]) => `<a href="${value}" target="_blank" style="color: white;">${value} </a>`)
68
- .join(' | ') : '');
69
- document.getElementById('restInfo').innerHTML = infoHeader + infoSubpages;
70
- }).catch(error => {
71
- console.error('Error in restAPI:', error);
72
- });
73
- }
74
-
75
- // Init basic info from board
76
- // restInfo();