micrOSDevToolKit 2.9.1__py3-none-any.whl → 2.9.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of micrOSDevToolKit might be problematic. Click here for more details.

Files changed (59) hide show
  1. micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +19 -19
  2. micrOS/source/Common.py +1 -1
  3. micrOS/source/Config.py +6 -6
  4. micrOS/source/LM_pacman.py +248 -0
  5. micrOS/source/LM_rest.py +0 -1
  6. micrOS/source/LM_robustness.py +2 -2
  7. micrOS/source/LM_system.py +4 -16
  8. micrOS/source/LM_telegram.py +95 -61
  9. micrOS/source/Logger.py +51 -17
  10. micrOS/source/Notify.py +4 -3
  11. micrOS/source/Server.py +33 -39
  12. micrOS/source/Shell.py +72 -74
  13. micrOS/source/Web.py +22 -23
  14. micrOS/source/microIO.py +1 -2
  15. micrOS/source/reset.py +5 -1
  16. micrOS/source/urequests.py +12 -4
  17. {micrOSDevToolKit-2.9.1.data → micrOSDevToolKit-2.9.6.data}/scripts/devToolKit.py +3 -2
  18. {micrOSDevToolKit-2.9.1.dist-info → micrOSDevToolKit-2.9.6.dist-info}/METADATA +1 -1
  19. {micrOSDevToolKit-2.9.1.dist-info → micrOSDevToolKit-2.9.6.dist-info}/RECORD +57 -54
  20. toolkit/Gateway.py +2 -2
  21. toolkit/dashboard_apps/SystemTest.py +14 -12
  22. toolkit/index.html +4 -4
  23. toolkit/lib/TerminalColors.py +4 -0
  24. toolkit/lib/macroScript.py +6 -0
  25. toolkit/lib/micrOSClient.py +48 -21
  26. toolkit/lib/micrOSClientHistory.py +122 -0
  27. toolkit/micrOSlint.py +1 -1
  28. toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  29. toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  30. toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  31. toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  32. toolkit/simulator_lib/machine.py +4 -0
  33. toolkit/simulator_lib/node_config.json +1 -1
  34. toolkit/simulator_lib/uasyncio.py +7 -1
  35. toolkit/simulator_lib/uos.py +138 -0
  36. toolkit/socketClient.py +4 -4
  37. toolkit/workspace/precompiled/Common.mpy +0 -0
  38. toolkit/workspace/precompiled/Config.mpy +0 -0
  39. toolkit/workspace/precompiled/Espnow.mpy +0 -0
  40. toolkit/workspace/precompiled/LM_pacman.py +248 -0
  41. toolkit/workspace/precompiled/LM_rest.mpy +0 -0
  42. toolkit/workspace/precompiled/LM_robustness.py +2 -2
  43. toolkit/workspace/precompiled/LM_system.mpy +0 -0
  44. toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
  45. toolkit/workspace/precompiled/Logger.mpy +0 -0
  46. toolkit/workspace/precompiled/Notify.mpy +0 -0
  47. toolkit/workspace/precompiled/Server.mpy +0 -0
  48. toolkit/workspace/precompiled/Shell.mpy +0 -0
  49. toolkit/workspace/precompiled/Web.mpy +0 -0
  50. toolkit/workspace/precompiled/_mpy.version +1 -1
  51. toolkit/workspace/precompiled/microIO.mpy +0 -0
  52. toolkit/workspace/precompiled/node_config.json +1 -1
  53. toolkit/workspace/precompiled/reset.mpy +0 -0
  54. toolkit/workspace/precompiled/urequests.mpy +0 -0
  55. micrOS/source/LM_lmpacman.py +0 -126
  56. toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
  57. {micrOSDevToolKit-2.9.1.dist-info → micrOSDevToolKit-2.9.6.dist-info}/LICENSE +0 -0
  58. {micrOSDevToolKit-2.9.1.dist-info → micrOSDevToolKit-2.9.6.dist-info}/WHEEL +0 -0
  59. {micrOSDevToolKit-2.9.1.dist-info → micrOSDevToolKit-2.9.6.dist-info}/top_level.txt +0 -0
@@ -32,10 +32,10 @@ micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin,sha256=S-sv_QeL_Tylg1
32
32
  micrOS/micropython/esp32s3_spiram_oct-20241129-v1.24.1.bin,sha256=VbOF_F0YeqttkQd2ePTW66Jd34RU8u9ccFfcv8kxO_U,1662672
33
33
  micrOS/micropython/rpi-pico-w-20241129-v1.24.1.uf2,sha256=v4aYIbWaE94_f6DDzBWS-a9L1BzlcdkZwld9R7bOVA4,1727488
34
34
  micrOS/micropython/tinypico-20241129-v1.24.1.bin,sha256=Kf3cr766a5SK99CZy8bwdWjwvAZxls3tBYvaHBsw7ac,1527200
35
- micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json,sha256=KTL6AgDxZMzgT_fRZrf4_dz1yU0t_W8DvCPzMn8vfCY,5762
35
+ micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json,sha256=HthRfE-WxmLgKR7in-aiiQktnuOv3i_cIXQzvczuFfw,5760
36
36
  micrOS/source/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
37
- micrOS/source/Common.py,sha256=wFN5RwNUO7o4I5yU2Hqnm5rq16o4SFTxZI3kCqvebL8,7941
38
- micrOS/source/Config.py,sha256=me_mhQaqeIE5pVfd2SSZL5uuO2cTHRtjaiUcau4riJo,8867
37
+ micrOS/source/Common.py,sha256=PAdtseGY6QxUM-5elOAcApUv8AwGQ_smsYex0FeV5w8,7937
38
+ micrOS/source/Config.py,sha256=E3OTMRI1_T94GMADcvG7MKiuGsKsnbLn17KXHcjhqXM,8795
39
39
  micrOS/source/Debug.py,sha256=_7HZzZ2OKJrcNqeYsG1ZykBa6iN8YTj-K5FFXlEAcRw,5300
40
40
  micrOS/source/Espnow.py,sha256=5B71XVm19byydMuhLmg-ij8uNmfMSAaRNi4iytvFN08,3715
41
41
  micrOS/source/Hooks.py,sha256=GyFAVpWJPEnRsqhoGMnmXJNTgFRE6S3mGKfKX6-TvQg,3582
@@ -77,69 +77,69 @@ micrOS/source/LM_intercon.py,sha256=BRk8o2ksGdYTSrykTsXdkrncQZWsFYbQDHQjkwl-uy0,
77
77
  micrOS/source/LM_keychain.py,sha256=Rn4bXsgXqjLc6AAsSdSLDSUER-fNLRG-mD9PTRNhJvg,12701
78
78
  micrOS/source/LM_ld2410.py,sha256=TEfTzzna9v-CRbL35ajSJcEVsd631UrjP1bcJwFrgj4,6533
79
79
  micrOS/source/LM_light_sensor.py,sha256=ruItqLdhhZglJkJ67SSlei17zZOWfEJRH2pTtG87QCU,4675
80
- micrOS/source/LM_lmpacman.py,sha256=5nwORfYJHhFtkjeqSXFkrmxIYkxvB78bxRKEtqt5zRU,4056
81
80
  micrOS/source/LM_neoeffects.py,sha256=kfReEz9pTB0GRSat6--86PZtjfiT_S9ilfb-igt-bbg,10929
82
81
  micrOS/source/LM_neopixel.py,sha256=ZLy0bTW_emsFMYTCtg1RtyzgKya6nJlRMW59zOXLQvo,13367
83
82
  micrOS/source/LM_oled.py,sha256=ZIzzKp86i-Cph8D6WiX5GQuPB2qZvRi4H1llctI-DME,9912
84
83
  micrOS/source/LM_oled_sh1106.py,sha256=y5YttuexaRYbh4h-cz1rKqgFsRilIJjJWUMzro7nSXY,11738
85
84
  micrOS/source/LM_oled_ui.py,sha256=6MRY9YtY-d6biMb88Rd1cdfmt1hFisCn8olgQhvZ8Ns,21616
86
85
  micrOS/source/LM_oledui.py,sha256=hYt_3hWPdrZBOreVdupJxHhk9-xHkmuiqmEIA08mB2M,35407
86
+ micrOS/source/LM_pacman.py,sha256=k_R0X0YGkRc6-NoF5fvqng7lD5RNmV-rsVa-uBcrleE,8227
87
87
  micrOS/source/LM_pet_feeder.py,sha256=ILrozpnq2_ckkVDUROysMWRksKjflsKpIHvgHdvn-JA,2572
88
88
  micrOS/source/LM_ph_sensor.py,sha256=yj3rvVbxQr16_zpRBZudMW9eNm1pIhqvk4m8f9MWGKU,1364
89
89
  micrOS/source/LM_presence.py,sha256=OqfmBo4qxVMxE6hEWJeQVwISaL8dUS3Z3a-QXX3rIEg,8855
90
90
  micrOS/source/LM_rencoder.py,sha256=IPGQP5LhcJMpU-gCTe7e-IjB3GZAC4C2SfMNG00tsGg,3982
91
- micrOS/source/LM_rest.py,sha256=iSRh5AfvJ3jLd_NvTwnfkclSeWHKDYNoId4z1U-s5Bc,2700
91
+ micrOS/source/LM_rest.py,sha256=NmkAPcSCIc_eSNYMy64Kb4fa4_JEpNXkmCSXF_zEkNk,2673
92
92
  micrOS/source/LM_rgb.py,sha256=iqyMgpkRis4JSiknzRpQAyMNhC-OhFuRh4FsIu-5HTA,12064
93
93
  micrOS/source/LM_rgbcct.py,sha256=Ct0X_O0AuSTsf4YiZjP4Zvke81y6dQMryhcn-HKkR9M,1841
94
94
  micrOS/source/LM_roboarm.py,sha256=V7NX0nJuU9ZQuNH-r-FnjKcKH1a-qHBdVwMJzAN6Sv0,9967
95
- micrOS/source/LM_robustness.py,sha256=49tahOYLfuCnBtawnW521AM1rAZWfa1QvfP35HVgNbI,2131
95
+ micrOS/source/LM_robustness.py,sha256=JagbG1X-SQynIh1cdqiH_HrSZR-vnfB0XyDw9k_rwv4,2168
96
96
  micrOS/source/LM_rp2w.py,sha256=vdN-gxc38-WI4XK6MMz3FBPYmLdUSjEyB6JuKR_slbM,391
97
97
  micrOS/source/LM_sdcard.py,sha256=y7pB35Xqb0EporESZ6_wHTUe8ez_R2ud_mwdh-wC-30,1030
98
98
  micrOS/source/LM_servo.py,sha256=Dh4R70DJHS4wifk_S89htI4ATBGsb7Oy5zNTYVOVP0E,3490
99
99
  micrOS/source/LM_sound_event.py,sha256=9BZnrT8Jc2HL-28yVZE5sdeTa8Biq1qkQiTJsTw8y08,27500
100
100
  micrOS/source/LM_stepper.py,sha256=LXUUyVPps4xYOedJsG4Th9nyNzHCd2Treue7rreEDnY,4293
101
101
  micrOS/source/LM_switch.py,sha256=GQz0HwOhgOWVXQ4eTyQY7amNizvO0eSHFF46xMdR43I,7834
102
- micrOS/source/LM_system.py,sha256=dFYpElVtjWrhJFP7f8ZLvBgj1P2_euJznmJ88iip_4I,6810
103
- micrOS/source/LM_telegram.py,sha256=8mwKUywZWbbjYKN68wnrXw4RnvOBI1OKlJrU4sfbG4U,13242
102
+ micrOS/source/LM_system.py,sha256=4roohSqd9VefNRx_BWBJOVkVuv4J5nK1fsqIZmwhkYw,6529
103
+ micrOS/source/LM_telegram.py,sha256=n5mZeompavjfFXyCUiHYmmeusY-rJRuVbWOb9tNOZ4E,14848
104
104
  micrOS/source/LM_tinyrgb.py,sha256=kChL607HPTl3Z2hYN2XnzXXfZ6omdP78PQutHdbdfCo,3031
105
105
  micrOS/source/LM_trackball.py,sha256=pVnL_GoXUbqwT6sflqysFWmamVGZOZwHPphrLt5MZXw,9728
106
106
  micrOS/source/LM_veml7700.py,sha256=p2NXb5o5c_tM68rBfbgcfxBR31-BY2jGS2JVF3AYBfk,5771
107
- micrOS/source/Logger.py,sha256=d8pK8T_K4Yxe1j_eAwkWB5N5xd14AvL34vJCPZRZTQA,2853
107
+ micrOS/source/Logger.py,sha256=CtmjmQc9hzCystEzY0AtopjRnSy5T6AdWwpj2KTmGWg,3942
108
108
  micrOS/source/Network.py,sha256=wLhAPiRyi376TKJA7tzCQidDBHq-AbZGGp7JabHIyl8,9417
109
- micrOS/source/Notify.py,sha256=Fm4TfbiFCTz_95aQkMZBikakNUtAv7eZplI7XyufPRI,2351
109
+ micrOS/source/Notify.py,sha256=OhjdDK3Gq9lPlbuM7sV36ZDUKnRg2-gTlAH8KbInLfs,2493
110
110
  micrOS/source/Scheduler.py,sha256=K6fw807UJnOmbfzgeJQGzGbTL4s2sTIB120ZcS5qrLs,9648
111
- micrOS/source/Server.py,sha256=2a2hcfMEYSSJJ7ccUzaytT2aYmCuHsIOqzdk5ZnR8VY,16270
112
- micrOS/source/Shell.py,sha256=-sA_vT5puekl-EK85CYLQW8Dkz4SWtxx0r03ioRza-E,11934
111
+ micrOS/source/Server.py,sha256=P8cGFbh0cJU-raUrFMSLUgMzKs9OddKiIrcBWQyOQt8,16234
112
+ micrOS/source/Shell.py,sha256=HcdRu9cmutodL7k7_pQOhLvLuIHpcyoVPyRsK_PbGSk,12389
113
113
  micrOS/source/Tasks.py,sha256=YMYt86TWnUBWa8j1DQjbOavYpktCizzfZXaKXrb6Fmo,22498
114
114
  micrOS/source/Time.py,sha256=96XMJjHCPwQ2qNuBD2Un7FXxzXZNbV1xCQn-RujsggU,6351
115
115
  micrOS/source/Types.py,sha256=3O_Vb1jN92RPtvgbV8ui6_iFzDOD-BUzVXlPB7PgmM4,3507
116
- micrOS/source/Web.py,sha256=0gJsHBRh7SCGqCWGqFcuVCB5vsTdA_55pa_xJ2E0yCM,8801
116
+ micrOS/source/Web.py,sha256=BAp7mFYzJwmzUGFc6O7DZDDKKPGjgW5EY5lRcfx-SU0,8893
117
117
  micrOS/source/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
118
118
  micrOS/source/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
119
119
  micrOS/source/main.py,sha256=cVlhoWwU9dSKEol0HWPihFAPzrUUvzSGwZNNMrpyfSY,440
120
120
  micrOS/source/micrOS.py,sha256=3PQR7_xNLsI7KJtPJQUudIgpL2JIe7pctCjXH-bwFtA,2556
121
121
  micrOS/source/micrOSloader.py,sha256=mJjaysDm-60afaICr-TfPLqMT-3r_azGxE1ShYrDKeQ,4795
122
- micrOS/source/microIO.py,sha256=cFsyujC994VRl2gRmbPO6qO_1G4UbX_I2EAQVARr_Lc,6239
123
- micrOS/source/reset.py,sha256=c8VbGr4WTLZFFYzP9DaMaqAUwavYjAGljadBnZK4KtI,206
122
+ micrOS/source/microIO.py,sha256=gMJUqvWLPLBAXlmeqvfCyXGb9UAqeJpKq5y8ADcHEZw,6218
123
+ micrOS/source/reset.py,sha256=i7wsPkOXE7Mm0xOiw1CjqCvCdNjBvYswn9CRDvE2VbE,248
124
124
  micrOS/source/uapi.js,sha256=fZ0E9-ZndCoUNQq1yJ7yUCiLYxe3p8hzSFnlN2R9roc,2959
125
125
  micrOS/source/udashboard.js,sha256=42mPR_NU3jOqUgLi7yZv2L7bN6uGqw9LpScDrGGF58c,4581
126
- micrOS/source/urequests.py,sha256=f6IAPK1_xKVL69t1GlPc3zyKkWIwjOCEN7l8vqMjBp8,8489
126
+ micrOS/source/urequests.py,sha256=h4HL4d6Vl_3DHhG_b6lmxBnqrA6YimBs6ai3q6y3JSw,8853
127
127
  micrOS/source/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
128
128
  micrOS/source/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
129
129
  micrOS/source/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
130
- micrOSDevToolKit-2.9.1.data/scripts/devToolKit.py,sha256=CVgEETK2JwWgtEFw_dAZPEfOpAQTYZfTb6810E1j2Hg,10660
130
+ micrOSDevToolKit-2.9.6.data/scripts/devToolKit.py,sha256=WuPc3esCEtw9lN20nEsNUh4EaZEnb62GAtxDOFbVugA,10771
131
131
  toolkit/DevEnvCompile.py,sha256=H19-60ZpHzP30C-wqR5QTzMDHHpWrTk0Uzh--TZHxvw,12148
132
132
  toolkit/DevEnvOTA.py,sha256=OkEtO5cpym-kEgGpE3TQbyZ-nQOzZpGzbFdbgCibe7I,25356
133
133
  toolkit/DevEnvUSB.py,sha256=-Fdigxi8asEJG4npQpvbpgjHhESq0gz0rL6lthRupVA,33848
134
- toolkit/Gateway.py,sha256=F0ZyiB0wIzOdMScXZQN-ZKRTadRpmZTj_FDY91af_us,25346
134
+ toolkit/Gateway.py,sha256=OSsJYeAmFhNnb1uu2bjLvZzE3A32O7lza8-NxlGr1DQ,25335
135
135
  toolkit/LM_to_compile.dat,sha256=iLUISab186sbCiiocDllbZhnVnHKK_WAQcAJi7hD0y4,581
136
136
  toolkit/MicrOSDevEnv.py,sha256=XqR7ZTPp-M6s36mH7-slwt_gk2ybqd0daX9qOrBqJMw,12922
137
137
  toolkit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  toolkit/img_stream.html,sha256=ZGyrUgpi-JhMl4euS-TTjwwGrg66a2pGUQCopWiveds,5135
139
- toolkit/index.html,sha256=pnwz1tpBdO-FRlsOLQ4-ah5hT8f-O_hhAI411QdiVJA,10873
139
+ toolkit/index.html,sha256=agTgT1d4FH8l2h47Hfb4Lv061BW9shsCAgq1abO5hlI,10998
140
140
  toolkit/micrOSdashboard.py,sha256=SOBzGU1b-NIn40GMd2gE01Fuo8HZP5d1XyVG24RkPeA,54433
141
- toolkit/micrOSlint.py,sha256=Ujmgtt79UFkoPmyp1u_XN8FYjOh2puA8XpaJNk47bZ0,25107
142
- toolkit/socketClient.py,sha256=n8wCojbNLSnsDa6ChxpqmjBPm6aIaDtTn8kzcwBKWmE,18556
141
+ toolkit/micrOSlint.py,sha256=8Oi6y9_3E0R6NZRTI5EpX_Z_9Y3AW_PuCYume-7UsDc,25105
142
+ toolkit/socketClient.py,sha256=fUx5Wuy76sboIwYxKsY52Si6F2G7q06iVwb3pTwnXvI,18624
143
143
  toolkit/dashboard_apps/AirQualityBME280.py,sha256=ufYAn_eFpCIcNSQUW6AGQN6Uh_5A3xVqSyoWegUNBuY,747
144
144
  toolkit/dashboard_apps/AirQualityDHT22_CO2.py,sha256=TG8Wkx7WOaGM1rpqD6t2rKFES0aqdCJvK-f5I5IK3a4,749
145
145
  toolkit/dashboard_apps/BackupRestore.py,sha256=zRkj6KDFnO9Cj6QUpE0Av39OQZcI8CycQcrqbvWBHqU,6339
@@ -156,7 +156,7 @@ toolkit/dashboard_apps/PresenceTest.py,sha256=MnWjqh3W3qAR9pKdjrOfx74numQw6-acrR
156
156
  toolkit/dashboard_apps/RGBTest.py,sha256=x9ehV6EGH2B4syKGEQrZQbMy1pBsB1M6in8idJ73Jrw,3920
157
157
  toolkit/dashboard_apps/RoboArm.py,sha256=STFIYYy0Li6gLdJx7eu3FZOucF_f5jupHVNFzU-Ta-Q,2084
158
158
  toolkit/dashboard_apps/SED_test.py,sha256=ASVRcoVQiS80tvjQHBnXd69aAioJ4lt_UnL1KAy01sM,2782
159
- toolkit/dashboard_apps/SystemTest.py,sha256=1fJpKnV2FUJtAEDk1F2koKLvLvEYXGla1f-PKgn6Rps,21738
159
+ toolkit/dashboard_apps/SystemTest.py,sha256=yumLiYMPQcJUfSIrmTv1FuWjmyZE_k9qilxwXdVNo-s,21912
160
160
  toolkit/dashboard_apps/Template_app.py,sha256=fKF43E-XqibavvjUrCQzG-kMSTCe-sb3ckbLwDgGuTc,1002
161
161
  toolkit/dashboard_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
162
  toolkit/dashboard_apps/_capture.py,sha256=75aS8ajhEYWNqoG2DwQgqJyArMouGHZNN-0mo1RH9bU,3076
@@ -167,11 +167,12 @@ toolkit/lib/LocalMachine.py,sha256=m5xaWRx1PumKFLQ5_O8vVxC4NTclF1h9J3__pK8N-C4,1
167
167
  toolkit/lib/SafeInput.py,sha256=gMXsMalPcFCwlN6niJlG2twOHfoGsEgHL9-Uh2YQJHE,855
168
168
  toolkit/lib/SearchDevices.py,sha256=1nnJDwo_U5cCN2xsdNUT6EQqdt2fW-qAWXWzyzXzyyc,5813
169
169
  toolkit/lib/SerialDriverHandler.py,sha256=Zn0zeq4mshTMVc6fzycvrOZiKt6w6YOxJcTWw3BMN2M,7344
170
- toolkit/lib/TerminalColors.py,sha256=GUF6GsiZg8jP0izhEwhtttcteBvPoMhkTMMh-M5ewmQ,847
170
+ toolkit/lib/TerminalColors.py,sha256=Ly_8o9-eBmka1dqA2M3DBlcd1zvCCO2K_BnQ1XbqxcE,947
171
171
  toolkit/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
172
  toolkit/lib/file_extensions.py,sha256=0DpayBGjKQg7y2ZGJXf5wVPnre_4C5j-7YIViNGvYz4,372
173
- toolkit/lib/macroScript.py,sha256=Hic98kyOR1Up18T6Lrpnnv_8bkNdocnIbiXdv6R7jrI,13854
174
- toolkit/lib/micrOSClient.py,sha256=T-s5vYSnMgmYOkpET_P-AIjU-7M6mmx-oALT9dNsOZc,17009
173
+ toolkit/lib/macroScript.py,sha256=DQR8cFoks7fa0dgRUfGhTpEdUJWNQ1vikRoqukRKx14,14014
174
+ toolkit/lib/micrOSClient.py,sha256=LmNI-FF-UjuxSVGWNnAt-eRmXI0a6P5tcPV_cI0uiRI,18360
175
+ toolkit/lib/micrOSClientHistory.py,sha256=EyCqbFeMy940bfXq4Yfu8dcvb7GnBvuHHxOAIgmW1FQ,4736
175
176
  toolkit/lib/pip_package_installer.py,sha256=jpC-y1KR72_PJlqyUR6-U5b6l1szVqnIZ4nrSgUsOTM,4262
176
177
  toolkit/simulator_lib/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
177
178
  toolkit/simulator_lib/IO_darwin.py,sha256=f8HOfQKJvniShvjpBe6f4nisr6oJd9SnvxPsbdNIGQk,2336
@@ -181,18 +182,19 @@ toolkit/simulator_lib/dotstar.py,sha256=Le6RvSAz3byjiF2RX4JWB8LVsNQtfMqPfM47fg-Y
181
182
  toolkit/simulator_lib/ds18x20.py,sha256=PkOa4444X83-Y7mWjpHFu8DJ9dVfzOr-xQ4iOhpqYDk,193
182
183
  toolkit/simulator_lib/esp32.py,sha256=JUI4dnyb7aZG_mkdw3u7neBu9uUEgRzyS0KbIx_79_c,71
183
184
  toolkit/simulator_lib/framebuf.py,sha256=8ELo1k58qN5fAZ2hQqX_SRdOxYPc1CNED8geSvHDwPo,47
184
- toolkit/simulator_lib/machine.py,sha256=Msk4143F0-CCIpQfZ1gNhZFeigxJJX6XsOp_gbTYx0s,5292
185
+ toolkit/simulator_lib/machine.py,sha256=ezx7eA45Ke5-oze5SUV8z0TjebHWgbKt6AkyiphdrFY,5317
185
186
  toolkit/simulator_lib/micropython.py,sha256=VTbTE-XxzdQrWoO_Q_a5vERaVT9nDMaLbI1JiCTHCPE,989
186
187
  toolkit/simulator_lib/neopixel.py,sha256=lbI9Xl0GyytXtePM22TpnhgsDW0X6NdRxyyv0bfjR04,567
187
188
  toolkit/simulator_lib/network.py,sha256=vMfgmny9wn1Po7MXX-_WTR09ZRNUXehk_SMbG99U2dc,2490
188
- toolkit/simulator_lib/node_config.json,sha256=26UX_YQxnhkkD8Mj1ZGVRsVfxyI-OO5muT2NdUqjeJw,225
189
+ toolkit/simulator_lib/node_config.json,sha256=bYEbzpIXVoXpMLloEmvOKzvtqT0pKzAQ8WYNsEnWpiM,243
189
190
  toolkit/simulator_lib/ntptime.py,sha256=8nyRBpQQH28_i8Y3zeJYO0oh7OoB8o4fmixBvvHyxn0,109
190
191
  toolkit/simulator_lib/onewire.py,sha256=WgYl_1Rxo03eR-4up1Q3HCl9g6o-7LezUYqwT8rkhTQ,77
191
192
  toolkit/simulator_lib/sim_console.py,sha256=VhYTjyONgAMXj_kCSEB85Y1-KQ--rS39tKCbkwdtBOg,943
192
193
  toolkit/simulator_lib/simgc.py,sha256=qaYlZKW48ciIglgYxZt9ZxRUyThskhoQqke_A_bfIyo,989
193
194
  toolkit/simulator_lib/simulator.py,sha256=-qgwcGwFFUgyIZ6CzpxQMgKDFUVAY_rDWA-4XwlJLCg,7688
194
195
  toolkit/simulator_lib/tinypico.py,sha256=z6B0743-7Cg8ISa7q7kljvKi0DGoegWus3HbiaOGU3E,156
195
- toolkit/simulator_lib/uasyncio.py,sha256=iuUAzDMvtzsNopBHA0IYKmS5bCIZtbL6sgTIRcAW4D4,548
196
+ toolkit/simulator_lib/uasyncio.py,sha256=4ENv435IIr56x5IWeJUr1-QdczBBVG1zFr3-H2VDSpw,822
197
+ toolkit/simulator_lib/uos.py,sha256=QJFXf2wW-U_2Iuzw2b38h9t6pihWpDd02368Ofmb0V4,3508
196
198
  toolkit/simulator_lib/usocket.py,sha256=7cqbG03yW5wySY1yCdFRbjDgDvbFqpU1otNJxyedaGU,347
197
199
  toolkit/simulator_lib/ussl.py,sha256=yBXPRGKIWwBRQFcKwciHCDfTj69bgfswH0WSrk3Zhjg,601
198
200
  toolkit/simulator_lib/ustruct.py,sha256=XEcN7BdO_dDw2j5fDNzv-McTGPC0kObt1LJ2KU1Kpm8,136
@@ -216,7 +218,7 @@ toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc,sha256=9BPjuqlQ1A0wUHUq3e
216
218
  toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc,sha256=kuAZ1nWTZ17Q_r5Qnez2K5F_VC0O_fLd1Rph_b59HRQ,348
217
219
  toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc,sha256=GD_dpNCxLu2h2hhnm2C6QFWy0v_xXmlWPzyon6lX91c,319
218
220
  toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc,sha256=YxjMmXPgZBDAXgYG6xRZHQ2x1v9GBzHR7dgbJe4Pxvw,319
219
- toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc,sha256=gQjZv_HRDI59uvUH9YJTyRKaDVdAD5tGPzA3DAtpB8Q,11543
221
+ toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc,sha256=huwsG3mIcnBUBHFaVF-tWHHzrh-i7pL1W2mjINVYcJc,11646
220
222
  toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc,sha256=FZ-Xb6N80NaftyXGKKQvGIjNNkZX2XNtn3WLUsSdUcw,6832
221
223
  toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc,sha256=jmaaD2crvtv4kvrWNf83r7-i7YsAVAlgHKPtilPF5Ag,7455
222
224
  toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc,sha256=HgMTdM9h8iFk0oRTsL750uz9big9360cAsvHEIL7fcE,1868
@@ -244,11 +246,12 @@ toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc,sha256=RCw0QKqOJej8Ej
244
246
  toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc,sha256=sM7BQyYRn2KQGxCl_YMIed8qDXg7_714Gh-wmrq94Jg,473
245
247
  toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc,sha256=KDFe6FSwmSkEyQra5_AX4wcyNs9yzZR-li5Ti-wVlJY,450
246
248
  toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc,sha256=VPvz9Caomn5rtrRQrbn0VRnIWKVM5xPdynqHB-Lzj5o,450
247
- toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc,sha256=YRu0TWzZEpPuEmqTiJAqRt_wjDm9lshU3X2KbEq3O5s,1858
249
+ toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc,sha256=ihShEcyfAQVtDTWDcsx3rENRGWKlw4ZLo90OTt_opCQ,2112
248
250
  toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc,sha256=F9FU77fFSaOYcAsDiMTQbOIaQ9bKeI1HuAqLZCjNIfk,976
249
251
  toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc,sha256=OMX0MlM7Y4WWePolE-QTVMoKn1yQnQHxvpsb42JErcI,1355
252
+ toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc,sha256=n72JhneQF_KBwEZEoUUiZfziqZPvpNW8xKf0dr3ewQM,6005
250
253
  toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc,sha256=rAKwfzQXhHGDSvCYyRcohNbb1dzKxZHZ2EGrSF-B8L0,842
251
- toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc,sha256=NV7f_AsYEVAps0miG4qqPbu6lSu8DbrJS5DpMr9fyy4,1019
254
+ toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc,sha256=ZffWjvpL_43ihw5Rb4dGQ-8a7s3r5G-6ZvX8LixPCjU,1019
252
255
  toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc,sha256=T_xaVNR9vCkHsrkuBOB9jKzx9HPGo1I3GeSO20b2kRI,516
253
256
  toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc,sha256=ObF5TIjKNMYU0NhDNZNVPPUfhSiU00hMFkqDc7qD64Q,407
254
257
  toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc,sha256=aIV_OTkZf2zj-yN-k2VzTsd1LFLG3AF84tHxJZUAUVo,2260
@@ -263,10 +266,10 @@ toolkit/user_data/webhooks/macro.py,sha256=E_Um6fc9P6sBKvChyrKgksHmBmaFUuq_Xxy8I
263
266
  toolkit/user_data/webhooks/template.macro,sha256=XikSl3FsD6W9pUx3sqavM5tWIMBquFx9f3bh_CB8k-A,631
264
267
  toolkit/user_data/webhooks/template.py,sha256=WssXY2BDKIwvObq0SpFCjjpEGzgbLlozFTug4ANswWM,342
265
268
  toolkit/workspace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
- toolkit/workspace/precompiled/Common.mpy,sha256=vpavv1IDKQ8HQOvUj2Z6nh5S5Hxih2UQgl3CjSD3vMs,2144
267
- toolkit/workspace/precompiled/Config.mpy,sha256=X1SAfiWEMvduP6kFcVSjfY3TJsIKcbITDq1lrEIj67M,3076
269
+ toolkit/workspace/precompiled/Common.mpy,sha256=2bUIMJPc9AAVGtgzI_6DaNqF6T-kLyyd4Ys_yjrgI9A,2140
270
+ toolkit/workspace/precompiled/Config.mpy,sha256=A9ew69drKFA0SbfIvuTdeaXZQSvmwX0gDlnQa_8i-IE,3082
268
271
  toolkit/workspace/precompiled/Debug.mpy,sha256=OpoE-QcllAnASSnAC0V364G7zHjbYI_0jSPzPRBhWkI,1823
269
- toolkit/workspace/precompiled/Espnow.mpy,sha256=yzC_KeCfVzWKidRbEw_R6LQeKG6DFMu4XAssXqFSuKQ,1438
272
+ toolkit/workspace/precompiled/Espnow.mpy,sha256=xijE776bBk_rFmm-7mtlhbcp-x4HsJFJbF60D1hwdpQ,1437
270
273
  toolkit/workspace/precompiled/Hooks.mpy,sha256=qFpJrST1zIDwm16NvvWwDA982X_FDgm_fH38G1wQays,1438
271
274
  toolkit/workspace/precompiled/IO_esp32.mpy,sha256=ojJXxhRX6V8ubT1cFXpYlhHB1NplNrT2bTi247CXFrc,661
272
275
  toolkit/workspace/precompiled/IO_esp32c3.mpy,sha256=VFbiQWpnefXO5LirEb_Nfz1286UeAbvcmE3Z8_vupTs,403
@@ -306,60 +309,60 @@ toolkit/workspace/precompiled/LM_intercon.mpy,sha256=tmumM6s9WZquQ9dpvXb7NGBdJOC
306
309
  toolkit/workspace/precompiled/LM_keychain.mpy,sha256=NVrmDDV6vqxVo2MBTM_eEsvQLKx3zDrzXyFEXI0j4r4,3630
307
310
  toolkit/workspace/precompiled/LM_ld2410.mpy,sha256=DldvouxAij0E_YCXz7u9wk9vLEz4PHipy4iFqmDtHns,2584
308
311
  toolkit/workspace/precompiled/LM_light_sensor.mpy,sha256=pZeR6TMwO_8yHMFJi2jsVSl067gdLoTwzR_fG4iLuZg,1514
309
- toolkit/workspace/precompiled/LM_lmpacman.mpy,sha256=Di0r-foD3i25F--60STtr2MogRtfYTMWs-XuuXCDDg0,1886
310
312
  toolkit/workspace/precompiled/LM_neoeffects.mpy,sha256=lO0sxfiAgyASgYNjX3c_usY3TR9WeT3F2NHJkiJ182U,3091
311
313
  toolkit/workspace/precompiled/LM_neopixel.mpy,sha256=h-YJrzez80r2vY7NPRLid3-yMN3fH0pxNPShEOGowAQ,3674
312
314
  toolkit/workspace/precompiled/LM_oled.mpy,sha256=z1R9HIWvPGwibNocDrgVwZSgErGv2ptXUv3piCsdXL8,3157
313
315
  toolkit/workspace/precompiled/LM_oled_sh1106.mpy,sha256=tgnNSB2jkaYjqS7uMSZMqW6Gp9Dtjiv_YgVJAUptxBY,3764
314
316
  toolkit/workspace/precompiled/LM_oled_ui.mpy,sha256=UgY2UQGfXQa5UsrGprRLDylhF0cjN5KFjuNsHV8UMPg,6823
315
317
  toolkit/workspace/precompiled/LM_oledui.mpy,sha256=bSNnW6rlts7KM3YY-dTV34gG5r5zJMYvsqQorPb191E,11555
318
+ toolkit/workspace/precompiled/LM_pacman.py,sha256=k_R0X0YGkRc6-NoF5fvqng7lD5RNmV-rsVa-uBcrleE,8227
316
319
  toolkit/workspace/precompiled/LM_pet_feeder.py,sha256=ILrozpnq2_ckkVDUROysMWRksKjflsKpIHvgHdvn-JA,2572
317
320
  toolkit/workspace/precompiled/LM_ph_sensor.py,sha256=yj3rvVbxQr16_zpRBZudMW9eNm1pIhqvk4m8f9MWGKU,1364
318
321
  toolkit/workspace/precompiled/LM_presence.mpy,sha256=hi_dZV6SH5JwpxVcO8twEmYtKM1LgRMR258lIWyyssc,2745
319
322
  toolkit/workspace/precompiled/LM_rencoder.py,sha256=IPGQP5LhcJMpU-gCTe7e-IjB3GZAC4C2SfMNG00tsGg,3982
320
- toolkit/workspace/precompiled/LM_rest.mpy,sha256=fEMdBES5aVCOCIKTkxiwTzEybMt2n61XoswiPQEQ2Vw,1062
323
+ toolkit/workspace/precompiled/LM_rest.mpy,sha256=U-2Pihzos6A2xLtcE33qWW6qtoYLH2UM_ZN8LmRrexg,1036
321
324
  toolkit/workspace/precompiled/LM_rgb.mpy,sha256=bJcTyyLQVwcr90pqI2P4lc0Zb0BKieNeKf5KoNDX-A0,3505
322
325
  toolkit/workspace/precompiled/LM_rgbcct.mpy,sha256=7UKvHyQ-rqHG1jzZTWcNaxZVcwL4hak3dOAGMYjf-OA,624
323
326
  toolkit/workspace/precompiled/LM_roboarm.mpy,sha256=OahB57_MvUoztQ28q7d3KXsQK8_DKyvUJpo3GvftIr8,3222
324
- toolkit/workspace/precompiled/LM_robustness.py,sha256=49tahOYLfuCnBtawnW521AM1rAZWfa1QvfP35HVgNbI,2131
327
+ toolkit/workspace/precompiled/LM_robustness.py,sha256=JagbG1X-SQynIh1cdqiH_HrSZR-vnfB0XyDw9k_rwv4,2168
325
328
  toolkit/workspace/precompiled/LM_rp2w.py,sha256=vdN-gxc38-WI4XK6MMz3FBPYmLdUSjEyB6JuKR_slbM,391
326
329
  toolkit/workspace/precompiled/LM_sdcard.py,sha256=y7pB35Xqb0EporESZ6_wHTUe8ez_R2ud_mwdh-wC-30,1030
327
330
  toolkit/workspace/precompiled/LM_servo.mpy,sha256=DrMC909UMdGRF5Vtg1MB3Ku0yGIcs-BPz-6cCI-nK8Y,1147
328
331
  toolkit/workspace/precompiled/LM_sound_event.mpy,sha256=QJ5xmKtK2sfA9lyROJRRpSAjypl10MkwLdW-QsXhRf8,7384
329
332
  toolkit/workspace/precompiled/LM_stepper.mpy,sha256=ROGcr3DUrjrxPWLhuJDdf1p2jzmJy63g-NohWY1YRRk,1469
330
333
  toolkit/workspace/precompiled/LM_switch.mpy,sha256=iMnlQZuHvg5UW2ujAfQr_LBPVtyLWzkjYT8yfbCKlgQ,2240
331
- toolkit/workspace/precompiled/LM_system.mpy,sha256=h7_QNQJeLnCgifbULK8-X8YMhcSJm5vSh-6zSV6seLY,2950
332
- toolkit/workspace/precompiled/LM_telegram.mpy,sha256=qdsv0aHVhrpNvrWKzzdIi4xvuT2Ev1iU7Kqy6xRU95g,4485
334
+ toolkit/workspace/precompiled/LM_system.mpy,sha256=bSq9C615p3fL5f-RkHZaiipNFDiNnqnM5uV4ewMRKgs,2796
335
+ toolkit/workspace/precompiled/LM_telegram.mpy,sha256=5Y-YrdYjBLN7gmIqlE6WhbWhA3Dak4IVd7j_FQYOQho,4877
333
336
  toolkit/workspace/precompiled/LM_tinyrgb.mpy,sha256=qWR-e8DXuzmstxQlyic0YjwFaGiBBBWpf57Wyn1jjFc,1016
334
337
  toolkit/workspace/precompiled/LM_trackball.mpy,sha256=8OFO02VeETcwkuOACh0e9amRWwTpoRogEXcVmRBrUn4,3474
335
338
  toolkit/workspace/precompiled/LM_veml7700.mpy,sha256=-MPEbH9RzOk0hzBuXf5XzOHKZdeRD0xBgf890GJu6Vg,1956
336
- toolkit/workspace/precompiled/Logger.mpy,sha256=aFGjkv1bozWer4d-OoQQ2pp252zlMWxU0_m7LRhnaIc,854
339
+ toolkit/workspace/precompiled/Logger.mpy,sha256=Nz33LQBUliSguxuy4EV3GWXLd9PFyqzivuNivWdLJ_w,1388
337
340
  toolkit/workspace/precompiled/Network.mpy,sha256=WtpvhGB2bvEe94dAHV40fpEyk-Fi0D6vL1q_m6k4qBg,3274
338
- toolkit/workspace/precompiled/Notify.mpy,sha256=lyl5J16b8X2vnHzHSikzlNCX5XLQ7JaB0midEmVMn58,872
341
+ toolkit/workspace/precompiled/Notify.mpy,sha256=O80dkyGl8iiiEj47Q6iDJuS5mrT8_e6IXfRMN80pMRU,894
339
342
  toolkit/workspace/precompiled/Scheduler.mpy,sha256=ctCj7FfXj5TchPPxe_9dmnTXWN88egtbAnmJ0N9u_1w,2202
340
- toolkit/workspace/precompiled/Server.mpy,sha256=k-31qSfIxZKBPWaoUWBPQbmcLMcy69SSQMkDFrtuRGA,4899
341
- toolkit/workspace/precompiled/Shell.mpy,sha256=0n6SWX5keDANNW0ACZUcmkntOJdyh8tKPZzX7QX9jHk,4167
343
+ toolkit/workspace/precompiled/Server.mpy,sha256=dtSXLYpBcdz0DveB_S6nos46h-m6hwlQ-38G-iVQwKQ,4762
344
+ toolkit/workspace/precompiled/Shell.mpy,sha256=MsTnawGShS2aXWBPDGE3AL0Dl4ghkI3b-ftR6cZhC9c,4335
342
345
  toolkit/workspace/precompiled/Tasks.mpy,sha256=vL3tDV7Us3Wg7qtZA8ovqEsvLndOmu14GHcZF2_DtrY,6253
343
346
  toolkit/workspace/precompiled/Time.mpy,sha256=D6jvLP5tUKQdJGcn6Q4-ru-p0at6hnxfLC5bqC78gv0,2756
344
347
  toolkit/workspace/precompiled/Types.mpy,sha256=LssRbPgvsWuR4d2m3R7VMIvsnkVp9nN0ltwaY2wGop8,1401
345
- toolkit/workspace/precompiled/Web.mpy,sha256=mj4RIOtGY6DN2188JAFB9vnynHZFUE6BzOjcRN6txgE,3165
346
- toolkit/workspace/precompiled/_mpy.version,sha256=urtqK3HtCIqpQ-NbzFTBBnGwSeRdt6j5xGpsBsUScwM,6
348
+ toolkit/workspace/precompiled/Web.mpy,sha256=RuZNz2Yfe3MGoMV09nRLUS0MQ2CoJHHBVh7FnC9dYY4,3116
349
+ toolkit/workspace/precompiled/_mpy.version,sha256=Kik-fvRGfWAmpEjKdJLq7nPOqYR_jVgB0aiXZ8LMvMA,6
347
350
  toolkit/workspace/precompiled/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
348
351
  toolkit/workspace/precompiled/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
349
352
  toolkit/workspace/precompiled/main.py,sha256=cVlhoWwU9dSKEol0HWPihFAPzrUUvzSGwZNNMrpyfSY,440
350
353
  toolkit/workspace/precompiled/micrOS.mpy,sha256=x20-mxGB7mkvdcyulttyXhjdLvXeyXlpl57yctS3eTA,1129
351
354
  toolkit/workspace/precompiled/micrOSloader.mpy,sha256=0bFFYYHrsnAVZko9Q7XpPoo0gkt2v_lY4V9R-4K_T_0,1747
352
- toolkit/workspace/precompiled/microIO.mpy,sha256=M3dYO7C6W7epptY_VW4b4Evg0g8Vr0CE5U0etvkrK48,1516
353
- toolkit/workspace/precompiled/node_config.json,sha256=4ptI7TG6IvSkGXkxQnYLZbeJJeZTXVKnIIxFk7cDnmY,759
354
- toolkit/workspace/precompiled/reset.mpy,sha256=EHTL8NYWph5jeaqWwZ41KRwHWwCp7msGAQk203Zzo_k,214
355
+ toolkit/workspace/precompiled/microIO.mpy,sha256=W0c8nc6qOlpVjV8wfqhnzYhdFHLOh3j5SlEnzwT5wXk,1511
356
+ toolkit/workspace/precompiled/node_config.json,sha256=_E0hZhhkOE-zwFspU4dqcdiWIRKu8x1BQhQBBgLfPrE,1014
357
+ toolkit/workspace/precompiled/reset.mpy,sha256=D-ZwUk-oR8OAg5ERWJXErdPAGbx_3M13hK4IBawhIg0,217
355
358
  toolkit/workspace/precompiled/uapi.js,sha256=fZ0E9-ZndCoUNQq1yJ7yUCiLYxe3p8hzSFnlN2R9roc,2959
356
359
  toolkit/workspace/precompiled/udashboard.js,sha256=42mPR_NU3jOqUgLi7yZv2L7bN6uGqw9LpScDrGGF58c,4581
357
- toolkit/workspace/precompiled/urequests.mpy,sha256=FnrzbNJtHfmIJN1PpwhQ__CDx6Vmd6tiR5SmK276bfc,2273
360
+ toolkit/workspace/precompiled/urequests.mpy,sha256=HO-7YqLS_B32z1OEnu1j9GcqlkEY4wqAgKKNcaVRtvU,2320
358
361
  toolkit/workspace/precompiled/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
359
362
  toolkit/workspace/precompiled/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
360
363
  toolkit/workspace/precompiled/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
361
- micrOSDevToolKit-2.9.1.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
362
- micrOSDevToolKit-2.9.1.dist-info/METADATA,sha256=Og49_Wr05gkkSy5Pm8X_PQ5K30eMxqzic_67UCheC_8,53468
363
- micrOSDevToolKit-2.9.1.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
364
- micrOSDevToolKit-2.9.1.dist-info/top_level.txt,sha256=rOGOIXqLBdGZAoDTiLdZ9B_leFB7bMv7YabLwuIc2bc,25
365
- micrOSDevToolKit-2.9.1.dist-info/RECORD,,
364
+ micrOSDevToolKit-2.9.6.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
365
+ micrOSDevToolKit-2.9.6.dist-info/METADATA,sha256=G30tHnaWp535IgLpVaIK-Sh-yJFpKqeJ-_rfpLxwbEo,53468
366
+ micrOSDevToolKit-2.9.6.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
367
+ micrOSDevToolKit-2.9.6.dist-info/top_level.txt,sha256=rOGOIXqLBdGZAoDTiLdZ9B_leFB7bMv7YabLwuIc2bc,25
368
+ micrOSDevToolKit-2.9.6.dist-info/RECORD,,
toolkit/Gateway.py CHANGED
@@ -554,9 +554,9 @@ class ForwardImg(Resource):
554
554
  for devid, dev_conn_data in ListDevices.DEVICE_CACHE['online'].items():
555
555
  # IP, PORT, FID
556
556
  device = dev_conn_data[2]
557
- response = SendCmd.runcmd(device, 'lmpacman module')['response']
557
+ response = SendCmd.runcmd(device, 'modules')['response']
558
558
  print(f"\n\n{response}\n\n")
559
- if 'LM_OV2640' in response:
559
+ if 'OV2640' in response:
560
560
  ForwardImg.CAM_DEVICES.add(device)
561
561
  return jsonify(list(ForwardImg.CAM_DEVICES))
562
562
 
@@ -15,6 +15,7 @@ import requests
15
15
  # FILL OUT
16
16
  DEVICE = '__simulator__'
17
17
  PASSWD = None
18
+ TIMEOUT_SEC = 5
18
19
 
19
20
 
20
21
  def base_cmd():
@@ -299,7 +300,7 @@ def micros_alarm_check():
299
300
 
300
301
 
301
302
  def oled_msg_end_result(result):
302
- cmd_list = ['lmpacman module >json']
303
+ cmd_list = ['lmpacman moduls >json']
303
304
  output = execute(cmd_list)
304
305
  if output[0] and 'LM_oled_ui' in output[1]:
305
306
  cmd_list = [f'oled_ui msgbox "{result} %"']
@@ -359,8 +360,9 @@ def check_robustness_recursion():
359
360
  def check_intercon(host=None):
360
361
  def _convert_return_to_dict(data):
361
362
  try:
362
- data_dict = ast.literal_eval(data[1])
363
+ data_dict = ast.literal_eval(data[1].split("\n")[0])
363
364
  except Exception as e:
365
+ print(f"WARNING: cannot parse output as dir: {e}")
364
366
  data_dict = {'tag': None, 'verdict': f'{data}: {str(e)}'}
365
367
  return data[0], data_dict
366
368
 
@@ -427,7 +429,7 @@ def measure_conn_metrics():
427
429
 
428
430
  def memory_usage():
429
431
  cmd = ['system memory_usage >json']
430
- out = execute(cmd, tout=3)
432
+ out = execute(cmd, tout=TIMEOUT_SEC)
431
433
  state, raw_output = out[0], out[1]
432
434
  try:
433
435
  json_out = json.loads(raw_output)
@@ -435,7 +437,7 @@ def memory_usage():
435
437
  return False, '[ST] {}ERR{}: {}: {}'.format(Colors.ERR, Colors.NC, raw_output, e)
436
438
 
437
439
  # {"percent": 93.11, "mem_used": 103504}
438
- if json_out.get('percent') > 80: # MEM USAGE WARNING INDICATOR: 85%
440
+ if json_out.get('percent') > 70: # MEM USAGE WARNING INDICATOR: 80%
439
441
  return state, '[ST] {}WARNING{}: memory usage {}% ({} bytes)'.format(Colors.WARN, Colors.NC,
440
442
  json_out.get('percent'),
441
443
  json_out.get('mem_used'))
@@ -448,7 +450,7 @@ def disk_usage():
448
450
  Check disk usage - manually defined 16% (336_000 byte) - check degradations...
449
451
  """
450
452
  cmd = ['system disk_usage >json']
451
- out = execute(cmd, tout=3)
453
+ out = execute(cmd, tout=TIMEOUT_SEC)
452
454
  state, raw_output = out[0], out[1]
453
455
  try:
454
456
  json_out = json.loads(raw_output)
@@ -456,7 +458,7 @@ def disk_usage():
456
458
  return False, '[ST] {}ERR{}: {}: {}'.format(Colors.ERR, Colors.NC, raw_output, e)
457
459
 
458
460
  # {"percent": 15.4, "fs_used": 323_584}
459
- if json_out.get('fs_used') > 500_000: # MEM USAGE WARNING INDICATOR: 500_000 bytes (500kb)
461
+ if json_out.get('fs_used') > 700_000: # MEM USAGE WARNING INDICATOR: 700_000 bytes (700kb)
460
462
  return state, '[ST] {}WARNING{}: disk usage {}% ({} bytes)'.format(Colors.WARN, Colors.NC,
461
463
  json_out.get('percent'),
462
464
  json_out.get('fs_used'))
@@ -466,7 +468,7 @@ def disk_usage():
466
468
 
467
469
  def task_list():
468
470
  cmd = ['task list']
469
- out = execute(cmd, tout=3)
471
+ out = execute(cmd, tout=TIMEOUT_SEC)
470
472
  state, output = out[0], out[1]
471
473
  if state:
472
474
  return state, output.replace('\n', f'\n{" "*51}') # TODO format output
@@ -476,12 +478,12 @@ def task_list():
476
478
  def webcli_test():
477
479
  endpoints = []
478
480
  cmd = ['conf', 'webui']
479
- out = execute(cmd, tout=3)
481
+ out = execute(cmd, tout=TIMEOUT_SEC)
480
482
  state, output = out[0], out[1]
481
483
  if state:
482
484
  verdict = f"[ST] WEBUI IS ENABLED ({output})" if output.strip() == 'True' else f"[ST] WEBUI IS DISABLED ({output})"
483
485
  if output.strip() == 'True':
484
- out = execute(['conf', 'devip'], tout=3)
486
+ out = execute(['conf', 'devip'], tout=TIMEOUT_SEC)
485
487
  if out[0] and out[1] is not None:
486
488
  devip = out[1]
487
489
  endpoints.append(f'http://{devip}')
@@ -509,7 +511,7 @@ def webcli_test():
509
511
  def after_st_reboot():
510
512
  verdict = False, 'reboot -h failed'
511
513
  cmd = ['reboot -h']
512
- out = execute(cmd, tout=3)
514
+ out = execute(cmd, tout=TIMEOUT_SEC)
513
515
  state, output = out[0], out[1]
514
516
  if state:
515
517
  verdict = state, f'[reboot-h] commad out: {output}'
@@ -517,7 +519,7 @@ def after_st_reboot():
517
519
  print(f"[reboot-h] Wait for node up again ({retry}/{retry*2}sec)")
518
520
  time.sleep(2)
519
521
  try:
520
- up, o = execute(['hello'], tout=3)
522
+ up, o = execute(['hello'], tout=TIMEOUT_SEC)
521
523
  if up:
522
524
  verdict = True, f"[reboot-h][OK] successfully rebooted: {o} (boot time: ~{retry * 2}sec)"
523
525
  print(verdict[1])
@@ -530,7 +532,7 @@ def after_st_reboot():
530
532
 
531
533
  def get_dev_version():
532
534
  cmd = ['version']
533
- out = execute(cmd, tout=3)
535
+ out = execute(cmd, tout=TIMEOUT_SEC)
534
536
  state, output = out[0], out[1]
535
537
  if state:
536
538
  return output
toolkit/index.html CHANGED
@@ -11,15 +11,15 @@
11
11
  50% {background-position: 100% 50%;}
12
12
  100% {background-position: 0% 50%;}}
13
13
  body {
14
- height: 400vh;
15
- width: 200vh;
14
+ height: calc(100vh - 6%); /* Set the height to 100% of the viewport height */
15
+ width: calc(100vw - 6%); /* Set the width to 200% of the viewport height */
16
16
  padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
17
- margin: 40px;
17
+ margin: 3%;
18
18
  background: linear-gradient(110deg, #720000, #656565, #252525);
19
19
  background-size: 400% 400%;
20
20
  animation: backgroundAnimation 20s infinite;
21
21
  color: #d9d9d9;
22
- font-family: 'Arial', sans-serif;
22
+ font-family: 'Verdana', Sans-serif;
23
23
  }
24
24
  button {
25
25
  background-color: #e7e7e7; /* Gray */
@@ -16,6 +16,8 @@ class Colors:
16
16
  OKGREEN = '\033[92m'
17
17
  HEADER = '\033[95m'
18
18
  UNDERLINE = '\033[4m'
19
+ LIGHT_GRAY = '\033[37m'
20
+ GRAY = '\033[90m'
19
21
  else:
20
22
  NC = ''
21
23
  OK = ''
@@ -26,6 +28,8 @@ class Colors:
26
28
  OKGREEN = ''
27
29
  HEADER = ''
28
30
  UNDERLINE = ''
31
+ LIGHT_GRAY = ''
32
+ GRAY = ''
29
33
 
30
34
 
31
35
  if __name__ == "__main__":
@@ -303,6 +303,12 @@ system clock
303
303
  f.write(default_conf)
304
304
 
305
305
  def run_micro_script(self, path):
306
+ try:
307
+ self._run_micro_script(path)
308
+ except KeyboardInterrupt:
309
+ print("Exiting...")
310
+
311
+ def _run_micro_script(self, path):
306
312
  if os.path.isdir(path):
307
313
  path = select_menu(path)
308
314
  if path is None:
@@ -1,6 +1,4 @@
1
1
  import socket
2
- import sys
3
-
4
2
  import select
5
3
  import re
6
4
  import time
@@ -9,6 +7,22 @@ try:
9
7
  except:
10
8
  from TerminalColors import Colors as color
11
9
 
10
+ def load_command_history(prompt_getter):
11
+ """Optional command history feature"""
12
+ try:
13
+ try:
14
+ from .micrOSClientHistory import CommandInterface
15
+ except:
16
+ from micrOSClientHistory import CommandInterface
17
+ except Exception as e:
18
+ print(f"Command history - disabled (readline module error): {e}")
19
+ return None
20
+ try:
21
+ return CommandInterface(prompt=prompt_getter)
22
+ except Exception as e:
23
+ print(f"Command history error: {e}")
24
+ return None
25
+
12
26
 
13
27
  class micrOSClient:
14
28
  CONN_MAP = {}
@@ -35,6 +49,10 @@ class micrOSClient:
35
49
  # Validate and resolve host (IP/Hostname)
36
50
  self.__address_manager()
37
51
 
52
+ @property
53
+ def telnet_prompt(self):
54
+ return f"{color.BOLD}{self.preprompt}{self.prompt}{color.NC} "
55
+
38
56
  def __address_manager(self):
39
57
  self.dbg_print("[INIT] micrOSClient")
40
58
  # Host is valid IP address - self.host is ip address OK
@@ -160,7 +178,7 @@ class micrOSClient:
160
178
  self.preprompt = ""
161
179
  return _data
162
180
 
163
- def __receive_data(self, read_timeout=20):
181
+ def __receive_data(self, read_timeout=20, stream=False):
164
182
  """
165
183
  Client Receiver Loop
166
184
  - read_timeout - wait for server to reply (should be <15, avoid msg queue-ing)
@@ -173,7 +191,11 @@ class micrOSClient:
173
191
  # Collect answer data
174
192
  if select.select([self.conn], [], [], read_timeout)[0]:
175
193
  while True:
176
- data_buffer += self.conn.recv(4096).decode('utf-8')
194
+ incoming_data = self.conn.recv(4096).decode('utf-8')
195
+ if stream:
196
+ incoming_data = incoming_data.replace(self.prompt, f"{color.NC}{color.BOLD}{self.prompt}{color.NC}")
197
+ print(f"\r{color.LIGHT_GRAY}{incoming_data}{color.NC}", end="")
198
+ data_buffer += incoming_data
177
199
  # Last line from data_buffer (handle fragmented messages - prompt detection)
178
200
  last_line = data_buffer.strip().split("\n")[-1]
179
201
  # Wait for prompt or special cases (exit/prompt)
@@ -200,7 +222,7 @@ class micrOSClient:
200
222
  self.isconn = False
201
223
  self.spacer = 0
202
224
 
203
- def __run_command(self, cmd):
225
+ def __run_command(self, cmd, stream=False):
204
226
  """
205
227
  Run command on server tcp/ip connection
206
228
  - prompt check - validate device ("hostname $" = "prompt")
@@ -218,14 +240,14 @@ class micrOSClient:
218
240
  # Workaround for reboot command - micrOS async server cannot send Bye! msg before reboot.
219
241
  if reboot_request:
220
242
  return 'Bye!'
221
- data = self.__receive_data()
243
+ data = self.__receive_data(stream=stream)
222
244
  return data
223
245
  # Skip command run: prompt and host not the same!
224
246
  print(f"[micrOSClient] {color.ERR}prompt mismatch{color.NC}, hostname: {check_hostname} prompt: {check_prompt} ")
225
247
  # Check UID?
226
248
  return None
227
249
 
228
- def send_cmd(self, cmd, timeout=3, retry=5):
250
+ def send_cmd(self, cmd, timeout=3, retry=5, stream=False):
229
251
  """
230
252
  Send command function - main usage for non interactive mode
231
253
  """
@@ -244,7 +266,7 @@ class micrOSClient:
244
266
 
245
267
  # @ Run command
246
268
  try:
247
- out = self.__run_command(cmd)
269
+ out = self.__run_command(cmd, stream=stream)
248
270
  except Exception as e:
249
271
  self.dbg_print("{}[ERR]{} send_cmd error: {}".format(color.ERR, color.NC, e))
250
272
  self.dbg_print("Auto deinit connection")
@@ -261,11 +283,11 @@ class micrOSClient:
261
283
  # return output list
262
284
  return out
263
285
 
264
- def send_cmd_retry(self, cmd, timeout=6, retry=5):
286
+ def send_cmd_retry(self, cmd, timeout=6, retry=5, stream=False):
265
287
  out = None
266
288
  for cnt in range(0, retry):
267
289
  try:
268
- out = self.send_cmd(cmd, timeout)
290
+ out = self.send_cmd(cmd, timeout, stream=stream)
269
291
  if out is None or isinstance(out, list):
270
292
  break
271
293
  except OSError as e:
@@ -277,7 +299,7 @@ class micrOSClient:
277
299
  time.sleep(0.2)
278
300
  return out
279
301
 
280
- def telnet(self, timeout=4):
302
+ def telnet(self, timeout=5):
281
303
  """
282
304
  Implements interactive mode for socket communication.
283
305
  """
@@ -287,18 +309,23 @@ class micrOSClient:
287
309
  print("Telnet connect: {}".format(e))
288
310
  if "busy" in str(e) or "timed out" in str(e) or "No route to host" in str(e) or "Host is down" in str(e):
289
311
  return
312
+
313
+ history = load_command_history(self.telnet_prompt) # History: Beta feature
314
+ print(self.telnet_prompt, end="")
290
315
  while True:
291
- cmd = input("{}{} ".format(self.preprompt, self.prompt))
292
- # send command
293
- output = self.send_cmd(cmd)
294
- # Format output to human readable
295
- output = '\n'.join(output) if isinstance(output, list) else output
296
- # output to STDOUT
297
- if not (cmd.strip() == '' and output is None):
298
- print(output)
299
- # Close session
300
- if 'Bye!' in str(output):
316
+ try:
317
+ cmd = input() # CANNOT contain prompt - it is coming back from response data
318
+ # send command
319
+ output = self.send_cmd(cmd, timeout=timeout, stream=True)
320
+ if history is not None and "Shell: for hints type help." not in output: # History: Beta feature
321
+ history.add_history(cmd)
322
+ if 'Bye!' in str(output):
323
+ break
324
+ except KeyboardInterrupt:
325
+ print("Exiting...")
301
326
  break
327
+ if history is not None: # History: Beta feature
328
+ history.save_history()
302
329
  self.close()
303
330
 
304
331
  def dbg_print(self, msg, end='\n'):