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.
- micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +19 -19
- micrOS/source/Config.py +6 -6
- micrOS/source/LM_pacman.py +248 -0
- micrOS/source/LM_rest.py +0 -1
- micrOS/source/LM_robustness.py +2 -2
- micrOS/source/LM_system.py +4 -16
- micrOS/source/LM_telegram.py +95 -61
- micrOS/source/Logger.py +41 -15
- micrOS/source/Notify.py +4 -3
- micrOS/source/Server.py +5 -2
- micrOS/source/Shell.py +2 -2
- micrOS/source/Web.py +22 -23
- micrOS/source/microIO.py +1 -2
- micrOS/source/reset.py +5 -1
- micrOS/source/urequests.py +12 -4
- {micrOSDevToolKit-2.9.4.data → micrOSDevToolKit-2.9.6.data}/scripts/devToolKit.py +3 -2
- {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/METADATA +1 -1
- {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/RECORD +54 -51
- toolkit/Gateway.py +2 -2
- toolkit/dashboard_apps/SystemTest.py +12 -11
- toolkit/index.html +4 -4
- toolkit/lib/macroScript.py +6 -0
- toolkit/lib/micrOSClient.py +35 -8
- toolkit/lib/micrOSClientHistory.py +122 -0
- toolkit/micrOSlint.py +1 -1
- toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- toolkit/simulator_lib/machine.py +4 -0
- toolkit/simulator_lib/node_config.json +1 -1
- toolkit/simulator_lib/uasyncio.py +7 -1
- toolkit/simulator_lib/uos.py +138 -0
- toolkit/socketClient.py +2 -2
- toolkit/workspace/precompiled/Config.mpy +0 -0
- toolkit/workspace/precompiled/Espnow.mpy +0 -0
- toolkit/workspace/precompiled/LM_pacman.py +248 -0
- toolkit/workspace/precompiled/LM_rest.mpy +0 -0
- toolkit/workspace/precompiled/LM_robustness.py +2 -2
- toolkit/workspace/precompiled/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/Logger.mpy +0 -0
- toolkit/workspace/precompiled/Notify.mpy +0 -0
- toolkit/workspace/precompiled/Server.mpy +0 -0
- toolkit/workspace/precompiled/Shell.mpy +0 -0
- toolkit/workspace/precompiled/Web.mpy +0 -0
- toolkit/workspace/precompiled/_mpy.version +1 -1
- toolkit/workspace/precompiled/microIO.mpy +0 -0
- toolkit/workspace/precompiled/node_config.json +1 -1
- toolkit/workspace/precompiled/reset.mpy +0 -0
- toolkit/workspace/precompiled/urequests.mpy +0 -0
- micrOS/source/LM_lmpacman.py +0 -126
- toolkit/workspace/precompiled/LM_lmpacman.mpy +0 -0
- {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/LICENSE +0 -0
- {micrOSDevToolKit-2.9.4.dist-info → micrOSDevToolKit-2.9.6.dist-info}/WHEEL +0 -0
- {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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
103
|
-
micrOS/source/LM_telegram.py,sha256=
|
|
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=
|
|
107
|
+
micrOS/source/Logger.py,sha256=CtmjmQc9hzCystEzY0AtopjRnSy5T6AdWwpj2KTmGWg,3942
|
|
108
108
|
micrOS/source/Network.py,sha256=wLhAPiRyi376TKJA7tzCQidDBHq-AbZGGp7JabHIyl8,9417
|
|
109
|
-
micrOS/source/Notify.py,sha256=
|
|
109
|
+
micrOS/source/Notify.py,sha256=OhjdDK3Gq9lPlbuM7sV36ZDUKnRg2-gTlAH8KbInLfs,2493
|
|
110
110
|
micrOS/source/Scheduler.py,sha256=K6fw807UJnOmbfzgeJQGzGbTL4s2sTIB120ZcS5qrLs,9648
|
|
111
|
-
micrOS/source/Server.py,sha256=
|
|
112
|
-
micrOS/source/Shell.py,sha256=
|
|
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=
|
|
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=
|
|
123
|
-
micrOS/source/reset.py,sha256=
|
|
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=
|
|
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.
|
|
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=
|
|
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=
|
|
139
|
+
toolkit/index.html,sha256=agTgT1d4FH8l2h47Hfb4Lv061BW9shsCAgq1abO5hlI,10998
|
|
140
140
|
toolkit/micrOSdashboard.py,sha256=SOBzGU1b-NIn40GMd2gE01Fuo8HZP5d1XyVG24RkPeA,54433
|
|
141
|
-
toolkit/micrOSlint.py,sha256=
|
|
142
|
-
toolkit/socketClient.py,sha256=
|
|
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=
|
|
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=
|
|
174
|
-
toolkit/lib/micrOSClient.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
332
|
-
toolkit/workspace/precompiled/LM_telegram.mpy,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
341
|
-
toolkit/workspace/precompiled/Shell.mpy,sha256=
|
|
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=
|
|
346
|
-
toolkit/workspace/precompiled/_mpy.version,sha256=
|
|
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=
|
|
353
|
-
toolkit/workspace/precompiled/node_config.json,sha256=
|
|
354
|
-
toolkit/workspace/precompiled/reset.mpy,sha256=
|
|
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=
|
|
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.
|
|
362
|
-
micrOSDevToolKit-2.9.
|
|
363
|
-
micrOSDevToolKit-2.9.
|
|
364
|
-
micrOSDevToolKit-2.9.
|
|
365
|
-
micrOSDevToolKit-2.9.
|
|
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, '
|
|
557
|
+
response = SendCmd.runcmd(device, 'modules')['response']
|
|
558
558
|
print(f"\n\n{response}\n\n")
|
|
559
|
-
if '
|
|
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
|
|
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=
|
|
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') >
|
|
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=
|
|
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') >
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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:
|
|
15
|
-
width:
|
|
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:
|
|
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: '
|
|
22
|
+
font-family: 'Verdana', Sans-serif;
|
|
23
23
|
}
|
|
24
24
|
button {
|
|
25
25
|
background-color: #e7e7e7; /* Gray */
|
toolkit/lib/macroScript.py
CHANGED
|
@@ -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:
|
toolkit/lib/micrOSClient.py
CHANGED
|
@@ -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=
|
|
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
|
-
|
|
313
|
+
history = load_command_history(self.telnet_prompt) # History: Beta feature
|
|
314
|
+
print(self.telnet_prompt, end="")
|
|
296
315
|
while True:
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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', '
|
|
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']
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|