micrOSDevToolKit 2.9.4__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 (56) hide show
  1. micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +19 -19
  2. micrOS/source/Config.py +6 -6
  3. micrOS/source/LM_pacman.py +248 -0
  4. micrOS/source/LM_rest.py +0 -1
  5. micrOS/source/LM_robustness.py +2 -2
  6. micrOS/source/LM_system.py +4 -16
  7. micrOS/source/LM_telegram.py +95 -61
  8. micrOS/source/Logger.py +41 -15
  9. micrOS/source/Notify.py +4 -3
  10. micrOS/source/Server.py +5 -2
  11. micrOS/source/Shell.py +2 -2
  12. micrOS/source/Web.py +22 -23
  13. micrOS/source/microIO.py +1 -2
  14. micrOS/source/reset.py +5 -1
  15. micrOS/source/urequests.py +12 -4
  16. {micrOSDevToolKit-2.9.4.data → micrOSDevToolKit-2.9.6.data}/scripts/devToolKit.py +3 -2
  17. {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/METADATA +1 -1
  18. {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/RECORD +54 -51
  19. toolkit/Gateway.py +2 -2
  20. toolkit/dashboard_apps/SystemTest.py +12 -11
  21. toolkit/index.html +4 -4
  22. toolkit/lib/macroScript.py +6 -0
  23. toolkit/lib/micrOSClient.py +35 -8
  24. toolkit/lib/micrOSClientHistory.py +122 -0
  25. toolkit/micrOSlint.py +1 -1
  26. toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  27. toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  28. toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  29. toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  30. toolkit/simulator_lib/machine.py +4 -0
  31. toolkit/simulator_lib/node_config.json +1 -1
  32. toolkit/simulator_lib/uasyncio.py +7 -1
  33. toolkit/simulator_lib/uos.py +138 -0
  34. toolkit/socketClient.py +2 -2
  35. toolkit/workspace/precompiled/Config.mpy +0 -0
  36. toolkit/workspace/precompiled/Espnow.mpy +0 -0
  37. toolkit/workspace/precompiled/LM_pacman.py +248 -0
  38. toolkit/workspace/precompiled/LM_rest.mpy +0 -0
  39. toolkit/workspace/precompiled/LM_robustness.py +2 -2
  40. toolkit/workspace/precompiled/LM_system.mpy +0 -0
  41. toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
  42. toolkit/workspace/precompiled/Logger.mpy +0 -0
  43. toolkit/workspace/precompiled/Notify.mpy +0 -0
  44. toolkit/workspace/precompiled/Server.mpy +0 -0
  45. toolkit/workspace/precompiled/Shell.mpy +0 -0
  46. toolkit/workspace/precompiled/Web.mpy +0 -0
  47. toolkit/workspace/precompiled/_mpy.version +1 -1
  48. toolkit/workspace/precompiled/microIO.mpy +0 -0
  49. toolkit/workspace/precompiled/node_config.json +1 -1
  50. toolkit/workspace/precompiled/reset.mpy +0 -0
  51. toolkit/workspace/precompiled/urequests.mpy +0 -0
  52. micrOS/source/LM_lmpacman.py +0 -126
  53. toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
  54. {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/LICENSE +0 -0
  55. {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/WHEEL +0 -0
  56. {micrOSDevToolKit-2.9.4.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=PTEMH6a2gWZnHxpB41WWkE5hJQwMUk_t6VECFbg2Ecc,5761
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
37
  micrOS/source/Common.py,sha256=PAdtseGY6QxUM-5elOAcApUv8AwGQ_smsYex0FeV5w8,7937
38
- micrOS/source/Config.py,sha256=me_mhQaqeIE5pVfd2SSZL5uuO2cTHRtjaiUcau4riJo,8867
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=5dYTcxcGYRFkZvILuuW88coge1ChbupZvo_M8g0r5yE,3204
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=ytt0-PeoPnuyKdp08UNunna1a9MnVBtQaJQrlUpt4N8,16161
112
- micrOS/source/Shell.py,sha256=DR_4OxlDty14I7j2AOIl3zCcOVcLMojdzt6z3kopH4g,12388
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.4.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=qBPmDPu9FyASlNZ2Q2gP4e-EGu6VyAC7ByiApQlu-CY,18623
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=Cc_CBiNLaE1UYw9TIQtDLKgtCUcjCtjKbE5lX6utQJE,21816
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
@@ -170,8 +170,9 @@ toolkit/lib/SerialDriverHandler.py,sha256=Zn0zeq4mshTMVc6fzycvrOZiKt6w6YOxJcTWw3
170
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=Rej1x9IpFmCW6LAoFf6ylua7wjwm7Apil2mf1DNW7QA,17163
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
@@ -264,9 +267,9 @@ toolkit/user_data/webhooks/template.macro,sha256=XikSl3FsD6W9pUx3sqavM5tWIMBquFx
264
267
  toolkit/user_data/webhooks/template.py,sha256=WssXY2BDKIwvObq0SpFCjjpEGzgbLlozFTug4ANswWM,342
265
268
  toolkit/workspace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
269
  toolkit/workspace/precompiled/Common.mpy,sha256=2bUIMJPc9AAVGtgzI_6DaNqF6T-kLyyd4Ys_yjrgI9A,2140
267
- toolkit/workspace/precompiled/Config.mpy,sha256=X1SAfiWEMvduP6kFcVSjfY3TJsIKcbITDq1lrEIj67M,3076
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=ztBXR7yqWezXuLSbsmZP41pWUq_4cw9K6aNcQgNe-nM,1081
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=Rk_Pkg_Pc_7W6tIiRcGfU4S9YChYPYw4-WKOqz0gUZY,4746
341
- toolkit/workspace/precompiled/Shell.mpy,sha256=z52FjUhn2S345FjXp8KgyQ30rFvgOVkcVDwpcSfDqNk,4334
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.4.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
362
- micrOSDevToolKit-2.9.4.dist-info/METADATA,sha256=2UV8fRBCkJApZjqaoF9oIvrKoWke7Bnl_YUoErTz0Pw,53468
363
- micrOSDevToolKit-2.9.4.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
364
- micrOSDevToolKit-2.9.4.dist-info/top_level.txt,sha256=rOGOIXqLBdGZAoDTiLdZ9B_leFB7bMv7YabLwuIc2bc,25
365
- micrOSDevToolKit-2.9.4.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} %"']
@@ -428,7 +429,7 @@ def measure_conn_metrics():
428
429
 
429
430
  def memory_usage():
430
431
  cmd = ['system memory_usage >json']
431
- out = execute(cmd, tout=3)
432
+ out = execute(cmd, tout=TIMEOUT_SEC)
432
433
  state, raw_output = out[0], out[1]
433
434
  try:
434
435
  json_out = json.loads(raw_output)
@@ -436,7 +437,7 @@ def memory_usage():
436
437
  return False, '[ST] {}ERR{}: {}: {}'.format(Colors.ERR, Colors.NC, raw_output, e)
437
438
 
438
439
  # {"percent": 93.11, "mem_used": 103504}
439
- if json_out.get('percent') > 80: # MEM USAGE WARNING INDICATOR: 85%
440
+ if json_out.get('percent') > 70: # MEM USAGE WARNING INDICATOR: 80%
440
441
  return state, '[ST] {}WARNING{}: memory usage {}% ({} bytes)'.format(Colors.WARN, Colors.NC,
441
442
  json_out.get('percent'),
442
443
  json_out.get('mem_used'))
@@ -449,7 +450,7 @@ def disk_usage():
449
450
  Check disk usage - manually defined 16% (336_000 byte) - check degradations...
450
451
  """
451
452
  cmd = ['system disk_usage >json']
452
- out = execute(cmd, tout=3)
453
+ out = execute(cmd, tout=TIMEOUT_SEC)
453
454
  state, raw_output = out[0], out[1]
454
455
  try:
455
456
  json_out = json.loads(raw_output)
@@ -457,7 +458,7 @@ def disk_usage():
457
458
  return False, '[ST] {}ERR{}: {}: {}'.format(Colors.ERR, Colors.NC, raw_output, e)
458
459
 
459
460
  # {"percent": 15.4, "fs_used": 323_584}
460
- 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)
461
462
  return state, '[ST] {}WARNING{}: disk usage {}% ({} bytes)'.format(Colors.WARN, Colors.NC,
462
463
  json_out.get('percent'),
463
464
  json_out.get('fs_used'))
@@ -467,7 +468,7 @@ def disk_usage():
467
468
 
468
469
  def task_list():
469
470
  cmd = ['task list']
470
- out = execute(cmd, tout=3)
471
+ out = execute(cmd, tout=TIMEOUT_SEC)
471
472
  state, output = out[0], out[1]
472
473
  if state:
473
474
  return state, output.replace('\n', f'\n{" "*51}') # TODO format output
@@ -477,12 +478,12 @@ def task_list():
477
478
  def webcli_test():
478
479
  endpoints = []
479
480
  cmd = ['conf', 'webui']
480
- out = execute(cmd, tout=3)
481
+ out = execute(cmd, tout=TIMEOUT_SEC)
481
482
  state, output = out[0], out[1]
482
483
  if state:
483
484
  verdict = f"[ST] WEBUI IS ENABLED ({output})" if output.strip() == 'True' else f"[ST] WEBUI IS DISABLED ({output})"
484
485
  if output.strip() == 'True':
485
- out = execute(['conf', 'devip'], tout=3)
486
+ out = execute(['conf', 'devip'], tout=TIMEOUT_SEC)
486
487
  if out[0] and out[1] is not None:
487
488
  devip = out[1]
488
489
  endpoints.append(f'http://{devip}')
@@ -510,7 +511,7 @@ def webcli_test():
510
511
  def after_st_reboot():
511
512
  verdict = False, 'reboot -h failed'
512
513
  cmd = ['reboot -h']
513
- out = execute(cmd, tout=3)
514
+ out = execute(cmd, tout=TIMEOUT_SEC)
514
515
  state, output = out[0], out[1]
515
516
  if state:
516
517
  verdict = state, f'[reboot-h] commad out: {output}'
@@ -518,7 +519,7 @@ def after_st_reboot():
518
519
  print(f"[reboot-h] Wait for node up again ({retry}/{retry*2}sec)")
519
520
  time.sleep(2)
520
521
  try:
521
- up, o = execute(['hello'], tout=3)
522
+ up, o = execute(['hello'], tout=TIMEOUT_SEC)
522
523
  if up:
523
524
  verdict = True, f"[reboot-h][OK] successfully rebooted: {o} (boot time: ~{retry * 2}sec)"
524
525
  print(verdict[1])
@@ -531,7 +532,7 @@ def after_st_reboot():
531
532
 
532
533
  def get_dev_version():
533
534
  cmd = ['version']
534
- out = execute(cmd, tout=3)
535
+ out = execute(cmd, tout=TIMEOUT_SEC)
535
536
  state, output = out[0], out[1]
536
537
  if state:
537
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 */
@@ -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
@@ -281,7 +299,7 @@ class micrOSClient:
281
299
  time.sleep(0.2)
282
300
  return out
283
301
 
284
- def telnet(self, timeout=4):
302
+ def telnet(self, timeout=5):
285
303
  """
286
304
  Implements interactive mode for socket communication.
287
305
  """
@@ -292,13 +310,22 @@ class micrOSClient:
292
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):
293
311
  return
294
312
 
295
- print(f"{color.BOLD}{self.preprompt}{self.prompt}{color.NC} ", end="")
313
+ history = load_command_history(self.telnet_prompt) # History: Beta feature
314
+ print(self.telnet_prompt, end="")
296
315
  while True:
297
- cmd = input()
298
- # send command
299
- output = self.send_cmd(cmd, stream=True)
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'):
@@ -0,0 +1,122 @@
1
+ import sys
2
+ import os
3
+
4
+ try:
5
+ import readline # Linux/macOS
6
+ except ImportError:
7
+ import pyreadline3 as readline # Windows (PowerShell, CMD)
8
+
9
+ try:
10
+ from .TerminalColors import Colors as color
11
+ except:
12
+ from TerminalColors import Colors as color
13
+
14
+
15
+ class CommandInterface:
16
+ def __init__(self, prompt):
17
+ self.prompt = prompt
18
+ self.command_history = ["help"]
19
+ self.history_file = os.path.expanduser("~/.micrOS_cmd_history") # History file (Linux/macOS)
20
+
21
+ # Configure readline
22
+ self.load_history()
23
+ readline.set_completer_delims("") # Ensure entire command is considered
24
+ readline.set_completer(self.autocomplete)
25
+ # Check if we're running on macOS using libedit
26
+ if "libedit" in readline.__doc__:
27
+ readline.parse_and_bind("bind ^I rl_complete") # macOS alternative
28
+ else:
29
+ readline.parse_and_bind("tab: complete") # Linux/GNU readline
30
+ readline.set_pre_input_hook(self.pre_input_hook)
31
+ readline.set_completion_display_matches_hook(self.completion_display)
32
+
33
+ def __auto_clear_history(self):
34
+ cmd_history = []
35
+ # Load file history in order - skip duplicates
36
+ if os.path.exists(self.history_file):
37
+ with open(self.history_file, "r") as f:
38
+ for line in reversed(f.readlines()):
39
+ if line in cmd_history:
40
+ continue
41
+ cmd_history.append(line)
42
+ # Save cleaned history to file
43
+ with open(self.history_file, "w") as f:
44
+ f.writelines(f"{item}\n" for item in reversed(cmd_history))
45
+
46
+ def load_history(self):
47
+ """Loads command history from a file if available."""
48
+ print(f"Command history: {self.history_file}")
49
+ try:
50
+ self.__auto_clear_history()
51
+ except Exception as e:
52
+ print(f"Auto clean history error: {e}")
53
+ if os.path.exists(self.history_file):
54
+ with open(self.history_file, "r") as f:
55
+ for line in f:
56
+ clean_line = line.strip()
57
+ if clean_line: # Avoid empty lines
58
+ self.command_history.append(clean_line)
59
+ readline.add_history(clean_line)
60
+
61
+ def save_history(self):
62
+ """Saves command history to a file."""
63
+ with open(self.history_file, "w") as f:
64
+ for cmd in self.command_history:
65
+ f.write(cmd + "\n")
66
+
67
+ def add_history(self, cmd):
68
+ """Updates readline history and command_history."""
69
+ cmd = cmd.strip()
70
+ if cmd and cmd != self.command_history[-1]: # Avoid duplicate last command
71
+ self.command_history.append(cmd)
72
+ readline.add_history(cmd)
73
+
74
+ def autocomplete(self, text, state):
75
+ """Autocomplete function: suggests previous commands."""
76
+ matches = list(dict.fromkeys(cmd for cmd in self.command_history if cmd.startswith(text)))
77
+ return matches[state] if state < len(matches) else None
78
+
79
+ def pre_input_hook(self):
80
+ """Ensures prompt visibility when scrolling through history."""
81
+ sys.stdout.write(f"\r{self.prompt}{readline.get_line_buffer()}")
82
+ sys.stdout.flush()
83
+ readline.redisplay() # Ensures history navigation does not erase prompt
84
+
85
+ def completion_display(self, substitutions, matches, longest_match_length):
86
+ print("\nSuggestions:", ", ".join(matches))
87
+
88
+ #####################################
89
+ # STANDALONE TEST METHODS #
90
+ #####################################
91
+
92
+ def dummy_send_cmd(self, cmd, stream):
93
+ """TEST FUNCTION - OUTPUT STRUCTURE SIMULATION (Must remain unchanged)."""
94
+ dummy_reply = "Bye!" if cmd.strip() in ["exit", "reboot"] else f"Dummy reply for {cmd}"
95
+ if stream:
96
+ print(dummy_reply) # micrOS protocol: return response data
97
+ print(self.prompt, end="") # micrOS protocol: return prompt -> indicating ready state
98
+ else:
99
+ dummy_reply = f"{dummy_reply}\n{self.prompt}"
100
+ return dummy_reply
101
+
102
+ def dummy_run(self):
103
+ """TEST FUNCTION - Simulated interactive terminal."""
104
+ print(f"{self.prompt}", end="", flush=True)
105
+ while True:
106
+ try:
107
+ cmd = input()
108
+ output = self.dummy_send_cmd(cmd, stream=True)
109
+ self.add_history(cmd)
110
+ if 'Bye!' in str(output):
111
+ break
112
+ except KeyboardInterrupt:
113
+ print("\nExiting...")
114
+ break
115
+
116
+ self.save_history()
117
+ print("Session closed.")
118
+
119
+
120
+ if __name__ == "__main__":
121
+ shell = CommandInterface(prompt="<prompt_placeholder>$ ")
122
+ shell.dummy_run()
toolkit/micrOSlint.py CHANGED
@@ -179,7 +179,7 @@ def load_module_checker(categories, verbose=True):
179
179
  _allowed.append(_allow)
180
180
  return _relation, _allowed
181
181
 
182
- lm_god_mode = ['LM_system.py', 'LM_lmpacman.py', 'LM_intercon.py']
182
+ lm_god_mode = ['LM_system.py', 'LM_pacman.py', 'LM_intercon.py']
183
183
  state_lm_dep = True
184
184
  verdict = []
185
185
  lm_resources = categories['load_module']