micrOSDevToolKit 2.9.8__py3-none-any.whl → 2.9.11__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 +21 -21
- micrOS/source/LM_espnow.py +27 -1
- micrOS/source/LM_oled_ui.py +1 -1
- micrOS/source/LM_system.py +4 -4
- micrOS/source/Notify.py +4 -0
- micrOS/source/Server.py +1 -1
- micrOS/source/Shell.py +3 -3
- micrOS/source/Tasks.py +1 -1
- micrOS/source/Time.py +7 -8
- micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- micrOS/source/micrOSloader.py +0 -1
- micrOS/source/urequests.py +14 -7
- {micrOSDevToolKit-2.9.8.data → micrOSDevToolKit-2.9.11.data}/scripts/devToolKit.py +10 -0
- {micrOSDevToolKit-2.9.8.dist-info → micrOSDevToolKit-2.9.11.dist-info}/METADATA +66 -21
- {micrOSDevToolKit-2.9.8.dist-info → micrOSDevToolKit-2.9.11.dist-info}/RECORD +57 -50
- {micrOSDevToolKit-2.9.8.dist-info → micrOSDevToolKit-2.9.11.dist-info}/WHEEL +1 -1
- toolkit/DevEnvOTA.py +13 -9
- toolkit/DevEnvUSB.py +6 -5
- toolkit/MicrOSDevEnv.py +19 -5
- toolkit/WebRepl.py +73 -0
- toolkit/dashboard_apps/BackupRestore.py +20 -35
- toolkit/dashboard_apps/CCTDemo.py +12 -17
- toolkit/dashboard_apps/CCTTest.py +20 -24
- toolkit/dashboard_apps/CamStream.py +2 -6
- toolkit/dashboard_apps/CatGame.py +14 -16
- toolkit/dashboard_apps/Dimmer.py +11 -21
- toolkit/dashboard_apps/GetVersion.py +11 -19
- toolkit/dashboard_apps/MicrophoneTest.py +1 -6
- toolkit/dashboard_apps/NeoEffectsDemo.py +28 -34
- toolkit/dashboard_apps/NeopixelTest.py +20 -25
- toolkit/dashboard_apps/PresenceTest.py +2 -8
- toolkit/dashboard_apps/RGBTest.py +20 -24
- toolkit/dashboard_apps/RoboArm.py +24 -32
- toolkit/dashboard_apps/SED_test.py +10 -14
- toolkit/dashboard_apps/SensorsTest.py +61 -0
- toolkit/dashboard_apps/SystemTest.py +151 -77
- toolkit/dashboard_apps/Template_app.py +11 -23
- toolkit/dashboard_apps/_app_base.py +34 -0
- toolkit/dashboard_apps/uLightDemo.py +15 -24
- toolkit/lib/Repository.py +64 -0
- toolkit/lib/micrOSClient.py +16 -11
- toolkit/micrOSlint.py +3 -3
- toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- toolkit/simulator_lib/aioespnow.py +28 -0
- toolkit/socketClient.py +0 -1
- toolkit/workspace/precompiled/LM_espnow.py +27 -1
- toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/Notify.mpy +0 -0
- toolkit/workspace/precompiled/Shell.mpy +0 -0
- toolkit/workspace/precompiled/Time.mpy +0 -0
- toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- toolkit/workspace/precompiled/urequests.mpy +0 -0
- toolkit/dashboard_apps/AirQualityBME280.py +0 -36
- toolkit/dashboard_apps/AirQualityDHT22_CO2.py +0 -36
- {micrOSDevToolKit-2.9.8.dist-info → micrOSDevToolKit-2.9.11.dist-info}/LICENSE +0 -0
- {micrOSDevToolKit-2.9.8.dist-info → micrOSDevToolKit-2.9.11.dist-info}/top_level.txt +0 -0
|
@@ -32,7 +32,7 @@ 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=hUcG245oSHjZoAqx0yjbKXGGUHWNa7p0kcyDvMwxEKo,5759
|
|
36
36
|
micrOS/source/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
37
37
|
micrOS/source/Common.py,sha256=PAdtseGY6QxUM-5elOAcApUv8AwGQ_smsYex0FeV5w8,7937
|
|
38
38
|
micrOS/source/Config.py,sha256=E3OTMRI1_T94GMADcvG7MKiuGsKsnbLn17KXHcjhqXM,8795
|
|
@@ -67,7 +67,7 @@ micrOS/source/LM_dimmer.py,sha256=Jhpeh0Kq7Dnt9nA8PVobENbsf1x-U7rOv9EGGdhC_30,83
|
|
|
67
67
|
micrOS/source/LM_distance.py,sha256=iVqQchaUOvK8Ilzr7qMi-ESvS_U8RsBwdqNHY_4qZ-c,4394
|
|
68
68
|
micrOS/source/LM_ds18.py,sha256=mLaH97j8d4lUXcjS8hNtwU8hL5Ybt-Q1WuoiWPnk5Ho,1807
|
|
69
69
|
micrOS/source/LM_esp32.py,sha256=yUIMWsfimCAhgyV4pT4sh-kqE_mDL83cmAZji_2uFpI,1738
|
|
70
|
-
micrOS/source/LM_espnow.py,sha256=
|
|
70
|
+
micrOS/source/LM_espnow.py,sha256=Tto5JGnhbqyKT0hzDlJ_G-o_34dVf0CIaiMPbP-xbHU,1070
|
|
71
71
|
micrOS/source/LM_gameOfLife.py,sha256=Mvr_S5zsJ6x_pMCGrkdgl5QdejNQjAF9mBYLN5-OA38,7685
|
|
72
72
|
micrOS/source/LM_genIO.py,sha256=rTiFByly8ImjHBgc2RceGczGp1rzti7Juz_Vvg5hrtc,5013
|
|
73
73
|
micrOS/source/LM_haptic.py,sha256=W0WiuOCxIu9RB-pWu8r8fvHmvuseet1UI7RSc9WO8zo,2862
|
|
@@ -81,7 +81,7 @@ micrOS/source/LM_neoeffects.py,sha256=kfReEz9pTB0GRSat6--86PZtjfiT_S9ilfb-igt-bb
|
|
|
81
81
|
micrOS/source/LM_neopixel.py,sha256=4TWwlmW6bnnmS76fVZVri6bI2zPXbiPJ9spEtA7NTjE,13260
|
|
82
82
|
micrOS/source/LM_oled.py,sha256=ZwLndxWuY1Ii5d06YEf9Z_jxmTyoOYRL-BO3VhJ0b14,9903
|
|
83
83
|
micrOS/source/LM_oled_sh1106.py,sha256=av2_ftFHvfAIxcPYHbrOMQNZgM1Go6MQzBu5cIeVK4w,11723
|
|
84
|
-
micrOS/source/LM_oled_ui.py,sha256=
|
|
84
|
+
micrOS/source/LM_oled_ui.py,sha256=rs-YmYdJQy3AVokxF_oBrkjFFGGhRdnxKoHjmO-x158,21611
|
|
85
85
|
micrOS/source/LM_oledui.py,sha256=hYt_3hWPdrZBOreVdupJxHhk9-xHkmuiqmEIA08mB2M,35407
|
|
86
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
|
|
@@ -99,71 +99,76 @@ micrOS/source/LM_servo.py,sha256=83YPK5qlHuEOo3jTn5wXRsvPzzJPp0ZtCW-BhHHMBK0,348
|
|
|
99
99
|
micrOS/source/LM_sound_event.py,sha256=9BZnrT8Jc2HL-28yVZE5sdeTa8Biq1qkQiTJsTw8y08,27500
|
|
100
100
|
micrOS/source/LM_stepper.py,sha256=CkI4QBe2KJ7E5DKL7Z23oAMPDUFlUt7btAvqrn4H6Kg,4278
|
|
101
101
|
micrOS/source/LM_switch.py,sha256=uxw2opz41OpBiBfb5ioojsUzPsETnkinkDXI4NRHMZs,7819
|
|
102
|
-
micrOS/source/LM_system.py,sha256=
|
|
102
|
+
micrOS/source/LM_system.py,sha256=A3k2ToZmk1kSSnrcq15R5HSDjupTL0LSChO4go9r3BE,6541
|
|
103
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=N2hhy3wuk55-ja4dmENpfthBolIEj28d2pzcjel5OKg,9716
|
|
106
106
|
micrOS/source/LM_veml7700.py,sha256=3eb6-HuMA_tYBA0cJHUsZzOBriHacIpVSrK-1iB3_pY,5762
|
|
107
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=jVf7wg7b7ehuh12A8tlYz5ZU00NQEgpVuTK0lN6cNcY,2645
|
|
110
110
|
micrOS/source/Scheduler.py,sha256=K6fw807UJnOmbfzgeJQGzGbTL4s2sTIB120ZcS5qrLs,9648
|
|
111
|
-
micrOS/source/Server.py,sha256=
|
|
112
|
-
micrOS/source/Shell.py,sha256=
|
|
113
|
-
micrOS/source/Tasks.py,sha256=
|
|
114
|
-
micrOS/source/Time.py,sha256=
|
|
111
|
+
micrOS/source/Server.py,sha256=HMkHWofMmtpTQtKiGy_Gh6R2xHy4Vpud_aT2zhC4l58,16245
|
|
112
|
+
micrOS/source/Shell.py,sha256=a8nIVnmoGgkq-7i3jCOrQFPQagxJWiUHgXd1I9pmaG8,12453
|
|
113
|
+
micrOS/source/Tasks.py,sha256=qAcniMejAHwpRK1cq-jcN4vQ1AotU0YqmH7Y5_pQy70,22510
|
|
114
|
+
micrOS/source/Time.py,sha256=vTl8-sL-iO4l9eZMVCHTJ6oUwfhPiB1VHXTrrg-l59Y,6344
|
|
115
115
|
micrOS/source/Types.py,sha256=3O_Vb1jN92RPtvgbV8ui6_iFzDOD-BUzVXlPB7PgmM4,3507
|
|
116
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
|
-
micrOS/source/micrOSloader.py,sha256=
|
|
121
|
+
micrOS/source/micrOSloader.py,sha256=IgiQgUm97raQB0yHxUjQtvXSjsCdA_1OwSkRwwNLDzU,4794
|
|
122
122
|
micrOS/source/microIO.py,sha256=pFRvRlEK9OulVmdXOTbcnHHhSKt-JuEpjUr9GzY-rUQ,7087
|
|
123
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=p7_8X9SrWk4wXhAZKpVPd-PZBHHToX8b1gwhFEi96FM,9089
|
|
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
|
-
|
|
130
|
+
micrOS/source/__pycache__/Common.cpython-312.pyc,sha256=qugnjE4Q1mMrR3VJaMhq71hsOoWLuft2lwv4O8Bo6ts,10366
|
|
131
|
+
micrOS/source/__pycache__/Logger.cpython-312.pyc,sha256=CCdkMRG0lBy7nVsc4DHwdRK0Ap0Mu9yB5fa_Hxx-RHY,5075
|
|
132
|
+
micrOS/source/__pycache__/Server.cpython-312.pyc,sha256=xy1ImeXPtGhtYlAWpuWaxLmJO2nLVGdefOuqltABR9k,20615
|
|
133
|
+
micrOSDevToolKit-2.9.11.data/scripts/devToolKit.py,sha256=4GutIOErF1ny0HSNWQZzEneZdUWhSdqKPBjpRFTr5do,11192
|
|
131
134
|
toolkit/DevEnvCompile.py,sha256=H19-60ZpHzP30C-wqR5QTzMDHHpWrTk0Uzh--TZHxvw,12148
|
|
132
|
-
toolkit/DevEnvOTA.py,sha256=
|
|
133
|
-
toolkit/DevEnvUSB.py,sha256
|
|
135
|
+
toolkit/DevEnvOTA.py,sha256=vNa827MOhbNQbeMGGu72YmGlNN_Tm9D6Trdnz3YGpyU,25499
|
|
136
|
+
toolkit/DevEnvUSB.py,sha256=G-Ram-OR27flvVhul8J_ObiMY07Wjvom6Prc4dTfkmo,34108
|
|
134
137
|
toolkit/Gateway.py,sha256=OSsJYeAmFhNnb1uu2bjLvZzE3A32O7lza8-NxlGr1DQ,25335
|
|
135
138
|
toolkit/LM_to_compile.dat,sha256=TmcSZcPNVtJKWdyMxY1YtHPnqbD6zcI7B7FISbr6as4,579
|
|
136
|
-
toolkit/MicrOSDevEnv.py,sha256=
|
|
139
|
+
toolkit/MicrOSDevEnv.py,sha256=xMsfbImyPAkiRh8wz1EYyWSWX8FvJIrGjwjjRC3q7d8,13562
|
|
140
|
+
toolkit/WebRepl.py,sha256=805SJGoflJztyFR4DFxP80KVvNEeJfqZxlYeA3uD680,2696
|
|
137
141
|
toolkit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
142
|
toolkit/img_stream.html,sha256=ZGyrUgpi-JhMl4euS-TTjwwGrg66a2pGUQCopWiveds,5135
|
|
139
143
|
toolkit/index.html,sha256=agTgT1d4FH8l2h47Hfb4Lv061BW9shsCAgq1abO5hlI,10998
|
|
140
144
|
toolkit/micrOSdashboard.py,sha256=SOBzGU1b-NIn40GMd2gE01Fuo8HZP5d1XyVG24RkPeA,54433
|
|
141
|
-
toolkit/micrOSlint.py,sha256=
|
|
142
|
-
toolkit/socketClient.py,sha256=
|
|
143
|
-
toolkit/dashboard_apps/
|
|
144
|
-
toolkit/dashboard_apps/
|
|
145
|
-
toolkit/dashboard_apps/
|
|
146
|
-
toolkit/dashboard_apps/
|
|
147
|
-
toolkit/dashboard_apps/
|
|
148
|
-
toolkit/dashboard_apps/
|
|
149
|
-
toolkit/dashboard_apps/
|
|
150
|
-
toolkit/dashboard_apps/
|
|
151
|
-
toolkit/dashboard_apps/
|
|
152
|
-
toolkit/dashboard_apps/
|
|
153
|
-
toolkit/dashboard_apps/
|
|
154
|
-
toolkit/dashboard_apps/
|
|
155
|
-
toolkit/dashboard_apps/
|
|
156
|
-
toolkit/dashboard_apps/
|
|
157
|
-
toolkit/dashboard_apps/
|
|
158
|
-
toolkit/dashboard_apps/
|
|
159
|
-
toolkit/dashboard_apps/
|
|
160
|
-
toolkit/dashboard_apps/Template_app.py,sha256=fKF43E-XqibavvjUrCQzG-kMSTCe-sb3ckbLwDgGuTc,1002
|
|
145
|
+
toolkit/micrOSlint.py,sha256=HEv6q32Iy5FHx3tn_yA-iMJEeElOVNJIVN51sshv1go,25142
|
|
146
|
+
toolkit/socketClient.py,sha256=aDKQl_I422KFoy0RcjPBIcHXgrBPwLRn9MpxuXEtUF8,18610
|
|
147
|
+
toolkit/dashboard_apps/BackupRestore.py,sha256=udhuFpCawO0mwyiN4vFMfV8wONqHnUjYvL0udJzkq44,5897
|
|
148
|
+
toolkit/dashboard_apps/CCTDemo.py,sha256=oV7k6sxepOxEa7tBNcuK5IHgKnv01sIQRPvUljic8NI,1125
|
|
149
|
+
toolkit/dashboard_apps/CCTTest.py,sha256=saU4L8gOst31bno44vlwaeSzqrIBppW2DrZf2KV7_4o,3641
|
|
150
|
+
toolkit/dashboard_apps/CamStream.py,sha256=U4wvP0p-5V9mUrC-w_Heg41g5f1I4s6zXvgETRhMras,325
|
|
151
|
+
toolkit/dashboard_apps/CatGame.py,sha256=SC6wihVYHvoN6Q6-HCc7vqCNFPP0_rjWbAgVeQib3Po,1414
|
|
152
|
+
toolkit/dashboard_apps/Dimmer.py,sha256=tyOC-m7GTWm3Jl7vyxHUOBrO4Dt6arDLr34uryH2UvI,765
|
|
153
|
+
toolkit/dashboard_apps/GetVersion.py,sha256=Tv0IihJPGVBb83Y8NH0VNs6QrKFf1BvLjgxalqvdlWw,506
|
|
154
|
+
toolkit/dashboard_apps/MicrophoneTest.py,sha256=eERgltLZekNewYEcCGI7TjvbDYJC8tuzV_NoEHNz-kI,329
|
|
155
|
+
toolkit/dashboard_apps/NeoEffectsDemo.py,sha256=SA3uPRpUX2KF7OEh_9E5cLay9d5NG1JWR9W6byIt5uo,1923
|
|
156
|
+
toolkit/dashboard_apps/NeopixelTest.py,sha256=ht1rZrI4GIE6pUYz7uoncGktMKsaPBGG9Ic_bj3Bo0o,3780
|
|
157
|
+
toolkit/dashboard_apps/PresenceTest.py,sha256=W1hAJmDP5vkXL_Bqq1HSf4RBSRJKHea9KOkHcZQ5rGU,333
|
|
158
|
+
toolkit/dashboard_apps/RGBTest.py,sha256=QIky1Ts87h52VS9vHs3rYoEYvwFX02BlJxzK-uEuKHc,3763
|
|
159
|
+
toolkit/dashboard_apps/RoboArm.py,sha256=fqsBFTLEKXLyuZtZhbsNMNLCVtJw3gHWE-37EzjRttw,1814
|
|
160
|
+
toolkit/dashboard_apps/SED_test.py,sha256=hQG8F2isZvCEsb0EvUdvcowLtJ86vrhLMOvpe9EPcJM,2703
|
|
161
|
+
toolkit/dashboard_apps/SensorsTest.py,sha256=h6Sqz9HzjUawKuvxBPMltgWAycIXUUqlLANZqlF030M,1472
|
|
162
|
+
toolkit/dashboard_apps/SystemTest.py,sha256=NaqTUWA5ub_8dHZQBrcO1n7nU95aPKVIjEn8nbaa2mI,25335
|
|
163
|
+
toolkit/dashboard_apps/Template_app.py,sha256=1OLO-xA6qNKyDCj-J7nHkA3Eis4ZKnHfhMcaSqHNX4A,758
|
|
161
164
|
toolkit/dashboard_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
165
|
+
toolkit/dashboard_apps/_app_base.py,sha256=wNurhv7AT2imsiVO3rkwPlRkss-2UQU9KsRoXjeb7rk,1007
|
|
162
166
|
toolkit/dashboard_apps/_capture.py,sha256=75aS8ajhEYWNqoG2DwQgqJyArMouGHZNN-0mo1RH9bU,3076
|
|
163
167
|
toolkit/dashboard_apps/_micPlotting.py,sha256=zYXhyYKyyA_13ZQybccO4a6t8uyaFJNxlhZfUD6nE90,6394
|
|
164
168
|
toolkit/dashboard_apps/_presencePlotting.py,sha256=cHWR_4YqbNLB6d4mmHjGCYb3Dg5rqWIyu2lpnz0l-Hs,3737
|
|
165
|
-
toolkit/dashboard_apps/uLightDemo.py,sha256=
|
|
169
|
+
toolkit/dashboard_apps/uLightDemo.py,sha256=Q8PL56coysM71qV9SCU05yTyCsAMhtzDSjVeg_CkBtc,3163
|
|
166
170
|
toolkit/lib/LocalMachine.py,sha256=m5xaWRx1PumKFLQ5_O8vVxC4NTclF1h9J3__pK8N-C4,18734
|
|
171
|
+
toolkit/lib/Repository.py,sha256=DVoS67rCJzHtJvPTZt-r4Gkmt28ZuC7UYdSAuczsPs0,2440
|
|
167
172
|
toolkit/lib/SafeInput.py,sha256=gMXsMalPcFCwlN6niJlG2twOHfoGsEgHL9-Uh2YQJHE,855
|
|
168
173
|
toolkit/lib/SearchDevices.py,sha256=1nnJDwo_U5cCN2xsdNUT6EQqdt2fW-qAWXWzyzXzyyc,5813
|
|
169
174
|
toolkit/lib/SerialDriverHandler.py,sha256=Zn0zeq4mshTMVc6fzycvrOZiKt6w6YOxJcTWw3BMN2M,7344
|
|
@@ -171,11 +176,12 @@ toolkit/lib/TerminalColors.py,sha256=Ly_8o9-eBmka1dqA2M3DBlcd1zvCCO2K_BnQ1XbqxcE
|
|
|
171
176
|
toolkit/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
172
177
|
toolkit/lib/file_extensions.py,sha256=0DpayBGjKQg7y2ZGJXf5wVPnre_4C5j-7YIViNGvYz4,372
|
|
173
178
|
toolkit/lib/macroScript.py,sha256=DQR8cFoks7fa0dgRUfGhTpEdUJWNQ1vikRoqukRKx14,14014
|
|
174
|
-
toolkit/lib/micrOSClient.py,sha256=
|
|
179
|
+
toolkit/lib/micrOSClient.py,sha256=fLRkyOjbYQkFzcqeC3yDLa4IymarSOitbxJERa_jeHI,18752
|
|
175
180
|
toolkit/lib/micrOSClientHistory.py,sha256=EyCqbFeMy940bfXq4Yfu8dcvb7GnBvuHHxOAIgmW1FQ,4736
|
|
176
181
|
toolkit/lib/pip_package_installer.py,sha256=jpC-y1KR72_PJlqyUR6-U5b6l1szVqnIZ4nrSgUsOTM,4262
|
|
177
182
|
toolkit/simulator_lib/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
178
183
|
toolkit/simulator_lib/IO_darwin.py,sha256=f8HOfQKJvniShvjpBe6f4nisr6oJd9SnvxPsbdNIGQk,2336
|
|
184
|
+
toolkit/simulator_lib/aioespnow.py,sha256=NPAX85zLCb6ZJVW8n18tULV4NbHK1IzHYMR43QXAxUQ,480
|
|
179
185
|
toolkit/simulator_lib/camera.py,sha256=BIyj6dF_PoszzTZ3Ea_-gsJ3aly_xGy5NMKeJGVSbFI,1485
|
|
180
186
|
toolkit/simulator_lib/dht.py,sha256=WB56YlZJYop4a2wnFWyWSI9FsPC_zH885a-A4rDNGKo,278
|
|
181
187
|
toolkit/simulator_lib/dotstar.py,sha256=Le6RvSAz3byjiF2RX4JWB8LVsNQtfMqPfM47fg-YFzs,95
|
|
@@ -203,6 +209,7 @@ toolkit/simulator_lib/view01.jpg,sha256=YI_faDB9yyFLzJKTCu1nW4XXxyvGPLfgdYtzW7vm
|
|
|
203
209
|
toolkit/simulator_lib/view02.jpg,sha256=7EWtt8StDpLw3yDMG1nD8XjJgsC0ixpAq3SwPCb842k,35580
|
|
204
210
|
toolkit/simulator_lib/webrepl.py,sha256=owxkwtNlV9zrE2inPtoLCc8U2QgmZOhxpcsX3wMPbik,37
|
|
205
211
|
toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc,sha256=LKUIXwaw3DBrvvRhIFi93xolxnI6W7CR6WePeApVo7I,1823
|
|
212
|
+
toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc,sha256=25jb4hcOhdbJnWJCH_Vh0Uwc6I8tvpFw3xpFznP4BQA,1555
|
|
206
213
|
toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc,sha256=hzK7NNmBQsIigz7Gof9FNblwVnP4Ffc3cILPLI-US6w,3152
|
|
207
214
|
toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc,sha256=-02X-tLNXpZIb2DhJI_-Qi1m-MmddzbQIpZUZVH9HZk,946
|
|
208
215
|
toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc,sha256=YwCF50_3cJ9QvAaVa5Mkl0EeASSIr8gwPtREzFcCEmk,878
|
|
@@ -299,7 +306,7 @@ toolkit/workspace/precompiled/LM_dimmer.mpy,sha256=dRdDr3WfFy-um3-fRiK4IuZdwBTUD
|
|
|
299
306
|
toolkit/workspace/precompiled/LM_distance.mpy,sha256=6VoSsyd-hQ4P16USDnSqpq5gpi0v2WbseeHnTFJxuJA,1506
|
|
300
307
|
toolkit/workspace/precompiled/LM_ds18.mpy,sha256=1TYvc8hj1ypE1v52l6u83e8XqUi0_Rjwil-BnYXDSKI,644
|
|
301
308
|
toolkit/workspace/precompiled/LM_esp32.py,sha256=yUIMWsfimCAhgyV4pT4sh-kqE_mDL83cmAZji_2uFpI,1738
|
|
302
|
-
toolkit/workspace/precompiled/LM_espnow.py,sha256=
|
|
309
|
+
toolkit/workspace/precompiled/LM_espnow.py,sha256=Tto5JGnhbqyKT0hzDlJ_G-o_34dVf0CIaiMPbP-xbHU,1070
|
|
303
310
|
toolkit/workspace/precompiled/LM_gameOfLife.mpy,sha256=mAOivt472fRGOcpgx6xShyfbrpT0GTbLhT2vujncS4w,2051
|
|
304
311
|
toolkit/workspace/precompiled/LM_genIO.mpy,sha256=F9utR5Ng-QuTq5R5ISvYPO8xASEdSnndc1hFfxcNWOE,1722
|
|
305
312
|
toolkit/workspace/precompiled/LM_haptic.mpy,sha256=46BgYkjC3AdNaJaKflFnY0oEUsd9qg6yGquX7jyFLnM,1276
|
|
@@ -313,7 +320,7 @@ toolkit/workspace/precompiled/LM_neoeffects.mpy,sha256=lO0sxfiAgyASgYNjX3c_usY3T
|
|
|
313
320
|
toolkit/workspace/precompiled/LM_neopixel.mpy,sha256=3o4Jvmc3Knr30VJ4b7JebpUsU7dBdcYBZzRD_9a4zBI,3663
|
|
314
321
|
toolkit/workspace/precompiled/LM_oled.mpy,sha256=KQj4jfLwlmx2dT_GWbFzZE6FlMRPUgJvri5XbnSIod0,3154
|
|
315
322
|
toolkit/workspace/precompiled/LM_oled_sh1106.mpy,sha256=0cQpu1MPkrPxvd1Fvln9c9lq9qPV6oi8iGNTZM4YbIY,3761
|
|
316
|
-
toolkit/workspace/precompiled/LM_oled_ui.mpy,sha256=
|
|
323
|
+
toolkit/workspace/precompiled/LM_oled_ui.mpy,sha256=toUOIvcp8zIjsckWLMVNZK8i2KIvpLH2Xy8ORj0aPsI,6821
|
|
317
324
|
toolkit/workspace/precompiled/LM_oledui.mpy,sha256=bSNnW6rlts7KM3YY-dTV34gG5r5zJMYvsqQorPb191E,11555
|
|
318
325
|
toolkit/workspace/precompiled/LM_pacman.mpy,sha256=njOwVrPKOtC4J5kRCtwV8E8hHTTTt7HzqV121HmCsxE,3507
|
|
319
326
|
toolkit/workspace/precompiled/LM_pet_feeder.py,sha256=ILrozpnq2_ckkVDUROysMWRksKjflsKpIHvgHdvn-JA,2572
|
|
@@ -331,19 +338,19 @@ toolkit/workspace/precompiled/LM_servo.mpy,sha256=S1mH7tS6WK-vclAPQrWK46_IB2GlBZ
|
|
|
331
338
|
toolkit/workspace/precompiled/LM_sound_event.mpy,sha256=QJ5xmKtK2sfA9lyROJRRpSAjypl10MkwLdW-QsXhRf8,7384
|
|
332
339
|
toolkit/workspace/precompiled/LM_stepper.mpy,sha256=20Jpee74AjyjjMaHmgKbZvU5phcOvh8nQNSUDCAk_KE,1466
|
|
333
340
|
toolkit/workspace/precompiled/LM_switch.mpy,sha256=58sjZQokfBYBZlplFQB5-t-3O-2mlsE3NXjvJ5FgD_U,2237
|
|
334
|
-
toolkit/workspace/precompiled/LM_system.mpy,sha256=
|
|
341
|
+
toolkit/workspace/precompiled/LM_system.mpy,sha256=Desld_4SY-bsOHdrNTx-jjqIx809cwuVnnx68HwZSZk,2802
|
|
335
342
|
toolkit/workspace/precompiled/LM_telegram.mpy,sha256=5Y-YrdYjBLN7gmIqlE6WhbWhA3Dak4IVd7j_FQYOQho,4877
|
|
336
343
|
toolkit/workspace/precompiled/LM_tinyrgb.mpy,sha256=qWR-e8DXuzmstxQlyic0YjwFaGiBBBWpf57Wyn1jjFc,1016
|
|
337
344
|
toolkit/workspace/precompiled/LM_trackball.mpy,sha256=eDVf55dNJXd0Mzg1MZH0talUloPEGFNccE08vwbgn0g,3471
|
|
338
345
|
toolkit/workspace/precompiled/LM_veml7700.mpy,sha256=NxOvdbrqyyhhwjm2d2dfrJK0dTK3NiP5kQ5GDXjXgq0,1953
|
|
339
346
|
toolkit/workspace/precompiled/Logger.mpy,sha256=Nz33LQBUliSguxuy4EV3GWXLd9PFyqzivuNivWdLJ_w,1388
|
|
340
347
|
toolkit/workspace/precompiled/Network.mpy,sha256=WtpvhGB2bvEe94dAHV40fpEyk-Fi0D6vL1q_m6k4qBg,3274
|
|
341
|
-
toolkit/workspace/precompiled/Notify.mpy,sha256=
|
|
348
|
+
toolkit/workspace/precompiled/Notify.mpy,sha256=ioeDVMh9qBtACWQMASrrhGkSfp1KKUN6d2rt0NpbClo,974
|
|
342
349
|
toolkit/workspace/precompiled/Scheduler.mpy,sha256=ctCj7FfXj5TchPPxe_9dmnTXWN88egtbAnmJ0N9u_1w,2202
|
|
343
350
|
toolkit/workspace/precompiled/Server.mpy,sha256=dtSXLYpBcdz0DveB_S6nos46h-m6hwlQ-38G-iVQwKQ,4762
|
|
344
|
-
toolkit/workspace/precompiled/Shell.mpy,sha256
|
|
351
|
+
toolkit/workspace/precompiled/Shell.mpy,sha256=-HCVQVnKCyKf1k-DsR_-MxN4PladJl3cMA6JwtRRxsA,4385
|
|
345
352
|
toolkit/workspace/precompiled/Tasks.mpy,sha256=vL3tDV7Us3Wg7qtZA8ovqEsvLndOmu14GHcZF2_DtrY,6253
|
|
346
|
-
toolkit/workspace/precompiled/Time.mpy,sha256=
|
|
353
|
+
toolkit/workspace/precompiled/Time.mpy,sha256=AZAtFj-l2ERKUpWgQS4gyq_XUx1ddy4ZTTgpRxbWK9M,2773
|
|
347
354
|
toolkit/workspace/precompiled/Types.mpy,sha256=LssRbPgvsWuR4d2m3R7VMIvsnkVp9nN0ltwaY2wGop8,1401
|
|
348
355
|
toolkit/workspace/precompiled/Web.mpy,sha256=RuZNz2Yfe3MGoMV09nRLUS0MQ2CoJHHBVh7FnC9dYY4,3116
|
|
349
356
|
toolkit/workspace/precompiled/_mpy.version,sha256=Kik-fvRGfWAmpEjKdJLq7nPOqYR_jVgB0aiXZ8LMvMA,6
|
|
@@ -351,17 +358,17 @@ toolkit/workspace/precompiled/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44q
|
|
|
351
358
|
toolkit/workspace/precompiled/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
|
|
352
359
|
toolkit/workspace/precompiled/main.py,sha256=cVlhoWwU9dSKEol0HWPihFAPzrUUvzSGwZNNMrpyfSY,440
|
|
353
360
|
toolkit/workspace/precompiled/micrOS.mpy,sha256=x20-mxGB7mkvdcyulttyXhjdLvXeyXlpl57yctS3eTA,1129
|
|
354
|
-
toolkit/workspace/precompiled/micrOSloader.mpy,sha256=
|
|
361
|
+
toolkit/workspace/precompiled/micrOSloader.mpy,sha256=Gcznp2z2Zv4N4dHv7PE7d6bNSQPTdvHLeStCCHGNuEg,1747
|
|
355
362
|
toolkit/workspace/precompiled/microIO.mpy,sha256=SWYlvjIHgcMsSVCuxWataoqI03T8Aq6u4TzeGU3I3fs,1638
|
|
356
363
|
toolkit/workspace/precompiled/reset.mpy,sha256=D-ZwUk-oR8OAg5ERWJXErdPAGbx_3M13hK4IBawhIg0,217
|
|
357
364
|
toolkit/workspace/precompiled/uapi.js,sha256=fZ0E9-ZndCoUNQq1yJ7yUCiLYxe3p8hzSFnlN2R9roc,2959
|
|
358
365
|
toolkit/workspace/precompiled/udashboard.js,sha256=42mPR_NU3jOqUgLi7yZv2L7bN6uGqw9LpScDrGGF58c,4581
|
|
359
|
-
toolkit/workspace/precompiled/urequests.mpy,sha256
|
|
366
|
+
toolkit/workspace/precompiled/urequests.mpy,sha256=-JDY-DOtJrGdwQo0-P809zZu-cJBRqKH3X4ZHuo38k4,2387
|
|
360
367
|
toolkit/workspace/precompiled/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
|
|
361
368
|
toolkit/workspace/precompiled/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
|
|
362
369
|
toolkit/workspace/precompiled/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
|
|
363
|
-
micrOSDevToolKit-2.9.
|
|
364
|
-
micrOSDevToolKit-2.9.
|
|
365
|
-
micrOSDevToolKit-2.9.
|
|
366
|
-
micrOSDevToolKit-2.9.
|
|
367
|
-
micrOSDevToolKit-2.9.
|
|
370
|
+
micrOSDevToolKit-2.9.11.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
371
|
+
micrOSDevToolKit-2.9.11.dist-info/METADATA,sha256=BqgNJ6O6FQZJclGKfkWwg2h04G8pL1_n1zVdaSVRsVY,55250
|
|
372
|
+
micrOSDevToolKit-2.9.11.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
373
|
+
micrOSDevToolKit-2.9.11.dist-info/top_level.txt,sha256=rOGOIXqLBdGZAoDTiLdZ9B_leFB7bMv7YabLwuIc2bc,25
|
|
374
|
+
micrOSDevToolKit-2.9.11.dist-info/RECORD,,
|
toolkit/DevEnvOTA.py
CHANGED
|
@@ -12,6 +12,7 @@ try:
|
|
|
12
12
|
from .lib.TerminalColors import Colors
|
|
13
13
|
from .lib.SafeInput import input_with_timeout
|
|
14
14
|
from .lib.file_extensions import check_all_extensions
|
|
15
|
+
from .lib.Repository import git_clone_archive, git_clone
|
|
15
16
|
except Exception as e:
|
|
16
17
|
print("Import warning __name__:{}: {}".format(__name__, e))
|
|
17
18
|
from DevEnvCompile import Compile
|
|
@@ -19,8 +20,10 @@ except Exception as e:
|
|
|
19
20
|
from lib.TerminalColors import Colors
|
|
20
21
|
from lib.SafeInput import input_with_timeout
|
|
21
22
|
from lib.file_extensions import check_all_extensions
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
from lib.Repository import git_clone_archive, git_clone
|
|
24
|
+
|
|
25
|
+
sys.path.append(MYPATH)
|
|
26
|
+
import socketClient
|
|
24
27
|
|
|
25
28
|
|
|
26
29
|
#################################################
|
|
@@ -52,15 +55,17 @@ class OTA(Compile):
|
|
|
52
55
|
# Change workdir
|
|
53
56
|
workdir_handler = LocalMachine.SimplePopPushd()
|
|
54
57
|
workdir_handler.pushd(os.path.dirname(os.path.dirname(webrepl_path)))
|
|
58
|
+
webrepl_url = 'https://github.com/micropython/webrepl.git'
|
|
55
59
|
|
|
56
|
-
|
|
57
|
-
name='webrepl',
|
|
58
|
-
url='https://github.com/micropython/webrepl.git')
|
|
59
|
-
self.console("Clone webrepl repo: {}".format(command))
|
|
60
|
+
self.console(f"Clone webrepl repo: {webrepl_url}")
|
|
60
61
|
if self.dry_run:
|
|
61
|
-
exitcode, stdout, stderr = 0,
|
|
62
|
+
exitcode, stdout, stderr = 0, "", ""
|
|
62
63
|
else:
|
|
63
|
-
|
|
64
|
+
# Git clone with command line tool
|
|
65
|
+
exitcode, stdout, stderr = git_clone(url=webrepl_url)
|
|
66
|
+
if exitcode != 0:
|
|
67
|
+
# Git clone archive - without git
|
|
68
|
+
exitcode, stdout, stderr = git_clone_archive(url=webrepl_url)
|
|
64
69
|
|
|
65
70
|
# Restore workdir
|
|
66
71
|
workdir_handler.popd()
|
|
@@ -156,7 +161,6 @@ class OTA(Compile):
|
|
|
156
161
|
def update_with_webrepl(self, force=False, device=None, lm_only=False, loader_update=False, ota_password='ADmin123'):
|
|
157
162
|
"""
|
|
158
163
|
OTA UPDATE via webrepl
|
|
159
|
-
git clone https://github.com/micropython/webrepl.git
|
|
160
164
|
info: https://techoverflow.net/2020/02/22/how-to-upload-files-to-micropython-using-webrepl-using-webrepl_cli-py/
|
|
161
165
|
./webrepl/webrepl_cli.py -p <password> <input_file> espressif.local:<output_file>
|
|
162
166
|
"""
|
toolkit/DevEnvUSB.py
CHANGED
|
@@ -65,12 +65,13 @@ class USB(Compile):
|
|
|
65
65
|
{'erase': '{esptool_interface} --chip esp32s3 --port {dev} erase_flash',
|
|
66
66
|
'deploy': '{esptool_interface} --chip esp32s3 --port {dev} write_flash -z 0 {micropython}',
|
|
67
67
|
'mpremote_cmd': 'mpremote',
|
|
68
|
-
'cmd_line_info': '[
|
|
68
|
+
'cmd_line_info': '[!HINNT!] Press boot button under connecting the board over USB: enables flash erase'},
|
|
69
69
|
'esp32s3':
|
|
70
70
|
{'erase': '{esptool_interface} --chip esp32s3 --port {dev} erase_flash',
|
|
71
71
|
'deploy': '{esptool_interface} --chip esp32s3 --port {dev} write_flash -z 0 {micropython}',
|
|
72
72
|
'mpremote_cmd': 'mpremote',
|
|
73
|
-
'
|
|
73
|
+
#'ampy_cmd': 'ampy -p {dev} -b 115200 -d 2 {args}',
|
|
74
|
+
'cmd_line_info': '[!HINNT!] Press boot button under connecting board over USB: enables flash erase'},
|
|
74
75
|
'esp32c3':
|
|
75
76
|
{'erase': '{esptool_interface} --chip esp32c3 --port {dev} erase_flash',
|
|
76
77
|
'deploy': '{esptool_interface} --chip esp32c3 --port {dev} --baud 460800 write_flash -z 0x0 {micropython}',
|
|
@@ -239,7 +240,7 @@ class USB(Compile):
|
|
|
239
240
|
# Legacy ampy command (esp32 auto reboot tolerance...)
|
|
240
241
|
command = self.dev_types_and_cmds[self.selected_device_type]['ampy_cmd'].format(dev=device, args=f'put {source}')
|
|
241
242
|
else:
|
|
242
|
-
command = f'{mpremote_cmd} cp {source} :{source}'
|
|
243
|
+
command = f'{mpremote_cmd} fs cp {source} :{source}' # new mpremote <1.24.1
|
|
243
244
|
if ' ' in source:
|
|
244
245
|
self.console("[{}%][SKIP] micrOS deploy via USB: {}".format(percent, command))
|
|
245
246
|
continue
|
|
@@ -614,7 +615,7 @@ class USB(Compile):
|
|
|
614
615
|
# Legacy ampy command (esp32 auto reboot tolerance...)
|
|
615
616
|
command = self.dev_types_and_cmds[self.selected_device_type]['ampy_cmd'].format(dev=device, args='get node_config.json')
|
|
616
617
|
else:
|
|
617
|
-
command = f'{mpremote_cmd} cat node_config.json'
|
|
618
|
+
command = f'{mpremote_cmd} fs cat node_config.json' # new mpremote <1.24.1
|
|
618
619
|
if not self.dry_run:
|
|
619
620
|
exitcode, stdout, stderr = LocalMachine.CommandHandler.run_command(command, shell=True)
|
|
620
621
|
self._archive_node_config()
|
|
@@ -671,7 +672,7 @@ class USB(Compile):
|
|
|
671
672
|
# Legacy ampy command (esp32 auto reboot tolerance...)
|
|
672
673
|
command = self.dev_types_and_cmds[self.selected_device_type]['ampy_cmd'].format(dev=device, args='ls')
|
|
673
674
|
else:
|
|
674
|
-
command = f"{mpremote_cmd} ls"
|
|
675
|
+
command = f"{mpremote_cmd} fs ls" # new mpremote <1.24.1
|
|
675
676
|
if not self.dry_run:
|
|
676
677
|
self.console("CMD: {}".format(command))
|
|
677
678
|
exitcode, stdout, stderr = LocalMachine.CommandHandler.run_command(command, shell=True, debug=False)
|
toolkit/MicrOSDevEnv.py
CHANGED
|
@@ -214,12 +214,22 @@ class MicrOSDevTool(OTA, USB):
|
|
|
214
214
|
_url = hardcoded_manual["task"]["img"]
|
|
215
215
|
hardcoded_manual['task']['img'] = f'<img src="{_url}" alt="tasks" height=150>'
|
|
216
216
|
module_function_dict_html.update(hardcoded_manual)
|
|
217
|
-
module_function_json = json.dumps(module_function_dict_html, indent=4)
|
|
218
217
|
import json2html
|
|
219
218
|
table_attributes = 'border="1" cellspacing="1" cellpadding="5" width="80%"'
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
219
|
+
|
|
220
|
+
sorted_modules_w_data = dict(sorted(module_function_dict_html.items(), key=lambda item: item[0].lower()))
|
|
221
|
+
module_shortcuts = ' | '.join(
|
|
222
|
+
f'<a href="#{mod_name.replace(" ", "_")}">{mod_name}</a>'
|
|
223
|
+
for mod_name in sorted_modules_w_data)
|
|
224
|
+
html_tables = module_shortcuts + "<br><hr><br>"
|
|
225
|
+
for key, value in sorted_modules_w_data.items():
|
|
226
|
+
anchor = key.replace(" ", "_") # Replace spaces with underscores for a valid anchor
|
|
227
|
+
html_tables += f'\n<br><br>\n<h2 id="{anchor}"><a href="#{anchor}">{key}</a></h2>\n'
|
|
228
|
+
html_tables += json2html.json2html.convert(json=value,
|
|
229
|
+
table_attributes=table_attributes,
|
|
230
|
+
clubbing=True,
|
|
231
|
+
escape=False,
|
|
232
|
+
encode=False)
|
|
223
233
|
|
|
224
234
|
# http://corelangs.com/css/table/tablecolor.html
|
|
225
235
|
# http://corelangs.com/css/table/tablecolor.html
|
|
@@ -267,11 +277,15 @@ Logical pin names aka pin map
|
|
|
267
277
|
<li><a href="https://github.com/BxNxM/micrOS/blob/master/micrOS/source/IO_rp2.py" target="_blank">rp2 (experimental)</a></li>
|
|
268
278
|
</ul>
|
|
269
279
|
|
|
280
|
+
<h2>
|
|
281
|
+
Built-in control modules for various peripheries.:
|
|
282
|
+
</h2>
|
|
283
|
+
|
|
270
284
|
"""
|
|
271
285
|
html_body_end = """</body>
|
|
272
286
|
</html>"""
|
|
273
287
|
|
|
274
|
-
html_page = html_body_start +
|
|
288
|
+
html_page = html_body_start + html_tables + html_body_end
|
|
275
289
|
# Write html to file
|
|
276
290
|
with open(static_help_html_path, 'w') as f:
|
|
277
291
|
f.write(html_page)
|
toolkit/WebRepl.py
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
MYDIR = os.path.dirname(__file__)
|
|
5
|
+
print("Module [WebRepl] path: {} __package__: {} __name__: {} __file__: {}".format(
|
|
6
|
+
sys.path[0], __package__, __name__, MYDIR))
|
|
7
|
+
try:
|
|
8
|
+
from .lib.TerminalColors import Colors
|
|
9
|
+
from .lib.LocalMachine import FileHandler, CommandHandler, SimplePopPushd
|
|
10
|
+
from .socketClient import ConnectionData
|
|
11
|
+
except Exception as e:
|
|
12
|
+
print("Import warning __name__:{}: {}".format(__name__, e))
|
|
13
|
+
from lib.TerminalColors import Colors
|
|
14
|
+
from lib.LocalMachine import FileHandler, CommandHandler, SimplePopPushd
|
|
15
|
+
from socketClient import ConnectionData
|
|
16
|
+
|
|
17
|
+
WEBREPL_DIR = os.path.join(MYDIR, "workspace/webrepl")
|
|
18
|
+
MAKE_HTML_WEBPAGE_PATH = os.path.join(WEBREPL_DIR, "make_html_js.py")
|
|
19
|
+
WEBREPL_WEBPAGE_PATH = os.path.join(WEBREPL_DIR, "webrepl.html")
|
|
20
|
+
|
|
21
|
+
def init_webrepl_frontend():
|
|
22
|
+
webrepldir_handler = SimplePopPushd()
|
|
23
|
+
webrepldir_handler.pushd(WEBREPL_DIR)
|
|
24
|
+
|
|
25
|
+
is_exists, ftype = FileHandler.path_is_exists(MAKE_HTML_WEBPAGE_PATH)
|
|
26
|
+
if is_exists and ftype == 'f':
|
|
27
|
+
print("RUN webrepl/make_html_js.py")
|
|
28
|
+
exitcode, _, stderr = CommandHandler.run_command(f"{sys.executable} {MAKE_HTML_WEBPAGE_PATH}", shell=True)
|
|
29
|
+
webrepldir_handler.popd()
|
|
30
|
+
if exitcode == 0:
|
|
31
|
+
return True
|
|
32
|
+
print(f"Cannot init {MAKE_HTML_WEBPAGE_PATH}: {stderr}")
|
|
33
|
+
return False
|
|
34
|
+
print(f"WEBREPL MAKE MISSING: {MAKE_HTML_WEBPAGE_PATH}")
|
|
35
|
+
return False
|
|
36
|
+
|
|
37
|
+
def open_webrepl_webpage(address=None, port=8266):
|
|
38
|
+
# file:///Users/usrname/micrOS/micrOS/toolkit/workspace/webrepl/webrepl.html#10.0.1.76:8266
|
|
39
|
+
fuid = ''
|
|
40
|
+
if address is None:
|
|
41
|
+
try:
|
|
42
|
+
address, _, fuid, _ = ConnectionData.select_device()
|
|
43
|
+
except KeyboardInterrupt:
|
|
44
|
+
address = None
|
|
45
|
+
|
|
46
|
+
device = "" if address is None else f"#{address}:{port}"
|
|
47
|
+
webrepl_html = f"file://{WEBREPL_WEBPAGE_PATH}{device}"
|
|
48
|
+
is_exists, ftype = FileHandler.path_is_exists(WEBREPL_WEBPAGE_PATH)
|
|
49
|
+
if is_exists and ftype == "f":
|
|
50
|
+
print(f"OPEN {fuid} webrepl {webrepl_html}")
|
|
51
|
+
if sys.platform == "darwin":
|
|
52
|
+
CommandHandler.run_command(f"open '{webrepl_html}'", shell=True)
|
|
53
|
+
elif sys.platform == "win32":
|
|
54
|
+
CommandHandler.run_command(f"start {webrepl_html}", shell=True)
|
|
55
|
+
elif sys.platform == "linux":
|
|
56
|
+
CommandHandler.run_command(f"xdg-open {webrepl_html}", shell=True)
|
|
57
|
+
else:
|
|
58
|
+
print("Unsupported OS")
|
|
59
|
+
return False
|
|
60
|
+
return True
|
|
61
|
+
print(f"{WEBREPL_WEBPAGE_PATH} not exists.")
|
|
62
|
+
return False
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def open_webrepl():
|
|
66
|
+
state = init_webrepl_frontend()
|
|
67
|
+
if state:
|
|
68
|
+
open_webrepl_webpage()
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
if __name__ == "__main__":
|
|
73
|
+
open_webrepl()
|
|
@@ -5,27 +5,17 @@ import sys
|
|
|
5
5
|
import json
|
|
6
6
|
MYPATH = os.path.dirname(os.path.abspath(__file__))
|
|
7
7
|
BACKUP_DIR = os.path.join(MYPATH, "../user_data/node_config_archive/")
|
|
8
|
-
sys.path.append(os.path.dirname(MYPATH))
|
|
9
|
-
import socketClient
|
|
10
8
|
sys.path.append(os.path.join(MYPATH, '../lib/'))
|
|
11
9
|
from TerminalColors import Colors
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
try:
|
|
12
|
+
from ._app_base import AppBase
|
|
13
|
+
except:
|
|
14
|
+
from _app_base import AppBase
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
if PASSWD is None:
|
|
19
|
-
return ['--dev', DEVICE]
|
|
20
|
-
return ['--dev', DEVICE, '--password', PASSWD]
|
|
16
|
+
CLIENT = None
|
|
21
17
|
|
|
22
18
|
|
|
23
|
-
def run_command(cmd):
|
|
24
|
-
# EDIT YOUR COMMAND
|
|
25
|
-
args = base_cmd() + cmd
|
|
26
|
-
status, answer = socketClient.run(args)
|
|
27
|
-
return status, answer
|
|
28
|
-
|
|
29
19
|
###########################################################
|
|
30
20
|
def _value_type(value):
|
|
31
21
|
value = value.strip()
|
|
@@ -42,15 +32,16 @@ def _value_type(value):
|
|
|
42
32
|
|
|
43
33
|
|
|
44
34
|
def backup():
|
|
45
|
-
|
|
46
|
-
print(f"\
|
|
47
|
-
|
|
35
|
+
device = CLIENT.get_device()
|
|
36
|
+
print(f"\tBackup name format: {device}-<tag>-node_config.json")
|
|
37
|
+
print(f"\t\t tag is optional (press simply enter): {device}-node_config.json")
|
|
38
|
+
backup_tag = input(f"\tFill backup tag for {device}: ").strip()
|
|
48
39
|
backup_tag = "" if len(backup_tag) == 0 else f"-{backup_tag}"
|
|
49
|
-
backup_name = f"{
|
|
40
|
+
backup_name = f"{device}{backup_tag}-node_config.json"
|
|
50
41
|
backup_path = os.path.join(BACKUP_DIR, backup_name)
|
|
51
42
|
print(f"\tBackup path: {backup_path}")
|
|
52
43
|
|
|
53
|
-
status, answer =
|
|
44
|
+
status, answer = CLIENT.run(["conf", "dump"])
|
|
54
45
|
if status:
|
|
55
46
|
configuration = {line.split(":")[0].strip(): _value_type(':'.join(line.split(":")[1:])) for line in answer.strip().split("\n") if ":" in line}
|
|
56
47
|
with open(backup_path, 'w') as f:
|
|
@@ -61,7 +52,8 @@ def backup():
|
|
|
61
52
|
|
|
62
53
|
|
|
63
54
|
def restore():
|
|
64
|
-
|
|
55
|
+
device = CLIENT.get_device()
|
|
56
|
+
print(f"\tRestore backup for: {device}")
|
|
65
57
|
diff_config = {}
|
|
66
58
|
|
|
67
59
|
# SELECT AND LOAD CONFIG BACKUP
|
|
@@ -81,7 +73,7 @@ def restore():
|
|
|
81
73
|
print(f"BACKUP CONFIG DICT:\n{backup_dict}")
|
|
82
74
|
|
|
83
75
|
# LOAD LIVE DEVICE CONFIG - create config diff
|
|
84
|
-
status, answer =
|
|
76
|
+
status, answer = CLIENT.run(["conf", "dump"])
|
|
85
77
|
if not status:
|
|
86
78
|
return f"Cannot load live device config"
|
|
87
79
|
live_configuration = {line.split(":")[0].strip(): _value_type(':'.join(line.split(":")[1:])) for line in answer.strip().split("\n") if ":" in line}
|
|
@@ -103,20 +95,16 @@ def restore():
|
|
|
103
95
|
print(f"{Colors.WARN}SKIP restore...{Colors.NC}")
|
|
104
96
|
return
|
|
105
97
|
|
|
106
|
-
print(f"PACKAGE CONFIG DIFFS...{
|
|
98
|
+
print(f"PACKAGE CONFIG DIFFS...{device}")
|
|
107
99
|
conf_cmd_list = ["conf"]
|
|
108
100
|
for key, value in diff_config.items():
|
|
109
101
|
print(f"\tADD {key} : {value}")
|
|
110
102
|
conf_cmd_list.append(f"{key} {value}")
|
|
111
103
|
conf_cmd_list.append("reboot")
|
|
112
104
|
|
|
113
|
-
verify = input(f"{Colors.WARN}This is BETA feature, are you sure?{Colors.NC} [YY/n]: ")
|
|
114
|
-
if verify != "YY":
|
|
115
|
-
print(f"{Colors.WARN}SKIP restore...{Colors.NC}")
|
|
116
|
-
return
|
|
117
105
|
# Restore
|
|
118
|
-
print(f"APPLY CONFIG DIFFS...{
|
|
119
|
-
status, answer =
|
|
106
|
+
print(f"APPLY CONFIG DIFFS...{device}")
|
|
107
|
+
status, answer = CLIENT.run(conf_cmd_list)
|
|
120
108
|
if status:
|
|
121
109
|
print(f"{Colors.OKGREEN}Backup was successfully restored:{Colors.NC} {backup_path}\nRebooting...")
|
|
122
110
|
else:
|
|
@@ -148,15 +136,12 @@ def app(devfid=None, pwd=None):
|
|
|
148
136
|
send command(s) over socket connection [socketClient.run(args)]
|
|
149
137
|
list load module commands and send in single connection
|
|
150
138
|
"""
|
|
151
|
-
global
|
|
152
|
-
|
|
153
|
-
DEVICE = devfid
|
|
154
|
-
if pwd is not None:
|
|
155
|
-
PASSWD = pwd
|
|
139
|
+
global CLIENT
|
|
140
|
+
CLIENT = AppBase(device=devfid, password=pwd)
|
|
156
141
|
|
|
157
142
|
print(f"{Colors.WARN}Backup & Restore management{Colors.NC}\n")
|
|
158
143
|
while True:
|
|
159
|
-
print(f"{Colors.UNDERLINE}Operations on {
|
|
144
|
+
print(f"{Colors.UNDERLINE}Operations on {CLIENT.get_device()}{Colors.NC}")
|
|
160
145
|
print("\t[1] Backup")
|
|
161
146
|
print("\t[2] Restore")
|
|
162
147
|
print("\t[3] Delete backups")
|
|
@@ -2,38 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
4
|
import sys
|
|
5
|
-
import time
|
|
6
5
|
MYPATH = os.path.dirname(os.path.abspath(__file__))
|
|
7
|
-
sys.path.append(os.path.dirname(MYPATH))
|
|
8
|
-
import socketClient
|
|
9
6
|
sys.path.append(os.path.join(MYPATH, '../lib/'))
|
|
10
|
-
from TerminalColors import Colors
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
try:
|
|
9
|
+
from ._app_base import AppBase
|
|
10
|
+
except:
|
|
11
|
+
from _app_base import AppBase
|
|
14
12
|
|
|
13
|
+
CLIENT = None
|
|
15
14
|
|
|
16
|
-
def base_cmd():
|
|
17
|
-
return ['--dev', DEVICE]
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
def app(devfid=None):
|
|
16
|
+
def app(devfid=None, pwd=None):
|
|
21
17
|
"""
|
|
22
18
|
devfid: selected device input
|
|
23
19
|
send command(s) over socket connection [socketClient.run(args)]
|
|
24
20
|
list load module commands and send in single connection
|
|
25
21
|
"""
|
|
26
|
-
global
|
|
27
|
-
|
|
28
|
-
DEVICE = devfid
|
|
22
|
+
global CLIENT
|
|
23
|
+
CLIENT = AppBase(device=devfid, password=pwd)
|
|
29
24
|
|
|
30
|
-
status, answer =
|
|
25
|
+
status, answer = CLIENT.run(['cct white 50 400',
|
|
31
26
|
'cct brightness 50'])
|
|
32
|
-
status, answer =
|
|
27
|
+
status, answer = CLIENT.run(['cct brightness 100', 'cct brightness 20',
|
|
33
28
|
'cct brightness 60'])
|
|
34
|
-
status, answer =
|
|
29
|
+
status, answer = CLIENT.run(['cct white 400 50',
|
|
35
30
|
'cct brightness 100', 'cct brightness 20'])
|
|
36
|
-
status, answer =
|
|
31
|
+
status, answer = CLIENT.run(['cct white 600 700',
|
|
37
32
|
'cct white 50 300'])
|
|
38
33
|
|
|
39
34
|
|