micrOSDevToolKit 2.13.1__py3-none-any.whl → 2.17.0__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 +125 -121
- micrOS/source/Common.py +48 -26
- micrOS/source/Config.py +13 -5
- micrOS/source/Espnow.py +100 -58
- micrOS/source/Files.py +77 -41
- micrOS/source/Hooks.py +18 -34
- micrOS/source/Logger.py +2 -7
- micrOS/source/Network.py +36 -16
- micrOS/source/Server.py +22 -8
- micrOS/source/Shell.py +9 -6
- micrOS/source/Tasks.py +34 -13
- micrOS/source/Web.py +69 -31
- micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- micrOS/source/__pycache__/Files.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/config/_git.keep +0 -0
- micrOS/source/micrOS.py +7 -0
- micrOS/source/micrOSloader.py +2 -10
- micrOS/source/microIO.py +2 -2
- micrOS/source/modules/IO_esp32c6.py +38 -0
- micrOS/source/modules/LM_L298N.py +161 -0
- micrOS/source/modules/LM_cluster.py +250 -0
- {toolkit/workspace/precompiled → micrOS/source/modules}/LM_esp32.py +5 -0
- micrOS/source/modules/LM_espnow.py +36 -0
- micrOS/source/{LM_i2c.py → modules/LM_i2c.py} +1 -1
- micrOS/source/{LM_light_sensor.py → modules/LM_light_sensor.py} +2 -2
- micrOS/source/modules/LM_mqtt_client.py +246 -0
- micrOS/source/{LM_neoeffects.py → modules/LM_neoeffects.py} +14 -4
- micrOS/source/{LM_neomatrix.py → modules/LM_neomatrix.py} +140 -38
- micrOS/source/{LM_oled_ui.py → modules/LM_oled_ui.py} +2 -2
- micrOS/source/{LM_oledui.py → modules/LM_oledui.py} +2 -2
- micrOS/source/{LM_pacman.py → modules/LM_pacman.py} +74 -29
- micrOS/source/{LM_presence.py → modules/LM_presence.py} +2 -2
- micrOS/source/{LM_robustness.py → modules/LM_robustness.py} +49 -2
- micrOS/source/{LM_tcs3472.py → modules/LM_tcs3472.py} +4 -6
- micrOS/source/web/dashboard.html +2 -0
- micrOS/source/web/matrix_draw.html +390 -0
- micrOS/source/web/uapi.js +9 -6
- {microsdevtoolkit-2.13.1.dist-info → microsdevtoolkit-2.17.0.dist-info}/METADATA +30 -37
- {microsdevtoolkit-2.13.1.dist-info → microsdevtoolkit-2.17.0.dist-info}/RECORD +200 -190
- toolkit/DevEnvCompile.py +21 -12
- toolkit/DevEnvOTA.py +27 -16
- toolkit/DevEnvUSB.py +35 -21
- toolkit/LM_to_compile.dat +3 -1
- toolkit/MicrOSDevEnv.py +37 -21
- toolkit/dashboard_apps/QMI8685_GYRO.py +1 -1
- toolkit/dashboard_apps/SystemTest.py +8 -5
- toolkit/{MicrosFiles.py → lib/MicrosFiles.py} +24 -4
- toolkit/micrOSdashboard.py +2 -2
- toolkit/micrOSlint.py +17 -7
- toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- toolkit/simulator_lib/mqtt_as/Note.md +15 -0
- toolkit/simulator_lib/mqtt_as/__init__.py +950 -0
- toolkit/simulator_lib/mqtt_as/__pycache__/__init__.cpython-312.pyc +0 -0
- toolkit/simulator_lib/mqtt_as/clean.py +69 -0
- toolkit/simulator_lib/mqtt_as/mqtt_v5_properties.py +239 -0
- toolkit/simulator_lib/mqtt_as/range.py +90 -0
- toolkit/simulator_lib/mqtt_as/range_ex.py +119 -0
- toolkit/simulator_lib/simulator.py +14 -1
- toolkit/simulator_lib/uos.py +2 -0
- toolkit/workspace/precompiled/Common.mpy +0 -0
- toolkit/workspace/precompiled/Config.mpy +0 -0
- toolkit/workspace/precompiled/Espnow.mpy +0 -0
- toolkit/workspace/precompiled/Files.mpy +0 -0
- toolkit/workspace/precompiled/Hooks.mpy +0 -0
- toolkit/workspace/precompiled/Logger.mpy +0 -0
- toolkit/workspace/precompiled/Network.mpy +0 -0
- toolkit/workspace/precompiled/Server.mpy +0 -0
- toolkit/workspace/precompiled/Shell.mpy +0 -0
- toolkit/workspace/precompiled/Tasks.mpy +0 -0
- toolkit/workspace/precompiled/Web.mpy +0 -0
- toolkit/workspace/precompiled/config/_git.keep +0 -0
- toolkit/workspace/precompiled/micrOS.mpy +0 -0
- toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- toolkit/workspace/precompiled/microIO.mpy +0 -0
- toolkit/workspace/precompiled/{IO_esp32.mpy → modules/IO_esp32.mpy} +0 -0
- toolkit/workspace/precompiled/{IO_esp32c3.mpy → modules/IO_esp32c3.mpy} +0 -0
- toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- toolkit/workspace/precompiled/{IO_esp32s2.mpy → modules/IO_esp32s2.mpy} +0 -0
- toolkit/workspace/precompiled/{IO_esp32s3.mpy → modules/IO_esp32s3.mpy} +0 -0
- toolkit/workspace/precompiled/{IO_m5stamp.mpy → modules/IO_m5stamp.mpy} +0 -0
- toolkit/workspace/precompiled/{IO_qtpy.mpy → modules/IO_qtpy.mpy} +0 -0
- toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/modules/IO_s3matrix.mpy +0 -0
- toolkit/workspace/precompiled/{IO_tinypico.mpy → modules/IO_tinypico.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
- toolkit/workspace/precompiled/{LM_OV2640.mpy → modules/LM_OV2640.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_aht10.mpy → modules/LM_aht10.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_bme280.mpy → modules/LM_bme280.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_buzzer.mpy → modules/LM_buzzer.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_cct.mpy → modules/LM_cct.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- toolkit/workspace/precompiled/{LM_co2.mpy → modules/LM_co2.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_dht11.mpy → modules/LM_dht11.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_dht22.mpy → modules/LM_dht22.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_dimmer.mpy → modules/LM_dimmer.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_distance.mpy → modules/LM_distance.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_ds18.mpy → modules/LM_ds18.mpy} +0 -0
- {micrOS/source → toolkit/workspace/precompiled/modules}/LM_esp32.py +5 -0
- toolkit/workspace/precompiled/modules/LM_espnow.py +36 -0
- toolkit/workspace/precompiled/{LM_gameOfLife.mpy → modules/LM_gameOfLife.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_genIO.mpy → modules/LM_genIO.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_haptic.mpy → modules/LM_haptic.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_i2c.py → modules/LM_i2c.py} +1 -1
- toolkit/workspace/precompiled/{LM_i2s_mic.mpy → modules/LM_i2s_mic.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_keychain.mpy → modules/LM_keychain.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_ld2410.mpy → modules/LM_ld2410.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_mqtt_client.mpy +0 -0
- toolkit/workspace/precompiled/{LM_neoeffects.mpy → modules/LM_neoeffects.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_neomatrix.mpy +0 -0
- toolkit/workspace/precompiled/{LM_neopixel.mpy → modules/LM_neopixel.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_oled.mpy → modules/LM_oled.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_oled_sh1106.mpy → modules/LM_oled_sh1106.mpy} +0 -0
- toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_oledui.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/{LM_rest.mpy → modules/LM_rest.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_rgb.mpy → modules/LM_rgb.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_rgbcct.mpy → modules/LM_rgbcct.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_roboarm.mpy → modules/LM_roboarm.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_robustness.py → modules/LM_robustness.py} +49 -2
- toolkit/workspace/precompiled/{LM_servo.mpy → modules/LM_servo.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_sound_event.mpy → modules/LM_sound_event.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_stepper.mpy → modules/LM_stepper.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_switch.mpy → modules/LM_switch.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_system.mpy → modules/LM_system.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_tcs3472.py → modules/LM_tcs3472.py} +4 -6
- toolkit/workspace/precompiled/{LM_telegram.mpy → modules/LM_telegram.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_tinyrgb.mpy → modules/LM_tinyrgb.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_trackball.mpy → modules/LM_trackball.mpy} +0 -0
- toolkit/workspace/precompiled/{LM_veml7700.mpy → modules/LM_veml7700.mpy} +0 -0
- toolkit/workspace/precompiled/web/dashboard.html +2 -0
- toolkit/workspace/precompiled/web/matrix_draw.html +390 -0
- toolkit/workspace/precompiled/web/uapi.js +9 -6
- micrOS/source/IO_esp32c6.py +0 -16
- micrOS/source/LM_L298N_DCmotor.py +0 -86
- micrOS/source/LM_espnow.py +0 -57
- micrOS/source/LM_mqtt_pro.py +0 -211
- toolkit/lib/file_extensions.py +0 -22
- toolkit/workspace/precompiled/Common.cpython-312.pyc +0 -0
- toolkit/workspace/precompiled/IO_esp32c6.mpy +0 -0
- toolkit/workspace/precompiled/IO_rp2.mpy +0 -0
- toolkit/workspace/precompiled/IO_s3matrix.mpy +0 -0
- toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy +0 -0
- toolkit/workspace/precompiled/LM_espnow.py +0 -57
- toolkit/workspace/precompiled/LM_light_sensor.mpy +0 -0
- toolkit/workspace/precompiled/LM_mqtt_pro.py +0 -211
- toolkit/workspace/precompiled/LM_neomatrix.mpy +0 -0
- toolkit/workspace/precompiled/LM_oled_ui.mpy +0 -0
- toolkit/workspace/precompiled/LM_oledui.mpy +0 -0
- toolkit/workspace/precompiled/LM_pacman.mpy +0 -0
- toolkit/workspace/precompiled/LM_presence.mpy +0 -0
- toolkit/workspace/precompiled/Logger.cpython-312.pyc +0 -0
- toolkit/workspace/precompiled/Server.cpython-312.pyc +0 -0
- /micrOS/source/{IO_esp32.py → modules/IO_esp32.py} +0 -0
- /micrOS/source/{IO_esp32c3.py → modules/IO_esp32c3.py} +0 -0
- /micrOS/source/{IO_esp32s2.py → modules/IO_esp32s2.py} +0 -0
- /micrOS/source/{IO_esp32s3.py → modules/IO_esp32s3.py} +0 -0
- /micrOS/source/{IO_m5stamp.py → modules/IO_m5stamp.py} +0 -0
- /micrOS/source/{IO_qtpy.py → modules/IO_qtpy.py} +0 -0
- /micrOS/source/{IO_rp2.py → modules/IO_rp2.py} +0 -0
- /micrOS/source/{IO_s3matrix.py → modules/IO_s3matrix.py} +0 -0
- /micrOS/source/{IO_tinypico.py → modules/IO_tinypico.py} +0 -0
- /micrOS/source/{LM_L9110_DCmotor.py → modules/LM_L9110_DCmotor.py} +0 -0
- /micrOS/source/{LM_OV2640.py → modules/LM_OV2640.py} +0 -0
- /micrOS/source/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +0 -0
- /micrOS/source/{LM_aht10.py → modules/LM_aht10.py} +0 -0
- /micrOS/source/{LM_bme280.py → modules/LM_bme280.py} +0 -0
- /micrOS/source/{LM_buzzer.py → modules/LM_buzzer.py} +0 -0
- /micrOS/source/{LM_cct.py → modules/LM_cct.py} +0 -0
- /micrOS/source/{LM_co2.py → modules/LM_co2.py} +0 -0
- /micrOS/source/{LM_dashboard_be.py → modules/LM_dashboard_be.py} +0 -0
- /micrOS/source/{LM_dht11.py → modules/LM_dht11.py} +0 -0
- /micrOS/source/{LM_dht22.py → modules/LM_dht22.py} +0 -0
- /micrOS/source/{LM_dimmer.py → modules/LM_dimmer.py} +0 -0
- /micrOS/source/{LM_distance.py → modules/LM_distance.py} +0 -0
- /micrOS/source/{LM_ds18.py → modules/LM_ds18.py} +0 -0
- /micrOS/source/{LM_gameOfLife.py → modules/LM_gameOfLife.py} +0 -0
- /micrOS/source/{LM_genIO.py → modules/LM_genIO.py} +0 -0
- /micrOS/source/{LM_haptic.py → modules/LM_haptic.py} +0 -0
- /micrOS/source/{LM_i2s_mic.py → modules/LM_i2s_mic.py} +0 -0
- /micrOS/source/{LM_keychain.py → modules/LM_keychain.py} +0 -0
- /micrOS/source/{LM_ld2410.py → modules/LM_ld2410.py} +0 -0
- /micrOS/source/{LM_neopixel.py → modules/LM_neopixel.py} +0 -0
- /micrOS/source/{LM_oled.py → modules/LM_oled.py} +0 -0
- /micrOS/source/{LM_oled_sh1106.py → modules/LM_oled_sh1106.py} +0 -0
- /micrOS/source/{LM_pet_feeder.py → modules/LM_pet_feeder.py} +0 -0
- /micrOS/source/{LM_qmi8658.py → modules/LM_qmi8658.py} +0 -0
- /micrOS/source/{LM_rencoder.py → modules/LM_rencoder.py} +0 -0
- /micrOS/source/{LM_rest.py → modules/LM_rest.py} +0 -0
- /micrOS/source/{LM_rgb.py → modules/LM_rgb.py} +0 -0
- /micrOS/source/{LM_rgbcct.py → modules/LM_rgbcct.py} +0 -0
- /micrOS/source/{LM_roboarm.py → modules/LM_roboarm.py} +0 -0
- /micrOS/source/{LM_rp2w.py → modules/LM_rp2w.py} +0 -0
- /micrOS/source/{LM_sdcard.py → modules/LM_sdcard.py} +0 -0
- /micrOS/source/{LM_servo.py → modules/LM_servo.py} +0 -0
- /micrOS/source/{LM_sound_event.py → modules/LM_sound_event.py} +0 -0
- /micrOS/source/{LM_stepper.py → modules/LM_stepper.py} +0 -0
- /micrOS/source/{LM_switch.py → modules/LM_switch.py} +0 -0
- /micrOS/source/{LM_system.py → modules/LM_system.py} +0 -0
- /micrOS/source/{LM_telegram.py → modules/LM_telegram.py} +0 -0
- /micrOS/source/{LM_tinyrgb.py → modules/LM_tinyrgb.py} +0 -0
- /micrOS/source/{LM_trackball.py → modules/LM_trackball.py} +0 -0
- /micrOS/source/{LM_veml7700.py → modules/LM_veml7700.py} +0 -0
- {microsdevtoolkit-2.13.1.data → microsdevtoolkit-2.17.0.data}/scripts/devToolKit.py +0 -0
- {microsdevtoolkit-2.13.1.dist-info → microsdevtoolkit-2.17.0.dist-info}/WHEEL +0 -0
- {microsdevtoolkit-2.13.1.dist-info → microsdevtoolkit-2.17.0.dist-info}/licenses/LICENSE +0 -0
- {microsdevtoolkit-2.13.1.dist-info → microsdevtoolkit-2.17.0.dist-info}/top_level.txt +0 -0
- /toolkit/workspace/precompiled/{LM_L9110_DCmotor.py → modules/LM_L9110_DCmotor.py} +0 -0
- /toolkit/workspace/precompiled/{LM_VL53L0X.py → modules/LM_VL53L0X.py} +0 -0
- /toolkit/workspace/precompiled/{LM_dashboard_be.py → modules/LM_dashboard_be.py} +0 -0
- /toolkit/workspace/precompiled/{LM_pet_feeder.py → modules/LM_pet_feeder.py} +0 -0
- /toolkit/workspace/precompiled/{LM_qmi8658.py → modules/LM_qmi8658.py} +0 -0
- /toolkit/workspace/precompiled/{LM_rencoder.py → modules/LM_rencoder.py} +0 -0
- /toolkit/workspace/precompiled/{LM_rp2w.py → modules/LM_rp2w.py} +0 -0
- /toolkit/workspace/precompiled/{LM_sdcard.py → modules/LM_sdcard.py} +0 -0
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"Time.py": [
|
|
4
|
-
9.
|
|
4
|
+
9.34,
|
|
5
5
|
6
|
|
6
6
|
],
|
|
7
7
|
"Files.py": [
|
|
8
|
-
9.
|
|
9
|
-
|
|
8
|
+
9.64,
|
|
9
|
+
10
|
|
10
10
|
],
|
|
11
11
|
"micrOSloader.py": [
|
|
12
|
-
7.
|
|
12
|
+
7.12,
|
|
13
13
|
1
|
|
14
14
|
],
|
|
15
15
|
"Hooks.py": [
|
|
16
|
-
9.
|
|
16
|
+
9.62,
|
|
17
17
|
1
|
|
18
18
|
],
|
|
19
19
|
"Server.py": [
|
|
20
|
-
9.
|
|
20
|
+
9.53,
|
|
21
21
|
3
|
|
22
22
|
],
|
|
23
23
|
"Web.py": [
|
|
24
|
-
9.
|
|
24
|
+
9.61,
|
|
25
25
|
1
|
|
26
26
|
],
|
|
27
27
|
"Tasks.py": [
|
|
28
|
-
9.
|
|
28
|
+
9.43,
|
|
29
29
|
12
|
|
30
30
|
],
|
|
31
31
|
"Config.py": [
|
|
32
|
-
9.
|
|
33
|
-
|
|
32
|
+
9.43,
|
|
33
|
+
19
|
|
34
34
|
],
|
|
35
35
|
"reset.py": [
|
|
36
36
|
10.0,
|
|
37
37
|
0
|
|
38
38
|
],
|
|
39
39
|
"Shell.py": [
|
|
40
|
-
9.
|
|
40
|
+
9.37,
|
|
41
41
|
1
|
|
42
42
|
],
|
|
43
43
|
"Notify.py": [
|
|
@@ -49,12 +49,12 @@
|
|
|
49
49
|
28
|
|
50
50
|
],
|
|
51
51
|
"Logger.py": [
|
|
52
|
-
|
|
52
|
+
8.84,
|
|
53
53
|
4
|
|
54
54
|
],
|
|
55
55
|
"Common.py": [
|
|
56
|
-
9.
|
|
57
|
-
|
|
56
|
+
9.85,
|
|
57
|
+
35
|
|
58
58
|
],
|
|
59
59
|
"InterConnect.py": [
|
|
60
60
|
9.41,
|
|
@@ -62,15 +62,15 @@
|
|
|
62
62
|
],
|
|
63
63
|
"Debug.py": [
|
|
64
64
|
7.37,
|
|
65
|
-
|
|
65
|
+
17
|
|
66
66
|
],
|
|
67
67
|
"Network.py": [
|
|
68
|
-
9.
|
|
68
|
+
9.81,
|
|
69
69
|
8
|
|
70
70
|
],
|
|
71
71
|
"Espnow.py": [
|
|
72
|
-
9.
|
|
73
|
-
|
|
72
|
+
9.5,
|
|
73
|
+
3
|
|
74
74
|
],
|
|
75
75
|
"Scheduler.py": [
|
|
76
76
|
9.62,
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
],
|
|
79
79
|
"microIO.py": [
|
|
80
80
|
9.44,
|
|
81
|
-
|
|
81
|
+
44
|
|
82
82
|
],
|
|
83
83
|
"micrOS.py": [
|
|
84
|
-
9.
|
|
84
|
+
9.3,
|
|
85
85
|
1
|
|
86
86
|
],
|
|
87
87
|
"Interrupts.py": [
|
|
@@ -93,238 +93,242 @@
|
|
|
93
93
|
0
|
|
94
94
|
],
|
|
95
95
|
"urequests.py": [
|
|
96
|
-
9.
|
|
96
|
+
9.65,
|
|
97
97
|
5
|
|
98
98
|
],
|
|
99
|
-
"LM_roboarm.py": [
|
|
99
|
+
"modules/LM_roboarm.py": [
|
|
100
100
|
7.78,
|
|
101
101
|
0
|
|
102
102
|
],
|
|
103
|
-
"LM_stepper.py": [
|
|
103
|
+
"modules/LM_stepper.py": [
|
|
104
104
|
8.9,
|
|
105
|
-
|
|
105
|
+
0
|
|
106
|
+
],
|
|
107
|
+
"modules/LM_L298N.py": [
|
|
108
|
+
8.25,
|
|
109
|
+
0
|
|
106
110
|
],
|
|
107
|
-
"LM_pacman.py": [
|
|
108
|
-
|
|
111
|
+
"modules/LM_pacman.py": [
|
|
112
|
+
7.95,
|
|
109
113
|
0
|
|
110
114
|
],
|
|
111
|
-
"LM_genIO.py": [
|
|
115
|
+
"modules/LM_genIO.py": [
|
|
112
116
|
9.12,
|
|
113
117
|
0
|
|
114
118
|
],
|
|
115
|
-
"LM_oled_ui.py": [
|
|
116
|
-
8.
|
|
119
|
+
"modules/LM_oled_ui.py": [
|
|
120
|
+
8.78,
|
|
117
121
|
0
|
|
118
122
|
],
|
|
119
|
-
"LM_system.py": [
|
|
120
|
-
8.
|
|
121
|
-
|
|
123
|
+
"modules/LM_system.py": [
|
|
124
|
+
8.45,
|
|
125
|
+
0
|
|
122
126
|
],
|
|
123
|
-
"LM_robustness.py": [
|
|
124
|
-
|
|
127
|
+
"modules/LM_robustness.py": [
|
|
128
|
+
8.36,
|
|
125
129
|
0
|
|
126
130
|
],
|
|
127
|
-
"LM_qmi8658.py": [
|
|
131
|
+
"modules/LM_qmi8658.py": [
|
|
128
132
|
9.1,
|
|
129
133
|
0
|
|
130
134
|
],
|
|
131
|
-
"LM_co2.py": [
|
|
135
|
+
"modules/LM_co2.py": [
|
|
132
136
|
8.5,
|
|
133
137
|
0
|
|
134
138
|
],
|
|
135
|
-
"LM_rest.py": [
|
|
139
|
+
"modules/LM_rest.py": [
|
|
136
140
|
8.18,
|
|
137
141
|
0
|
|
138
142
|
],
|
|
139
|
-
"LM_tcs3472.py": [
|
|
140
|
-
9.
|
|
143
|
+
"modules/LM_tcs3472.py": [
|
|
144
|
+
9.0,
|
|
141
145
|
0
|
|
142
146
|
],
|
|
143
|
-
"LM_oled.py": [
|
|
144
|
-
9.
|
|
145
|
-
|
|
147
|
+
"modules/LM_oled.py": [
|
|
148
|
+
9.37,
|
|
149
|
+
0
|
|
146
150
|
],
|
|
147
|
-
"LM_tinyrgb.py": [
|
|
151
|
+
"modules/LM_tinyrgb.py": [
|
|
148
152
|
7.95,
|
|
149
153
|
0
|
|
150
154
|
],
|
|
151
|
-
"LM_aht10.py": [
|
|
155
|
+
"modules/LM_aht10.py": [
|
|
152
156
|
8.79,
|
|
153
157
|
0
|
|
154
158
|
],
|
|
155
|
-
"LM_bme280.py": [
|
|
159
|
+
"modules/LM_bme280.py": [
|
|
156
160
|
8.09,
|
|
157
161
|
0
|
|
158
162
|
],
|
|
159
|
-
"LM_buzzer.py": [
|
|
163
|
+
"modules/LM_buzzer.py": [
|
|
160
164
|
9.11,
|
|
161
165
|
0
|
|
162
166
|
],
|
|
163
|
-
"LM_switch.py": [
|
|
167
|
+
"modules/LM_switch.py": [
|
|
164
168
|
8.68,
|
|
165
|
-
|
|
169
|
+
0
|
|
166
170
|
],
|
|
167
|
-
"LM_servo.py": [
|
|
171
|
+
"modules/LM_servo.py": [
|
|
168
172
|
7.73,
|
|
169
|
-
|
|
173
|
+
0
|
|
170
174
|
],
|
|
171
|
-
"LM_rgbcct.py": [
|
|
175
|
+
"modules/LM_rgbcct.py": [
|
|
172
176
|
8.62,
|
|
173
177
|
0
|
|
174
178
|
],
|
|
175
|
-
"LM_oled_sh1106.py": [
|
|
176
|
-
|
|
177
|
-
|
|
179
|
+
"modules/LM_oled_sh1106.py": [
|
|
180
|
+
9.2,
|
|
181
|
+
0
|
|
178
182
|
],
|
|
179
|
-
"LM_haptic.py": [
|
|
183
|
+
"modules/LM_haptic.py": [
|
|
180
184
|
9.25,
|
|
181
|
-
|
|
185
|
+
0
|
|
182
186
|
],
|
|
183
|
-
"LM_ld2410.py": [
|
|
187
|
+
"modules/LM_ld2410.py": [
|
|
184
188
|
9.07,
|
|
185
189
|
0
|
|
186
190
|
],
|
|
187
|
-
"LM_neopixel.py": [
|
|
188
|
-
7.
|
|
189
|
-
|
|
191
|
+
"modules/LM_neopixel.py": [
|
|
192
|
+
7.78,
|
|
193
|
+
0
|
|
190
194
|
],
|
|
191
|
-
"LM_cct.py": [
|
|
195
|
+
"modules/LM_cct.py": [
|
|
192
196
|
9.04,
|
|
193
|
-
|
|
197
|
+
0
|
|
194
198
|
],
|
|
195
|
-
"LM_L9110_DCmotor.py": [
|
|
199
|
+
"modules/LM_L9110_DCmotor.py": [
|
|
196
200
|
7.69,
|
|
197
201
|
0
|
|
198
202
|
],
|
|
199
|
-
"LM_neoeffects.py": [
|
|
200
|
-
9.
|
|
203
|
+
"modules/LM_neoeffects.py": [
|
|
204
|
+
9.08,
|
|
201
205
|
0
|
|
202
206
|
],
|
|
203
|
-
"LM_i2c.py": [
|
|
207
|
+
"modules/LM_i2c.py": [
|
|
204
208
|
7.6,
|
|
205
209
|
0
|
|
206
210
|
],
|
|
207
|
-
"LM_dht22.py": [
|
|
211
|
+
"modules/LM_dht22.py": [
|
|
208
212
|
7.94,
|
|
209
213
|
0
|
|
210
214
|
],
|
|
211
|
-
"
|
|
212
|
-
8.78,
|
|
213
|
-
0
|
|
214
|
-
],
|
|
215
|
-
"LM_esp32.py": [
|
|
215
|
+
"modules/LM_esp32.py": [
|
|
216
216
|
6.52,
|
|
217
|
-
|
|
217
|
+
0
|
|
218
218
|
],
|
|
219
|
-
"LM_veml7700.py": [
|
|
219
|
+
"modules/LM_veml7700.py": [
|
|
220
220
|
7.62,
|
|
221
221
|
0
|
|
222
222
|
],
|
|
223
|
-
"LM_pet_feeder.py": [
|
|
223
|
+
"modules/LM_pet_feeder.py": [
|
|
224
224
|
7.94,
|
|
225
225
|
0
|
|
226
226
|
],
|
|
227
|
-
"LM_rencoder.py": [
|
|
227
|
+
"modules/LM_rencoder.py": [
|
|
228
228
|
8.65,
|
|
229
229
|
0
|
|
230
230
|
],
|
|
231
|
-
"LM_keychain.py": [
|
|
231
|
+
"modules/LM_keychain.py": [
|
|
232
232
|
9.17,
|
|
233
233
|
0
|
|
234
234
|
],
|
|
235
|
-
"LM_dht11.py": [
|
|
235
|
+
"modules/LM_dht11.py": [
|
|
236
236
|
7.94,
|
|
237
237
|
0
|
|
238
238
|
],
|
|
239
|
-
"LM_sound_event.py": [
|
|
240
|
-
8.
|
|
239
|
+
"modules/LM_sound_event.py": [
|
|
240
|
+
8.52,
|
|
241
241
|
0
|
|
242
242
|
],
|
|
243
|
-
"
|
|
244
|
-
8.
|
|
243
|
+
"modules/LM_cluster.py": [
|
|
244
|
+
8.87,
|
|
245
|
+
0
|
|
246
|
+
],
|
|
247
|
+
"modules/LM_oledui.py": [
|
|
248
|
+
8.7,
|
|
245
249
|
0
|
|
246
250
|
],
|
|
247
|
-
"LM_espnow.py": [
|
|
248
|
-
|
|
251
|
+
"modules/LM_espnow.py": [
|
|
252
|
+
6.0,
|
|
249
253
|
0
|
|
250
254
|
],
|
|
251
|
-
"LM_telegram.py": [
|
|
255
|
+
"modules/LM_telegram.py": [
|
|
252
256
|
9.58,
|
|
253
257
|
0
|
|
254
258
|
],
|
|
255
|
-
"LM_OV2640.py": [
|
|
256
|
-
9.
|
|
259
|
+
"modules/LM_OV2640.py": [
|
|
260
|
+
9.27,
|
|
257
261
|
0
|
|
258
262
|
],
|
|
259
|
-
"LM_rgb.py": [
|
|
260
|
-
|
|
261
|
-
|
|
263
|
+
"modules/LM_rgb.py": [
|
|
264
|
+
9.01,
|
|
265
|
+
0
|
|
262
266
|
],
|
|
263
|
-
"LM_distance.py": [
|
|
267
|
+
"modules/LM_distance.py": [
|
|
264
268
|
8.87,
|
|
265
269
|
0
|
|
266
270
|
],
|
|
267
|
-
"LM_VL53L0X.py": [
|
|
271
|
+
"modules/LM_VL53L0X.py": [
|
|
268
272
|
9.07,
|
|
269
273
|
0
|
|
270
274
|
],
|
|
271
|
-
"LM_light_sensor.py": [
|
|
275
|
+
"modules/LM_light_sensor.py": [
|
|
272
276
|
9.17,
|
|
273
277
|
0
|
|
274
278
|
],
|
|
275
|
-
"LM_rp2w.py": [
|
|
279
|
+
"modules/LM_rp2w.py": [
|
|
276
280
|
4.44,
|
|
277
281
|
0
|
|
278
282
|
],
|
|
279
|
-
"LM_presence.py": [
|
|
283
|
+
"modules/LM_presence.py": [
|
|
280
284
|
8.9,
|
|
281
|
-
|
|
285
|
+
0
|
|
282
286
|
],
|
|
283
|
-
"
|
|
284
|
-
|
|
287
|
+
"modules/LM_trackball.py": [
|
|
288
|
+
8.6,
|
|
285
289
|
0
|
|
286
290
|
],
|
|
287
|
-
"
|
|
288
|
-
8.
|
|
289
|
-
|
|
291
|
+
"modules/LM_mqtt_client.py": [
|
|
292
|
+
8.45,
|
|
293
|
+
0
|
|
290
294
|
],
|
|
291
|
-
"LM_dashboard_be.py": [
|
|
295
|
+
"modules/LM_dashboard_be.py": [
|
|
292
296
|
6.5,
|
|
293
297
|
0
|
|
294
298
|
],
|
|
295
|
-
"LM_dimmer.py": [
|
|
299
|
+
"modules/LM_dimmer.py": [
|
|
296
300
|
8.33,
|
|
297
|
-
|
|
301
|
+
0
|
|
298
302
|
],
|
|
299
|
-
"LM_gameOfLife.py": [
|
|
303
|
+
"modules/LM_gameOfLife.py": [
|
|
300
304
|
9.29,
|
|
301
|
-
|
|
305
|
+
0
|
|
302
306
|
],
|
|
303
|
-
"LM_ds18.py": [
|
|
307
|
+
"modules/LM_ds18.py": [
|
|
304
308
|
6.0,
|
|
305
|
-
|
|
309
|
+
0
|
|
306
310
|
],
|
|
307
|
-
"LM_i2s_mic.py": [
|
|
308
|
-
8.
|
|
309
|
-
|
|
311
|
+
"modules/LM_i2s_mic.py": [
|
|
312
|
+
8.43,
|
|
313
|
+
0
|
|
310
314
|
],
|
|
311
|
-
"LM_sdcard.py": [
|
|
315
|
+
"modules/LM_sdcard.py": [
|
|
312
316
|
7.88,
|
|
313
317
|
0
|
|
314
318
|
],
|
|
315
|
-
"LM_neomatrix.py": [
|
|
316
|
-
8.
|
|
319
|
+
"modules/LM_neomatrix.py": [
|
|
320
|
+
8.75,
|
|
317
321
|
0
|
|
318
322
|
]
|
|
319
323
|
},
|
|
320
324
|
"summary": {
|
|
321
325
|
"core": [
|
|
322
|
-
|
|
326
|
+
3923,
|
|
323
327
|
24
|
|
324
328
|
],
|
|
325
329
|
"load": [
|
|
326
|
-
|
|
327
|
-
|
|
330
|
+
9871,
|
|
331
|
+
56
|
|
328
332
|
],
|
|
329
333
|
"core_dep": [
|
|
330
334
|
true,
|
|
@@ -332,10 +336,10 @@
|
|
|
332
336
|
],
|
|
333
337
|
"load_dep": [
|
|
334
338
|
true,
|
|
335
|
-
|
|
339
|
+
4
|
|
336
340
|
],
|
|
337
|
-
"core_score": 9.
|
|
338
|
-
"load_score": 8.
|
|
339
|
-
"version": "2.
|
|
341
|
+
"core_score": 9.24,
|
|
342
|
+
"load_score": 8.35,
|
|
343
|
+
"version": "2.17.0-0"
|
|
340
344
|
}
|
|
341
345
|
}
|
micrOS/source/Common.py
CHANGED
|
@@ -7,7 +7,7 @@ from Debug import syslog as debug_syslog, console_write
|
|
|
7
7
|
from Logger import logger, log_get
|
|
8
8
|
from Files import OSPath, path_join
|
|
9
9
|
from microIO import resolve_pin
|
|
10
|
-
from Tasks import TaskBase, Manager, lm_exec
|
|
10
|
+
from Tasks import TaskBase, Manager, lm_exec, lm_is_loaded
|
|
11
11
|
from machine import Pin, ADC
|
|
12
12
|
from Notify import Notify
|
|
13
13
|
|
|
@@ -15,27 +15,48 @@ from Notify import Notify
|
|
|
15
15
|
#####################################################################################
|
|
16
16
|
# SYSTEM #
|
|
17
17
|
#####################################################################################
|
|
18
|
-
|
|
19
|
-
def micro_task(tag:str, task=None):
|
|
18
|
+
def micro_task(tag: str, task=None, _wrap=False):
|
|
20
19
|
"""
|
|
21
20
|
[LM] Async task manager.
|
|
22
|
-
:
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
Modes:
|
|
22
|
+
A) GET:
|
|
23
|
+
micro_task("tag") -> existing task object or None
|
|
24
|
+
B) CREATE:
|
|
25
|
+
micro_task("tag", task=...) -> True | None | False
|
|
26
|
+
Creates a new async task with the given tag if not already running.
|
|
27
|
+
C) CREATE AS DECORATOR (shortcut):
|
|
28
|
+
@micro_task("main", _wrap=True)
|
|
29
|
+
async def mytask(tag, ...): ...
|
|
30
|
+
# Calling mytask(...) will create/start a new task under "main._mytask"
|
|
31
|
+
|
|
32
|
+
:param tag: Task tag string
|
|
33
|
+
:param task: Coroutine (or list of command arguments) to contract a task with
|
|
34
|
+
the given async task callback
|
|
35
|
+
:param _wrap: When True, return a decorator factory (for use as @micro_task(...))
|
|
36
|
+
:return: Task object (GET), bool|None|False (CREATE), or decorator (DECORATOR)
|
|
25
37
|
"""
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
# --- CREATE (original) ---
|
|
39
|
+
if task is not None:
|
|
40
|
+
if TaskBase.is_busy(tag):
|
|
41
|
+
return None # task already running
|
|
42
|
+
return Manager().create_task(callback=task, tag=tag)
|
|
43
|
+
|
|
44
|
+
# --- CREATE WITH DECORATOR FACTORY (simplified) ---
|
|
45
|
+
if _wrap:
|
|
46
|
+
def _decorator(async_fn):
|
|
47
|
+
task_tag = f"{tag}._{async_fn.__name__}"
|
|
48
|
+
_launcher = (
|
|
49
|
+
lambda *args, **kwargs:
|
|
50
|
+
None if TaskBase.is_busy(task_tag)
|
|
51
|
+
else Manager().create_task(
|
|
52
|
+
callback=async_fn(task_tag, *args, **kwargs),
|
|
53
|
+
tag=task_tag)
|
|
54
|
+
)
|
|
55
|
+
return _launcher
|
|
56
|
+
return _decorator
|
|
57
|
+
|
|
58
|
+
# --- GET (_wrap=False): return task object or None if not existing ---
|
|
59
|
+
return TaskBase.TASKS.get(tag, None)
|
|
39
60
|
|
|
40
61
|
|
|
41
62
|
def manage_task(tag:str, operation:str):
|
|
@@ -44,9 +65,6 @@ def manage_task(tag:str, operation:str):
|
|
|
44
65
|
:param tag: task tag
|
|
45
66
|
:param operation: kill / show / isbusy
|
|
46
67
|
"""
|
|
47
|
-
if Manager is None:
|
|
48
|
-
# RETURN: None - cannot utilize async task functionality
|
|
49
|
-
return None
|
|
50
68
|
if operation == "show":
|
|
51
69
|
return str(Manager().show(tag=tag))
|
|
52
70
|
if operation == "kill":
|
|
@@ -56,14 +74,16 @@ def manage_task(tag:str, operation:str):
|
|
|
56
74
|
raise Exception(f"Invalid operation: {operation}")
|
|
57
75
|
|
|
58
76
|
|
|
59
|
-
def exec_cmd(cmd:list, jsonify:bool=None,
|
|
77
|
+
def exec_cmd(cmd:list, jsonify:bool=None, secure=False):
|
|
60
78
|
"""
|
|
61
79
|
[LM] Single (sync) LM execution
|
|
62
80
|
:param cmd: command string list, ex.: ['system', 'clock']
|
|
63
81
|
:param jsonify: request json output
|
|
64
|
-
:param
|
|
82
|
+
:param secure: check LM is loaded, if NOT skip execution 'NotAllowed'
|
|
65
83
|
return state, output
|
|
66
84
|
"""
|
|
85
|
+
if secure and not lm_is_loaded(cmd[0]):
|
|
86
|
+
return False, f"NotAllowed {cmd[0]}"
|
|
67
87
|
return lm_exec(cmd, jsonify=jsonify)
|
|
68
88
|
|
|
69
89
|
|
|
@@ -87,7 +107,7 @@ def notify(text=None) -> bool:
|
|
|
87
107
|
return False
|
|
88
108
|
|
|
89
109
|
|
|
90
|
-
def web_endpoint(endpoint, function) -> bool:
|
|
110
|
+
def web_endpoint(endpoint, function, method='GET', auto_enable=True) -> bool:
|
|
91
111
|
"""
|
|
92
112
|
[LM] Add test endpoint <localhost.local>/endpoint from Load Modules
|
|
93
113
|
:param endpoint: simple string, name of the endpoint
|
|
@@ -98,8 +118,10 @@ def web_endpoint(endpoint, function) -> bool:
|
|
|
98
118
|
[2] Stream function return tuple (multipart_type, data):
|
|
99
119
|
multipart/x-mixed-replace | multipart/form-data, <data>
|
|
100
120
|
<data>: {'callback':<func>, 'content-type': image/jpeg | audio/l16;*}
|
|
121
|
+
:param method: HTTP method name
|
|
122
|
+
:param auto_enable: if True will enable webui (if disabled) when register endpoint
|
|
101
123
|
"""
|
|
102
|
-
WebCli.register(endpoint=endpoint, callback=function)
|
|
124
|
+
WebCli.register(endpoint=endpoint, callback=function, method=method, auto_enable=auto_enable)
|
|
103
125
|
return True
|
|
104
126
|
|
|
105
127
|
|
micrOS/source/Config.py
CHANGED
|
@@ -17,10 +17,12 @@ from json import load, dump
|
|
|
17
17
|
from uos import remove
|
|
18
18
|
from utime import sleep
|
|
19
19
|
from Debug import DebugCfg, console_write, syslog
|
|
20
|
+
from Files import OSPath, path_join, is_file
|
|
21
|
+
from uos import rename as move_file
|
|
20
22
|
try:
|
|
21
23
|
from microIO import set_pinmap
|
|
22
24
|
except:
|
|
23
|
-
syslog("[ERR]
|
|
25
|
+
syslog("[ERR] microIO import: set_pinmap")
|
|
24
26
|
set_pinmap = None
|
|
25
27
|
|
|
26
28
|
|
|
@@ -30,7 +32,8 @@ class Data:
|
|
|
30
32
|
"""
|
|
31
33
|
__slots__ = []
|
|
32
34
|
|
|
33
|
-
|
|
35
|
+
CONFIG_NAME = "node_config.json"
|
|
36
|
+
CONFIG_PATH = path_join(OSPath.CONFIG, CONFIG_NAME)
|
|
34
37
|
CONFIG_CACHE = {"version": "n/a",
|
|
35
38
|
"auth": False,
|
|
36
39
|
"staessid": "your_wifi_name",
|
|
@@ -73,10 +76,14 @@ class Data:
|
|
|
73
76
|
|
|
74
77
|
@staticmethod
|
|
75
78
|
def init():
|
|
79
|
+
# Migrate config from / to /config
|
|
80
|
+
if is_file(Data.CONFIG_NAME):
|
|
81
|
+
console_write(f"[CONF] Migrate {Data.CONFIG_NAME} to {Data.CONFIG_PATH}")
|
|
82
|
+
move_file(Data.CONFIG_NAME, Data.CONFIG_PATH)
|
|
76
83
|
# Inject user config into template
|
|
77
84
|
Data.__inject_default_conf()
|
|
78
85
|
# [!!!] Init selected pinmap - default pinmap calculated by platform
|
|
79
|
-
if set_pinmap
|
|
86
|
+
if callable(set_pinmap):
|
|
80
87
|
pinmap = set_pinmap(Data.CONFIG_CACHE['cstmpmap'])
|
|
81
88
|
console_write(f"[PIN MAP] {pinmap}")
|
|
82
89
|
# SET dbg based on config settings (inject user conf)
|
|
@@ -171,16 +178,17 @@ class Data:
|
|
|
171
178
|
These kind of parameters are not cached in memory
|
|
172
179
|
"""
|
|
173
180
|
# Write str value to file
|
|
181
|
+
offloaded_key = path_join(OSPath.CONFIG, f'.{key}.key')
|
|
174
182
|
if isinstance(value, str) and key in Data.CONFIG_CACHE:
|
|
175
183
|
try:
|
|
176
|
-
with open(
|
|
184
|
+
with open(offloaded_key, 'w') as f:
|
|
177
185
|
f.write(value)
|
|
178
186
|
return True
|
|
179
187
|
except Exception:
|
|
180
188
|
return False
|
|
181
189
|
# Read str value from file
|
|
182
190
|
try:
|
|
183
|
-
with open(
|
|
191
|
+
with open(offloaded_key, 'r') as f:
|
|
184
192
|
return f.read().strip()
|
|
185
193
|
except Exception:
|
|
186
194
|
# Return default value if key not exists
|