micrOSDevToolKit 3.5.0__tar.gz → 3.6.0__tar.gz

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 (457) hide show
  1. microsdevtoolkit-3.6.0/PKG-INFO +1173 -0
  2. microsdevtoolkit-3.6.0/README.md +1135 -0
  3. microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32-1.28.0-3.6.0-0.bin +0 -0
  4. microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32c3-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32c3-1.28.0-3.6.0-0.bin +0 -0
  5. microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32c6-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32c6-1.28.0-3.6.0-0.bin +0 -0
  6. microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32s3-1.28.0-3.5.0-0.bin → microsdevtoolkit-3.6.0/micrOS/micropython/micrOS-esp32s3-1.28.0-3.6.0-0.bin +0 -0
  7. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +9 -9
  8. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Config.py +1 -1
  9. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Hooks.py +8 -14
  10. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Server.py +10 -4
  11. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Shell.py +1 -1
  12. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Tasks.py +22 -2
  13. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Web.py +30 -35
  14. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
  15. microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  16. microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
  17. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  18. microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Network.cpython-312.pyc +0 -0
  19. microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Notify.cpython-312.pyc +0 -0
  20. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  21. microsdevtoolkit-3.6.0/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  22. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
  23. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
  24. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_robustness.py +1 -1
  25. microsdevtoolkit-3.6.0/micrOS/source/modules/__pycache__/LM_fileserver.cpython-312.pyc +0 -0
  26. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_robustness.cpython-312.pyc +0 -0
  27. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/editor.js +34 -5
  28. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/filesui.html +22 -7
  29. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/filesui.js +64 -45
  30. microsdevtoolkit-3.6.0/micrOS/utests/test_memory_policy.py +125 -0
  31. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_web_engine.py +147 -0
  32. microsdevtoolkit-3.6.0/micrOSDevToolKit.egg-info/PKG-INFO +1173 -0
  33. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/SOURCES.txt +8 -4
  34. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/setup.py +1 -1
  35. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/node_config.json +2 -1
  36. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Config.mpy +0 -0
  37. microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  38. microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Server.mpy +0 -0
  39. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  40. microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  41. microsdevtoolkit-3.6.0/toolkit/workspace/precompiled/Web.mpy +0 -0
  42. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_robustness.py +1 -1
  43. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/editor.js +27 -7
  44. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/filesui.html +21 -3
  45. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/filesui.js +14 -11
  46. microsdevtoolkit-3.5.0/PKG-INFO +0 -1144
  47. microsdevtoolkit-3.5.0/README.md +0 -1106
  48. microsdevtoolkit-3.5.0/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  49. microsdevtoolkit-3.5.0/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
  50. microsdevtoolkit-3.5.0/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  51. microsdevtoolkit-3.5.0/micrOSDevToolKit.egg-info/PKG-INFO +0 -1144
  52. microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  53. microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Server.mpy +0 -0
  54. microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  55. microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Web.mpy +0 -0
  56. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/LICENSE +0 -0
  57. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/MANIFEST.in +0 -0
  58. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/devToolKit.py +0 -0
  59. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/__init__.py +0 -0
  60. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/.DS_Store +0 -0
  61. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  62. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  63. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  64. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  65. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  66. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  67. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  68. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  69. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  70. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  71. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  72. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  73. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  74. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/__init__.py +0 -0
  75. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/dnd.png +0 -0
  76. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/logo.png +0 -0
  77. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/logo_mini.png +0 -0
  78. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/usb_port_icon.png +0 -0
  79. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/media/wifi_icon.png +0 -0
  80. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/__init__.py +0 -0
  81. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/board_commands.json +0 -0
  82. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  83. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  84. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
  85. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  86. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  87. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  88. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  89. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  90. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  91. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  92. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  93. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  94. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/.DS_Store +0 -0
  95. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Auth.py +0 -0
  96. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Buffer.py +0 -0
  97. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Common.py +0 -0
  98. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Debug.py +0 -0
  99. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Files.py +0 -0
  100. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/InterConnect.py +0 -0
  101. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Interrupts.py +0 -0
  102. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Logger.py +0 -0
  103. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Network.py +0 -0
  104. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Notify.py +0 -0
  105. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Pacman.py +0 -0
  106. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Scheduler.py +0 -0
  107. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Time.py +0 -0
  108. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/Types.py +0 -0
  109. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Auth.cpython-312.pyc +0 -0
  110. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
  111. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  112. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  113. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
  114. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
  115. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
  116. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
  117. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  118. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
  119. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
  120. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
  121. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
  122. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  123. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
  124. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/config/_git.keep +0 -0
  125. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/helpers.py +0 -0
  126. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/main.py +0 -0
  127. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/mespnow.py +0 -0
  128. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/micrOS.py +0 -0
  129. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/micrOSloader.py +0 -0
  130. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/microIO.py +0 -0
  131. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32.py +0 -0
  132. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32c3.py +0 -0
  133. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32c5.py +0 -0
  134. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32c6.py +0 -0
  135. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32s2.py +0 -0
  136. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_esp32s3.py +0 -0
  137. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_m5stamp.py +0 -0
  138. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_qtpy.py +0 -0
  139. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_rp2.py +0 -0
  140. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/IO_tinypico.py +0 -0
  141. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_aht10.py +0 -0
  142. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_bme280.py +0 -0
  143. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_buzzer.py +0 -0
  144. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_cct.py +0 -0
  145. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_cluster.py +0 -0
  146. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_dht11.py +0 -0
  147. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_dht22.py +0 -0
  148. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_dimmer.py +0 -0
  149. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_ds18.py +0 -0
  150. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_esp32.py +0 -0
  151. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_espnow.py +0 -0
  152. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_fileserver.py +0 -0
  153. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_gameOfLife.py +0 -0
  154. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_genIO.py +0 -0
  155. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_i2c.py +0 -0
  156. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_i2s_mic.py +0 -0
  157. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_light_sensor.py +0 -0
  158. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_neoeffects.py +0 -0
  159. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_neopixel.py +0 -0
  160. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_oled.py +0 -0
  161. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
  162. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_oled_ui.py +0 -0
  163. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_pacman.py +0 -0
  164. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_presence.py +0 -0
  165. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rencoder.py +0 -0
  166. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rest.py +0 -0
  167. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rgb.py +0 -0
  168. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rgbcct.py +0 -0
  169. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_rp2w.py +0 -0
  170. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_sdcard.py +0 -0
  171. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_servo.py +0 -0
  172. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_stepper.py +0 -0
  173. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_switch.py +0 -0
  174. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_system.py +0 -0
  175. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_telegram.py +0 -0
  176. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_tinyrgb.py +0 -0
  177. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_veml7700.py +0 -0
  178. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/LM_web.py +0 -0
  179. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_cct.cpython-312.pyc +0 -0
  180. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_dht11.cpython-312.pyc +0 -0
  181. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_dht22.cpython-312.pyc +0 -0
  182. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_dimmer.cpython-312.pyc +0 -0
  183. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_neopixel.cpython-312.pyc +0 -0
  184. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
  185. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_rencoder.cpython-312.pyc +0 -0
  186. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_rgb.cpython-312.pyc +0 -0
  187. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_rgbcct.cpython-312.pyc +0 -0
  188. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_roboarm.cpython-312.pyc +0 -0
  189. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
  190. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  191. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/urequests.py +0 -0
  192. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/auth.js +0 -0
  193. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/config.css +0 -0
  194. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/config.html +0 -0
  195. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/config.js +0 -0
  196. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/dashboard.html +0 -0
  197. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/editor_plugins.js +0 -0
  198. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/favicon.ico +0 -0
  199. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/index.html +0 -0
  200. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uapi.js +0 -0
  201. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uapi_widgets.js +0 -0
  202. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/ubashboard.css +0 -0
  203. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/udashboard.js +0 -0
  204. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/ustyle.css +0 -0
  205. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uwidgets.js +0 -0
  206. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/source/web/uwidgets_pro.js +0 -0
  207. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/__init__.py +0 -0
  208. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_buffer.py +0 -0
  209. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_config.py +0 -0
  210. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_pacman.py +0 -0
  211. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_scheduler.py +0 -0
  212. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_time.py +0 -0
  213. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_urequests.py +0 -0
  214. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOS/utests/test_urequests_real_api.py +0 -0
  215. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  216. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  217. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  218. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/setup.cfg +0 -0
  219. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/DevEnvCompile.py +0 -0
  220. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/DevEnvOTA.py +0 -0
  221. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/DevEnvUSB.py +0 -0
  222. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/Gateway.py +0 -0
  223. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/LM_to_compile.dat +0 -0
  224. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/MicrOSDevEnv.py +0 -0
  225. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/WebRepl.py +0 -0
  226. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/__init__.py +0 -0
  227. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/BackupRestore.py +0 -0
  228. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  229. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CCTTest.py +0 -0
  230. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CamStream.py +0 -0
  231. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/CatGame.py +0 -0
  232. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/Dimmer.py +0 -0
  233. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/GetVersion.py +0 -0
  234. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  235. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  236. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  237. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  238. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
  239. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/RGBTest.py +0 -0
  240. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/RoboArm.py +0 -0
  241. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/SED_test.py +0 -0
  242. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/SensorsTest.py +0 -0
  243. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/SystemTest.py +0 -0
  244. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/Template_app.py +0 -0
  245. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/__init__.py +0 -0
  246. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_app_base.py +0 -0
  247. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_capture.py +0 -0
  248. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
  249. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  250. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  251. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  252. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/gateway/gateway.css +0 -0
  253. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/gateway/img_stream.html +0 -0
  254. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/gateway/index.html +0 -0
  255. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/LocalMachine.py +0 -0
  256. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/MicrosFiles.py +0 -0
  257. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/Repository.py +0 -0
  258. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/SafeInput.py +0 -0
  259. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/SearchDevices.py +0 -0
  260. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/SerialDriverHandler.py +0 -0
  261. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/TerminalColors.py +0 -0
  262. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/__init__.py +0 -0
  263. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/macroScript.py +0 -0
  264. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/micrOSClient.py +0 -0
  265. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/micrOSClientHistory.py +0 -0
  266. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/lib/pip_package_installer.py +0 -0
  267. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSDocGen.py +0 -0
  268. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSImageBuilder.py +0 -0
  269. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSImageConfig.json +0 -0
  270. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSdashboard.py +0 -0
  271. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/micrOSlint.py +0 -0
  272. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/.DS_Store +0 -0
  273. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/IO_darwin.py +0 -0
  274. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  275. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
  276. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  277. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  278. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  279. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  280. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  281. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  282. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  283. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  284. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  285. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  286. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  287. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  288. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  289. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  290. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  291. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  292. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  293. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  294. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  295. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  296. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  297. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  298. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  299. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  300. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  301. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  302. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  303. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  304. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  305. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  306. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  307. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  308. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  309. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  310. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  311. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  312. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  313. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  314. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  315. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  316. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  317. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  318. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  319. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  320. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  321. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  322. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  323. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  324. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  325. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  326. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  327. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  328. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  329. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  330. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  331. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  332. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  333. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  334. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/aioespnow.py +0 -0
  335. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/camera.py +0 -0
  336. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/dht.py +0 -0
  337. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/dotstar.py +0 -0
  338. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ds18x20.py +0 -0
  339. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/esp32.py +0 -0
  340. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/framebuf.py +0 -0
  341. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/machine.py +0 -0
  342. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/micropython.py +0 -0
  343. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/mip.py +0 -0
  344. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/neopixel.py +0 -0
  345. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/network.py +0 -0
  346. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ntptime.py +0 -0
  347. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/onewire.py +0 -0
  348. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/sim_common.py +0 -0
  349. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/simgc.py +0 -0
  350. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/simulator.py +0 -0
  351. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/tinypico.py +0 -0
  352. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/uasyncio.py +0 -0
  353. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/uos.py +0 -0
  354. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/urandom.py +0 -0
  355. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/usocket.py +0 -0
  356. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ussl.py +0 -0
  357. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/ustruct.py +0 -0
  358. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/utime.py +0 -0
  359. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/view01.jpg +0 -0
  360. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/view02.jpg +0 -0
  361. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/simulator_lib/webrepl.py +0 -0
  362. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/socketClient.py +0 -0
  363. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/.include +0 -0
  364. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/__pycache__/generic.cpython-312.pyc +0 -0
  365. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/__pycache__/macro.cpython-312.pyc +0 -0
  366. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/__pycache__/template.cpython-312.pyc +0 -0
  367. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/generic.py +0 -0
  368. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/macro.py +0 -0
  369. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/template.macro +0 -0
  370. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/user_data/webhooks/template.py +0 -0
  371. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/__init__.py +0 -0
  372. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Auth.mpy +0 -0
  373. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
  374. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Common.mpy +0 -0
  375. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Debug.mpy +0 -0
  376. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Files.mpy +0 -0
  377. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  378. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  379. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Logger.mpy +0 -0
  380. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Network.mpy +0 -0
  381. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  382. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
  383. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  384. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Time.mpy +0 -0
  385. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/Types.mpy +0 -0
  386. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/_mpy.version +0 -0
  387. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/config/_git.keep +0 -0
  388. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/helpers.mpy +0 -0
  389. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/main.py +0 -0
  390. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
  391. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  392. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  393. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/microIO.mpy +0 -0
  394. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  395. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  396. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
  397. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  398. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  399. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  400. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  401. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  402. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  403. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  404. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  405. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  406. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
  407. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  408. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  409. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  410. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  411. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  412. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  413. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
  414. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
  415. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  416. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
  417. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  418. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
  419. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  420. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  421. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  422. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  423. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  424. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  425. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  426. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  427. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  428. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
  429. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  430. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  431. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
  432. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
  433. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
  434. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
  435. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
  436. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  437. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  438. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  439. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
  440. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  441. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  442. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/urequests.mpy +0 -0
  443. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/auth.js +0 -0
  444. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/config.css +0 -0
  445. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/config.html +0 -0
  446. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/config.js +0 -0
  447. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
  448. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
  449. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/favicon.ico +0 -0
  450. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/index.html +0 -0
  451. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uapi.js +0 -0
  452. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
  453. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/ubashboard.css +0 -0
  454. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
  455. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
  456. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
  457. {microsdevtoolkit-3.5.0 → microsdevtoolkit-3.6.0}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
@@ -0,0 +1,1173 @@
1
+ Metadata-Version: 2.4
2
+ Name: micrOSDevToolKit
3
+ Version: 3.6.0
4
+ Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
+ Home-page: https://github.com/BxNxM/micrOS
6
+ Author: Marcell Ban
7
+ Author-email: miros.framework@gmail.com
8
+ License: MIT
9
+ Project-URL: Bug Tracker, https://github.com/BxNxM/micrOS/issues
10
+ Project-URL: GitHub Discussions, https://github.com/BxNxM/micrOS/discussions
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENSE
13
+ Requires-Dist: adafruit-ampy
14
+ Requires-Dist: mpremote
15
+ Requires-Dist: esptool
16
+ Requires-Dist: ipaddress
17
+ Requires-Dist: netaddr
18
+ Requires-Dist: pylint
19
+ Requires-Dist: pyserial
20
+ Requires-Dist: resources
21
+ Requires-Dist: flask
22
+ Requires-Dist: flask_restful
23
+ Requires-Dist: numpy
24
+ Requires-Dist: json2html
25
+ Requires-Dist: requests
26
+ Requires-Dist: Flask-BasicAuth
27
+ Requires-Dist: soundfile
28
+ Dynamic: author
29
+ Dynamic: author-email
30
+ Dynamic: description
31
+ Dynamic: description-content-type
32
+ Dynamic: home-page
33
+ Dynamic: license
34
+ Dynamic: license-file
35
+ Dynamic: project-url
36
+ Dynamic: requires-dist
37
+ Dynamic: summary
38
+
39
+ # ![micrOS logo](./media/logo_mini.png?raw=true) micrOS
40
+
41
+ A local-first automation platform for Wi-Fi-enabled MicroPython boards.
42
+
43
+ Build a network-controlled lamp, read a sensor over Socket/HTTP, or let one board trigger another. micrOS turns a compatible Wi-Fi microcontroller into a programmable automation node—without a required cloud service.
44
+
45
+ Write the hardware behavior in [MicroPython](http://micropython.org); micrOS
46
+ handles networking, configuration, background jobs, scheduling, interrupts and updates.
47
+
48
+ > micrOS is a network-addressable edge application platform for MicroPython MCUs, built around a dynamically loadable plug-in architecture.
49
+
50
+ [![PyPI Version](https://img.shields.io/pypi/v/micrOSDevToolKit)](https://pypi.org/project/micrOSDevToolKit/)
51
+ ![GitHub stars](https://img.shields.io/github/stars/BxNxM/micrOS)
52
+ [![GitHub Discussions](https://img.shields.io/badge/GitHub-Discussions-green?logo=github&style=flat)](https://github.com/BxNxM/micrOS/discussions)
53
+ [![DockerHub](https://img.shields.io/badge/DockerHub-micrOS%20Gateway-blue)](https://hub.docker.com/r/bxnxm/micros-gateway)
54
+
55
+ ### Contents
56
+
57
+ - 🎬 [See it in action](#see-it-in-action)
58
+ - 🚀 [Start using micrOS](#start-using-micros) — installation, Wi-Fi setup, and first commands
59
+ - 📦 [Applications](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html) · [micrOS Packages](https://github.com/BxNxM/micrOSPackages)
60
+ - 🌐 [Network modes](#networking-modes) · [Configuration parameters](#node-configuration-reference)
61
+ - 💬 [Tutorials and community](#tutorials-and-community)
62
+ - ⚙️ [Advanced use](#advanced-use) — automation, hardware, configuration, and developer tools
63
+ - 🧩 [Create a Load Module](./micrOS/MODULE_GUIDE.md) · [Architecture](./micrOS/ARCHITECTURE.md)
64
+ - 📝 [Cheat sheets and maintainer notes](#operations-and-maintainer-notes)
65
+
66
+ [![micrOS web interface: REST console, configuration, dashboard, and files](./media/lms/web.png?raw=true)](./media/lms/web.png)
67
+
68
+ _The optional on-device web UI: REST console, configuration, application controls,
69
+ and file management._
70
+
71
+ ### Why micrOS?
72
+
73
+ - **One function, several ways to use it.** Public functions in `LM_*.py` Load
74
+ Modules are callable from the shell, REST API, schedules, interrupts, and
75
+ background jobs.
76
+ - **Local control.** Clients connect directly to nodes over Wi-Fi. No cloud
77
+ account or always-on server is required; time and sunrise/sunset lookups use
78
+ external services.
79
+ - **A runtime you can build on.** STA/AP networking, NTP/RTC, pin mapping, async
80
+ tasks, OTA updates, and device-to-device commands are included.
81
+ - **Load only what you need.** Modules are imported on demand and stay resident.
82
+ Available memory determines how many you can combine.
83
+
84
+ ### Who is it for?
85
+
86
+ For MicroPython developers who want reusable device infrastructure, makers
87
+ building local automation, hardware experimenters adding sensors or actuators,
88
+ and developers connecting several nodes over sockets or ESP-NOW.
89
+
90
+ ### See it in action
91
+
92
+ | Ring Lamp | RoboArm | RGB + CCT lighting |
93
+ | --- | --- | --- |
94
+ | [![NeoPixel Ring Lamp controlled by micrOS](./media/projects/RingLamp.gif?raw=true)](https://youtu.be/BlQzAnFtpLk) | ![micrOS-controlled robot arm](./media/projects/RoboArm.gif?raw=true) | ![micrOS RGB and tunable-white controller](./media/projects/RGB_CCT.gif?raw=true) |
95
+ | Generated controls for a 24-pixel NeoPixel lamp. | A Wi-Fi-controlled servo application and laser cat toy. | Full-color and tunable-white LED control from one node. |
96
+
97
+ Start with an existing application, then add your own behavior as a Load Module.
98
+
99
+ <a id="installing-micros-with-devtoolkit-esp32-and-more"></a>
100
+
101
+ <a id="quick-start"></a>
102
+
103
+ ## Start using micrOS
104
+
105
+ You only need three ideas: a **node** is your board running micrOS;
106
+ **DevToolKit** installs and connects to it from your computer; a **Load Module**
107
+ is a Python application on the board. You don't need to understand the runtime
108
+ internals to use an existing application.
109
+
110
+ Before you begin, have a compatible Wi-Fi MicroPython board, a USB data cable,
111
+ a computer, and your Wi-Fi credentials ready. Check the
112
+ [firmware catalog](./micrOS/micropython/README.md) for your board; see
113
+ [boards and memory](#boards-and-memory) for larger applications.
114
+
115
+ Follow these four steps to get a node online and make your first request.
116
+
117
+ Use DevToolKit on macOS, Linux, or Windows to deploy your first node. Start with
118
+ the GUI; the CLI supports interactive use and automation.
119
+
120
+ [![Install micrOS DevToolKit from PyPI](./media/pipy.png)](https://pypi.org/project/micrOSDevToolKit/)
121
+
122
+ ### 1. Install Python and DevToolKit
123
+
124
+ Install [Python 3.12 or newer](https://www.python.org/downloads/) and add it to
125
+ your system path. The original setup used [Python 3.12.0](https://www.python.org/downloads/release/python-3120/).
126
+
127
+ On macOS, open Terminal with `Command+Space`, type `terminal`, and press Enter.
128
+ On Windows, press `Windows+R`, type `powershell`, and press Enter.
129
+
130
+ On macOS or Linux:
131
+
132
+ ```bash
133
+ python3 -m venv .venv
134
+ source .venv/bin/activate
135
+ python3 -m pip install --upgrade pip
136
+ python3 -m pip install micrOSDevToolKit
137
+ ```
138
+
139
+ Verify the Python installation with `python3 --version`. Update DevToolKit later
140
+ with `python3 -m pip install --upgrade micrOSDevToolKit`.
141
+
142
+ On Windows PowerShell:
143
+
144
+ ```powershell
145
+ python -m venv .venv
146
+ .\.venv\Scripts\Activate.ps1
147
+ python -m pip install --upgrade pip
148
+ python -m pip install micrOSDevToolKit
149
+ ```
150
+
151
+ Activate the environment again when opening a new terminal. If PowerShell
152
+ blocks activation, use Command Prompt with `.venv\Scripts\activate.bat`.
153
+ On Windows, update with `python -m pip install --upgrade micrOSDevToolKit`.
154
+
155
+ Run package installation as a normal user; approve administrator access only
156
+ for USB-driver installation.
157
+
158
+ ### 2. Deploy micrOS over USB
159
+
160
+ Start the graphical toolkit:
161
+
162
+ ```bash
163
+ devToolKit.py
164
+ ```
165
+
166
+ ![micrOS DevToolKit deployment interface](./media/micrOSToolkit.png?raw=true)
167
+
168
+ 1. Connect your board over USB.
169
+ 2. Select the matching board and MicroPython firmware from the available lists.
170
+ 3. Select **Deploy (USB)** and confirm the operation.
171
+ 4. Wait for deployment to complete and the board to restart.
172
+
173
+ On first deployment, DevToolKit may offer to install the Serial USB driver
174
+ required by your platform.
175
+
176
+ **Deploy (USB) erases existing firmware and files.** Back up a board you already
177
+ use. The first toolkit launch installs optional GUI, compiler, and media
178
+ dependencies; keep internet access available until it finishes.
179
+
180
+ ### 3. Configure Wi-Fi and open the web UI
181
+
182
+ On first startup, an unconfigured node creates its own Wi-Fi access point
183
+ when it cannot connect to your network:
184
+
185
+ 1. Connect your computer to the `node01` Wi-Fi network using the
186
+ factory password `ADmin123`.
187
+ 2. Start `devToolKit.py -s -c` and select `__device_on_AP__` at `192.168.4.1`.
188
+ 3. Enter these commands **one line at a time in the micrOS shell**. Replace the
189
+ angle-bracket placeholders, including the brackets, with your own values.
190
+ The device password must be 8–9 characters long and contain uppercase and
191
+ lowercase letters and a digit. Check that each setting succeeds.
192
+
193
+ ```text
194
+ conf
195
+ staessid <your-wifi-name>
196
+ stapwd <your-wifi-password>
197
+ devfid MyNode
198
+ appwd <new-device-password>
199
+ webui True
200
+ noconf
201
+ reboot
202
+ ```
203
+
204
+ `webui True` enables the web interface. No boot-hook configuration is needed.
205
+
206
+ 4. Reconnect your computer or phone to the normal local network.
207
+ 5. Open `http://MyNode.local` in a browser. If you see **🚀 Load Web Apps**,
208
+ click it to load the dashboard and configuration apps. The page reloads
209
+ with links to the available apps.
210
+
211
+ If `.local` does not resolve, use the node IP shown by discovery or your router:
212
+ `http://<node-ip>`. The toolkit's default AP address is `192.168.4.1`; another
213
+ MicroPython port may use a different address. Keep your computer connected to
214
+ the board's Wi-Fi even if it reports that the network has no internet access.
215
+
216
+ If you deploy a previously prepared configuration containing valid Wi-Fi
217
+ credentials, the node can join that network directly and the access-point
218
+ configuration step is unnecessary. Change the factory device password during
219
+ initial setup.
220
+
221
+ ### 4. Confirm the installation
222
+
223
+ ![micrOS system intro](./media/micrOS_welcome.png?raw=true)
224
+
225
+ Open `http://MyNode.local/rest/system/info` to call the first REST endpoint, or
226
+ connect through DevToolKit and try the shell:
227
+
228
+ ```text
229
+ help
230
+ system info
231
+ system heartbeat
232
+ ```
233
+
234
+ `system info` reports the board, MicroPython version, memory, filesystem, and
235
+ uptime. `help all` lists the installed Load Modules. From there, use the
236
+ [application catalog](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
237
+ or create a [custom Load Module](./micrOS/MODULE_GUIDE.md).
238
+
239
+ The dashboard displays controls for modules with widget metadata, so a fresh
240
+ node may have few controls until you load an application. Protected
241
+ configuration operations may prompt for your device password.
242
+
243
+ ### What to try next
244
+
245
+ Choose a module from the [application catalog](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html),
246
+ check its wiring and help, then try its commands. The shell uses
247
+ `module function`; HTTP uses `/rest/module/function`, as in the system-info
248
+ example above. Module and hardware availability depend on your deployment.
249
+
250
+ You now have the basics. Use the network modes and configuration tables below
251
+ as your everyday reference; continue to Advanced use for custom behavior,
252
+ automation, different firmware, or multi-node tooling.
253
+
254
+ <a id="micros-video-tutorials"></a>
255
+
256
+ ### Tutorials and community
257
+
258
+ [![YouTube](https://img.shields.io/badge/YouTube-micrOS_framework-red?logo=youtube&logoColor=white)](https://www.youtube.com/channel/UChRlJw7OYAoKroC-Mi75joA)
259
+ [![Instagram](https://img.shields.io/badge/Instagram-%40micros_framework-%23E4405F?logo=instagram&logoColor=white)](https://www.instagram.com/micros_framework/)
260
+ [![Facebook](https://img.shields.io/badge/Facebook-micrOS_framework-%231877F2?logo=facebook&logoColor=white)](https://www.facebook.com/Micros-Framework-103501302140755)
261
+ [![Thingiverse](https://img.shields.io/badge/Thingiverse-micrOS_3Dprints-%231489FF?logo=thingiverse&logoColor=white)](https://www.thingiverse.com/micros_framework/designs)
262
+
263
+ [![micrOS video tutorials](./media/YoutubeChannel.png)](https://www.youtube.com/channel/UChRlJw7OYAoKroC-Mi75joA)
264
+
265
+ Questions, ideas, and technical requests are welcome in
266
+ [GitHub Discussions](https://github.com/BxNxM/micrOS/discussions). If micrOS is
267
+ useful to you, a GitHub star helps other MicroPython and embedded-automation
268
+ developers find it.
269
+
270
+
271
+ ---
272
+
273
+ <a id="networking-modes"></a>
274
+
275
+ <a id="how-it-works"></a>
276
+
277
+ ### Network modes
278
+
279
+ ![micrOS station, access-point, and local-network modes](./media/micrOSNetworking.png?raw=true)
280
+
281
+ A node normally joins the local Wi-Fi network in station mode. It can fall back
282
+ to its own access point for configuration. Set `nwmd`, `staessid`, `stapwd`,
283
+ and `devip` using the configuration reference below. Clients communicate directly
284
+ with a node; nodes can invoke each other over sockets or ESP-NOW.
285
+
286
+
287
+ <a id="micros-node-configuration-parameters-with-description"></a>
288
+
289
+ ### Node configuration reference
290
+
291
+ These parameters control micrOS core functionality and allow an entire system
292
+ to be assembled from configuration.
293
+
294
+ #### Basic parameters:
295
+
296
+ | Config keys | Default value and type | Reboot required | Description |
297
+ | :-----------------: | :-------------------------: | :-------------: | ----------------------------------------- |
298
+ | **`devfid`** | `node01` `<str>` | No | Device friendly "unique" ID - (1) defines AccessPoint (AP) network name and (2) in Station (STA) network mode the DHCP device name for IP address resolve also (3) this is the ShellCli prompt.
299
+ | **`staessid`** | `your_wifi_name` `<str>` | Yes | Wifi router name to connect (for STA default connection mode). You can list multiple wifi names separated with `;`
300
+ | **`stapwd`** | `your_wifi_passwd` `<str>` | Yes | Wifi router password (for STA default connection mode). You can list multiple wifi passwords separated with `;` connected in order to `staessid` wifi names.
301
+ | **`appwd`** | `ADmin123` `<str>` | Yes | Device system password.: Used in AP password (access point mode) + webrepl password + micrOS auth
302
+ | **`boothook`** | `n/a` `<str>` | Yes | Add Load Module execution(s) to the boot sequence. Separator `;`. Examples: `rgb load; cct load` but you can call any load module function here if you want to run it at boot time.
303
+ | **`webui`** | `False` `bool` | Yes | Launch http rest server on port 80 (in parallel with micrOS shell on port 9008 aka `socport`). It has 2 endpoints: / aka main page (index.html) and /rest aka rest (json) interface for load module execution. Example: `<devfid>.local` or `<devfid>.local/rest` + optional parameters: `/rgb/toggle`. **Apple shortcuts compatible**
304
+ | **`espnow`** | `False` `bool` | Yes | Enable **ESPNow communication protocol**. It starts `espnow.server` task, that can receive espnow messages and execute Load Module commands. It is an extension for **InterCon** feature example: `system heartbeat >>target.local`.
305
+ | | |
306
+ | **`cron`** | `False` `<bool>` | Yes | Enable timestamp based Load Module execution aka Cron scheduler (linux terminology), Timer(1) hardware interrupt enabler.
307
+ | **`crontasks`** | `n/a` `<str>` | No | Cron scheduler input, task format: `WD:H:M:S!module function` e.g.: `1:8:0:0!system heartbeat`, task separator in case of multiple tasks: `;`. [WD:0-6, H:0-23, M:0-59, S:0-59] in case of each use: `*`. Instead `WD:H:M:S` you can use suntime tags: `sunset`, `sunrise`, optional offset: `sunset+-<minutes>`, `sunrise+-<minutes>`, example: `sunset-30!system heartbeat`. Range of days: WD can be conrete day number or range like: 0-2 means Monday to Wednesday.
308
+ | | |
309
+ | **`irq1`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
310
+ | **`irq1_cbf`** | `n/a` `<str>` | Yes | `irq1` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
311
+ | **`irq1_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
312
+ | **`irq2`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
313
+ | **`irq2_cbf`** | `n/a` `<str>` | Yes | `irq2` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
314
+ | **`irq2_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
315
+ | **`irq3`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
316
+ | **`irq3_cbf`** | `n/a` `<str>` | Yes | `irq3` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
317
+ | **`irq3_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
318
+ | **`irq4`** | `False` `<bool>` | Yes | External event interrupt enabler - Triggers when desired signal state detected - button press happens / motion detection / etc.
319
+ | **`irq4_cbf`** | `n/a` `<str>` | Yes | `irq4` enabled, calls the given Load Modules, e.x.: `module function optional_parameter(s)` when external trigger happens.
320
+ | **`irq4_trig`** | `n/a` `<str>` | Yes | Sets trigger mode for external irq, signal phase detection, values `up` (default: `n/a`) or `down` or `both`.
321
+ | **`irq_prell_ms`** | `300` `<int>` | Yes | "Prell": contact recurrence (hw property), for fake event filtering... :D Time window to ignore external IRQ events in ms.
322
+ | | |
323
+ | **`timirq`** | `False` `<bool>` | Yes | Timer(0) interrupt enabler - background "subprocess" like execution, timer based infinite loop for the LoadModule execution.
324
+ | **`timirqcbf`** | `n/a` `<str>` | Yes | if `timirq` enabled, calls the given Load Module(s), e.x.: `module function optional_parameter(s)`, task separator: `;`
325
+ | **`timirqseq`** | `1000` `<int>` | Yes | Timer interrupt period in ms, default: `1000` ms (for `timirq` infinite loop timer value)
326
+
327
+ #### Advanced parameter options:
328
+
329
+ | Config keys | Default value and type | Reboot required | Description |
330
+ | :-----------------: | :-------------------------: | :-------------: | ---------------------------------------- |
331
+ | **`utc`** | `60` `<int>` | Yes | NTP-RTC - timezone setup (UTC in minute) - it is automatically calibrated in STA mode based on geolocation.
332
+ | **`ha`** | `True` `<bool>` | Yes | High Availability mode for micrOS network runtime. This is **not Home Assistant** integration. When enabled, micrOS turns on the 30 second watchdog and the idle task checks STA connectivity about every 3 minutes. If the node is configured for `nwmd=STA`, loses Wi-Fi, and a configured SSID is visible again, micrOS reboots to repair the connection. In AP mode this mainly leaves the watchdog behavior active, while STA auto-repair is not used.
333
+ | **`cstmpmap`** | `n/a` `<str>` | Yes | Default (`n/a`), select pinmap automatically based on platform (`IO_<platform>`). Manual control / customization of application pins, syntax: `pin_map_name; pin_name:pin_number; ` etc. [1][optional] `pin_map_name` represented as `IO_<pin_map_name>.py/.mpy` file on device. [2+][optinal] `dht:22` overwrite individual existing load module pin(s). Hint: `<module> pinmap()` to get app pins, example: `neopixel pinmap()`
334
+ | **`boostmd`** | `True` `<bool>` | Yes | boost mode - set up cpu frequency low or high 80/160 MHz on ESP32-C3/C6; the current fallback is 160/240 MHz. Other ports require compatible clock settings.
335
+ | **`aioqueue`** | `5` `<int>` | Yes | System async queue controller (resource limiter).: `#1` Set asyc task queue limit (for soft tasks: `&`). Furthermore `#2` Socker server-s (webCli, ShellCli) client number limiter. 5 means: 5 cooperative connection (queue) shared by webCli and shellCli. It can be increased based on available resources.
336
+ | **`webui_max_con`** | `3` `<int>` | Yes | Maximum number of concurrent HTTP requests processed simultaneously. Each active request consumes heap memory. Lower this value to mitigate memory allocation failures caused by heap fragmentation. The effective concurrency limit is reduced if the memory requirement exceeds 10% of the available heap or if the value of webui_max_con exceeds the value of aioqueue.
337
+ | | |
338
+ | **`devip`** | `n/a` `<str>` | Yes(N/A) | Device IP address, (first stored IP in STA mode will be the device static IP on the network), you can set specific static IP address here.
339
+ | **`nwmd`** | `STA` `<str>` | Yes | Preferred network mode - `AP` or `STA`, default is `STA`.
340
+ | **`soctout`** | `30` `<int>` | Yes | Socket server connection timeout. If user is passive for `soctout` sec, and new connection incoming, then close passive connection. So it is time limit per connection in the `aioqueue`.
341
+ | **`socport`** | `9008` `<int>` | Yes | Socket server service port (should not be changed because of client and API incompatibility).
342
+ | **`auth`** | `False` `<bool>` | Yes | Enables socket password authentication, password: `appwd`. Passwordless functions: `hello`, `version`, `exit`. Plus access for loaded modules. Auth protects the configuration and new module loads.
343
+ | | |
344
+ | **`dbg`** | `True` `<bool>` | Yes | Debug mode - enable micrOS system printout, server info, etc. + progress LED.
345
+ | **`hwuid`** | `n/a` `<str>` | N/A | USED BY SYSTEM (state storage) - hardware address - dev uid
346
+ | **`guimeta`** | `...` `str` | No | Used by the micrOS client for widget metadata and offloaded parameter-type state.
347
+
348
+ Most unset string parameters use `n/a`. Cron requires Timer(1); the original
349
+ implementation targets the ESP32 port.
350
+
351
+
352
+ ---
353
+
354
+ ## Advanced use
355
+
356
+ Use this section as a reference, not a second setup checklist. It covers
357
+ operating and extending your nodes. Runtime design belongs in
358
+ [ARCHITECTURE.md](./micrOS/ARCHITECTURE.md); application APIs and examples belong
359
+ in [MODULE_GUIDE.md](./micrOS/MODULE_GUIDE.md).
360
+
361
+ - [Interfaces and applications](#interfaces-and-applications)
362
+ - [Automation commands](#configure-automation)
363
+ - [Boards and memory](#boards-and-memory) · [Peripherals](#built-in-peripheral-support) · [Pinouts](#device-pinouts-for-wiring)
364
+ - [Gateway and monitoring](#gateway-and-monitoring)
365
+ - [Development and customization](#developer-guide) — modules, firmware images, CLI, and examples
366
+ - [Documentation](#documentation-map)
367
+ - [Roadmap](#roadmap) · [Release history](#release-history)
368
+ - [Cheat sheets and maintainer notes](#operations-and-maintainer-notes)
369
+
370
+ <a id="micros-clients"></a>
371
+
372
+ ### Interfaces and applications
373
+
374
+ | Interface | Purpose |
375
+ | --- | --- |
376
+ | **On-device web UI** | Configuration, generated dashboards, REST tools, and file management at `http://<nodename>.local`. |
377
+ | **WebCli / REST** | Exposes MicroPython module functions through HTTP endpoints. |
378
+ | **ShellCli** | Provides a generic, session-based TCP/IP operation and management (OAM) interface with a telnet-style shell. |
379
+ | **DevToolKit** | Deploys, updates, discovers, monitors, and simulates nodes. |
380
+ | **InterCon** | Executes commands between nodes over sockets or ESP-NOW. |
381
+
382
+ Load Modules are micrOS applications. Use the catalog to find one for your
383
+ hardware, or follow the development guide to write your own.
384
+
385
+ - [Browse the built-in application and peripheral catalog](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
386
+ - [Create a custom Load Module](./micrOS/MODULE_GUIDE.md)
387
+ - [Install shared micrOS packages](https://github.com/BxNxM/micrOSPackages)
388
+ - [Use the micrOS Gateway](./env/docker/README.md)
389
+ - AI integration: [![DockerHub micrOS MCP](https://img.shields.io/badge/DockerHub-micrOS%20MCP-blue)](https://hub.docker.com/r/bxnxm/micros-mcp)
390
+
391
+ <details>
392
+ <summary><strong>Legacy mobile clients</strong></summary>
393
+
394
+ The original phone applications are obsolete and have been replaced by the
395
+ on-device web UI.
396
+
397
+ The store listings below returned 404 when checked on September 7, 2026.
398
+ Their original links and badges are preserved for historical reference, not
399
+ as installation options.
400
+
401
+ [![Legacy micrOS iOS client](./media/store/AppStoreBadge.svg)](https://apps.apple.com/hu/app/micros-client/id1562342296)
402
+ [![Legacy micrOS Android client](./media/store/GooglePlayBadge.png)](https://play.google.com/store/apps/details?id=com.BMT.micrOSClient)
403
+
404
+ </details>
405
+
406
+
407
+ #### Optional file manager
408
+
409
+ Enable the file manager for this session with `web load fileserver=True` in
410
+ the shell. Use that command in `boothook` to enable it on subsequent boots,
411
+ preserving any other startup actions. Protected file operations may prompt
412
+ for your device password.
413
+
414
+ <a id="complete-guide-and-reference"></a>
415
+ <a id="micros-framework-features"></a>
416
+
417
+ <a id="detailed-runtime-capabilities"></a>
418
+
419
+ ### Configure automation
420
+
421
+ <a id="boot-configuration-and-networking"></a>
422
+
423
+ #### Startup and network settings
424
+
425
+ OTA tooling monitors updates and restarts the node. To configure startup and
426
+ network behavior, edit `node_config.json` through the shell or web UI:
427
+
428
+ - `boothook` runs initialization before network setup—for example,
429
+ `rgb load; neopixel load` restores application pins and state. Prefix an
430
+ action with `#` to disable it while experimenting.
431
+ - `nwmd` selects station (`STA`) or access-point (`AP`) mode. `devip`
432
+ controls the stored/static IP and `devfid` the hostname (`<devfid>.local`).
433
+ - In STA mode, NTP and UTC handling set the clock, using
434
+ [ip-api.com](http://ip-api.com/json/?fields=lat,lon,timezone,offset) for
435
+ location/timezone data. The runtime also tracks uptime.
436
+
437
+ #### Schedules and external events
438
+
439
+ | Mechanism | Configuration and example |
440
+ | --- | --- |
441
+ | Periodic timer | Enable `timirq`; set `timirqseq` in milliseconds and `timirqcbf` to a command. With `5000` and `bme280 measure`, Timer(0) measures every five seconds. Callbacks support `#` comments. |
442
+ | Cron | Enable `cron` and set `crontasks`. Timer(1) runs timestamped entries such as `*:8:0:0!rgb rgb r=10 g=60 b=100` (daily at 08:00). |
443
+ | External interrupt | Enable `irqX` (X = 1–4), choose `irqX_trig` (`up`, `down`, or `both`), and set `irqX_cbf` to a Load Module callback. Callbacks support `#` comments. |
444
+
445
+ Cron timestamps use `WD:H:M:S!module function`, with ranges
446
+ `0–6:0–23:0–59:0–59` and `*` for any value. Monday is 0 and Sunday is 6;
447
+ `0-2` selects Monday through Wednesday. Separate entries with `;`, but use
448
+ only one command per entry; comments are not supported.
449
+
450
+ Instead of a timestamp, use `sunrise` or `sunset` with an optional minute
451
+ offset: `sunrise+30` or `sunset!rgb rgb r=10 g=60 b=100`. Times come from
452
+ [api.sunrise-sunset.org](https://api.sunrise-sunset.org/json?lat={lat}&lng={lon}&date=today&formatted=0).
453
+ Timer support depends on the MicroPython port.
454
+
455
+ #### Shell and background jobs
456
+
457
+ ShellCli provides wireless commands such as `help`, `version`, `reboot`,
458
+ `modules`, and `webrepl`. Enter `conf` to read or change configuration,
459
+ use `dump` to show it, and leave with `noconf`.
460
+ `webrepl --update` restarts into WebREPL mode and waits about 20 seconds
461
+ for an OTA update. For normal boot versus WebREPL recovery mode, see the
462
+ [loader and boot-flow reference](./micrOS/ARCHITECTURE.md#boot-flow).
463
+
464
+ Use `help` for shell commands and active modules, or `help all` to include all
465
+ installed modules. Older output examples below use the former `help lm` syntax.
466
+
467
+ Run Load Module functions in the background:
468
+
469
+ | Command | Effect |
470
+ | --- | --- |
471
+ | `system heartbeat &` | Run once in the background. |
472
+ | `system heartbeat &1000` | Wait one second, then run once. |
473
+ | `system heartbeat &&` | Repeat in the background. |
474
+ | `system heartbeat &&1000` | Repeat every second. |
475
+ | `task show system.heartbeat` | Show the task's latest output. |
476
+ | `task kill system.heartbeat` | Stop the task. |
477
+ | `task list` | List active tasks and queue/load information. |
478
+
479
+ Example task list (the active services depend on configuration):
480
+
481
+ ```text
482
+ TinyDevBoard $ task list
483
+ ---- micrOS top ----
484
+ #queue: 18 #load: 3%
485
+
486
+ #Active #taskID
487
+ Yes server
488
+ Yes idle
489
+ Yes telegram.server_bot
490
+ Yes espnow.server
491
+ ```
492
+
493
+ The host-side socket client supports interactive and non-interactive use.
494
+ To discover nodes and connect:
495
+
496
+ ```bash
497
+ ./devToolKit.py --search_devices --connect
498
+ ```
499
+
500
+ ### Hardware and peripherals
501
+
502
+ #### Boards and memory
503
+
504
+ <details>
505
+ <summary><strong>Capabilities and example boards</strong></summary>
506
+
507
+ ![stable master](https://img.shields.io/badge/master-HEAD-success)
508
+ ![MicroPython OS](https://img.shields.io/badge/micropython-OS-gold)
509
+ ![async task manager](https://img.shields.io/badge/async-task_manager-olive)
510
+ ![configuration manager](https://img.shields.io/badge/config-manager-olive)
511
+ ![cron interrupts](https://img.shields.io/badge/IRQs-Cron-olive)
512
+ ![event interrupts](https://img.shields.io/badge/IRQs-Events-olive)
513
+ ![REST API](https://img.shields.io/badge/Web-Rest-olive)
514
+ ![Web UI](https://img.shields.io/badge/Web-UI-olive)
515
+ ![socket shell](https://img.shields.io/badge/Socket-Shell-olive)
516
+ ![GPIO and I2C](https://img.shields.io/badge/GPIO-I2C-olive)
517
+ ![RTC and NTP](https://img.shields.io/badge/RTC-NTP-olive)
518
+ ![Wi-Fi STA or AP](https://img.shields.io/badge/Wifi-STA_or_AP-blue)
519
+ ![OTA update](https://img.shields.io/badge/OTA-Update-blue)
520
+ ![InterCon socket](https://img.shields.io/badge/InterCon-socket-blue)
521
+ ![InterCon ESP-NOW](https://img.shields.io/badge/InterCon-espnow-blue)
522
+
523
+ ![TinyPICO](https://img.shields.io/badge/esp32-tinypico-purple)
524
+ ![ESP32-S3](https://img.shields.io/badge/esp32-S3-purple)
525
+ ![ESP32-S3 with RAM](https://img.shields.io/badge/esp32-S3_RAM-purple)
526
+ ![ESP32-CAM OV2640](https://img.shields.io/badge/esp32-CAM_OV2640-purple)
527
+ ![ESP32-C6 RISC-V](https://img.shields.io/badge/esp32-C6_RISCV-purple)
528
+ ![ESP32-C3 RISC-V](https://img.shields.io/badge/esp32-C3_RISCV-purple)
529
+ ![ESP32-S2](https://img.shields.io/badge/esp32-S2-purple)
530
+ ![QT Py ESP32](https://img.shields.io/badge/esp32-PYQT-purple)
531
+ ![Raspberry Pi Pico W](https://img.shields.io/badge/raspberry-pico_W-critical)
532
+ ![other ESP32 boards](https://img.shields.io/badge/esp32-etc.-purple)
533
+
534
+ Board support depends on the MicroPython port, Wi-Fi, available memory, and pin
535
+ map—not just the chip family or manufacturer. Included mappings cover Espressif
536
+ variants, TinyPICO, M5Stamp, QT Py, and RP2/Pico W. A pin map alone does not
537
+ guarantee compatibility: check the available firmware and your modules'
538
+ requirements.
539
+
540
+ </details>
541
+
542
+ micrOS targets compatible MicroPython boards with Wi-Fi, not one chip family or
543
+ manufacturer. Included mappings cover multiple Espressif boards as well as
544
+ RP2/Pico W and provider-specific boards such as TinyPICO, M5Stamp, and QT Py.
545
+ Deployment method and peripheral availability vary by MicroPython port.
546
+
547
+ Regardless of provider, enabling more than approximately two Load Modules
548
+ together with the full Web UI generally requires more than **150–200 KB** of
549
+ available RAM.
550
+
551
+ For larger applications, choose a board with **2, 4, or 8 MB of additional
552
+ PSRAM**. It may be described as PSRAM, SPIRAM, or octal PSRAM. Check the board
553
+ specification before buying; the selected MicroPython build must support it.
554
+
555
+ **Examples of higher-memory hardware:**
556
+
557
+ **`esp32s3`**: A fast Espressif MCU with PSRAM detection. Typical configurations
558
+ include **2 MB** for general use and **4–8 MB** for image processing, audio, and
559
+ larger combinations of GPIO applications.
560
+
561
+ **`esp32s3-octo`**: Uses an eight-bit PSRAM interface for higher throughput.
562
+
563
+ **`tinypico`**: Excellent compact hardware with 4 MB of PSRAM, at a higher price.
564
+
565
+ **`esp32cam`**: Uses a camera-capable image. The original project notes describe
566
+ an 8 MB configuration; check the actual board, as that is not a guarantee for
567
+ every board sold under this name.
568
+
569
+ The following figures are historical project measurements and estimates,
570
+ not limits enforced by the runtime. The original guide estimated roughly
571
+ **250 KB** for a fuller setup and recommended **2–8 MB** PSRAM configurations:
572
+
573
+ - A heavily loaded 4 MB system used approximately 230 KB (5.6%), including `oled_ui` and several other modules.
574
+ - Camera streaming can consume approximately 2 MB, or 50% of a 4 MB configuration.
575
+
576
+ > Note:
577
+
578
+ A standard **`esp32`** can work well with ShellCli and without WebCli. Web assets
579
+ and multiple asynchronous tasks each consume additional memory. The original
580
+ guide reported instability near 80% heap use in some setups; allocation sizes
581
+ and fragmentation matter too, so this is not a universal threshold. A spare ESP32 is
582
+ still a good way to explore a smaller set of micrOS features.
583
+
584
+ ---
585
+
586
+ #### Built-in peripheral support
587
+
588
+ `#Sensors / inputs` `#Actuators / outputs`
589
+
590
+ [![pheriphery-io-preview](./media/pheriphery-io-preview.png)](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
591
+
592
+ [Browse Load Module functions](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)</br>
593
+
594
+ ---
595
+
596
+ #### Device Pinouts for wiring
597
+
598
+ ##### Logical pin association handling
599
+
600
+ microIO resolves logical pins through `modules/IO_*.py` board maps. Use an
601
+ existing map such as `IO_esp32.py` as a template for `IO_<name>.py`, then set
602
+ `cstmpmap` to `<name>`. You can override individual pins too:
603
+ `neop:25` maps the logical NeoPixel pin to GPIO 25. Inspect mappings with
604
+ `system pinmap`.
605
+
606
+ [micrOS/source/microIO.py](./micrOS/source/microIO.py)
607
+
608
+ LogicalPin lookup tables:
609
+
610
+ - [tinypico](micrOS/source/modules/IO_tinypico.py)
611
+ - [esp32](micrOS/source/modules/IO_esp32.py)
612
+ - [esp32s2](micrOS/source/modules/IO_esp32s2.py)
613
+ - [esp32s3](micrOS/source/modules/IO_esp32s3.py)
614
+ - [M5Stamp](micrOS/source/modules/IO_m5stamp.py)
615
+ - [QT Py](micrOS/source/modules/IO_qtpy.py)
616
+ - [raspberryPicoW](micrOS/source/modules/IO_rp2.py) - reset needed after ota update (webrepl limitation)
617
+ - `IO_*.py` [and other mappings](./micrOS/source/modules)
618
+
619
+ > Use constant variables for pin-map declarations; see the files for examples.
620
+ > These files are also precompiled automatically into `.mpy` bytecode.
621
+
622
+ ![MicrOStinyPicopinout](./media/NodeMCUPinOutTinyPico.png?raw=true)
623
+
624
+ GENERAL CONTROLLER CONCEPT: [microPLC](./media/microPLC.png)
625
+
626
+
627
+ ![MicrOSESP23pinout](./media/NodeMCUPinOutESP32.png?raw=true)
628
+
629
+
630
+ ![MicrOSESP23S2pinout](./media/NodeMCUPinOutESP32S2_mini.png?raw=true)
631
+
632
+
633
+ ![PYQT_PinOutESP32pinout](./media/PYQT_PinOutESP32.png?raw=true)
634
+
635
+ ---
636
+
637
+ <a id="micros-gateway-in-docker"></a>
638
+
639
+ ### Gateway and monitoring
640
+
641
+ ![MICROSVISUALIZATION](./media/micrOS_gateway.png?raw=true)
642
+
643
+ Use the gateway with Prometheus for metrics and Grafana for dashboards. See
644
+ the [Docker setup guide](./env/docker/README.md) for the combined stack and
645
+ dashboard examples.
646
+
647
+ Resources:
648
+
649
+ > Modify `prometheus.yml` to select the sensor endpoints from which Prometheus should scrape data.
650
+
651
+ * [docker-compose](./env/docker/docker-compose.yaml)
652
+ * [prometheus config](./env/docker/prometheus.yml)
653
+
654
+ ```bash
655
+ cd ./env/docker
656
+ docker-compose -p gateway up -d
657
+ ```
658
+
659
+ Official [DockerHub image](https://hub.docker.com/r/bxnxm/micros-gateway)
660
+
661
+ <a id="developer-guide"></a>
662
+
663
+ ### Development and customization
664
+
665
+ <a id="customization"></a>
666
+ <a id="load-modules-and-pin-maps"></a>
667
+
668
+ #### Create a Load Module
669
+
670
+ To add an application, create `LM_<your_app_name>.py`, write public Python
671
+ functions, and upload it through DevToolKit's drag-and-drop GUI. For example,
672
+ `system info` calls `info()` in `modules/LM_system.py`.
673
+ See the [Load Module guide](./micrOS/MODULE_GUIDE.md) for the API contract.
674
+
675
+ [![app_templates](./media/app_templates.png?raw=true)](./micrOS/MODULE_GUIDE.md)
676
+
677
+ #### USB updates and custom images
678
+
679
+ The selected firmware filename controls which resources are copied from
680
+ `toolkit/workspace/precompiled/`:
681
+
682
+ - A stock MicroPython image keeps the full development deployment.
683
+ - A prebuilt `micrOS-*` image already contains the core and receives only the
684
+ configured web assets and minimum LM/IO modules.
685
+
686
+ USB deploy and update display the selected mode. USB update restores
687
+ `node_config.json` for both image types. **Skip MicroPython** keeps the current
688
+ firmware and copies only the required files.
689
+
690
+ Build all configured `micrOS-*` images with:
691
+
692
+ ```bash
693
+ python3 toolkit/micrOSImageBuilder.py
694
+ ```
695
+
696
+ Supported custom targets are `esp32`, `esp32c3`, `esp32c6`, and `esp32s3`.
697
+ The [MicroPython image guide](micrOS/micropython/README.md) contains the binary
698
+ catalog, custom image list, and image notes. Image settings and release
699
+ resources are defined in `toolkit/micrOSImageConfig.json`.
700
+
701
+ Custom images append a `[micrOS]` marker to the board description shown by
702
+ `system info`. Full OTA reads the `hello` mode and skips frozen core files on
703
+ `rel` devices.
704
+
705
+ #### Development branches and legacy deployments
706
+
707
+ Historical GUI terminology: “Secure Core” (OTA static modules) referred to
708
+ `boot.py`, `micrOSloader.mpy`, `Network.mpy`, `ConfigHandler.mpy`, and
709
+ `Debug.mpy`. These are legacy names, not the current release-image resource
710
+ list; see [deployment modes](#usb-updates-and-custom-images).
711
+
712
+ Alternative branches:
713
+
714
+ [micrOS-Core 3.0](https://github.com/BxNxM/micrOS/tree/core) - with minimal set of default Load Modules
715
+
716
+ [micrOS-develop](https://github.com/BxNxM/micrOS/tree/develop) - for experimentation
717
+
718
+ [lightweight-for-esp8266](https://github.com/BxNxM/micrOS/tree/lightweight) - really old legacy v1.3
719
+
720
+
721
+ #### Erase, flash MicroPython, and install micrOS
722
+
723
+ From the repository directory containing `devToolKit.py`, run:
724
+
725
+ ```bash
726
+ devToolKit.py --make
727
+ ```
728
+ Follow the interactive prompts. This operation erases the board.
729
+
730
+
731
+ Then discover and connect to the device:
732
+
733
+ ```
734
+ devToolKit.py -s -c
735
+ ```
736
+
737
+ ---
738
+
739
+ **User commands**
740
+
741
+ ```
742
+ devToolKit.py -h
743
+
744
+ optional arguments:
745
+ -h, --help show this help message and exit
746
+
747
+ Base commands:
748
+ -m, --make Erase & Deploy & Precompile (micrOS) & Install (micrOS)
749
+ -r, --update Update/redeploy connected (USB) micrOS
750
+ -s, --search_devices Search devices on connected wifi network.
751
+ -o, --OTA OTA (over-the-air update with WebREPL)
752
+ -c, --connect Connect through the socket client
753
+ -p CONNECT_PARAMETERS, --connect_parameters CONNECT_PARAMETERS
754
+ Parameters for connection in non-interactive mode.
755
+ -a APPLICATIONS, --applications APPLICATIONS
756
+ List/Execute frontend applications. [list]
757
+ -stat, --node_status Show all available micrOS devices status data.
758
+ -cl, --clean Clean user connection data: device_conn_cache.json
759
+
760
+ ...
761
+ ```
762
+
763
+ **Search devices**
764
+
765
+ ```
766
+ devToolKit.py --search_devices
767
+
768
+ or
769
+
770
+ devToolKit.py -s
771
+ ```
772
+
773
+ **List discovered devices with status updates**
774
+
775
+ ```
776
+ devToolKit.py -stat
777
+
778
+ or
779
+
780
+ devToolKit.py --node_status
781
+ ```
782
+
783
+ Output:
784
+
785
+ ```
786
+ [ UID ] [ FUID ] [ IP ] [ STATUS ] [ VERSION ] [ MODE ] [COMM SEC] [WEBUI | ESPNOW | CRON | TIMIRQ]
787
+ __localhost__ __simulator__ 127.0.0.1 OFFLINE <n/a> n/a n/a n/a n/a n/a n/a
788
+ micr24587c53b170OS Entrance 10.0.1.55 ONLINE 3.5.0-0 rel 0.181 ON OFF OFF OFF
789
+ micr308398c73e88OS LivingKitchen 10.0.1.200 ONLINE 3.5.0-0 dev 0.685 ON ON ON OFF
790
+ micr7c9ebd6147c4OS node01 10.0.1.180 ONLINE 3.3.1-0 rel 0.280 ON ON OFF OFF
791
+ ```
792
+
793
+ **Other Developer commands**
794
+
795
+ ```
796
+ Development & Deployment & Connection:
797
+ -f, --force_update Force mode for -r/--update and -o/--OTA
798
+ -e, --erase Erase device
799
+ -d, --deploy Flash only the selected micropython image
800
+ -i, --install Copy the full precompiled micrOS tree
801
+ -l, --list_devs_n_bins
802
+ List connected devices & micropython binaries.
803
+ -ls, --node_ls List micrOS node filesystem content.
804
+ -u, --connect_via_usb
805
+ Connect via serial port - usb
806
+ -b, --backup_node_config
807
+ Backup usb connected node config.
808
+ -sim, --simulate start micrOS on your computer in simulated mode
809
+ -cc, --cross_compile_micros
810
+ Cross Compile micrOS system [py -> mpy] and optimize
811
+ precompiled web resources
812
+ -gw, --gateway Start micrOS Gateway rest-api server
813
+ -v, --version Get micrOS version - repo + connected device.
814
+ ```
815
+
816
+ `-cc` copies `micrOS/source/web` into `toolkit/workspace/precompiled/web`,
817
+ then overwrites the copied `.js`, `.css`, and `.html` files with optimized
818
+ versions for deployment. Source web files stay readable.
819
+
820
+ Optional optimizer dependencies are installed by the normal toolkit bootstrap
821
+ unless `--light` is used.
822
+
823
+ #### Socket terminal examples
824
+
825
+ The following output snapshots are from earlier releases. Device names,
826
+ configuration keys, and output formatting may differ today; use the
827
+ [configuration reference](#node-configuration-reference) for current defaults.
828
+
829
+ ##### Identify device
830
+
831
+ ```
832
+ devToolKit.py -c -p '--dev slim01 hello'
833
+ Load MicrOS device cache: /Users/bnm/Documents/NodeMcu/MicrOs/tools/device_conn_cache.json
834
+ Activate MicrOS device connection address
835
+ [i] FUID IP UID
836
+ [0] Device: slim01 - 10.0.1.73 - 0x500x20x910x680xc0xf7
837
+ Device was found: slim01
838
+ hello:slim01:0x500x20x910x680xc0xf7:dev
839
+ ```
840
+
841
+ ##### Get help
842
+
843
+ ```bash
844
+ devToolKit.py -c -p '--dev TinyDevBoard help'
845
+ [MICROS]
846
+ hello - device hello msg ID
847
+ modules - show active Load Modules
848
+ version - show micrOS version
849
+ exit - exit shell session
850
+ reboot - system soft reboot (vm), hard reboot (hw): reboot -h
851
+ webrepl - start webrepl, for file transfers use with --update
852
+ [CONF] Configuration mode
853
+ conf - Enter conf mode
854
+ dump - Dump all data, filter: dump [str]
855
+ key - Get value
856
+ key value - Set value
857
+ noconf - Exit conf mode
858
+ [TASK] Task operations
859
+ task list - list tasks by tags
860
+ task kill [tag] - stop task
861
+ task show [tag] - show task output
862
+ [EXEC] Command mode, syntax(...): <module> <function> <params> <postfix>
863
+ Postfix hints:
864
+ ... &[x] - start one-shot task
865
+ ... &&[x] - start periodic task, where [x]: delay ms [x min: 20ms]
866
+ ... >json - request json formatted output
867
+ ... >>hostname - remote command execution (intercon)
868
+ help [all/-] [match] - list Active/ALL modules with optional filtering
869
+
870
+ cct
871
+ help
872
+ cluster
873
+ help
874
+ fileserver
875
+ help
876
+ ```
877
+
878
+ ##### Load Modules - User defined functions
879
+
880
+ ```
881
+ devToolKit.py -c -p '--dev BedLamp system info'
882
+
883
+ CPU clock: 24 [MHz]
884
+ Mem usage: 71.0 %
885
+ FS usage: 14.6 %
886
+ upython: v1.19.1 on 2022-06-18
887
+ board: ESP32 module with ESP32
888
+ mac: 7c:9e:bd:62:3f:f8
889
+ uptime: 0 1:29:19
890
+ ```
891
+
892
+ ##### SocketClient
893
+
894
+ ###### Config:
895
+
896
+ micrOS/toolkit/user_data/device_conn_cache.json
897
+
898
+ ```json
899
+ {
900
+ "__devuid__": [
901
+ "192.168.4.1",
902
+ 9008,
903
+ "__device_on_AP__"
904
+ ],
905
+ "__localhost__": [
906
+ "127.0.0.1",
907
+ 9008,
908
+ "__simulator__"
909
+ ],
910
+ "micr500291863428OS": [
911
+ "10.0.1.72",
912
+ 9008,
913
+ "BedLamp"
914
+ ]
915
+ }
916
+ ```
917
+
918
+ ###### Interactive mode
919
+
920
+ ```
921
+ devToolKit.py -c
922
+ or
923
+ devToolKit.py --connect
924
+
925
+ [i] FUID IP UID
926
+ [0] Device: __device_on_AP__ - 192.168.4.1 - __devuid__
927
+ [1] Device: __simulator__ - 127.0.0.1 - __localhost__
928
+ [2] Device: BedLamp - 10.0.1.72 - micr500291863428OS
929
+
930
+ Choose a device index: 2
931
+ Device was selected: ['10.0.1.72', 9008, 'BedLamp']
932
+ BedLamp $ help
933
+ <the command list shown in "Get help" above>
934
+ BedLamp $ exit
935
+ Bye!
936
+
937
+ ```
938
+
939
+ #### Project structure
940
+
941
+ Historical source-tree snapshot; see [the current runtime source](./micrOS/source)
942
+ and [architecture guide](./micrOS/ARCHITECTURE.md) for the maintained layout.
943
+
944
+ <details>
945
+ <summary><strong>Show historical project structure</strong></summary>
946
+
947
+ ```
948
+ ./micrOS/source
949
+ ├── Common.py
950
+ ├── Config.py
951
+ ├── Debug.py
952
+ ├── mespnow.py
953
+ ├── Files.py
954
+ ├── Hooks.py
955
+ ├── InterConnect.py
956
+ ├── Interrupts.py
957
+ ├── Logger.py
958
+ ├── Network.py
959
+ ├── Notify.py
960
+ ├── Scheduler.py
961
+ ├── Server.py
962
+ ├── Shell.py
963
+ ├── Tasks.py
964
+ ├── Time.py
965
+ ├── Types.py
966
+ ├── Web.py
967
+ ├── main.py
968
+ ├── micrOS.py
969
+ ├── micrOSloader.py
970
+ ├── reset.py
971
+ ├── urequests.py
972
+ ├── microIO.py
973
+ ├── config
974
+ │   └── _git.keep
975
+ ├── modules
976
+ │   ├── IO_esp32.py
977
+ │   ├── ...
978
+ │   ├── LM_ds18.py
979
+ │   ├── LM_esp32.py
980
+ │   ├── LM_espnow.py
981
+ │   ├── LM_gameOfLife.py
982
+ │   ├── LM_genIO.py
983
+ │   ├── LM_haptic.py
984
+ │   ├── LM_i2c.py
985
+ │   ├── LM_i2s_mic.py
986
+ │   ├── LM_keychain.py
987
+ │   ├── LM_ld2410.py
988
+ │   ├── LM_light_sensor.py
989
+ │   ├── ...
990
+ └── web
991
+ ├── dashboard.html
992
+ ├── index.html
993
+ ├── ...
994
+
995
+ 4 directories, 98 files
996
+ ```
997
+
998
+ </details>
999
+
1000
+
1001
+ ---
1002
+
1003
+
1004
+ ### Roadmap
1005
+
1006
+ Version **3.X.0-0** `micrOS-Waterbear`
1007
+
1008
+ ```
1009
+ Core:
1010
+ - Low power mode (wake on event, hibernate command)?
1011
+ - Remote controller / Sensor on battery UseCases
1012
+ ```
1013
+
1014
+
1015
+ Version **3.X+1.0-0** `micrOS-SecurePower`
1016
+
1017
+ ```
1018
+ Core:
1019
+ - Async socket servers with SSL/TLS integration (with auth.)
1020
+ - ShellCli (with TLS) and InterCon adaptation (default port: 9008, new secure port 9009)
1021
+ - WebCli (https) and webUI adaptation
1022
+
1023
+ - Intercon-Wire (?)
1024
+ - Idea of wired message communication protocol same as Intercon-Shell/Intercon-ESPNow
1025
+ - Possible HW protocols: i2c / onewire / uart BUT it should support bidirectional message transfers
1026
+ - Goal: CoProcessor easy integration feature - Arduino env support
1027
+
1028
+ - Application deployment automation: /config/compose.json
1029
+ - enables application deployment:
1030
+ - configuration (node_config.json) handling - safe parameter injection (boothook and irqs)
1031
+ - [done] requirements.txt handling
1032
+ - Automatic behaviour in core system if file exists in STA mode
1033
+ ```
1034
+
1035
+ <a id="release-note"></a>
1036
+ ### Release history
1037
+
1038
+ [Development Metrics](toolkit/helper_scripts/analysis/timeline_visualization.pdf)
1039
+
1040
+ <details>
1041
+ <summary><strong>Show release history table</strong></summary>
1042
+
1043
+ | VERSION (TAG) | RELEASE INFO | MICROS CORE MEMORY USAGE | SUPPORTED DEVICE(S) | APP PROFILES | Load Modules | NOTE |
1044
+ | :----------: | :----------------: | :------------------------: | :-----------------: | :------------: | :------------:| -------------- |
1045
+ | **v0.1.0-0** | [release_Info-0.1.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_0.1.0-0_note.md)| **78,4%** 29 776 byte | esp8266 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_0.1.0-0.json)| Stable Core with applications - first release
1046
+ | **v0.4.0-0** | [release_Info-0.4.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_0.4.0-0_note_esp8266.md)| **81,0%** 30768 byte | esp8266 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_0.4.0-0.json)| micrOS multi device support with finalized core and so more. OTA update feature.
1047
+ | **v0.4.0-0** | [release_Info-0.4.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_0.4.0-0_note_esp32.md)| **47,1%** 52 416 byte | esp32 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_0.4.0-0.json)| *micrOS multi device support with finalized core and advanced task scheduler based on time, and and so more. OTA update feature.*
1048
+ | **v1.0.0-0** | [release_Info-1.0.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_1.0.0-0_note_esp32.md)| **47,9%** 53 280 byte | esp32 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_1.0.0-0.json)| Release of v1 micrOS, timer and event based irqs, cron task scheduling, realtime communication, multiple device support. OTA, etc.
1049
+ | **v1.2.2-0** | [release_Info-1.2.2-0](./micrOS/release_info/micrOS_ReleaseInfo/release_1.2.2-0_note_esp32.md)| **48,6%** 54 032 byte | esp32 | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/a4625c7c80906bce2ddb6c47a60c2efd88f6a7e1/micrOS/client/sfuncman/sfuncman_1.2.2-0.json)| Public Release of v1 micrOS, timer and event based irqs, cron task scheduling, realtime communication, multiple device support. OTA update, thread from socket shell (beta) etc.
1050
+ | **v light-1.3.0-0** | - | - | **esp8266** | [lightweight branch](https://github.com/BxNxM/micrOS/tree/lightweight)| - |remove esp8266 due to memory limitation - BUT still supported with limited functionalities on **`lightweight`** branch. Hint: Change branch on github and download zip file, then start micrOSDevToolKit dashboard GUI
1051
+ | **v 1.5.0-1** | [release_Info-1.5.0-1](./micrOS/release_info/micrOS_ReleaseInfo/release_1.5.0-1_note_esp32.md) | **58,2%** 64 704 byte | esp32 (tinyPico) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/9d5dc0ffd34f85d05e1cb149cc8abe280fd02bd9/micrOS/client/sfuncman/sfuncman_1.5.0-1.json) | Advanced Timer IRQ based scheduling (cron & timirq), Geolocation based timing features, External IRQs with 4 channel (event filtering), finalized light controls, Device-Device comminucation support, etc.
1052
+ | **v 1.21.0-4** | [release_Info-1.21.0-4](./micrOS/release_info/micrOS_ReleaseInfo/release_1.21.0-4_note_esp32.md) | **57.3%** 63 728 byte | esp32 (tinyPico, esp32s2, esp32s3) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](https://github.com/BxNxM/micrOS/blob/c9a69814f32ab32d96c447c3e40e880df32bddd6/micrOS/client/sfuncman/sfuncman_1.21.0-4.json) | Full async core system with advanced task management and device to device communication, task scheduling and much more ... with more then 30 application/pheriphery support.
1053
+ | **v 2.0.0-0** | [release_Info-2.0.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_2.0.0-0_note_esp32.md) | **45.4%** 68.7 kb | esp32 (tinyPico, esp32s2, esp32s3) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](./micrOS/client/sfuncman/sfuncman_2.0.0-0.json) | Optimizations, WebCli with web frontends, Camera support. Micropython 1.21 async maxed out :D
1054
+ | **v 2.6.0-0** | [release_Info-2.6.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_2.6.0-0_note_esp32.md) | **48.3%** 72.6 kb | esp32 (tinyPico, esp32s2, esp32s3) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](./micrOS/client/sfuncman/sfuncman_2.6.0-0.json) | WebCli http server enhancements. New webapps: dashboard. Core system official interface finalization towards Load Modules: Common.py, Types.py (frontend generation), microIO.py (pinout handling).
1055
+ | **v 3.0.0-0** | [release_Info-3.0.0-0](./micrOS/release_info/micrOS_ReleaseInfo/release_3.0.0-0_note_esp32.md) | **66.0%** 95,5 kb | esp32 (tinyPico, esp32c6, esp32s3+PSRAM, etc.) | [App Profiles](./micrOS/release_info/node_config_profiles/) | [LM manual](./micrOS/client/sfuncman/sfuncman_3.0.0-0.json) | **Min. required RAM: 200kb**. Standalone micrOS with multi layer file system (resource separation) and advanced package management, etc. [more details](https://github.com/BxNxM/micrOS/discussions/55)
1056
+
1057
+ </details>
1058
+
1059
+ ---
1060
+
1061
+ <details>
1062
+ <summary><strong>Architecture illustrations and walkthrough</strong></summary>
1063
+
1064
+ [![micrOS core and Load Module architecture](./media/micrOSArchitecture.png?raw=true)](./micrOS/ARCHITECTURE.md)
1065
+
1066
+ For boot flow, feature activation, web authentication, and memory management,
1067
+ read the [architecture guide](./micrOS/ARCHITECTURE.md). The animation below
1068
+ illustrates system execution and message flow.
1069
+
1070
+ ![Animated micrOS system and message-function visualization](./media/micrOS.gif?raw=true)
1071
+
1072
+ </details>
1073
+
1074
+ ### Documentation map
1075
+
1076
+ - [Architecture](./micrOS/ARCHITECTURE.md)
1077
+ - [Load Module development](./micrOS/MODULE_GUIDE.md)
1078
+ - [Contributing](./CONTRIBUTING.md)
1079
+ - [MicroPython images](./micrOS/micropython/README.md)
1080
+ - [Gateway deployment](./env/docker/README.md)
1081
+ - [Advanced use reference](#advanced-use)
1082
+
1083
+
1084
+ <a id="hints"></a>
1085
+
1086
+ ### Operations and maintainer notes
1087
+
1088
+ - Save **screen** console buffer (**output**)
1089
+ Press `ctrl + A :` and type `hardcopy -h <filename>`
1090
+
1091
+ - Create a call graph: [PyCallGraph documentation](https://pycallgraph.readthedocs.io/en/master/) (legacy tool).
1092
+
1093
+ - Convert PNG/JPG-s to GIF: `convert -delay 60 ./*.png mygif.gif`
1094
+
1095
+ - **micrOS core and Load Module source code info**:
1096
+
1097
+ ```bash
1098
+ devToolKit.py -lint
1099
+ # Or use the long option:
1100
+ devToolKit.py --linter
1101
+ ```
1102
+
1103
+ #### micrOS gateway - Linux service template
1104
+
1105
+ > [BETA] service setup tool: `toolkit/helper_scripts/linux_service/make.bash`
1106
+
1107
+ - Prerequisite: install micrOS devtoolkit **PiP package**
1108
+
1109
+ - Create service: [micrOS gateway service](https://domoticproject.com/creating-raspberry-pi-service/)
1110
+
1111
+ - [1] Create `micros-gw.service`. Replace the credentials, working directory,
1112
+ user, and Python executable path for your installation. If you use a shell
1113
+ wrapper instead, set `ExecStart` to `/bin/bash` followed by that script's path.
1114
+
1115
+ ```bash
1116
+ [Unit]
1117
+ Description=micrOS gateway REST API service
1118
+ After=network-online.target
1119
+
1120
+ [Service]
1121
+ Environment="API_AUTH=<usr_name>:<password>"
1122
+ ExecStart=/usr/bin/python3 -m devToolKit -gw
1123
+ WorkingDirectory=/home/gateway
1124
+ StandardOutput=inherit
1125
+ StandardError=inherit
1126
+ Restart=always
1127
+ User=<user>
1128
+
1129
+ [Install]
1130
+ WantedBy=multi-user.target
1131
+ ```
1132
+
1133
+ - [2] copy service to `sudo cp micros-gw.service /lib/systemd/system/`
1134
+
1135
+ - [3] start service: `sudo systemctl start micros-gw.service`
1136
+
1137
+ - [4] enable service at bootup: `sudo systemctl enable micros-gw.service`
1138
+
1139
+ - [5] show service state: `sudo systemctl status micros-gw.service`
1140
+
1141
+
1142
+ <a id="git"></a>
1143
+
1144
+ #### Git maintenance
1145
+
1146
+ - Add git tag: `git tag -a vX.Y.Z-K -m "tag message"`
1147
+
1148
+ - Publish tags: `git push origin --tags`
1149
+
1150
+ - Pretty git view: `git log --pretty=oneline`
1151
+
1152
+ - File change list: `git diff --name-only fbb4875609a3c0ee088b6a118ebf9f8a500be0fd HEAD | grep 'mpy-MicrOS'`
1153
+
1154
+ - GitHub embed youtube link: `https://github.com/itskeshav/Add-youtube-link-in-Readme.md`
1155
+
1156
+ - Git history visualization with Gource
1157
+
1158
+ ```bash
1159
+ gource \
1160
+ --highlight-users \
1161
+ --hide filenames \
1162
+ --file-idle-time 0 \
1163
+ --max-files 0 \
1164
+ --seconds-per-day 0.01 \
1165
+ --auto-skip-seconds 1 \
1166
+ --title "micrOS Evolution" \
1167
+ --output-ppm-stream - \
1168
+ | ffmpeg -y -r 30 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 output.mp4
1169
+ ```
1170
+
1171
+ ```bash
1172
+ git push -u origin master
1173
+ ```