micrOSDevToolKit 2.11.0__py3-none-any.whl → 2.13.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.

Files changed (84) hide show
  1. micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +25 -25
  2. micrOS/source/Common.py +34 -14
  3. micrOS/source/Config.py +7 -7
  4. micrOS/source/Debug.py +9 -9
  5. micrOS/source/Espnow.py +6 -6
  6. micrOS/source/Files.py +5 -3
  7. micrOS/source/Hooks.py +5 -5
  8. micrOS/source/InterConnect.py +5 -5
  9. micrOS/source/Interrupts.py +2 -2
  10. micrOS/source/LM_dashboard_be.py +2 -2
  11. micrOS/source/LM_neomatrix.py +42 -12
  12. micrOS/source/LM_pacman.py +16 -3
  13. micrOS/source/Logger.py +1 -1
  14. micrOS/source/Network.py +6 -6
  15. micrOS/source/Notify.py +2 -2
  16. micrOS/source/Scheduler.py +5 -5
  17. micrOS/source/Server.py +6 -6
  18. micrOS/source/Shell.py +4 -4
  19. micrOS/source/Tasks.py +13 -13
  20. micrOS/source/Time.py +7 -7
  21. micrOS/source/Types.py +2 -2
  22. micrOS/source/Web.py +20 -13
  23. micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  24. micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  25. micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  26. micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  27. micrOS/source/micrOS.py +5 -5
  28. micrOS/source/micrOSloader.py +6 -6
  29. micrOS/source/urequests.py +4 -4
  30. {microsdevtoolkit-2.11.0.dist-info → microsdevtoolkit-2.13.0.dist-info}/METADATA +23 -22
  31. {microsdevtoolkit-2.11.0.dist-info → microsdevtoolkit-2.13.0.dist-info}/RECORD +84 -79
  32. toolkit/DevEnvCompile.py +20 -15
  33. toolkit/DevEnvOTA.py +29 -8
  34. toolkit/DevEnvUSB.py +47 -10
  35. toolkit/MicrOSDevEnv.py +10 -2
  36. toolkit/MicrosFiles.py +26 -0
  37. toolkit/lib/LocalMachine.py +6 -1
  38. toolkit/lib/file_extensions.py +9 -3
  39. toolkit/micrOSlint.py +3 -1
  40. toolkit/workspace/precompiled/Common.cpython-312.pyc +0 -0
  41. toolkit/workspace/precompiled/Common.mpy +0 -0
  42. toolkit/workspace/precompiled/Config.mpy +0 -0
  43. toolkit/workspace/precompiled/Debug.mpy +0 -0
  44. toolkit/workspace/precompiled/Espnow.mpy +0 -0
  45. toolkit/workspace/precompiled/Files.mpy +0 -0
  46. toolkit/workspace/precompiled/Hooks.mpy +0 -0
  47. toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  48. toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  49. toolkit/workspace/precompiled/LM_dashboard_be.py +2 -2
  50. toolkit/workspace/precompiled/LM_neomatrix.mpy +0 -0
  51. toolkit/workspace/precompiled/LM_pacman.mpy +0 -0
  52. toolkit/workspace/precompiled/Logger.cpython-312.pyc +0 -0
  53. toolkit/workspace/precompiled/Logger.mpy +0 -0
  54. toolkit/workspace/precompiled/Network.mpy +0 -0
  55. toolkit/workspace/precompiled/Notify.mpy +0 -0
  56. toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  57. toolkit/workspace/precompiled/Server.cpython-312.pyc +0 -0
  58. toolkit/workspace/precompiled/Server.mpy +0 -0
  59. toolkit/workspace/precompiled/Shell.mpy +0 -0
  60. toolkit/workspace/precompiled/Tasks.mpy +0 -0
  61. toolkit/workspace/precompiled/Time.mpy +0 -0
  62. toolkit/workspace/precompiled/Types.mpy +0 -0
  63. toolkit/workspace/precompiled/Web.mpy +0 -0
  64. toolkit/workspace/precompiled/micrOS.mpy +0 -0
  65. toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  66. toolkit/workspace/precompiled/urequests.mpy +0 -0
  67. /micrOS/source/{dashboard.html → web/dashboard.html} +0 -0
  68. /micrOS/source/{index.html → web/index.html} +0 -0
  69. /micrOS/source/{uapi.js → web/uapi.js} +0 -0
  70. /micrOS/source/{udashboard.js → web/udashboard.js} +0 -0
  71. /micrOS/source/{ustyle.css → web/ustyle.css} +0 -0
  72. /micrOS/source/{uwidgets.js → web/uwidgets.js} +0 -0
  73. /micrOS/source/{uwidgets_pro.js → web/uwidgets_pro.js} +0 -0
  74. {microsdevtoolkit-2.11.0.data → microsdevtoolkit-2.13.0.data}/scripts/devToolKit.py +0 -0
  75. {microsdevtoolkit-2.11.0.dist-info → microsdevtoolkit-2.13.0.dist-info}/WHEEL +0 -0
  76. {microsdevtoolkit-2.11.0.dist-info → microsdevtoolkit-2.13.0.dist-info}/licenses/LICENSE +0 -0
  77. {microsdevtoolkit-2.11.0.dist-info → microsdevtoolkit-2.13.0.dist-info}/top_level.txt +0 -0
  78. /toolkit/workspace/precompiled/{dashboard.html → web/dashboard.html} +0 -0
  79. /toolkit/workspace/precompiled/{index.html → web/index.html} +0 -0
  80. /toolkit/workspace/precompiled/{uapi.js → web/uapi.js} +0 -0
  81. /toolkit/workspace/precompiled/{udashboard.js → web/udashboard.js} +0 -0
  82. /toolkit/workspace/precompiled/{ustyle.css → web/ustyle.css} +0 -0
  83. /toolkit/workspace/precompiled/{uwidgets.js → web/uwidgets.js} +0 -0
  84. /toolkit/workspace/precompiled/{uwidgets_pro.js → web/uwidgets_pro.js} +0 -0
micrOS/source/micrOS.py CHANGED
@@ -13,7 +13,7 @@ from Hooks import bootup, profiling_info, enableESPNow
13
13
  from Network import auto_nw_config
14
14
  from Server import Server
15
15
  from Interrupts import enableInterrupt, enableCron, initEventIRQs
16
- from Debug import errlog_add
16
+ from Debug import syslog
17
17
 
18
18
 
19
19
  #################################################################
@@ -26,7 +26,7 @@ def irq_handler():
26
26
  enableCron()
27
27
  except Exception as e:
28
28
  print(f"[micrOS main] InterruptHandler.enableInterrupt/CronInterrupt error: {e}")
29
- errlog_add(f"[ERR] irq_handler error: {e}")
29
+ syslog(f"[ERR] irq_handler error: {e}")
30
30
 
31
31
 
32
32
  def external_irq_handler():
@@ -34,7 +34,7 @@ def external_irq_handler():
34
34
  initEventIRQs()
35
35
  except Exception as e:
36
36
  print(f"[micrOS main] InterruptHandler.initEventIRQs error: {e}")
37
- errlog_add(f"[ERR] external_irq_handler error: {e}")
37
+ syslog(f"[ERR] external_irq_handler error: {e}")
38
38
 
39
39
 
40
40
  #################################################################
@@ -53,7 +53,7 @@ def micrOS():
53
53
  bootup()
54
54
  except Exception as e:
55
55
  print(f"[micrOS main] Hooks.boot() error: {e}")
56
- errlog_add(f"[ERR] safe_boot: {e}")
56
+ syslog(f"[ERR] safe_boot: {e}")
57
57
 
58
58
  # NETWORK setup
59
59
  nwmd = auto_nw_config()
@@ -83,4 +83,4 @@ def micrOS():
83
83
  aio.run_forever()
84
84
 
85
85
  # UNEXPECTED RESTART ???
86
- errlog_add("[ERR] !!! Unexpected micrOS restart")
86
+ syslog("[ERR] !!! Unexpected micrOS restart")
@@ -12,10 +12,10 @@ try:
12
12
  except:
13
13
  traceback = None
14
14
  try:
15
- from Debug import errlog_add
15
+ from Debug import syslog
16
16
  except Exception as e:
17
17
  print(f"[loader] Import error: {e}")
18
- errlog_add = None
18
+ syslog = None
19
19
  from machine import reset
20
20
 
21
21
 
@@ -70,8 +70,8 @@ def __recovery_mode():
70
70
  import webrepl
71
71
  webrepl.start(password=pwd)
72
72
  except Exception as e:
73
- if callable(errlog_add):
74
- errlog_add(f"[ERR][micrOSloader] webrepl failed: {e}")
73
+ if callable(syslog):
74
+ syslog(f"[ERR][micrOSloader] webrepl failed: {e}")
75
75
  print("[loader] Reset .if_mode to micros and reboot")
76
76
  with open('.if_mode', 'w') as f:
77
77
  f.write("micros")
@@ -126,8 +126,8 @@ def main():
126
126
  # Handle micrOS system crash (never happened...but) -> webrepl mode default pwd: ADmin123
127
127
  print(f"[loader][main mode] micrOS start failed: {e}")
128
128
  print("[loader][main mode] -> [recovery mode]")
129
- if callable(errlog_add):
130
- errlog_add(f"[ERR][micrOSloader] start failed: {e}")
129
+ if callable(syslog):
130
+ syslog(f"[ERR][micrOSloader] start failed: {e}")
131
131
  # Recovery aka webrepl mode
132
132
  __recovery_mode()
133
133
  __auto_restart_event()
@@ -11,7 +11,7 @@ try:
11
11
  from ussl import wrap_socket # Legacy micropython ssl usage (+simulator mode)
12
12
  except ImportError:
13
13
  from ssl import wrap_socket # From micropython 1.23...
14
- from Debug import errlog_add
14
+ from Debug import syslog
15
15
  import uasyncio as asyncio
16
16
 
17
17
 
@@ -147,7 +147,7 @@ def request(method:str, url:str, data:str=None, json=None, headers:dict=None, so
147
147
  try:
148
148
  sock = wrap_socket(sock) if proto == 'https:' else sock
149
149
  except Exception as e:
150
- errlog_add(f'[ERR] https soc-wrap: {e}')
150
+ syslog(f'[ERR] https soc-wrap: {e}')
151
151
 
152
152
  # [1] BUILD REQUEST
153
153
  http_request = _build_request(host, method, path, headers, data, json)
@@ -206,7 +206,7 @@ async def arequest(method:str, url:str, data:str=None, json=None, headers:dict=N
206
206
  addr = _host_to_addr(host, port, force=True)
207
207
  reader, writer = await asyncio.open_connection(addr[0], port, ssl=(proto == 'https:'))
208
208
  else:
209
- errlog_add(f"[ERR] arequest connection: {e}")
209
+ syslog(f"[ERR] arequest connection: {e}")
210
210
 
211
211
  # Send request + Wait for the response
212
212
  try:
@@ -236,7 +236,7 @@ async def arequest(method:str, url:str, data:str=None, json=None, headers:dict=N
236
236
  body = f"[WARN] arequest: {e}"
237
237
  else:
238
238
  body = f"[ERR] arequest: {e}"
239
- errlog_add(body)
239
+ syslog(body)
240
240
  finally:
241
241
  if writer:
242
242
  writer.close()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 2.11.0
3
+ Version: 2.13.0
4
4
  Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
5
  Home-page: https://github.com/BxNxM/micrOS
6
6
  Author: Marcell Ban
@@ -84,14 +84,14 @@ Access rest api over browser: `http://<nodename>.local`
84
84
  🚀🎈Lightweight and high performance core system that leaves you space 😎
85
85
 
86
86
  ## ◉ Shortcuts:
87
- 1. micrOS Client Application [link](https://github.com/BxNxM/micrOS/#micros-client-application)
87
+ 1. 📲 micrOS Client Application [link](https://github.com/BxNxM/micrOS/#micros-client-application)
88
88
  2. micrOS Installer [link](https://github.com/BxNxM/micrOS/#installing-micros-with-devtoolkit-esp32-and-more)
89
89
  3. micrOS Tutorials [link](https://github.com/BxNxM/micrOS/#micros-video-tutorials)
90
90
  4. micrOS System and features [link](https://github.com/BxNxM/micrOS/#micros-framework-features)
91
- 5. Built-in app modules: [link](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
91
+ 5. 🎮 Built-in app modules: [link](https://htmlpreview.github.io/?https://github.com/BxNxM/micrOS/blob/master/micrOS/client/sfuncman/sfuncman.html)
92
92
  5. Pin mapping - GPIO [link](https://github.com/BxNxM/micrOS/#device-pinouts-for-wiring)
93
93
  6. micrOS Node configuration [link](https://github.com/BxNxM/micrOS/#micros-node-configuration-parameters-with-description)
94
- 7. micrOS create custom Load Modules: [link](./APPLICATION_GUIDE.md)
94
+ 7. 🧑‍💻 micrOS create custom Load Modules: [link](./APPLICATION_GUIDE.md)
95
95
  8. micrOS Gateway server with Prometheus&Grafana: [link](https://github.com/BxNxM/micrOS/#micros-gateway-in-docker)
96
96
  9. Release notes: [link](https://github.com/BxNxM/micrOS/#relese-note)
97
97
 
@@ -487,7 +487,7 @@ Official [DockerHub](https://hub.docker.com/repository/docker/bxnxm/micros-gatew
487
487
  ----------------------------------------
488
488
 
489
489
 
490
- ## FUTURE RELEASE PLANS
490
+ ## FUTURE MAIN RELEASE PLANS
491
491
 
492
492
  Version **3.0.0-0** `micrOS-Autonomous`
493
493
 
@@ -500,14 +500,14 @@ Version **3.0.0-0** `micrOS-Autonomous`
500
500
  - (3) New intercon syntax - command level integration: [DONE]
501
501
  - rgb toggle >>RingLight.local
502
502
  - similar as (obsolete): intercon sendcmd host="RingLight.local" cmd="rgb toggle"
503
- - (4) Create multi level project structure (curret is flat fs) [TODO?] FS
503
+ - (4) Create multi level project structure (curret is flat fs) [TODO] FS
504
504
  - New micrOS FS structure:
505
- - Note:
506
- - On device (boot) micrOS Hooks.py/os_dir_fs_hook (check+correct) [Phase1-FS:TODO]
507
- - DevToolKit USB & OTA feature adaptation [Phase2-FS:TODO]
508
- - os_dir_fs_handler (usb+webrepl) features
509
-
510
- - root fs (stays untouched (approx.: 24)): /
505
+ - Automatic dir creation at bootup: '/logs', '/web', '/data'
506
+ - Automatic sub-dir handling /source and /precompiled
507
+ - Automatic dir creation over USB
508
+
509
+ Structure:
510
+ - [DONE] root fs (stays untouched (approx.: 24)): /
511
511
  - micrOS.py (core)
512
512
  - Config.py (core)
513
513
  - Tasks.py (core)
@@ -517,7 +517,16 @@ Version **3.0.0-0** `micrOS-Autonomous`
517
517
  - node_config,json (core config)
518
518
  - etc... (core)
519
519
 
520
- - module folder - mip complient: /lib
520
+ - [DONE] web folder: /web
521
+ - *.html
522
+ - *.js
523
+ - *.css
524
+ - etc.
525
+
526
+ - [DONE] /logs
527
+ - still there (created runtime)
528
+
529
+ - [TODO] module folder /modules - (mip complient: /modules/lib)
521
530
  - LM_* (approx.: 54)
522
531
  - IO_* (approx.: 5)
523
532
  - *.py/.mpy (driver)
@@ -525,15 +534,7 @@ Version **3.0.0-0** `micrOS-Autonomous`
525
534
  - *.pds (LM app cache - persistent data storage)
526
535
  - *.dat (Common datalogger output)
527
536
 
528
- - web folder: /web
529
- - *.html
530
- - *.js
531
- - *.css
532
-
533
- - /logs
534
- - still there (created runtime)
535
-
536
- - (5) Proper mip installer support (/lib) [TODO]
537
+ - (5) [TODO] Proper mip installer support (/modules or /modules/lib or /web)
537
538
  - Note: Autonomous package management over wifi (github)
538
539
  - pacman download
539
540
  - pacman ls
@@ -33,14 +33,14 @@ micrOS/micropython/esp32s3_spiram_oct-20231005-v1.21.0.bin,sha256=S-sv_QeL_Tylg1
33
33
  micrOS/micropython/esp32s3_spiram_oct-20241129-v1.24.1.bin,sha256=VbOF_F0YeqttkQd2ePTW66Jd34RU8u9ccFfcv8kxO_U,1662672
34
34
  micrOS/micropython/rpi-pico-w-20241129-v1.24.1.uf2,sha256=v4aYIbWaE94_f6DDzBWS-a9L1BzlcdkZwld9R7bOVA4,1727488
35
35
  micrOS/micropython/tinypico-20241129-v1.24.1.bin,sha256=Kf3cr766a5SK99CZy8bwdWjwvAZxls3tBYvaHBsw7ac,1527200
36
- micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json,sha256=_1EqbltzeXgnHjwRQLSD8vx8Ae7f6yRW3fgquQbgzMY,5830
36
+ micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json,sha256=VYTBtPmxAY6msNbOFfGRuDU0ANbxpP6UIEEy8yqwX14,5830
37
37
  micrOS/source/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
38
- micrOS/source/Common.py,sha256=Dm-qvxBBEG6rsrKJb6bv_R1_mstPrXGSwD-ud0U7tnw,14989
39
- micrOS/source/Config.py,sha256=E3OTMRI1_T94GMADcvG7MKiuGsKsnbLn17KXHcjhqXM,8795
40
- micrOS/source/Debug.py,sha256=c3p5r2y7jzIIP8H3dDooW4qknWQ3eY15IKdJpMlBHFo,3273
41
- micrOS/source/Espnow.py,sha256=TbyDr8NpKdW4feiuDN7EhcchyLHdtOKvJ2SVJRvrJy0,10477
42
- micrOS/source/Files.py,sha256=MJmH2AjhweJvJKOZwDv1TpzOUp2HTQdmaWyi5L95lMY,3997
43
- micrOS/source/Hooks.py,sha256=nmIvcRfTk2qP-cgWS_vu2PeZpiXXt6IqS26d5tnqBOc,4804
38
+ micrOS/source/Common.py,sha256=52KJk5I44l4rgaUwGWcJFhl9_QDf_fEOzShwf_rerng,15770
39
+ micrOS/source/Config.py,sha256=7B8Fqq0zq-j8-DETxuC7SQ7fuPXL2J3eK2wf__6yvxI,8767
40
+ micrOS/source/Debug.py,sha256=in2tx6Dw8EqeKYTrJpLxSevpoIrJjxlH17JLrTui1o8,3287
41
+ micrOS/source/Espnow.py,sha256=JEQotluDRJ6YEpkOY1LbOocb5zySVmBfr6aQwlbAMks,10453
42
+ micrOS/source/Files.py,sha256=1n6NZ8kyI3KCgSTCoAihyjxR5ypZGqQVeBe_EXgQHv0,4234
43
+ micrOS/source/Hooks.py,sha256=OyKWLLOJwhEuwPS4SyZS2FIdygcAsIH1iB3bGELdX0k,4784
44
44
  micrOS/source/IO_esp32.py,sha256=9gTrdLiySmoacLvCy-DRAplkSZFzJU-9j54DX6YwB0s,2505
45
45
  micrOS/source/IO_esp32c3.py,sha256=YicJTmnh1sHTioyBAZlKcoO4YSuj6CptUnaEGq8MTNQ,1468
46
46
  micrOS/source/IO_esp32c6.py,sha256=qyUOGAcO6FK-3_k65dOliN7CYpFWyL8CgzLqg7JlYsc,404
@@ -51,8 +51,8 @@ micrOS/source/IO_qtpy.py,sha256=48_McSRDjRjJNazIoJJwC3XHoTxka5VrjI9slH22g1s,2734
51
51
  micrOS/source/IO_rp2.py,sha256=8ISwnkFvlyeQJlrZiX3xABE9_Pu4u8HhYRVpIFvZdro,131
52
52
  micrOS/source/IO_s3matrix.py,sha256=SzmoT9yVkgWP5dsp82_DF-_NAp7Qjkjphhf3I0OQVJA,689
53
53
  micrOS/source/IO_tinypico.py,sha256=1Ow_SfXxQnIxnaQeeS87cAFtaKrvEWs2Erwhe2IyeLE,3598
54
- micrOS/source/InterConnect.py,sha256=wYMoNU3GS1VzLeQfcHTYQ3JGnpXLmTm4GyUm7EmH5Qg,7859
55
- micrOS/source/Interrupts.py,sha256=lbDZcFTWfrjbJur1Q_hGJM1ZDsRRMWmSXREAHFogqLc,7551
54
+ micrOS/source/InterConnect.py,sha256=ZEYNzHmKaVYkkAfesxXSFVFPyBrmaY_JFDAmF4FxXyw,7839
55
+ micrOS/source/Interrupts.py,sha256=kLDsByjoGeEiDk_0yV7iAvsZlKs9uFqPcAKkdNNR6HU,7543
56
56
  micrOS/source/LM_L298N_DCmotor.py,sha256=TsD74hXwfPwmUjHWe6r6wE49nQ82fVygevxwsCasmx8,2426
57
57
  micrOS/source/LM_L9110_DCmotor.py,sha256=sf6TtuXRrfElhm_9rbp4bPjnKGTwO3PnuXVCC5Ob7Us,1847
58
58
  micrOS/source/LM_OV2640.py,sha256=E8zveGtp7GHerY4Chokvd0iREf-qMGXD2nA4YRn9eHo,7975
@@ -62,7 +62,7 @@ micrOS/source/LM_bme280.py,sha256=4v7HtJ3HgbLwpRe-OwKR-D2nTM_PBDyFR8SHInig3Is,12
62
62
  micrOS/source/LM_buzzer.py,sha256=S8pwUZI8OidoATQPVmdvrSiJjPycDYp0gJiMxey7WCQ,12432
63
63
  micrOS/source/LM_cct.py,sha256=D6lGBO4YAU44rt_ymm0rlkbqSH4agaacZXz7Om22Bmk,14207
64
64
  micrOS/source/LM_co2.py,sha256=Eopq9eEPV9W2x5mx5EJGllg09_HFTYiI1hZE2T_PWTY,5460
65
- micrOS/source/LM_dashboard_be.py,sha256=onM7U71CHNOXHdba5t5PLjHbDTZ5VXqjLiQ4su3zcLo,948
65
+ micrOS/source/LM_dashboard_be.py,sha256=KVaJH37TCJkEwZJdGAVKpJtZXyVqYKDupyJO5BXvI0c,966
66
66
  micrOS/source/LM_dht11.py,sha256=pmmtpxnYHApo63WvQXHlgx_z3A86dMSi1Stb9pSRpYY,2010
67
67
  micrOS/source/LM_dht22.py,sha256=QVJ1OidP27LFPGesSSdEUr19QXAwYOcqEWC622k_eIA,2011
68
68
  micrOS/source/LM_dimmer.py,sha256=jmcwuyyNSCeDRNx4GieNld82eaT_K-c6zybcA7bo91k,8398
@@ -80,13 +80,13 @@ micrOS/source/LM_ld2410.py,sha256=dWBsIkI0ryomn0zDrmz5YxaGcoH5TqjAsi2qwGd8UZM,65
80
80
  micrOS/source/LM_light_sensor.py,sha256=xzsPmiLQHx5v8pyNQC0UNXFa76qsV-CqFACY7UZmVKk,4561
81
81
  micrOS/source/LM_mqtt_pro.py,sha256=Vma1efLJ9Z9MrDd0qSrfJdoAxcaPfxdnqNjMIkHoHzY,7847
82
82
  micrOS/source/LM_neoeffects.py,sha256=uX8KPb8ukQtQKoAwbPbxoY8dfkh9bYRfQY6jaWFWs2A,9545
83
- micrOS/source/LM_neomatrix.py,sha256=bJYKolUkSBHLxVxNepwXux5BK84UXK-HmcuQ4As32E0,10088
83
+ micrOS/source/LM_neomatrix.py,sha256=-7vy1MIAIVdxmhuzhj-m9cQJBYrxn6luwMJD1T_3rR8,11223
84
84
  micrOS/source/LM_neopixel.py,sha256=HwyATyAvXSJ1paUn9u-I3etu4A9cCNXwo8cPbKr93iw,13289
85
85
  micrOS/source/LM_oled.py,sha256=ZwLndxWuY1Ii5d06YEf9Z_jxmTyoOYRL-BO3VhJ0b14,9903
86
86
  micrOS/source/LM_oled_sh1106.py,sha256=av2_ftFHvfAIxcPYHbrOMQNZgM1Go6MQzBu5cIeVK4w,11723
87
87
  micrOS/source/LM_oled_ui.py,sha256=svU7_cb_VNqcfbtJbzWLXmA21wldsdVyZ0z9sV2OWK4,22266
88
88
  micrOS/source/LM_oledui.py,sha256=ym502-2eNN_e9qCysBjszrfPYdJek-izf2W2UyF_g1g,35429
89
- micrOS/source/LM_pacman.py,sha256=AwcMMFppb1JqJBBf3m4DBsqWPmOvBZSMkEcO_nMS-aU,7712
89
+ micrOS/source/LM_pacman.py,sha256=LnBPz3H6xP6iMu9AaRUVlmMJQKRJzVp9Uf2z2T8RPtY,7970
90
90
  micrOS/source/LM_pet_feeder.py,sha256=ILrozpnq2_ckkVDUROysMWRksKjflsKpIHvgHdvn-JA,2572
91
91
  micrOS/source/LM_presence.py,sha256=xHB-U_Ywp6F-DEOFlYmjx0QFFQGwKgh8RS77r805YhQ,8830
92
92
  micrOS/source/LM_qmi8658.py,sha256=4OOAUo7NV7G1Rx01l8LK-wGw19GDaAukDjH6vvxt7ds,6303
@@ -108,46 +108,48 @@ micrOS/source/LM_telegram.py,sha256=EdceSUvPN8hWB4oRnr73GMGFVe5_10OLak8jo_tJMcQ,
108
108
  micrOS/source/LM_tinyrgb.py,sha256=kChL607HPTl3Z2hYN2XnzXXfZ6omdP78PQutHdbdfCo,3031
109
109
  micrOS/source/LM_trackball.py,sha256=N2hhy3wuk55-ja4dmENpfthBolIEj28d2pzcjel5OKg,9716
110
110
  micrOS/source/LM_veml7700.py,sha256=3eb6-HuMA_tYBA0cJHUsZzOBriHacIpVSrK-1iB3_pY,5762
111
- micrOS/source/Logger.py,sha256=6kS7eBu6U1GIrbEgkRkAf74rERNwdzT8XFCbazPxino,4179
112
- micrOS/source/Network.py,sha256=wLhAPiRyi376TKJA7tzCQidDBHq-AbZGGp7JabHIyl8,9417
113
- micrOS/source/Notify.py,sha256=jVf7wg7b7ehuh12A8tlYz5ZU00NQEgpVuTK0lN6cNcY,2645
114
- micrOS/source/Scheduler.py,sha256=K6fw807UJnOmbfzgeJQGzGbTL4s2sTIB120ZcS5qrLs,9648
115
- micrOS/source/Server.py,sha256=HMkHWofMmtpTQtKiGy_Gh6R2xHy4Vpud_aT2zhC4l58,16245
116
- micrOS/source/Shell.py,sha256=AVa-wDjFLoaFEZhdPQkahfbGD_udP1Sw2VvamR4bOdw,13172
117
- micrOS/source/Tasks.py,sha256=iA-EQkdI1RpjtZKkdd8h2jR-uiBtFlyGwWnNg_0kB_E,23466
118
- micrOS/source/Time.py,sha256=r8dpj4PXVuYHbzKtVtaRwDZR3xRgpQqFB7gpCVDcz4w,6422
119
- micrOS/source/Types.py,sha256=3O_Vb1jN92RPtvgbV8ui6_iFzDOD-BUzVXlPB7PgmM4,3507
120
- micrOS/source/Web.py,sha256=KxRc6zt_8acAJyL9uv2JW2c27qtzYgi673ob0kxfxpE,8933
121
- micrOS/source/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
122
- micrOS/source/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
111
+ micrOS/source/Logger.py,sha256=9pzkM3jnVY9dzAAt2D0D-ZtkObMe1iB-K4EJM4WHZgU,4187
112
+ micrOS/source/Network.py,sha256=Q1MPfrNMxgCq_1H9W5Wio0DTR_cA4XauqfxTwzCKYTU,9393
113
+ micrOS/source/Notify.py,sha256=5_Sqy2FeBVG6HznC48Rgg812AglGjO8pkDYGSpp5qSg,2637
114
+ micrOS/source/Scheduler.py,sha256=EhOdDQqN4V1G0TD2jU5cmjUjY_g-sU8NwFoUfniBKF0,9628
115
+ micrOS/source/Server.py,sha256=n6T_MGFMIDVxjUwoOieRTuT9C9WxgOar3q-cQ2mHc8s,16221
116
+ micrOS/source/Shell.py,sha256=F3qpD_ZcZjabEl5OHh0pZRuybQ43gwZ1UJqA5No5DEw,13160
117
+ micrOS/source/Tasks.py,sha256=lFKQOo0ePFq4Y6a4OUo40l-5DK-MnISFnOoltXIq6-E,23414
118
+ micrOS/source/Time.py,sha256=8EHp86CAkbGIErGgN-VGAsslUBFIooRGkHB1hUYwwOE,6408
119
+ micrOS/source/Types.py,sha256=Ft_gHokGNa9aQRGSwE3NYIvYZuolT3zfkD5JzhycQ1s,3499
120
+ micrOS/source/Web.py,sha256=OOqbK4OVly82BvfIPPFU5nN_kGdUp5sBmnVLlIhc9QI,9337
123
121
  micrOS/source/main.py,sha256=cVlhoWwU9dSKEol0HWPihFAPzrUUvzSGwZNNMrpyfSY,440
124
- micrOS/source/micrOS.py,sha256=-7VDoZ5jb7uLPdZVt1T2Hvj0ccx0ZVegm7kzajgKow8,2638
125
- micrOS/source/micrOSloader.py,sha256=IgiQgUm97raQB0yHxUjQtvXSjsCdA_1OwSkRwwNLDzU,4794
122
+ micrOS/source/micrOS.py,sha256=E0n0WbyDnDwnryJpLhFqNfWWg833CIcHJx15u16A5pA,2618
123
+ micrOS/source/micrOSloader.py,sha256=T6A5NlE1HrrywNarA8k2_1IHX3WsiJzt1rl6NIqWQmI,4770
126
124
  micrOS/source/microIO.py,sha256=mVZX7VSa5IuI-9tqsMmtVs84PHWxXB0c6-NP8rin8ME,7072
127
125
  micrOS/source/reset.py,sha256=i7wsPkOXE7Mm0xOiw1CjqCvCdNjBvYswn9CRDvE2VbE,248
128
- micrOS/source/uapi.js,sha256=fZ0E9-ZndCoUNQq1yJ7yUCiLYxe3p8hzSFnlN2R9roc,2959
129
- micrOS/source/udashboard.js,sha256=42mPR_NU3jOqUgLi7yZv2L7bN6uGqw9LpScDrGGF58c,4581
130
- micrOS/source/urequests.py,sha256=8vNxp_pkd_OlSrimg83FiQW0Y-t7j1UkC8If1VI_qJg,9472
131
- micrOS/source/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
132
- micrOS/source/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
133
- micrOS/source/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
134
- micrOS/source/__pycache__/Common.cpython-312.pyc,sha256=3CmUZ65pLZNLikBYIUmluqFlhw4lccFcJLK_mmtfWHg,17936
135
- micrOS/source/__pycache__/Logger.cpython-312.pyc,sha256=fzn5oPALFwERNONqskEzYnLPWA96r70Q7vnrwgxJB5c,5824
136
- micrOS/source/__pycache__/Server.cpython-312.pyc,sha256=xy1ImeXPtGhtYlAWpuWaxLmJO2nLVGdefOuqltABR9k,20615
137
- microsdevtoolkit-2.11.0.data/scripts/devToolKit.py,sha256=4GutIOErF1ny0HSNWQZzEneZdUWhSdqKPBjpRFTr5do,11192
138
- microsdevtoolkit-2.11.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
139
- toolkit/DevEnvCompile.py,sha256=H19-60ZpHzP30C-wqR5QTzMDHHpWrTk0Uzh--TZHxvw,12148
140
- toolkit/DevEnvOTA.py,sha256=vNa827MOhbNQbeMGGu72YmGlNN_Tm9D6Trdnz3YGpyU,25499
141
- toolkit/DevEnvUSB.py,sha256=5CDmYgZCVmfI_XF_6vEnTdVNFi51dnqYIo_e1_vdPFI,34472
126
+ micrOS/source/urequests.py,sha256=SrzOgo8UF9YncjfeItM9-xqUr5xEoUt1kOcPxisn6uw,9456
127
+ micrOS/source/__pycache__/Common.cpython-312.pyc,sha256=lSKK3LRkQw2IErwFklsGAGgLg50ImGhOZPh4Kaj1U0Y,18709
128
+ micrOS/source/__pycache__/Debug.cpython-312.pyc,sha256=mpOPlK6qEb2Xd2j3PmXXV6jYA4R1MFUtNMgCKa9q2Qs,3932
129
+ micrOS/source/__pycache__/Logger.cpython-312.pyc,sha256=tMZc0YW0kMl491vc1d0-Xk3obiMLVQilRWKj9Q2XciU,5831
130
+ micrOS/source/__pycache__/Server.cpython-312.pyc,sha256=EqG916wr2Do4_v5KrvQBCCa_XWMjMJfDFCueAUiSyAE,20609
131
+ micrOS/source/web/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
132
+ micrOS/source/web/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
133
+ micrOS/source/web/uapi.js,sha256=fZ0E9-ZndCoUNQq1yJ7yUCiLYxe3p8hzSFnlN2R9roc,2959
134
+ micrOS/source/web/udashboard.js,sha256=42mPR_NU3jOqUgLi7yZv2L7bN6uGqw9LpScDrGGF58c,4581
135
+ micrOS/source/web/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
136
+ micrOS/source/web/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
137
+ micrOS/source/web/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
138
+ microsdevtoolkit-2.13.0.data/scripts/devToolKit.py,sha256=4GutIOErF1ny0HSNWQZzEneZdUWhSdqKPBjpRFTr5do,11192
139
+ microsdevtoolkit-2.13.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
140
+ toolkit/DevEnvCompile.py,sha256=iuVHMlYX4QW2Uv6jRTCSmiAiSHy1PIWUGK1GrLiPy2U,12585
141
+ toolkit/DevEnvOTA.py,sha256=KpkOFYlF-8Gpt5lBORGGUEsLBOOh_ZtSlZqTBX5HYNk,26600
142
+ toolkit/DevEnvUSB.py,sha256=IdBdNicMqLKvsD4DeBuJhNpxcSDs78wuaIHrwGhtpIE,36305
142
143
  toolkit/Gateway.py,sha256=AzZydQMVOBNGyWUtEm5Rja0m47F1AU10YSQll7_2QkQ,25335
143
144
  toolkit/LM_to_compile.dat,sha256=lGUqew1XoC1mKeyGCxvqJdgx7bhU2_bt0MyPsI818WM,595
144
- toolkit/MicrOSDevEnv.py,sha256=xMsfbImyPAkiRh8wz1EYyWSWX8FvJIrGjwjjRC3q7d8,13562
145
+ toolkit/MicrOSDevEnv.py,sha256=uFvdZDkhl21rMyB4pwZG5FPE8U3xZ4WuRsQIiLeITSc,13985
146
+ toolkit/MicrosFiles.py,sha256=MXbbGExruLe5WH5z9ob7uDmveohvDqy9JEJ8MuyP7TE,1179
145
147
  toolkit/WebRepl.py,sha256=805SJGoflJztyFR4DFxP80KVvNEeJfqZxlYeA3uD680,2696
146
148
  toolkit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
149
  toolkit/img_stream.html,sha256=ZGyrUgpi-JhMl4euS-TTjwwGrg66a2pGUQCopWiveds,5135
148
150
  toolkit/index.html,sha256=agTgT1d4FH8l2h47Hfb4Lv061BW9shsCAgq1abO5hlI,10998
149
151
  toolkit/micrOSdashboard.py,sha256=SOBzGU1b-NIn40GMd2gE01Fuo8HZP5d1XyVG24RkPeA,54433
150
- toolkit/micrOSlint.py,sha256=HEv6q32Iy5FHx3tn_yA-iMJEeElOVNJIVN51sshv1go,25142
152
+ toolkit/micrOSlint.py,sha256=7WPaNz4t_n_Ejc80wjgdfJdMPlW-kBv1cvnw0XT7YLA,25296
151
153
  toolkit/socketClient.py,sha256=cVXTO_EVYOwxHJhHuTG2Nrx6q9RDZoPyPocSFBU9MyM,18608
152
154
  toolkit/dashboard_apps/BackupRestore.py,sha256=udhuFpCawO0mwyiN4vFMfV8wONqHnUjYvL0udJzkq44,5897
153
155
  toolkit/dashboard_apps/CCTDemo.py,sha256=oV7k6sxepOxEa7tBNcuK5IHgKnv01sIQRPvUljic8NI,1125
@@ -174,14 +176,14 @@ toolkit/dashboard_apps/_gyro_visualizer.py,sha256=9CD8viBnBBYDxxm7ZRf_qngWzSjVfV
174
176
  toolkit/dashboard_apps/_micPlotting.py,sha256=zYXhyYKyyA_13ZQybccO4a6t8uyaFJNxlhZfUD6nE90,6394
175
177
  toolkit/dashboard_apps/_presencePlotting.py,sha256=cHWR_4YqbNLB6d4mmHjGCYb3Dg5rqWIyu2lpnz0l-Hs,3737
176
178
  toolkit/dashboard_apps/uLightDemo.py,sha256=Q8PL56coysM71qV9SCU05yTyCsAMhtzDSjVeg_CkBtc,3163
177
- toolkit/lib/LocalMachine.py,sha256=m5xaWRx1PumKFLQ5_O8vVxC4NTclF1h9J3__pK8N-C4,18734
179
+ toolkit/lib/LocalMachine.py,sha256=9QyqBlSyXz7vBAsWIatVlp5b-vxLWBzQYCgcnOd4EJY,18918
178
180
  toolkit/lib/Repository.py,sha256=DVoS67rCJzHtJvPTZt-r4Gkmt28ZuC7UYdSAuczsPs0,2440
179
181
  toolkit/lib/SafeInput.py,sha256=gMXsMalPcFCwlN6niJlG2twOHfoGsEgHL9-Uh2YQJHE,855
180
182
  toolkit/lib/SearchDevices.py,sha256=1nnJDwo_U5cCN2xsdNUT6EQqdt2fW-qAWXWzyzXzyyc,5813
181
183
  toolkit/lib/SerialDriverHandler.py,sha256=Zn0zeq4mshTMVc6fzycvrOZiKt6w6YOxJcTWw3BMN2M,7344
182
184
  toolkit/lib/TerminalColors.py,sha256=Ly_8o9-eBmka1dqA2M3DBlcd1zvCCO2K_BnQ1XbqxcE,947
183
185
  toolkit/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
- toolkit/lib/file_extensions.py,sha256=0DpayBGjKQg7y2ZGJXf5wVPnre_4C5j-7YIViNGvYz4,372
186
+ toolkit/lib/file_extensions.py,sha256=y-s8nayeo3fDtp6sEdxPh3dYpSRv27Kck-ru_UXdyl4,577
185
187
  toolkit/lib/macroScript.py,sha256=DQR8cFoks7fa0dgRUfGhTpEdUJWNQ1vikRoqukRKx14,14014
186
188
  toolkit/lib/micrOSClient.py,sha256=q1zN3nqW9t36sHqYt0fKsP61tPSC-u21-7WYqbJcO0Q,19346
187
189
  toolkit/lib/micrOSClientHistory.py,sha256=EyCqbFeMy940bfXq4Yfu8dcvb7GnBvuHHxOAIgmW1FQ,4736
@@ -280,12 +282,13 @@ toolkit/user_data/webhooks/macro.py,sha256=r1TnOP4Bq-G3XQGwcV0FHcvlzwVaojUrrhbtp
280
282
  toolkit/user_data/webhooks/template.macro,sha256=XikSl3FsD6W9pUx3sqavM5tWIMBquFx9f3bh_CB8k-A,631
281
283
  toolkit/user_data/webhooks/template.py,sha256=UhyXmETAEr-VQutY9ME4gAb-4qi7qVfZ0NjSU1inn-E,342
282
284
  toolkit/workspace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
- toolkit/workspace/precompiled/Common.mpy,sha256=Gybppq_60ItFjqUzD6JgNX3CM0bxw3rjvD0Cp3YtCtc,3785
284
- toolkit/workspace/precompiled/Config.mpy,sha256=A9ew69drKFA0SbfIvuTdeaXZQSvmwX0gDlnQa_8i-IE,3082
285
- toolkit/workspace/precompiled/Debug.mpy,sha256=KSNdiqCTNX00vagioz0fGYMjOlNNaneLaOD3BFxOa6E,1036
286
- toolkit/workspace/precompiled/Espnow.mpy,sha256=PckcFPOSZxIYE1GEZlVMzy0mxhiZHEzVFKzab2_d7sg,3332
287
- toolkit/workspace/precompiled/Files.mpy,sha256=J2xCbA3vczuM2UfFg8x-shEQc8VJNd2rPfvHokXvlk4,1257
288
- toolkit/workspace/precompiled/Hooks.mpy,sha256=1nwwgbRtQ88OMrYazUF10SExSXHI7IcHmbXnk1uRPIs,2115
285
+ toolkit/workspace/precompiled/Common.cpython-312.pyc,sha256=O34iPUCRLx6lonuJal2cczNHgs3B_dzdaRJYj00LxFU,18375
286
+ toolkit/workspace/precompiled/Common.mpy,sha256=iAxEFjRmIJmMYr-F3vPvRDv-pOXosn94bbpGZivIk-I,3919
287
+ toolkit/workspace/precompiled/Config.mpy,sha256=TNY8RhgOCuCmesSCa_6otN14d-8i0VWdddOJzPgEe-A,3078
288
+ toolkit/workspace/precompiled/Debug.mpy,sha256=BJqoH4QdOmeybdUxUlhNu6ApHo4KTraJ5F_winmwOm0,1039
289
+ toolkit/workspace/precompiled/Espnow.mpy,sha256=oNKNC01gozteaxs8acFD6Pgx7Fvf21FQWloCh4yGsjA,3328
290
+ toolkit/workspace/precompiled/Files.mpy,sha256=M8sg06NfGo7U5qn0BmaZW4cmzxf1_y1mLmZ8MDZLML4,1315
291
+ toolkit/workspace/precompiled/Hooks.mpy,sha256=VWrc3hqHrz6rqR4VF19vqKOkQmQZodlKwXjg2K_ed4E,2111
289
292
  toolkit/workspace/precompiled/IO_esp32.mpy,sha256=ojJXxhRX6V8ubT1cFXpYlhHB1NplNrT2bTi247CXFrc,661
290
293
  toolkit/workspace/precompiled/IO_esp32c3.mpy,sha256=VFbiQWpnefXO5LirEb_Nfz1286UeAbvcmE3Z8_vupTs,403
291
294
  toolkit/workspace/precompiled/IO_esp32c6.mpy,sha256=tBg_yQ2nDfRRuB5mwTyki2zQ-fbX2MYLFuycQPke86Y,126
@@ -296,8 +299,8 @@ toolkit/workspace/precompiled/IO_qtpy.mpy,sha256=Uqt3dDfkunc_g0rWQbFOVlEvj3zPfTM
296
299
  toolkit/workspace/precompiled/IO_rp2.mpy,sha256=eODuSmUmahkSp__Fb3j0M6dJdhhnC5Xq3agOMFo5pwk,60
297
300
  toolkit/workspace/precompiled/IO_s3matrix.mpy,sha256=Tv3GrXvq0Ws2knE7LLw_rvJZ5O_B9EvieXVGyHEw02Y,137
298
301
  toolkit/workspace/precompiled/IO_tinypico.mpy,sha256=umh6yfkgSkbDQiHaO2fqajh5e3zMdgMdzdMRiodvJUw,1172
299
- toolkit/workspace/precompiled/InterConnect.mpy,sha256=kvjpZZ4DYu-BAX2aK-Kuby-iTB9gh58CYG5HP4bTyCU,2362
300
- toolkit/workspace/precompiled/Interrupts.mpy,sha256=5lOWBB8qoF3YIOzNem4_9W-NWxCZsSbtGTusfUsql2E,2132
302
+ toolkit/workspace/precompiled/InterConnect.mpy,sha256=KMlKFZHhF-7SlRe_GcFnydQQuSduDEGJtgHYhhOvLFI,2358
303
+ toolkit/workspace/precompiled/Interrupts.mpy,sha256=0p3Bpx1C7wXWHz9jLM-eqFD0X9wuT6eKzaOdmzpkVBE,2128
301
304
  toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy,sha256=1QPhQTw3YijVSh0pkaxCfEAjb1M5FAafyGe_J7xLUJM,878
302
305
  toolkit/workspace/precompiled/LM_L9110_DCmotor.py,sha256=sf6TtuXRrfElhm_9rbp4bPjnKGTwO3PnuXVCC5Ob7Us,1847
303
306
  toolkit/workspace/precompiled/LM_OV2640.mpy,sha256=3SByx8NYfYnkqRoeUR_wNW4MYiaihv2recwY9SJQBqs,3141
@@ -307,7 +310,7 @@ toolkit/workspace/precompiled/LM_bme280.mpy,sha256=39kpqYdUAbcOGYlwb93sliRqhhmlf
307
310
  toolkit/workspace/precompiled/LM_buzzer.mpy,sha256=E9Jm07cveFmYJ6R5CNR9K3Y1fEEvV9vqfDJftEMyndw,5982
308
311
  toolkit/workspace/precompiled/LM_cct.mpy,sha256=eirqB1haNT3Nps4Q3ypoASKs1m83aWMPBU1nb22kahU,3899
309
312
  toolkit/workspace/precompiled/LM_co2.mpy,sha256=7O65X04ZNSxt-wWrYY-3olGu9mOPa5DD3bBSqV9jArs,1479
310
- toolkit/workspace/precompiled/LM_dashboard_be.py,sha256=onM7U71CHNOXHdba5t5PLjHbDTZ5VXqjLiQ4su3zcLo,948
313
+ toolkit/workspace/precompiled/LM_dashboard_be.py,sha256=KVaJH37TCJkEwZJdGAVKpJtZXyVqYKDupyJO5BXvI0c,966
311
314
  toolkit/workspace/precompiled/LM_dht11.mpy,sha256=0WcQyM2V7fzfOGdYEci7nUHIYopgwfvgo3lTnN8wrlU,737
312
315
  toolkit/workspace/precompiled/LM_dht22.mpy,sha256=Z6O2qZrQq993SV5DBKNN9bcPmInspJGl2Kil6o7ipuA,737
313
316
  toolkit/workspace/precompiled/LM_dimmer.mpy,sha256=0qmQuVCTjhZZBTboogT1bVQc-Fj5U7qzINtT0BcD4kE,2435
@@ -325,13 +328,13 @@ toolkit/workspace/precompiled/LM_ld2410.mpy,sha256=H7XHzLPkpyE-pRFZqBKn6M-Y5RtpN
325
328
  toolkit/workspace/precompiled/LM_light_sensor.mpy,sha256=FQsOIOaioYpzBETO_2EM5NrOGGR15_-C44Fd5uz14eM,1538
326
329
  toolkit/workspace/precompiled/LM_mqtt_pro.py,sha256=Vma1efLJ9Z9MrDd0qSrfJdoAxcaPfxdnqNjMIkHoHzY,7847
327
330
  toolkit/workspace/precompiled/LM_neoeffects.mpy,sha256=4W0b30EAghC_GwEp88IyqpJnGY0QA79oN-0exMVG0Lo,3070
328
- toolkit/workspace/precompiled/LM_neomatrix.mpy,sha256=EAmzpkS4qr1-xDbZjdvV4B0rRMkKE4_h1vTWpmdAjSM,3470
331
+ toolkit/workspace/precompiled/LM_neomatrix.mpy,sha256=CdZkJR_wPESxHnpyaDx74nGmBDG888e4P64aiKEgz7Y,3782
329
332
  toolkit/workspace/precompiled/LM_neopixel.mpy,sha256=f4kxpR_svm2Ec0EMJyNsUce_IzEqV12bvQ77N0CLE6k,3690
330
333
  toolkit/workspace/precompiled/LM_oled.mpy,sha256=KQj4jfLwlmx2dT_GWbFzZE6FlMRPUgJvri5XbnSIod0,3154
331
334
  toolkit/workspace/precompiled/LM_oled_sh1106.mpy,sha256=0cQpu1MPkrPxvd1Fvln9c9lq9qPV6oi8iGNTZM4YbIY,3761
332
335
  toolkit/workspace/precompiled/LM_oled_ui.mpy,sha256=67hlB6dtu9YBe2Yz4E9Xz1RUOclbFeG4qzWP4Co6f-I,7047
333
336
  toolkit/workspace/precompiled/LM_oledui.mpy,sha256=T7Fy0o_8H6h7oiVRYK43BuVb-RKZOyeJGUvHzeWHorQ,11562
334
- toolkit/workspace/precompiled/LM_pacman.mpy,sha256=udekdjMF803YAjPpLgpGehXIMgdWbg15Z-zCT2d2j5I,3136
337
+ toolkit/workspace/precompiled/LM_pacman.mpy,sha256=GVzAhnfCpCB3Q8xKyMPxaRKkQ-T378y7a64KWDy5PUM,3285
335
338
  toolkit/workspace/precompiled/LM_pet_feeder.py,sha256=ILrozpnq2_ckkVDUROysMWRksKjflsKpIHvgHdvn-JA,2572
336
339
  toolkit/workspace/precompiled/LM_presence.mpy,sha256=vcu_qUj6oU-Cp_jepQRio3BxPe0SQFTBYkJex9JCcDM,2754
337
340
  toolkit/workspace/precompiled/LM_qmi8658.py,sha256=4OOAUo7NV7G1Rx01l8LK-wGw19GDaAukDjH6vvxt7ds,6303
@@ -353,31 +356,33 @@ toolkit/workspace/precompiled/LM_telegram.mpy,sha256=MNXSYXip7iEdxQz_Vgn2TU24yvG
353
356
  toolkit/workspace/precompiled/LM_tinyrgb.mpy,sha256=qWR-e8DXuzmstxQlyic0YjwFaGiBBBWpf57Wyn1jjFc,1016
354
357
  toolkit/workspace/precompiled/LM_trackball.mpy,sha256=eDVf55dNJXd0Mzg1MZH0talUloPEGFNccE08vwbgn0g,3471
355
358
  toolkit/workspace/precompiled/LM_veml7700.mpy,sha256=NxOvdbrqyyhhwjm2d2dfrJK0dTK3NiP5kQ5GDXjXgq0,1953
356
- toolkit/workspace/precompiled/Logger.mpy,sha256=OQvBNzzCucclCyeFu7d3G3OwzLEJWUdlw8lHKD0FrQA,1456
357
- toolkit/workspace/precompiled/Network.mpy,sha256=WtpvhGB2bvEe94dAHV40fpEyk-Fi0D6vL1q_m6k4qBg,3274
358
- toolkit/workspace/precompiled/Notify.mpy,sha256=ioeDVMh9qBtACWQMASrrhGkSfp1KKUN6d2rt0NpbClo,974
359
- toolkit/workspace/precompiled/Scheduler.mpy,sha256=ctCj7FfXj5TchPPxe_9dmnTXWN88egtbAnmJ0N9u_1w,2202
360
- toolkit/workspace/precompiled/Server.mpy,sha256=dtSXLYpBcdz0DveB_S6nos46h-m6hwlQ-38G-iVQwKQ,4762
361
- toolkit/workspace/precompiled/Shell.mpy,sha256=qmQ4Jqjch-RpU14iWBlnJ81c_D3Vj9chtkJ3GAjRTq8,4753
362
- toolkit/workspace/precompiled/Tasks.mpy,sha256=OStO-SBp9RLTynrbUueSVeOD370GQ8BJl0nx661gItk,6496
363
- toolkit/workspace/precompiled/Time.mpy,sha256=9bnYlYIG2ItjgSsEyBwwQ1Y3Eu-Eg_ikmYLkLSrPJ-Y,2855
364
- toolkit/workspace/precompiled/Types.mpy,sha256=LssRbPgvsWuR4d2m3R7VMIvsnkVp9nN0ltwaY2wGop8,1401
365
- toolkit/workspace/precompiled/Web.mpy,sha256=-YbLZ4LeJtsXY1o2a2V7e3JBlqi9XldMxQjnbl_ps-g,3133
359
+ toolkit/workspace/precompiled/Logger.cpython-312.pyc,sha256=fzn5oPALFwERNONqskEzYnLPWA96r70Q7vnrwgxJB5c,5824
360
+ toolkit/workspace/precompiled/Logger.mpy,sha256=zWAdIjqctrp26HG47MSeRRecI0UUyuoOepTL51kNLe8,1463
361
+ toolkit/workspace/precompiled/Network.mpy,sha256=i9bHJ6XNyCF-5k4ezTbE8ve3GOgvfurQmsKHX9xHeEQ,3270
362
+ toolkit/workspace/precompiled/Notify.mpy,sha256=i8LNNynvNxi-tA5QT0pQJ8NJ_DNxJNW4NTZRD6gGS7M,970
363
+ toolkit/workspace/precompiled/Scheduler.mpy,sha256=S-ZS1N420Xew74F_90O4FvFvrvmRTMiCh-C8szrdhfI,2198
364
+ toolkit/workspace/precompiled/Server.cpython-312.pyc,sha256=xy1ImeXPtGhtYlAWpuWaxLmJO2nLVGdefOuqltABR9k,20615
365
+ toolkit/workspace/precompiled/Server.mpy,sha256=hw5psE2THrJcXG8SAIdYvfR5g8-X6CaA2XGKt3Hps4Q,4758
366
+ toolkit/workspace/precompiled/Shell.mpy,sha256=bUQM_5_IrCwJBmx76qCWnbOZWUYdPS6Ms6Wil-Y1u24,4749
367
+ toolkit/workspace/precompiled/Tasks.mpy,sha256=QfqL7yIOgG0kTdu56WQ5GwyGvjU_hzfVzz8vUD3ZE4I,6492
368
+ toolkit/workspace/precompiled/Time.mpy,sha256=3thC6iKW4UJdjNP-Jo1Ol0Zn-e4oy2H1wiIz7SH182E,2865
369
+ toolkit/workspace/precompiled/Types.mpy,sha256=5QGhswa0jWAU1Ywpyl_92miQg4qDHReXLqq3iHBwUCs,1397
370
+ toolkit/workspace/precompiled/Web.mpy,sha256=osxdfwxWUOLwlwy5UL5OCJQHC188IAzN3lXor3wIOKg,3289
366
371
  toolkit/workspace/precompiled/_mpy.version,sha256=Kik-fvRGfWAmpEjKdJLq7nPOqYR_jVgB0aiXZ8LMvMA,6
367
- toolkit/workspace/precompiled/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
368
- toolkit/workspace/precompiled/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
369
372
  toolkit/workspace/precompiled/main.py,sha256=cVlhoWwU9dSKEol0HWPihFAPzrUUvzSGwZNNMrpyfSY,440
370
- toolkit/workspace/precompiled/micrOS.mpy,sha256=bb9H2TrvSPL7fbvxo5hV5Y1hgd9iS4tUarWOPWdFRy4,1167
371
- toolkit/workspace/precompiled/micrOSloader.mpy,sha256=Gcznp2z2Zv4N4dHv7PE7d6bNSQPTdvHLeStCCHGNuEg,1747
373
+ toolkit/workspace/precompiled/micrOS.mpy,sha256=JTw8ViSD_r0rzf5B_mMCctolygRcR0sJAK72Iwd4ou8,1163
374
+ toolkit/workspace/precompiled/micrOSloader.mpy,sha256=Pv0J0pyjh6YrZ-5EqJMe5tEvq-zpksgFiPR63ADedTE,1743
372
375
  toolkit/workspace/precompiled/microIO.mpy,sha256=PPYinW33pDAm97GeBVRLHicotbypzNAsV4TV7MBbD6A,1695
373
376
  toolkit/workspace/precompiled/reset.mpy,sha256=D-ZwUk-oR8OAg5ERWJXErdPAGbx_3M13hK4IBawhIg0,217
374
- toolkit/workspace/precompiled/uapi.js,sha256=fZ0E9-ZndCoUNQq1yJ7yUCiLYxe3p8hzSFnlN2R9roc,2959
375
- toolkit/workspace/precompiled/udashboard.js,sha256=42mPR_NU3jOqUgLi7yZv2L7bN6uGqw9LpScDrGGF58c,4581
376
- toolkit/workspace/precompiled/urequests.mpy,sha256=ZMXbz4uwU7h2_1TKFoyLa1CFC7ZRFuDowAtEwt4rtdU,2520
377
- toolkit/workspace/precompiled/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
378
- toolkit/workspace/precompiled/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
379
- toolkit/workspace/precompiled/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
380
- microsdevtoolkit-2.11.0.dist-info/METADATA,sha256=XhO0bRCmGAZ2zLLffxSEhQfn6Ndtm9tXsxEc_tGvBbU,55473
381
- microsdevtoolkit-2.11.0.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
382
- microsdevtoolkit-2.11.0.dist-info/top_level.txt,sha256=rOGOIXqLBdGZAoDTiLdZ9B_leFB7bMv7YabLwuIc2bc,25
383
- microsdevtoolkit-2.11.0.dist-info/RECORD,,
377
+ toolkit/workspace/precompiled/urequests.mpy,sha256=tG4ttpfHPkyNk5vvbXDHKZm8zYPNEw1NYE0Ltnrjca8,2516
378
+ toolkit/workspace/precompiled/web/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
379
+ toolkit/workspace/precompiled/web/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
380
+ toolkit/workspace/precompiled/web/uapi.js,sha256=fZ0E9-ZndCoUNQq1yJ7yUCiLYxe3p8hzSFnlN2R9roc,2959
381
+ toolkit/workspace/precompiled/web/udashboard.js,sha256=42mPR_NU3jOqUgLi7yZv2L7bN6uGqw9LpScDrGGF58c,4581
382
+ toolkit/workspace/precompiled/web/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
383
+ toolkit/workspace/precompiled/web/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
384
+ toolkit/workspace/precompiled/web/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
385
+ microsdevtoolkit-2.13.0.dist-info/METADATA,sha256=7GYMONlg0TSgl4H4UROHez0qBJWSghHMjqt_uxUtleE,55494
386
+ microsdevtoolkit-2.13.0.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
387
+ microsdevtoolkit-2.13.0.dist-info/top_level.txt,sha256=rOGOIXqLBdGZAoDTiLdZ9B_leFB7bMv7YabLwuIc2bc,25
388
+ microsdevtoolkit-2.13.0.dist-info/RECORD,,
toolkit/DevEnvCompile.py CHANGED
@@ -133,12 +133,13 @@ class Compile:
133
133
 
134
134
  def __cleanup_precompiled_dir(self):
135
135
  self.console("Delete precompiled components: {}".format(self.precompiled_micrOS_dir_path))
136
- for source in [pysource for pysource in LocalMachine.FileHandler.list_dir(self.precompiled_micrOS_dir_path)
137
- if check_all_extensions(pysource)]:
136
+ for source in LocalMachine.FileHandler.list_dir(self.precompiled_micrOS_dir_path):
138
137
  to_remove_path = os.path.join(self.precompiled_micrOS_dir_path, source)
139
- self.console("\t|-remove: {}".format(to_remove_path), state='imp')
140
- if not self.dry_run:
141
- LocalMachine.FileHandler.remove(to_remove_path)
138
+ if check_all_extensions(source) or LocalMachine.FileHandler.path_is_exists(to_remove_path)[1] == "d":
139
+ self.console("\t|-remove: {}".format(to_remove_path), state='imp')
140
+ if not self.dry_run:
141
+ if not LocalMachine.FileHandler.remove(to_remove_path):
142
+ self.console(f"\t\t|-ERROR: Failed to remove {to_remove_path}", state="err")
142
143
 
143
144
  def get_micros_version_from_repo(self):
144
145
  # Get repo version
@@ -235,17 +236,21 @@ class Compile:
235
236
  workdir_handler = LocalMachine.SimplePopPushd()
236
237
  workdir_handler.pushd(self.micrOS_dir_path)
237
238
 
238
- self.console("COPY additional resources")
239
- # Filter component source
240
- for source in [pysource for pysource in LocalMachine.FileHandler.list_dir(self.micrOS_dir_path) if
241
- check_web_extensions(pysource)]:
239
+ self.console("COPY additional resources...", state="ok")
240
+ for source in LocalMachine.FileHandler.list_dir(self.micrOS_dir_path):
242
241
  source_path = os.path.join(self.micrOS_dir_path, source)
243
- if self.dry_run:
244
- state = True
245
- else:
246
- state = LocalMachine.FileHandler.copy(source_path, self.precompiled_micrOS_dir_path)
247
- if not state:
248
- self.console("Copy error", state='err')
242
+ # COPY DIRECTORY RESOURCES (/web)
243
+ if (LocalMachine.FileHandler.path_is_exists(source_path)[1] == 'd' and
244
+ not (source.startswith("_") or source.startswith("."))):
245
+ if self.dry_run:
246
+ state = True
247
+ else:
248
+ target_dir = os.path.join(self.precompiled_micrOS_dir_path, source)
249
+ self.console(f"|- COPY DIR: {source_path} -> {target_dir}", state="ok")
250
+ state = LocalMachine.FileHandler.copy(source_path, target_dir)
251
+ if not state:
252
+ self.console("Copy error", state='err')
253
+
249
254
  workdir_handler.popd()
250
255
 
251
256
 
toolkit/DevEnvOTA.py CHANGED
@@ -5,22 +5,26 @@ MYPATH = os.path.dirname(__file__)
5
5
  print("Module [DevEnvOTA] path: {} __package__: {} __name__: {} __file__: {}".format(
6
6
  sys.path[0], __package__, __name__, MYPATH))
7
7
 
8
+ from pprint import pprint
9
+
8
10
  try:
9
11
  from .DevEnvCompile import Compile
10
12
  from . import socketClient
11
13
  from .lib import LocalMachine
12
14
  from .lib.TerminalColors import Colors
13
15
  from .lib.SafeInput import input_with_timeout
14
- from .lib.file_extensions import check_all_extensions
16
+ from .lib.file_extensions import check_all_extensions, check_web_extensions, check_python_extensions
15
17
  from .lib.Repository import git_clone_archive, git_clone
18
+ from .MicrosFiles import micros_resource_list
16
19
  except Exception as e:
17
20
  print("Import warning __name__:{}: {}".format(__name__, e))
18
21
  from DevEnvCompile import Compile
19
22
  from lib import LocalMachine
20
23
  from lib.TerminalColors import Colors
21
24
  from lib.SafeInput import input_with_timeout
22
- from lib.file_extensions import check_all_extensions
25
+ from lib.file_extensions import check_all_extensions, check_web_extensions, check_python_extensions
23
26
  from lib.Repository import git_clone_archive, git_clone
27
+ from MicrosFiles import micros_resource_list
24
28
 
25
29
  sys.path.append(MYPATH)
26
30
  import socketClient
@@ -241,9 +245,9 @@ class OTA(Compile):
241
245
  self.console(" loader update: {}".format(force_mode), state='OK')
242
246
 
243
247
  # Parse files from precompiled dir
244
- resource_list_to_upload = [os.path.join(self.precompiled_micrOS_dir_path, pysource) for pysource in
245
- LocalMachine.FileHandler.list_dir(self.precompiled_micrOS_dir_path)
246
- if check_all_extensions(pysource)]
248
+ resource_list_to_upload, dir_list_to_create = micros_resource_list(self.precompiled_micrOS_dir_path)
249
+ # LIMITATION: WEBREPL Cannot create directories with remote command...
250
+
247
251
  # Apply upload settings on parsed resources
248
252
  for index, source in enumerate(resource_list_to_upload):
249
253
  source_name = os.path.basename(source)
@@ -268,7 +272,8 @@ class OTA(Compile):
268
272
  # Add source to upload
269
273
  upload_path_list.append(source)
270
274
  # Upload files / sources
271
- return self.ota_webrepl_update_core(device, upload_path_list=upload_path_list, ota_password=webrepl_password)
275
+ return self.ota_webrepl_update_core(device, upload_path_list=upload_path_list,
276
+ ota_password=webrepl_password, upload_root_dir=self.precompiled_micrOS_dir_path)
272
277
 
273
278
  def _enable_micros_ota_update_via_webrepl(self, device=None, ota_password=None):
274
279
  # Get specific device from device list
@@ -401,7 +406,8 @@ class OTA(Compile):
401
406
  print(f"[SIM] 'OTA' COPY FILES... {source} -> {target}")
402
407
  LocalMachine.FileHandler().copy(source, target)
403
408
 
404
- def ota_webrepl_update_core(self, device=None, upload_path_list=[], ota_password='ADmin123', force_lm=False):
409
+ def ota_webrepl_update_core(self, device=None, upload_path_list=None, ota_password='ADmin123',
410
+ force_lm=False, upload_root_dir=None):
405
411
  """
406
412
  Generic file uploader for micrOS - over webrepl
407
413
  info: https://techoverflow.net/2020/02/22/how-to-upload-files-to-micropython-using-webrepl-using-webrepl_cli-py/
@@ -410,7 +416,11 @@ class OTA(Compile):
410
416
  upload_path_list: file path list to upload
411
417
  ota_password - accessing webrepl to upload files
412
418
  force_lm - use prefix as 'LM_' for every file - for user file upload / GUI drag n drop
419
+ upload_root_dir - root directory to upload files (subdir support)
413
420
  """
421
+ if upload_path_list is None:
422
+ upload_path_list = []
423
+
414
424
  if device[0] == "__simulator__":
415
425
  OTA.sim_ota_update(upload_path_list, force_lm)
416
426
  return
@@ -457,7 +467,18 @@ class OTA(Compile):
457
467
  # Copy retry mechanism
458
468
  exitcode = -1
459
469
  source_name = os.path.basename(source)
460
- source_name_target = source_name
470
+ if upload_root_dir is None:
471
+ # Drag-n-Drop file upload file type check and folder adjustment
472
+ if check_web_extensions(source_name):
473
+ source_name_target = os.path.join('web', source_name)
474
+ elif not check_python_extensions(source_name) and not source_name.endswith("node_config.json"):
475
+ source_name_target = os.path.join('data', source_name)
476
+ else:
477
+ # Copy file to micrOS root folder (.mpy and .py or node_config.json)
478
+ source_name_target = source_name
479
+ else:
480
+ # MAIN USE-CASE
481
+ source_name_target = source.replace(upload_root_dir, '')
461
482
 
462
483
  # Force LM update - user load modules - drag n drop files
463
484
  if force_lm and not source_name.startswith('LM_') and source_name.endswith('.py'):