micrOSDevToolKit 2.9.10__py3-none-any.whl → 2.10.2__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/Common.py +4 -4
- micrOS/source/InterConnect.py +14 -11
- micrOS/source/LM_espnow.py +27 -1
- micrOS/source/LM_intercon.py +3 -0
- micrOS/source/LM_light_sensor.py +7 -15
- micrOS/source/LM_oled_ui.py +18 -22
- micrOS/source/LM_oledui.py +13 -16
- micrOS/source/LM_presence.py +8 -11
- micrOS/source/LM_system.py +7 -6
- micrOS/source/LM_telegram.py +21 -16
- micrOS/source/Shell.py +22 -19
- micrOS/source/Tasks.py +30 -15
- micrOS/source/Web.py +3 -2
- micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- {micrOSDevToolKit-2.9.10.dist-info → micrOSDevToolKit-2.10.2.dist-info}/METADATA +60 -28
- {micrOSDevToolKit-2.9.10.dist-info → micrOSDevToolKit-2.10.2.dist-info}/RECORD +41 -38
- toolkit/DevEnvOTA.py +13 -9
- toolkit/dashboard_apps/SystemTest.py +17 -6
- toolkit/lib/Repository.py +64 -0
- toolkit/lib/micrOSClient.py +25 -6
- toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- toolkit/simulator_lib/aioespnow.py +28 -0
- toolkit/socketClient.py +2 -3
- toolkit/workspace/precompiled/Common.mpy +0 -0
- toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- toolkit/workspace/precompiled/LM_espnow.py +27 -1
- toolkit/workspace/precompiled/LM_intercon.mpy +0 -0
- toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/LM_oledui.mpy +0 -0
- toolkit/workspace/precompiled/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/LM_system.mpy +0 -0
- toolkit/workspace/precompiled/LM_telegram.mpy +0 -0
- toolkit/workspace/precompiled/Shell.mpy +0 -0
- toolkit/workspace/precompiled/Tasks.mpy +0 -0
- toolkit/workspace/precompiled/Web.mpy +0 -0
- {micrOSDevToolKit-2.9.10.data → micrOSDevToolKit-2.10.2.data}/scripts/devToolKit.py +0 -0
- {micrOSDevToolKit-2.9.10.dist-info → micrOSDevToolKit-2.10.2.dist-info}/LICENSE +0 -0
- {micrOSDevToolKit-2.9.10.dist-info → micrOSDevToolKit-2.10.2.dist-info}/WHEEL +0 -0
- {micrOSDevToolKit-2.9.10.dist-info → micrOSDevToolKit-2.10.2.dist-info}/top_level.txt +0 -0
|
@@ -32,9 +32,9 @@ 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=zhIWl4uMC9VNiTB0WY2zylxxXdjSfWyH3DvWPFQIK2Y,5759
|
|
36
36
|
micrOS/source/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
37
|
-
micrOS/source/Common.py,sha256=
|
|
37
|
+
micrOS/source/Common.py,sha256=LEdYxNT7M5aVEIyx0nPoODOYgsVsY7Japxe9diZpU5A,8020
|
|
38
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=_D9XYTT0gQBEWTLzBLCLCbHdFDwjHyMMO94YPtEJlsQ,5510
|
|
@@ -47,7 +47,7 @@ micrOS/source/IO_m5stamp.py,sha256=KyOGvmcWv_gqdajp4zb4-1zARMyYNxhVc-3ZVGlK4gw,1
|
|
|
47
47
|
micrOS/source/IO_qtpy.py,sha256=glZvTTmmrJ6qwVC1fJ-pJwk4WEoZVH1KEPCpiHI66Ik,2471
|
|
48
48
|
micrOS/source/IO_rp2.py,sha256=8ISwnkFvlyeQJlrZiX3xABE9_Pu4u8HhYRVpIFvZdro,131
|
|
49
49
|
micrOS/source/IO_tinypico.py,sha256=S9utgFQdRLjzasylJc2HITRwy9FOb9q5cJIQdkw1UF0,2356
|
|
50
|
-
micrOS/source/InterConnect.py,sha256=
|
|
50
|
+
micrOS/source/InterConnect.py,sha256=wYMoNU3GS1VzLeQfcHTYQ3JGnpXLmTm4GyUm7EmH5Qg,7859
|
|
51
51
|
micrOS/source/Interrupts.py,sha256=lbDZcFTWfrjbJur1Q_hGJM1ZDsRRMWmSXREAHFogqLc,7551
|
|
52
52
|
micrOS/source/LM_L298N_DCmotor.py,sha256=TsD74hXwfPwmUjHWe6r6wE49nQ82fVygevxwsCasmx8,2426
|
|
53
53
|
micrOS/source/LM_L9110_DCmotor.py,sha256=sf6TtuXRrfElhm_9rbp4bPjnKGTwO3PnuXVCC5Ob7Us,1847
|
|
@@ -67,26 +67,26 @@ 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
|
|
74
74
|
micrOS/source/LM_i2c.py,sha256=WKuKxC85TKBSAT8SO4cm8OCPyceAsohHCQFTmomp8iA,1533
|
|
75
75
|
micrOS/source/LM_i2s_mic.py,sha256=1Yu6RLYvSWWHT4KL1kCAuy_avV_z6WJXgIwWuQ73jcA,12271
|
|
76
|
-
micrOS/source/LM_intercon.py,sha256=
|
|
76
|
+
micrOS/source/LM_intercon.py,sha256=QFXeYlrgpVeBPOjrhgWk6IWH-MM1-hPjsf-JSXn7vgk,1806
|
|
77
77
|
micrOS/source/LM_keychain.py,sha256=-GN-Xzoour2vjg5MyZtmbcxo8LdSn6dYrk1wSliNQh4,12695
|
|
78
78
|
micrOS/source/LM_ld2410.py,sha256=dWBsIkI0ryomn0zDrmz5YxaGcoH5TqjAsi2qwGd8UZM,6524
|
|
79
|
-
micrOS/source/LM_light_sensor.py,sha256=
|
|
79
|
+
micrOS/source/LM_light_sensor.py,sha256=xzsPmiLQHx5v8pyNQC0UNXFa76qsV-CqFACY7UZmVKk,4561
|
|
80
80
|
micrOS/source/LM_neoeffects.py,sha256=kfReEz9pTB0GRSat6--86PZtjfiT_S9ilfb-igt-bbg,10929
|
|
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=
|
|
85
|
-
micrOS/source/LM_oledui.py,sha256=
|
|
84
|
+
micrOS/source/LM_oled_ui.py,sha256=65OwlWD4X4b3r64XalDTdp0fNakWY1jpnIZvNBoSyno,21655
|
|
85
|
+
micrOS/source/LM_oledui.py,sha256=ym502-2eNN_e9qCysBjszrfPYdJek-izf2W2UyF_g1g,35429
|
|
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
|
|
88
88
|
micrOS/source/LM_ph_sensor.py,sha256=QBVF6cHX3l9jsKcbEZprpyFtwRVLbup-_A7RmRYsdp8,1355
|
|
89
|
-
micrOS/source/LM_presence.py,sha256=
|
|
89
|
+
micrOS/source/LM_presence.py,sha256=xHB-U_Ywp6F-DEOFlYmjx0QFFQGwKgh8RS77r805YhQ,8830
|
|
90
90
|
micrOS/source/LM_rencoder.py,sha256=9w00JP8UKC_GEKr18xgZ5axX9xc_wVeR9XlWpVR2Qzw,3973
|
|
91
91
|
micrOS/source/LM_rest.py,sha256=NmkAPcSCIc_eSNYMy64Kb4fa4_JEpNXkmCSXF_zEkNk,2673
|
|
92
92
|
micrOS/source/LM_rgb.py,sha256=ohzGxqC-dXIVc_YPXOtmmI9vRBFFjK-OfvsTnAFaDVM,11949
|
|
@@ -99,8 +99,8 @@ 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=
|
|
103
|
-
micrOS/source/LM_telegram.py,sha256=
|
|
102
|
+
micrOS/source/LM_system.py,sha256=p_QvbigWe1Pp8Vdjm_ebi1EW6mFG18lB6L8mP9rYTwM,6588
|
|
103
|
+
micrOS/source/LM_telegram.py,sha256=DY4WEzthGExQ0A6iE6LCMYrXaMLAjsU5OsmY92X3kgg,15153
|
|
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
|
|
@@ -109,11 +109,11 @@ micrOS/source/Network.py,sha256=wLhAPiRyi376TKJA7tzCQidDBHq-AbZGGp7JabHIyl8,9417
|
|
|
109
109
|
micrOS/source/Notify.py,sha256=jVf7wg7b7ehuh12A8tlYz5ZU00NQEgpVuTK0lN6cNcY,2645
|
|
110
110
|
micrOS/source/Scheduler.py,sha256=K6fw807UJnOmbfzgeJQGzGbTL4s2sTIB120ZcS5qrLs,9648
|
|
111
111
|
micrOS/source/Server.py,sha256=HMkHWofMmtpTQtKiGy_Gh6R2xHy4Vpud_aT2zhC4l58,16245
|
|
112
|
-
micrOS/source/Shell.py,sha256=
|
|
113
|
-
micrOS/source/Tasks.py,sha256=
|
|
112
|
+
micrOS/source/Shell.py,sha256=hgvP41HinmQKBW7cbiit9jkNZcTyZ6jucJnoO6htxGo,12896
|
|
113
|
+
micrOS/source/Tasks.py,sha256=dl5Vol9WY5bnmsPr-DdLCn1So2W9mStHw16F-JeYPww,23244
|
|
114
114
|
micrOS/source/Time.py,sha256=vTl8-sL-iO4l9eZMVCHTJ6oUwfhPiB1VHXTrrg-l59Y,6344
|
|
115
115
|
micrOS/source/Types.py,sha256=3O_Vb1jN92RPtvgbV8ui6_iFzDOD-BUzVXlPB7PgmM4,3507
|
|
116
|
-
micrOS/source/Web.py,sha256=
|
|
116
|
+
micrOS/source/Web.py,sha256=KxRc6zt_8acAJyL9uv2JW2c27qtzYgi673ob0kxfxpE,8933
|
|
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
|
|
@@ -127,12 +127,12 @@ micrOS/source/urequests.py,sha256=p7_8X9SrWk4wXhAZKpVPd-PZBHHToX8b1gwhFEi96FM,90
|
|
|
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
|
-
micrOS/source/__pycache__/Common.cpython-312.pyc,sha256=
|
|
130
|
+
micrOS/source/__pycache__/Common.cpython-312.pyc,sha256=DbSNgmSjJTDfmDemMp3Us-0uDCm2bxE000P7a-6ye3s,10455
|
|
131
131
|
micrOS/source/__pycache__/Logger.cpython-312.pyc,sha256=CCdkMRG0lBy7nVsc4DHwdRK0Ap0Mu9yB5fa_Hxx-RHY,5075
|
|
132
132
|
micrOS/source/__pycache__/Server.cpython-312.pyc,sha256=xy1ImeXPtGhtYlAWpuWaxLmJO2nLVGdefOuqltABR9k,20615
|
|
133
|
-
micrOSDevToolKit-2.
|
|
133
|
+
micrOSDevToolKit-2.10.2.data/scripts/devToolKit.py,sha256=4GutIOErF1ny0HSNWQZzEneZdUWhSdqKPBjpRFTr5do,11192
|
|
134
134
|
toolkit/DevEnvCompile.py,sha256=H19-60ZpHzP30C-wqR5QTzMDHHpWrTk0Uzh--TZHxvw,12148
|
|
135
|
-
toolkit/DevEnvOTA.py,sha256=
|
|
135
|
+
toolkit/DevEnvOTA.py,sha256=vNa827MOhbNQbeMGGu72YmGlNN_Tm9D6Trdnz3YGpyU,25499
|
|
136
136
|
toolkit/DevEnvUSB.py,sha256=G-Ram-OR27flvVhul8J_ObiMY07Wjvom6Prc4dTfkmo,34108
|
|
137
137
|
toolkit/Gateway.py,sha256=OSsJYeAmFhNnb1uu2bjLvZzE3A32O7lza8-NxlGr1DQ,25335
|
|
138
138
|
toolkit/LM_to_compile.dat,sha256=TmcSZcPNVtJKWdyMxY1YtHPnqbD6zcI7B7FISbr6as4,579
|
|
@@ -143,7 +143,7 @@ toolkit/img_stream.html,sha256=ZGyrUgpi-JhMl4euS-TTjwwGrg66a2pGUQCopWiveds,5135
|
|
|
143
143
|
toolkit/index.html,sha256=agTgT1d4FH8l2h47Hfb4Lv061BW9shsCAgq1abO5hlI,10998
|
|
144
144
|
toolkit/micrOSdashboard.py,sha256=SOBzGU1b-NIn40GMd2gE01Fuo8HZP5d1XyVG24RkPeA,54433
|
|
145
145
|
toolkit/micrOSlint.py,sha256=HEv6q32Iy5FHx3tn_yA-iMJEeElOVNJIVN51sshv1go,25142
|
|
146
|
-
toolkit/socketClient.py,sha256=
|
|
146
|
+
toolkit/socketClient.py,sha256=lZ67lpE3IcZPpVlUjxpxdYNfLuzbLY0QgzOjTpoXalg,18556
|
|
147
147
|
toolkit/dashboard_apps/BackupRestore.py,sha256=udhuFpCawO0mwyiN4vFMfV8wONqHnUjYvL0udJzkq44,5897
|
|
148
148
|
toolkit/dashboard_apps/CCTDemo.py,sha256=oV7k6sxepOxEa7tBNcuK5IHgKnv01sIQRPvUljic8NI,1125
|
|
149
149
|
toolkit/dashboard_apps/CCTTest.py,sha256=saU4L8gOst31bno44vlwaeSzqrIBppW2DrZf2KV7_4o,3641
|
|
@@ -159,7 +159,7 @@ toolkit/dashboard_apps/RGBTest.py,sha256=QIky1Ts87h52VS9vHs3rYoEYvwFX02BlJxzK-uE
|
|
|
159
159
|
toolkit/dashboard_apps/RoboArm.py,sha256=fqsBFTLEKXLyuZtZhbsNMNLCVtJw3gHWE-37EzjRttw,1814
|
|
160
160
|
toolkit/dashboard_apps/SED_test.py,sha256=hQG8F2isZvCEsb0EvUdvcowLtJ86vrhLMOvpe9EPcJM,2703
|
|
161
161
|
toolkit/dashboard_apps/SensorsTest.py,sha256=h6Sqz9HzjUawKuvxBPMltgWAycIXUUqlLANZqlF030M,1472
|
|
162
|
-
toolkit/dashboard_apps/SystemTest.py,sha256=
|
|
162
|
+
toolkit/dashboard_apps/SystemTest.py,sha256=J87ZSWP-QI5qx0EBSFZwS7f6nsZ7bhdPFaqtKfNjDcI,25740
|
|
163
163
|
toolkit/dashboard_apps/Template_app.py,sha256=1OLO-xA6qNKyDCj-J7nHkA3Eis4ZKnHfhMcaSqHNX4A,758
|
|
164
164
|
toolkit/dashboard_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
165
165
|
toolkit/dashboard_apps/_app_base.py,sha256=wNurhv7AT2imsiVO3rkwPlRkss-2UQU9KsRoXjeb7rk,1007
|
|
@@ -168,6 +168,7 @@ toolkit/dashboard_apps/_micPlotting.py,sha256=zYXhyYKyyA_13ZQybccO4a6t8uyaFJNxlh
|
|
|
168
168
|
toolkit/dashboard_apps/_presencePlotting.py,sha256=cHWR_4YqbNLB6d4mmHjGCYb3Dg5rqWIyu2lpnz0l-Hs,3737
|
|
169
169
|
toolkit/dashboard_apps/uLightDemo.py,sha256=Q8PL56coysM71qV9SCU05yTyCsAMhtzDSjVeg_CkBtc,3163
|
|
170
170
|
toolkit/lib/LocalMachine.py,sha256=m5xaWRx1PumKFLQ5_O8vVxC4NTclF1h9J3__pK8N-C4,18734
|
|
171
|
+
toolkit/lib/Repository.py,sha256=DVoS67rCJzHtJvPTZt-r4Gkmt28ZuC7UYdSAuczsPs0,2440
|
|
171
172
|
toolkit/lib/SafeInput.py,sha256=gMXsMalPcFCwlN6niJlG2twOHfoGsEgHL9-Uh2YQJHE,855
|
|
172
173
|
toolkit/lib/SearchDevices.py,sha256=1nnJDwo_U5cCN2xsdNUT6EQqdt2fW-qAWXWzyzXzyyc,5813
|
|
173
174
|
toolkit/lib/SerialDriverHandler.py,sha256=Zn0zeq4mshTMVc6fzycvrOZiKt6w6YOxJcTWw3BMN2M,7344
|
|
@@ -175,11 +176,12 @@ toolkit/lib/TerminalColors.py,sha256=Ly_8o9-eBmka1dqA2M3DBlcd1zvCCO2K_BnQ1XbqxcE
|
|
|
175
176
|
toolkit/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
176
177
|
toolkit/lib/file_extensions.py,sha256=0DpayBGjKQg7y2ZGJXf5wVPnre_4C5j-7YIViNGvYz4,372
|
|
177
178
|
toolkit/lib/macroScript.py,sha256=DQR8cFoks7fa0dgRUfGhTpEdUJWNQ1vikRoqukRKx14,14014
|
|
178
|
-
toolkit/lib/micrOSClient.py,sha256=
|
|
179
|
+
toolkit/lib/micrOSClient.py,sha256=q1zN3nqW9t36sHqYt0fKsP61tPSC-u21-7WYqbJcO0Q,19346
|
|
179
180
|
toolkit/lib/micrOSClientHistory.py,sha256=EyCqbFeMy940bfXq4Yfu8dcvb7GnBvuHHxOAIgmW1FQ,4736
|
|
180
181
|
toolkit/lib/pip_package_installer.py,sha256=jpC-y1KR72_PJlqyUR6-U5b6l1szVqnIZ4nrSgUsOTM,4262
|
|
181
182
|
toolkit/simulator_lib/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
182
183
|
toolkit/simulator_lib/IO_darwin.py,sha256=f8HOfQKJvniShvjpBe6f4nisr6oJd9SnvxPsbdNIGQk,2336
|
|
184
|
+
toolkit/simulator_lib/aioespnow.py,sha256=NPAX85zLCb6ZJVW8n18tULV4NbHK1IzHYMR43QXAxUQ,480
|
|
183
185
|
toolkit/simulator_lib/camera.py,sha256=BIyj6dF_PoszzTZ3Ea_-gsJ3aly_xGy5NMKeJGVSbFI,1485
|
|
184
186
|
toolkit/simulator_lib/dht.py,sha256=WB56YlZJYop4a2wnFWyWSI9FsPC_zH885a-A4rDNGKo,278
|
|
185
187
|
toolkit/simulator_lib/dotstar.py,sha256=Le6RvSAz3byjiF2RX4JWB8LVsNQtfMqPfM47fg-YFzs,95
|
|
@@ -207,6 +209,7 @@ toolkit/simulator_lib/view01.jpg,sha256=YI_faDB9yyFLzJKTCu1nW4XXxyvGPLfgdYtzW7vm
|
|
|
207
209
|
toolkit/simulator_lib/view02.jpg,sha256=7EWtt8StDpLw3yDMG1nD8XjJgsC0ixpAq3SwPCb842k,35580
|
|
208
210
|
toolkit/simulator_lib/webrepl.py,sha256=owxkwtNlV9zrE2inPtoLCc8U2QgmZOhxpcsX3wMPbik,37
|
|
209
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
|
|
210
213
|
toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc,sha256=hzK7NNmBQsIigz7Gof9FNblwVnP4Ffc3cILPLI-US6w,3152
|
|
211
214
|
toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc,sha256=-02X-tLNXpZIb2DhJI_-Qi1m-MmddzbQIpZUZVH9HZk,946
|
|
212
215
|
toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc,sha256=YwCF50_3cJ9QvAaVa5Mkl0EeASSIr8gwPtREzFcCEmk,878
|
|
@@ -270,7 +273,7 @@ toolkit/user_data/webhooks/macro.py,sha256=E_Um6fc9P6sBKvChyrKgksHmBmaFUuq_Xxy8I
|
|
|
270
273
|
toolkit/user_data/webhooks/template.macro,sha256=XikSl3FsD6W9pUx3sqavM5tWIMBquFx9f3bh_CB8k-A,631
|
|
271
274
|
toolkit/user_data/webhooks/template.py,sha256=WssXY2BDKIwvObq0SpFCjjpEGzgbLlozFTug4ANswWM,342
|
|
272
275
|
toolkit/workspace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
273
|
-
toolkit/workspace/precompiled/Common.mpy,sha256=
|
|
276
|
+
toolkit/workspace/precompiled/Common.mpy,sha256=30q9Yqa0QgfEaLk_Xb85XizYbBE8HPcmR-gEfkVWzDI,2151
|
|
274
277
|
toolkit/workspace/precompiled/Config.mpy,sha256=A9ew69drKFA0SbfIvuTdeaXZQSvmwX0gDlnQa_8i-IE,3082
|
|
275
278
|
toolkit/workspace/precompiled/Debug.mpy,sha256=OpoE-QcllAnASSnAC0V364G7zHjbYI_0jSPzPRBhWkI,1823
|
|
276
279
|
toolkit/workspace/precompiled/Espnow.mpy,sha256=6201uzjatkJ9QHh7JXiLoX_mPxJCMJ90H4v6vgduc0Q,1834
|
|
@@ -283,7 +286,7 @@ toolkit/workspace/precompiled/IO_m5stamp.mpy,sha256=cn991tZyBZd4W3iO10EiLW29g8mV
|
|
|
283
286
|
toolkit/workspace/precompiled/IO_qtpy.mpy,sha256=eHy5zmBlv3Yn6KgubYEBMWeC8OAdQRWtfJPRoppJnaE,872
|
|
284
287
|
toolkit/workspace/precompiled/IO_rp2.mpy,sha256=eODuSmUmahkSp__Fb3j0M6dJdhhnC5Xq3agOMFo5pwk,60
|
|
285
288
|
toolkit/workspace/precompiled/IO_tinypico.mpy,sha256=GS1NSeCBed-xLa3ZpVrk8UQONlgMgaukuH6BzTcDbFU,559
|
|
286
|
-
toolkit/workspace/precompiled/InterConnect.mpy,sha256=
|
|
289
|
+
toolkit/workspace/precompiled/InterConnect.mpy,sha256=kvjpZZ4DYu-BAX2aK-Kuby-iTB9gh58CYG5HP4bTyCU,2362
|
|
287
290
|
toolkit/workspace/precompiled/Interrupts.mpy,sha256=5lOWBB8qoF3YIOzNem4_9W-NWxCZsSbtGTusfUsql2E,2132
|
|
288
291
|
toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy,sha256=1QPhQTw3YijVSh0pkaxCfEAjb1M5FAafyGe_J7xLUJM,878
|
|
289
292
|
toolkit/workspace/precompiled/LM_L9110_DCmotor.py,sha256=sf6TtuXRrfElhm_9rbp4bPjnKGTwO3PnuXVCC5Ob7Us,1847
|
|
@@ -303,26 +306,26 @@ toolkit/workspace/precompiled/LM_dimmer.mpy,sha256=dRdDr3WfFy-um3-fRiK4IuZdwBTUD
|
|
|
303
306
|
toolkit/workspace/precompiled/LM_distance.mpy,sha256=6VoSsyd-hQ4P16USDnSqpq5gpi0v2WbseeHnTFJxuJA,1506
|
|
304
307
|
toolkit/workspace/precompiled/LM_ds18.mpy,sha256=1TYvc8hj1ypE1v52l6u83e8XqUi0_Rjwil-BnYXDSKI,644
|
|
305
308
|
toolkit/workspace/precompiled/LM_esp32.py,sha256=yUIMWsfimCAhgyV4pT4sh-kqE_mDL83cmAZji_2uFpI,1738
|
|
306
|
-
toolkit/workspace/precompiled/LM_espnow.py,sha256=
|
|
309
|
+
toolkit/workspace/precompiled/LM_espnow.py,sha256=Tto5JGnhbqyKT0hzDlJ_G-o_34dVf0CIaiMPbP-xbHU,1070
|
|
307
310
|
toolkit/workspace/precompiled/LM_gameOfLife.mpy,sha256=mAOivt472fRGOcpgx6xShyfbrpT0GTbLhT2vujncS4w,2051
|
|
308
311
|
toolkit/workspace/precompiled/LM_genIO.mpy,sha256=F9utR5Ng-QuTq5R5ISvYPO8xASEdSnndc1hFfxcNWOE,1722
|
|
309
312
|
toolkit/workspace/precompiled/LM_haptic.mpy,sha256=46BgYkjC3AdNaJaKflFnY0oEUsd9qg6yGquX7jyFLnM,1276
|
|
310
313
|
toolkit/workspace/precompiled/LM_i2c.py,sha256=WKuKxC85TKBSAT8SO4cm8OCPyceAsohHCQFTmomp8iA,1533
|
|
311
314
|
toolkit/workspace/precompiled/LM_i2s_mic.mpy,sha256=lTYjVoLA8QF5JKauAY67Lugl0mhlBabwQwimO9EmOIk,3989
|
|
312
|
-
toolkit/workspace/precompiled/LM_intercon.mpy,sha256=
|
|
315
|
+
toolkit/workspace/precompiled/LM_intercon.mpy,sha256=jlQECkdZ8LUGQ3yuwrW2gfjFYZhZKEVZRdAuNdWAGjA,621
|
|
313
316
|
toolkit/workspace/precompiled/LM_keychain.mpy,sha256=cZVyHNny2uNsWfTNaGWBtZUr5bqQ76wEyFcxWx3Nagg,3627
|
|
314
317
|
toolkit/workspace/precompiled/LM_ld2410.mpy,sha256=H7XHzLPkpyE-pRFZqBKn6M-Y5RtpNiV9prOPcmfZ6zg,2581
|
|
315
|
-
toolkit/workspace/precompiled/LM_light_sensor.mpy,sha256=
|
|
318
|
+
toolkit/workspace/precompiled/LM_light_sensor.mpy,sha256=FQsOIOaioYpzBETO_2EM5NrOGGR15_-C44Fd5uz14eM,1538
|
|
316
319
|
toolkit/workspace/precompiled/LM_neoeffects.mpy,sha256=lO0sxfiAgyASgYNjX3c_usY3TR9WeT3F2NHJkiJ182U,3091
|
|
317
320
|
toolkit/workspace/precompiled/LM_neopixel.mpy,sha256=3o4Jvmc3Knr30VJ4b7JebpUsU7dBdcYBZzRD_9a4zBI,3663
|
|
318
321
|
toolkit/workspace/precompiled/LM_oled.mpy,sha256=KQj4jfLwlmx2dT_GWbFzZE6FlMRPUgJvri5XbnSIod0,3154
|
|
319
322
|
toolkit/workspace/precompiled/LM_oled_sh1106.mpy,sha256=0cQpu1MPkrPxvd1Fvln9c9lq9qPV6oi8iGNTZM4YbIY,3761
|
|
320
|
-
toolkit/workspace/precompiled/LM_oled_ui.mpy,sha256=
|
|
321
|
-
toolkit/workspace/precompiled/LM_oledui.mpy,sha256=
|
|
323
|
+
toolkit/workspace/precompiled/LM_oled_ui.mpy,sha256=nwYPXJ2Q_ogZCp1PcWlAXPzj9OlPWc82Okc1dcn-kVk,6865
|
|
324
|
+
toolkit/workspace/precompiled/LM_oledui.mpy,sha256=T7Fy0o_8H6h7oiVRYK43BuVb-RKZOyeJGUvHzeWHorQ,11562
|
|
322
325
|
toolkit/workspace/precompiled/LM_pacman.mpy,sha256=njOwVrPKOtC4J5kRCtwV8E8hHTTTt7HzqV121HmCsxE,3507
|
|
323
326
|
toolkit/workspace/precompiled/LM_pet_feeder.py,sha256=ILrozpnq2_ckkVDUROysMWRksKjflsKpIHvgHdvn-JA,2572
|
|
324
327
|
toolkit/workspace/precompiled/LM_ph_sensor.py,sha256=QBVF6cHX3l9jsKcbEZprpyFtwRVLbup-_A7RmRYsdp8,1355
|
|
325
|
-
toolkit/workspace/precompiled/LM_presence.mpy,sha256=
|
|
328
|
+
toolkit/workspace/precompiled/LM_presence.mpy,sha256=vcu_qUj6oU-Cp_jepQRio3BxPe0SQFTBYkJex9JCcDM,2754
|
|
326
329
|
toolkit/workspace/precompiled/LM_rencoder.py,sha256=9w00JP8UKC_GEKr18xgZ5axX9xc_wVeR9XlWpVR2Qzw,3973
|
|
327
330
|
toolkit/workspace/precompiled/LM_rest.mpy,sha256=U-2Pihzos6A2xLtcE33qWW6qtoYLH2UM_ZN8LmRrexg,1036
|
|
328
331
|
toolkit/workspace/precompiled/LM_rgb.mpy,sha256=o12V42r67SvMkhLMINbUVAguShK_GN7AzqmtX4fOqCE,3467
|
|
@@ -335,8 +338,8 @@ toolkit/workspace/precompiled/LM_servo.mpy,sha256=S1mH7tS6WK-vclAPQrWK46_IB2GlBZ
|
|
|
335
338
|
toolkit/workspace/precompiled/LM_sound_event.mpy,sha256=QJ5xmKtK2sfA9lyROJRRpSAjypl10MkwLdW-QsXhRf8,7384
|
|
336
339
|
toolkit/workspace/precompiled/LM_stepper.mpy,sha256=20Jpee74AjyjjMaHmgKbZvU5phcOvh8nQNSUDCAk_KE,1466
|
|
337
340
|
toolkit/workspace/precompiled/LM_switch.mpy,sha256=58sjZQokfBYBZlplFQB5-t-3O-2mlsE3NXjvJ5FgD_U,2237
|
|
338
|
-
toolkit/workspace/precompiled/LM_system.mpy,sha256=
|
|
339
|
-
toolkit/workspace/precompiled/LM_telegram.mpy,sha256=
|
|
341
|
+
toolkit/workspace/precompiled/LM_system.mpy,sha256=Z5f_YXa9-XFTFOjl4ndE2zTrVETFtF5oG2ht3GqcejA,2831
|
|
342
|
+
toolkit/workspace/precompiled/LM_telegram.mpy,sha256=NhkPz77bvvXXXJhZAsN7WbKn40fzZlHPWQIDWPe4uCs,5080
|
|
340
343
|
toolkit/workspace/precompiled/LM_tinyrgb.mpy,sha256=qWR-e8DXuzmstxQlyic0YjwFaGiBBBWpf57Wyn1jjFc,1016
|
|
341
344
|
toolkit/workspace/precompiled/LM_trackball.mpy,sha256=eDVf55dNJXd0Mzg1MZH0talUloPEGFNccE08vwbgn0g,3471
|
|
342
345
|
toolkit/workspace/precompiled/LM_veml7700.mpy,sha256=NxOvdbrqyyhhwjm2d2dfrJK0dTK3NiP5kQ5GDXjXgq0,1953
|
|
@@ -345,11 +348,11 @@ toolkit/workspace/precompiled/Network.mpy,sha256=WtpvhGB2bvEe94dAHV40fpEyk-Fi0D6
|
|
|
345
348
|
toolkit/workspace/precompiled/Notify.mpy,sha256=ioeDVMh9qBtACWQMASrrhGkSfp1KKUN6d2rt0NpbClo,974
|
|
346
349
|
toolkit/workspace/precompiled/Scheduler.mpy,sha256=ctCj7FfXj5TchPPxe_9dmnTXWN88egtbAnmJ0N9u_1w,2202
|
|
347
350
|
toolkit/workspace/precompiled/Server.mpy,sha256=dtSXLYpBcdz0DveB_S6nos46h-m6hwlQ-38G-iVQwKQ,4762
|
|
348
|
-
toolkit/workspace/precompiled/Shell.mpy,sha256
|
|
349
|
-
toolkit/workspace/precompiled/Tasks.mpy,sha256=
|
|
351
|
+
toolkit/workspace/precompiled/Shell.mpy,sha256=tmtwNjJdCoKqrNZfBYW7JN9jt-XS6TEf7BTtApuICDw,4620
|
|
352
|
+
toolkit/workspace/precompiled/Tasks.mpy,sha256=RfYvJZwvY1wAOT3CWHGTlE9B8F-nZMmKgTAc3WElF5M,6459
|
|
350
353
|
toolkit/workspace/precompiled/Time.mpy,sha256=AZAtFj-l2ERKUpWgQS4gyq_XUx1ddy4ZTTgpRxbWK9M,2773
|
|
351
354
|
toolkit/workspace/precompiled/Types.mpy,sha256=LssRbPgvsWuR4d2m3R7VMIvsnkVp9nN0ltwaY2wGop8,1401
|
|
352
|
-
toolkit/workspace/precompiled/Web.mpy,sha256
|
|
355
|
+
toolkit/workspace/precompiled/Web.mpy,sha256=-YbLZ4LeJtsXY1o2a2V7e3JBlqi9XldMxQjnbl_ps-g,3133
|
|
353
356
|
toolkit/workspace/precompiled/_mpy.version,sha256=Kik-fvRGfWAmpEjKdJLq7nPOqYR_jVgB0aiXZ8LMvMA,6
|
|
354
357
|
toolkit/workspace/precompiled/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
|
|
355
358
|
toolkit/workspace/precompiled/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
|
|
@@ -364,8 +367,8 @@ toolkit/workspace/precompiled/urequests.mpy,sha256=-JDY-DOtJrGdwQo0-P809zZu-cJBR
|
|
|
364
367
|
toolkit/workspace/precompiled/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
|
|
365
368
|
toolkit/workspace/precompiled/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
|
|
366
369
|
toolkit/workspace/precompiled/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
|
|
367
|
-
micrOSDevToolKit-2.
|
|
368
|
-
micrOSDevToolKit-2.
|
|
369
|
-
micrOSDevToolKit-2.
|
|
370
|
-
micrOSDevToolKit-2.
|
|
371
|
-
micrOSDevToolKit-2.
|
|
370
|
+
micrOSDevToolKit-2.10.2.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
|
371
|
+
micrOSDevToolKit-2.10.2.dist-info/METADATA,sha256=WM1uEW7xxmdoHqnDNsWP3skrTFhWrfT-S8yQV7LpLO0,55150
|
|
372
|
+
micrOSDevToolKit-2.10.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
373
|
+
micrOSDevToolKit-2.10.2.dist-info/top_level.txt,sha256=rOGOIXqLBdGZAoDTiLdZ9B_leFB7bMv7YabLwuIc2bc,25
|
|
374
|
+
micrOSDevToolKit-2.10.2.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
|
"""
|
|
@@ -426,11 +426,22 @@ def check_intercon(host=None):
|
|
|
426
426
|
break
|
|
427
427
|
return _state, _output
|
|
428
428
|
|
|
429
|
+
def run_intercon_hello(tout):
|
|
430
|
+
nonlocal host
|
|
431
|
+
cmd_list = [f'hello >>{host}']
|
|
432
|
+
_output = CLIENT.execute(cmd_list, tout=8)
|
|
433
|
+
_new_intercon = True
|
|
434
|
+
if "hello:" in _output[1]: # TODO: remove...
|
|
435
|
+
# LEGACY WAY: FALLBACK
|
|
436
|
+
cmd_list = ['intercon sendcmd "{}" "hello" >json'.format(host)]
|
|
437
|
+
_output = CLIENT.execute(cmd_list, tout=tout)
|
|
438
|
+
_new_intercon = False
|
|
439
|
+
return _new_intercon, _output
|
|
440
|
+
|
|
429
441
|
info_msg = '[ST] Check device-device connectivity'
|
|
430
442
|
print(info_msg)
|
|
431
443
|
host = 'test.local' if host is None else host
|
|
432
|
-
|
|
433
|
-
output = CLIENT.execute(cmd_list, tout=8)
|
|
444
|
+
new_intercon, output = run_intercon_hello(tout=8)
|
|
434
445
|
output = _convert_return_to_dict(output)
|
|
435
446
|
device_was_found = False
|
|
436
447
|
if output[0] is False or output[1] is None:
|
|
@@ -443,7 +454,7 @@ def check_intercon(host=None):
|
|
|
443
454
|
elif len(output[1]) > 1 and "hello" in output[1]['verdict']:
|
|
444
455
|
response_state, response = _get_intercon_output(output[1]['tag'])
|
|
445
456
|
# Valid input on online device
|
|
446
|
-
output = "Device was found: {}:{}".format(host, f"{output}: {response}")
|
|
457
|
+
output = "Device was found: {}:{} version: {}".format(host, f"{output}: {response}", "NEW" if new_intercon else "LEGACY")
|
|
447
458
|
state = True & response_state, f'{info_msg}:\n\t\t{output}'
|
|
448
459
|
device_was_found = True
|
|
449
460
|
else:
|
|
@@ -451,13 +462,13 @@ def check_intercon(host=None):
|
|
|
451
462
|
|
|
452
463
|
if device_was_found:
|
|
453
464
|
# DO Negative testing as well
|
|
454
|
-
|
|
455
|
-
output_neg =
|
|
465
|
+
host = "notavailable.local"
|
|
466
|
+
_, output_neg = run_intercon_hello(tout=20)
|
|
456
467
|
output_neg = _convert_return_to_dict(output_neg)
|
|
457
468
|
state_neg = False, output_neg
|
|
458
469
|
if len(output_neg[1]) > 1 and "hello" in output_neg[1]['verdict']:
|
|
459
470
|
response_state, response = _get_intercon_output(output_neg[1]['tag'])
|
|
460
|
-
output_neg = f'Device was not found: "
|
|
471
|
+
output_neg = f'Device was not found: {host}":{output_neg}: {response}'
|
|
461
472
|
state_neg = True & response_state, output_neg
|
|
462
473
|
return state[0] & state_neg[0], "{}\n\t\tNegative test: {}".format(state[1], state_neg[1])
|
|
463
474
|
return state
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
import zipfile
|
|
3
|
+
import io
|
|
4
|
+
import os
|
|
5
|
+
|
|
6
|
+
try:
|
|
7
|
+
from .LocalMachine import CommandHandler
|
|
8
|
+
except:
|
|
9
|
+
from LocalMachine import CommandHandler
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def git_clone_archive(url):
|
|
13
|
+
"""
|
|
14
|
+
Clone git repo as archive (without git installed)
|
|
15
|
+
Note: No git history, it is just a snapshot
|
|
16
|
+
:param url: https://github.com/micropython/webrepl
|
|
17
|
+
"""
|
|
18
|
+
print(f"CLONE ARCHIVE: {url}")
|
|
19
|
+
url = url.replace(".git", "") if url.endswith(".git") else url
|
|
20
|
+
# URL of the repository zip archive (adjust branch name if needed)
|
|
21
|
+
target_name = url.split("/")[-1].strip()
|
|
22
|
+
zip_url = f"{url}/archive/refs/heads/master.zip"
|
|
23
|
+
response = requests.get(zip_url)
|
|
24
|
+
if response.status_code == 200:
|
|
25
|
+
# Read the downloaded content as a binary stream
|
|
26
|
+
with zipfile.ZipFile(io.BytesIO(response.content)) as z:
|
|
27
|
+
for member in z.infolist():
|
|
28
|
+
# Each member's filename is something like 'webrepl-master/filename'
|
|
29
|
+
# Remove the first directory component
|
|
30
|
+
parts = member.filename.split('/', 1)
|
|
31
|
+
if len(parts) > 1:
|
|
32
|
+
relative_path = parts[1]
|
|
33
|
+
else:
|
|
34
|
+
relative_path = parts[0]
|
|
35
|
+
|
|
36
|
+
# Build the target path relative to the current directory
|
|
37
|
+
target_path = os.path.join(target_name, relative_path)
|
|
38
|
+
|
|
39
|
+
if member.is_dir():
|
|
40
|
+
os.makedirs(target_path, exist_ok=True)
|
|
41
|
+
else:
|
|
42
|
+
os.makedirs(os.path.dirname(target_path), exist_ok=True)
|
|
43
|
+
with z.open(member) as source, open(target_path, 'wb') as target_file:
|
|
44
|
+
target_file.write(source.read())
|
|
45
|
+
print(f"\tRepository extracted successfully: {target_name}")
|
|
46
|
+
return 0, zip_url, ""
|
|
47
|
+
print(f"\tFailed to download repository archive: {target_name}")
|
|
48
|
+
return 1, zip_url, ""
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def git_clone(url):
|
|
52
|
+
"""
|
|
53
|
+
Git clone - subshell call
|
|
54
|
+
- git is needed to be preinstalled
|
|
55
|
+
"""
|
|
56
|
+
print(f"GIT CLONE: {url}")
|
|
57
|
+
target_name = url.split("/")[-1].strip().replace(".git", "")
|
|
58
|
+
command = 'git clone {url} {name}'.format(name=target_name, url=url)
|
|
59
|
+
exitcode, stdout, stderr = CommandHandler.run_command(command, shell=True)
|
|
60
|
+
if exitcode == 0:
|
|
61
|
+
print(f"\tRepository was cloned successfully: {target_name}")
|
|
62
|
+
else:
|
|
63
|
+
print(f"\tRepository clone failed: {target_name}")
|
|
64
|
+
return exitcode, stdout, stderr
|
toolkit/lib/micrOSClient.py
CHANGED
|
@@ -85,10 +85,22 @@ class micrOSClient:
|
|
|
85
85
|
|
|
86
86
|
@staticmethod
|
|
87
87
|
def validate_ipv4(str_in):
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
parts = str_in.split(".")
|
|
89
|
+
# An IPv4 address must have exactly 4 parts
|
|
90
|
+
if len(parts) != 4:
|
|
91
|
+
return False
|
|
92
|
+
for part in parts:
|
|
93
|
+
# Each part must be a number and not empty
|
|
94
|
+
if not part.isdigit():
|
|
95
|
+
return False
|
|
96
|
+
num = int(part)
|
|
97
|
+
# Each number must be in the valid range (0-255)
|
|
98
|
+
if num < 0 or num > 255:
|
|
99
|
+
return False
|
|
100
|
+
# Prevents leading zeros (e.g., "01" is invalid)
|
|
101
|
+
if part != str(num):
|
|
102
|
+
return False
|
|
103
|
+
return True
|
|
92
104
|
|
|
93
105
|
def __connect(self, timeout):
|
|
94
106
|
# Server connection - create socket
|
|
@@ -312,13 +324,20 @@ class micrOSClient:
|
|
|
312
324
|
|
|
313
325
|
history = load_command_history(self.telnet_prompt) # History: Beta feature
|
|
314
326
|
print(self.telnet_prompt, end="")
|
|
327
|
+
is_empty = False # Empty input support
|
|
315
328
|
while True:
|
|
316
329
|
try:
|
|
317
|
-
|
|
318
|
-
#
|
|
330
|
+
# INPUT HANDLING
|
|
331
|
+
cmd = input(self.telnet_prompt if is_empty else '') # CANNOT contain prompt - it is coming back from response data
|
|
332
|
+
if len(cmd.strip()) == 0:
|
|
333
|
+
is_empty = True
|
|
334
|
+
continue
|
|
335
|
+
is_empty = False
|
|
336
|
+
# SEND COMMAND
|
|
319
337
|
output = self.send_cmd(cmd, timeout=timeout, stream=True)
|
|
320
338
|
if not (history is None or output is None) and "Shell: for hints type help." not in output: # History: Beta feature
|
|
321
339
|
history.add_history(cmd)
|
|
340
|
+
# OUTPUT HANDLING
|
|
322
341
|
if 'Bye!' in str(output):
|
|
323
342
|
break
|
|
324
343
|
if output is None:
|
|
Binary file
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
class AIOESPNow:
|
|
4
|
+
|
|
5
|
+
def __init__(self):
|
|
6
|
+
self._active = False
|
|
7
|
+
self.peers_table = None
|
|
8
|
+
|
|
9
|
+
def active(self, state=None):
|
|
10
|
+
if state is not None:
|
|
11
|
+
self._active = state
|
|
12
|
+
return self._active
|
|
13
|
+
|
|
14
|
+
def stats(self):
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
def add_peer(self, mac):
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
async def asend(self, mac, full_msg):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
def send(self, mac, full_msg):
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
def __iter__(self):
|
|
27
|
+
return (i for i in range(0, 3))
|
|
28
|
+
|
toolkit/socketClient.py
CHANGED
|
@@ -215,9 +215,8 @@ class ConnectionData:
|
|
|
215
215
|
# Generate line printout
|
|
216
216
|
base_info = "{uid}{spr1}{fuid}".format(uid=uid, spr1=spacer1, fuid=fuid)
|
|
217
217
|
spacer1 = " " * (spr_offset2 - len(base_info))
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
stat=is_online, version=version_data, elapt=elapsed_time)
|
|
218
|
+
spacer2 = "\t" if len(version_data) > 7 else "\t\t"
|
|
219
|
+
data_line_str = f"{base_info}{spacer1}{ip}\t{is_online}\t\t{version_data}{spacer2}{elapsed_time}"
|
|
221
220
|
return data_line_str, online_ip
|
|
222
221
|
return None
|
|
223
222
|
|
|
Binary file
|
|
Binary file
|
|
@@ -1,23 +1,49 @@
|
|
|
1
1
|
import Espnow
|
|
2
2
|
|
|
3
3
|
def load():
|
|
4
|
+
"""
|
|
5
|
+
Initialize ESPNOW protocal
|
|
6
|
+
"""
|
|
4
7
|
return Espnow.initialize()
|
|
5
8
|
|
|
6
|
-
def send(peer, msg='
|
|
9
|
+
def send(peer, msg='modules'):
|
|
10
|
+
"""
|
|
11
|
+
Send message to peer (by mac address)
|
|
12
|
+
:param peer: mac address of espnow device
|
|
13
|
+
:param msg: message string/load module call
|
|
14
|
+
"""
|
|
7
15
|
return Espnow.espnow_send(peer, msg)
|
|
8
16
|
|
|
9
17
|
def start_server():
|
|
18
|
+
"""
|
|
19
|
+
Start ESPNOW server/listener
|
|
20
|
+
- this can receive espnow messages
|
|
21
|
+
- it includes Load Module execution logic (beta)
|
|
22
|
+
"""
|
|
10
23
|
return Espnow.espnow_server()
|
|
11
24
|
|
|
12
25
|
def stats():
|
|
26
|
+
"""
|
|
27
|
+
Get ESPNOW stats
|
|
28
|
+
"""
|
|
13
29
|
return Espnow.stats()
|
|
14
30
|
|
|
15
31
|
def add_peer(peer):
|
|
32
|
+
"""
|
|
33
|
+
Add ESPNOW peer to known hosts
|
|
34
|
+
- It is needed before first send(...)
|
|
35
|
+
"""
|
|
16
36
|
now = Espnow.initialize()
|
|
17
37
|
return Espnow.add_peer(now, peer)
|
|
18
38
|
|
|
19
39
|
def mac_address():
|
|
40
|
+
"""
|
|
41
|
+
Get ESPNOW compatible mac address
|
|
42
|
+
"""
|
|
20
43
|
return Espnow.mac_address()
|
|
21
44
|
|
|
22
45
|
def help():
|
|
46
|
+
"""
|
|
47
|
+
[beta] ESPNOW sender/receiver with LM execution
|
|
48
|
+
"""
|
|
23
49
|
return 'load', 'send <peer> "ping"', 'start_server', 'add_peer <peer>', 'stats', 'mac_address'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|