micrOSDevToolKit 2.9.11__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_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.11.dist-info → micrOSDevToolKit-2.10.2.dist-info}/METADATA +11 -14
- {micrOSDevToolKit-2.9.11.dist-info → micrOSDevToolKit-2.10.2.dist-info}/RECORD +35 -35
- toolkit/dashboard_apps/SystemTest.py +17 -6
- toolkit/lib/micrOSClient.py +25 -6
- toolkit/socketClient.py +2 -3
- toolkit/workspace/precompiled/Common.mpy +0 -0
- toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- 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.11.data → micrOSDevToolKit-2.10.2.data}/scripts/devToolKit.py +0 -0
- {micrOSDevToolKit-2.9.11.dist-info → micrOSDevToolKit-2.10.2.dist-info}/LICENSE +0 -0
- {micrOSDevToolKit-2.9.11.dist-info → micrOSDevToolKit-2.10.2.dist-info}/WHEEL +0 -0
- {micrOSDevToolKit-2.9.11.dist-info → micrOSDevToolKit-2.10.2.dist-info}/top_level.txt +0 -0
micrOS/source/LM_telegram.py
CHANGED
|
@@ -4,6 +4,11 @@ from Notify import Notify
|
|
|
4
4
|
from Config import cfgget
|
|
5
5
|
from Common import micro_task, syslog, console_write
|
|
6
6
|
from LM_system import ifconfig
|
|
7
|
+
from utime import localtime
|
|
8
|
+
|
|
9
|
+
def _timestamp():
|
|
10
|
+
_time = [str(k) for k in localtime()[3:6]]
|
|
11
|
+
return ':'.join(_time)
|
|
7
12
|
|
|
8
13
|
|
|
9
14
|
class Telegram(Notify):
|
|
@@ -106,12 +111,12 @@ class Telegram(Notify):
|
|
|
106
111
|
Update known chat_id-s and cache them
|
|
107
112
|
- return active chat_id frm resp_json
|
|
108
113
|
"""
|
|
109
|
-
console_write("[NTFY GET] update chatIDs")
|
|
110
114
|
_cid = None
|
|
111
115
|
if resp_json.get("ok", None) and len(resp_json["result"]) > 0:
|
|
112
116
|
_cid = resp_json["result"][-1]["message"]["chat"]["id"]
|
|
113
117
|
# LIMIT Telegram._CHAT_IDS NOTIFICATION CACHE TO 3 IDs
|
|
114
|
-
if len(Telegram._CHAT_IDS) < 4:
|
|
118
|
+
if len(Telegram._CHAT_IDS) < 4 and _cid not in Telegram._CHAT_IDS:
|
|
119
|
+
console_write("[NTFY GET] update chatIDs")
|
|
115
120
|
_ids = len(Telegram._CHAT_IDS)
|
|
116
121
|
Telegram._CHAT_IDS.add(_cid)
|
|
117
122
|
if len(Telegram._CHAT_IDS) - _ids > 0: # optimized save (slow storage access)
|
|
@@ -135,7 +140,7 @@ class Telegram(Notify):
|
|
|
135
140
|
return None
|
|
136
141
|
response = {'sender': None, 'text': None, 'm_id': -1, 'c_id': None}
|
|
137
142
|
url = f"https://api.telegram.org/bot{bot_token}/getUpdates{Telegram._API_PARAMS}"
|
|
138
|
-
console_write(f"\
|
|
143
|
+
console_write(f"\t[GET] request: {url}")
|
|
139
144
|
|
|
140
145
|
_, resp_json = urequests.get(url, jsonify=True, sock_size=128)
|
|
141
146
|
|
|
@@ -145,7 +150,7 @@ class Telegram(Notify):
|
|
|
145
150
|
response['sender'] = f"{resp['chat']['first_name']}{resp['chat']['last_name']}" if resp['chat'].get(
|
|
146
151
|
'username', None) is None else resp['chat']['username']
|
|
147
152
|
response['text'], response['m_id'] = resp['text'], resp['message_id']
|
|
148
|
-
console_write(f"\
|
|
153
|
+
console_write(f"\t\t[GET] response: {response}")
|
|
149
154
|
return response
|
|
150
155
|
|
|
151
156
|
@staticmethod
|
|
@@ -160,7 +165,7 @@ class Telegram(Notify):
|
|
|
160
165
|
return None
|
|
161
166
|
response = {'sender': None, 'text': None, 'm_id': -1, 'c_id': None}
|
|
162
167
|
url = f"https://api.telegram.org/bot{bot_token}/getUpdates{Telegram._API_PARAMS}"
|
|
163
|
-
console_write(f"\
|
|
168
|
+
console_write(f"\t[aGET] request: {url}")
|
|
164
169
|
|
|
165
170
|
_, resp_json = await urequests.aget(url, jsonify=True, sock_size=128)
|
|
166
171
|
|
|
@@ -170,7 +175,7 @@ class Telegram(Notify):
|
|
|
170
175
|
response['sender'] = f"{resp['chat']['first_name']}{resp['chat']['last_name']}" if resp['chat'].get(
|
|
171
176
|
'username', None) is None else resp['chat']['username']
|
|
172
177
|
response['text'], response['m_id'] = resp['text'], resp['message_id']
|
|
173
|
-
console_write(f"\
|
|
178
|
+
console_write(f"\t\t[aGET] response: {response}")
|
|
174
179
|
return response
|
|
175
180
|
|
|
176
181
|
@staticmethod
|
|
@@ -183,14 +188,14 @@ class Telegram(Notify):
|
|
|
183
188
|
console_write("[NTFY] EVAL sequence")
|
|
184
189
|
verdict = None
|
|
185
190
|
|
|
186
|
-
def
|
|
191
|
+
def _lm_execute(cmd_args):
|
|
187
192
|
nonlocal verdict, m_id
|
|
188
193
|
access, output = Telegram.lm_execute(cmd_args)
|
|
189
194
|
if access:
|
|
190
|
-
verdict = f'[UP] Exec: {" ".join(cmd_args[0])}'
|
|
195
|
+
verdict = f'{_timestamp()} [UP] Exec: {" ".join(cmd_args[0])}'
|
|
191
196
|
Telegram.send_msg(output, reply_to=m_id)
|
|
192
197
|
else:
|
|
193
|
-
verdict = f'[UP] NoAccess: {cmd_args[0]}'
|
|
198
|
+
verdict = f'{_timestamp()} [UP] NoAccess: {cmd_args[0]}'
|
|
194
199
|
Telegram._IN_MSG_ID = m_id
|
|
195
200
|
|
|
196
201
|
# -------------------------- FUNCTION MAIN -------------------------- #
|
|
@@ -211,12 +216,12 @@ class Telegram(Notify):
|
|
|
211
216
|
cmd_lm = msg_in.strip().split()[1:]
|
|
212
217
|
# [Compare] cmd selected device param with DEVFID (device/prompt name)
|
|
213
218
|
if cmd_lm[0] in Telegram._DEVFID:
|
|
214
|
-
|
|
219
|
+
_lm_execute(cmd_lm[1:])
|
|
215
220
|
else:
|
|
216
|
-
verdict = f'[UP] NoSelected: {cmd_lm[0]}'
|
|
221
|
+
verdict = f'{_timestamp()} [UP] NoSelected: {cmd_lm[0]}'
|
|
217
222
|
elif msg_in.startswith('/cmd'):
|
|
218
223
|
cmd_lm = msg_in.strip().split()[1:]
|
|
219
|
-
|
|
224
|
+
_lm_execute(cmd_lm)
|
|
220
225
|
elif msg_in.startswith('/notify'):
|
|
221
226
|
param = msg_in.strip().split()[1:]
|
|
222
227
|
if len(param) > 0:
|
|
@@ -226,8 +231,7 @@ class Telegram(Notify):
|
|
|
226
231
|
# Send is still synchronous (OK)
|
|
227
232
|
Telegram.send_msg(verdict, reply_to=m_id)
|
|
228
233
|
else:
|
|
229
|
-
verdict = "[UP] NoExec"
|
|
230
|
-
console_write(f"\tBOT: {verdict}")
|
|
234
|
+
verdict = f"{_timestamp()} [UP] NoExec"
|
|
231
235
|
return verdict
|
|
232
236
|
|
|
233
237
|
@staticmethod
|
|
@@ -241,11 +245,12 @@ class Telegram(Notify):
|
|
|
241
245
|
period = period if period > 0 else 1
|
|
242
246
|
period_ms = period * 1000
|
|
243
247
|
with micro_task(tag=tag) as my_task:
|
|
244
|
-
my_task.out = "[UP] Running"
|
|
248
|
+
my_task.out = f"{_timestamp()} [UP] Running"
|
|
245
249
|
while True:
|
|
246
250
|
# Normal task period
|
|
247
251
|
await my_task.feed(sleep_ms=period_ms)
|
|
248
252
|
try:
|
|
253
|
+
# await asyncio.wait_for(Telegram.receive_eval(), 5) # 5 sec timeout???
|
|
249
254
|
v = await Telegram.receive_eval()
|
|
250
255
|
my_task.out = "Missing bot token" if v is None else f"{v} ({period}s)"
|
|
251
256
|
cancel_cnt = 0
|
|
@@ -254,7 +259,7 @@ class Telegram(Notify):
|
|
|
254
259
|
# Auto scale - blocking nature - in case of serial failures (5) - hibernate task (increase async sleep)
|
|
255
260
|
cancel_cnt += 1
|
|
256
261
|
if cancel_cnt > 5:
|
|
257
|
-
my_task.out = f"[DOWN] {e} (wait 1min)"
|
|
262
|
+
my_task.out = f"{_timestamp()} [DOWN] {e} (wait 1min)"
|
|
258
263
|
cancel_cnt = 5
|
|
259
264
|
# SLOW DOWN - hibernate task
|
|
260
265
|
await my_task.feed(sleep_ms=60_000)
|
micrOS/source/Shell.py
CHANGED
|
@@ -25,7 +25,7 @@ from Debug import errlog_add
|
|
|
25
25
|
|
|
26
26
|
class Shell:
|
|
27
27
|
__slots__ = ['__devfid', '__auth_mode', '__hwuid', '__auth_ok', '__conf_mode']
|
|
28
|
-
MICROS_VERSION = '2.
|
|
28
|
+
MICROS_VERSION = '2.10.2-0'
|
|
29
29
|
|
|
30
30
|
def __init__(self):
|
|
31
31
|
"""
|
|
@@ -106,6 +106,7 @@ class Shell:
|
|
|
106
106
|
# No msg to work with
|
|
107
107
|
return True
|
|
108
108
|
msg_list = msg.strip().split()
|
|
109
|
+
local_cmd = not msg_list[-1].startswith(">>") # intercon request check for shell commands
|
|
109
110
|
|
|
110
111
|
##########################################
|
|
111
112
|
# [1] Handle built-in shell commands #
|
|
@@ -113,7 +114,7 @@ class Shell:
|
|
|
113
114
|
##########################################
|
|
114
115
|
|
|
115
116
|
# Hello message
|
|
116
|
-
if msg_list[0] == 'hello':
|
|
117
|
+
if local_cmd and msg_list[0] == 'hello':
|
|
117
118
|
# For low level device identification - hello msg
|
|
118
119
|
await self.a_send(f"hello:{self.__devfid}:{self.__hwuid}")
|
|
119
120
|
return True
|
|
@@ -126,60 +127,62 @@ class Shell:
|
|
|
126
127
|
return True
|
|
127
128
|
|
|
128
129
|
# Version handling
|
|
129
|
-
if msg_list[0] == 'version':
|
|
130
|
+
if local_cmd and msg_list[0] == 'version':
|
|
130
131
|
# For micrOS system version info
|
|
131
132
|
await self.a_send(str(Shell.MICROS_VERSION))
|
|
132
133
|
return True
|
|
133
134
|
|
|
134
135
|
# Reboot micropython VM
|
|
135
|
-
if msg_list[0] == 'reboot':
|
|
136
|
+
if local_cmd and msg_list[0] == 'reboot':
|
|
136
137
|
hard = False
|
|
137
138
|
if len(msg_list) >= 2 and "-h" in msg_list[1]:
|
|
138
139
|
# reboot / reboot -h
|
|
139
140
|
hard = True
|
|
140
141
|
await self.reboot(hard)
|
|
141
142
|
|
|
142
|
-
if msg_list[0].startswith('webrepl'):
|
|
143
|
+
if local_cmd and msg_list[0].startswith('webrepl'):
|
|
143
144
|
if len(msg_list) == 2 and '-u' in msg_list[1]:
|
|
144
145
|
await Shell.webrepl(msg_obj=self.a_send, update=True)
|
|
145
146
|
return await Shell.webrepl(msg_obj=self.a_send)
|
|
146
147
|
|
|
147
148
|
# CONFIGURE MODE STATE: ACCESS FOR NODE_CONFIG.JSON
|
|
148
|
-
if msg_list[0].startswith('conf'):
|
|
149
|
+
if local_cmd and msg_list[0].startswith('conf'):
|
|
149
150
|
self.__conf_mode = True
|
|
150
151
|
return True
|
|
151
|
-
if msg_list[0].startswith('noconf'):
|
|
152
|
+
if local_cmd and msg_list[0].startswith('noconf'):
|
|
152
153
|
self.__conf_mode = False
|
|
153
154
|
return True
|
|
154
155
|
|
|
155
156
|
# HELP MSG
|
|
156
|
-
if msg_list[0] == "help":
|
|
157
|
-
await self.a_send("[MICROS]
|
|
158
|
-
await self.a_send(" hello
|
|
159
|
-
await self.a_send(" modules
|
|
160
|
-
await self.a_send(" version
|
|
161
|
-
await self.a_send(" exit
|
|
162
|
-
await self.a_send(" reboot
|
|
163
|
-
await self.a_send(" webrepl
|
|
157
|
+
if local_cmd and msg_list[0] == "help":
|
|
158
|
+
await self.a_send("[MICROS] - built-in shell commands")
|
|
159
|
+
await self.a_send(" hello - hello msg - for device identification")
|
|
160
|
+
await self.a_send(" modules - show active Load Modules")
|
|
161
|
+
await self.a_send(" version - returns micrOS version")
|
|
162
|
+
await self.a_send(" exit - exit from shell socket prompt")
|
|
163
|
+
await self.a_send(" reboot - system soft reboot (vm), hard reboot (hw): reboot -h")
|
|
164
|
+
await self.a_send(" webrepl - start webrepl, for file transfers use with --update")
|
|
164
165
|
await self.a_send("[CONF] Configure mode - built-in shell commands")
|
|
165
166
|
await self.a_send(" conf - Enter conf mode")
|
|
166
167
|
await self.a_send(" dump - Dump all data")
|
|
167
168
|
await self.a_send(" key - Get value")
|
|
168
169
|
await self.a_send(" key value - Set value")
|
|
169
170
|
await self.a_send(" noconf - Exit conf mode")
|
|
170
|
-
await self.a_send("[TASK] postfix:
|
|
171
|
-
await self.a_send(" task list - list tasks
|
|
171
|
+
await self.a_send("[TASK] postfix: ...&x - one-time, ...&&x - periodic, x: wait ms [x min: 20ms]")
|
|
172
|
+
await self.a_send(" task list - list tasks by <tag>s")
|
|
172
173
|
await self.a_send(" task kill <tag> - stop task")
|
|
173
174
|
await self.a_send(" task show <tag> - show task output")
|
|
174
175
|
await self.a_send("[EXEC] Command mode (LMs):")
|
|
175
|
-
await self.a_send("
|
|
176
|
+
await self.a_send(" >>node01.local - INTERCON postfix, execute command on remote device")
|
|
177
|
+
await self.a_send(" >json - JSON postfix, request json formatted output")
|
|
178
|
+
await self.a_send(" help lm - list ALL LoadModules")
|
|
176
179
|
if "lm" in str(msg_list):
|
|
177
180
|
return await Shell._show_lm_funcs(msg_obj=self.a_send)
|
|
178
181
|
return await Shell._show_lm_funcs(msg_obj=self.a_send, active_only=True)
|
|
179
182
|
|
|
180
183
|
# [2] EXECUTE:
|
|
181
184
|
# @1 Configure mode
|
|
182
|
-
if self.__conf_mode and len(msg_list) > 0:
|
|
185
|
+
if local_cmd and self.__conf_mode and len(msg_list) > 0:
|
|
183
186
|
# Lock thread under config handling is threads available
|
|
184
187
|
return await Shell._configure(self.a_send, msg_list)
|
|
185
188
|
# @2 Command mode
|
micrOS/source/Tasks.py
CHANGED
|
@@ -199,12 +199,9 @@ class MagicTask(TaskBase):
|
|
|
199
199
|
- self.__inloop: lm call type - one-shot (False) / looped (True)
|
|
200
200
|
- self.__msg_buf: lm msg object redirect to variable - store lm output
|
|
201
201
|
"""
|
|
202
|
-
jsonify = self.__callback[-1] == '>json'
|
|
203
|
-
if jsonify:
|
|
204
|
-
self.__callback = self.__callback[:-1]
|
|
205
202
|
while True:
|
|
206
203
|
await self.feed(self.__sleep)
|
|
207
|
-
state, self.out = _exec_lm_core(self.__callback
|
|
204
|
+
state, self.out = _exec_lm_core(self.__callback)
|
|
208
205
|
if not state or not self.__inloop:
|
|
209
206
|
break
|
|
210
207
|
self.task_gc() # Task pool cleanup
|
|
@@ -227,6 +224,7 @@ class Manager:
|
|
|
227
224
|
__slots__ = ['_initialized', 'idle_counter']
|
|
228
225
|
INSTANCE = None # Manager object
|
|
229
226
|
LOAD = 0 # CPU overload measure
|
|
227
|
+
INTERCON = None # Dynamic ref. for interconnect calls
|
|
230
228
|
|
|
231
229
|
def __new__(cls):
|
|
232
230
|
"""
|
|
@@ -419,19 +417,34 @@ def exec_builtins(func):
|
|
|
419
417
|
- modules - show active modules list
|
|
420
418
|
- task kill ... - task termination
|
|
421
419
|
show ... - task output dump
|
|
422
|
-
- ... >json - postfix to
|
|
420
|
+
- ... >json - postfix to jsonify the output
|
|
423
421
|
"""
|
|
424
|
-
def wrapper(arg_list, jsonify=None):
|
|
422
|
+
def wrapper(arg_list:list, jsonify=None):
|
|
425
423
|
# Ensure the parameter is a list of strings
|
|
426
424
|
if isinstance(arg_list, list) and arg_list:
|
|
427
|
-
#
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
425
|
+
# Postfix operator handling
|
|
426
|
+
# ... >json - command output format option
|
|
427
|
+
# ... >>node01.local - intercon: command execution on remote device by hostname/IP address
|
|
428
|
+
arg_list, json_flag = (arg_list[:-1], True) if arg_list[-1] == '>json' else (arg_list, False)
|
|
429
|
+
arg_list, intercon_target = (arg_list[:-1], arg_list[-1].replace(">>", "")) if arg_list[-1].startswith('>>') else (arg_list, None)
|
|
431
430
|
json_flag = jsonify if isinstance(jsonify, bool) else json_flag
|
|
431
|
+
|
|
432
|
+
# INTERCONNECT
|
|
433
|
+
if intercon_target:
|
|
434
|
+
if Manager.INTERCON is None:
|
|
435
|
+
from InterConnect import send_cmd
|
|
436
|
+
Manager.INTERCON = send_cmd
|
|
437
|
+
try:
|
|
438
|
+
out = Manager.INTERCON(host=intercon_target, cmd=arg_list)
|
|
439
|
+
except Exception as e:
|
|
440
|
+
out = {}
|
|
441
|
+
errlog_add(f"[ERR] Intercon: {e}")
|
|
442
|
+
return True, out
|
|
443
|
+
|
|
432
444
|
# MODULES
|
|
433
445
|
if arg_list[0] == 'modules':
|
|
434
446
|
return True, list((m.strip().replace('LM_', '') for m in modules if m.startswith('LM_'))) + ['task']
|
|
447
|
+
|
|
435
448
|
# Handle task manipulation commands: list, kill, show - return True -> Command handled
|
|
436
449
|
if 'task' == arg_list[0]:
|
|
437
450
|
arg_len = len(arg_list)
|
|
@@ -448,13 +461,13 @@ def exec_builtins(func):
|
|
|
448
461
|
if 'show' == arg_list[1]:
|
|
449
462
|
return True, Manager.show(tag=arg_list[2])
|
|
450
463
|
return True, "Invalid task cmd! Help: task list / kill <taskID> / show <taskID>"
|
|
464
|
+
|
|
451
465
|
# Call the decorated function with the additional flag
|
|
452
466
|
return func(arg_list, json_flag)
|
|
453
467
|
return wrapper
|
|
454
468
|
|
|
455
469
|
|
|
456
|
-
|
|
457
|
-
def lm_exec(arg_list, jsonify):
|
|
470
|
+
def lm_exec(arg_list:list, jsonify:bool=None):
|
|
458
471
|
"""
|
|
459
472
|
Main LM executor function with
|
|
460
473
|
- async (background)
|
|
@@ -489,6 +502,7 @@ def lm_exec(arg_list, jsonify):
|
|
|
489
502
|
return state, out
|
|
490
503
|
|
|
491
504
|
|
|
505
|
+
@exec_builtins
|
|
492
506
|
def _exec_lm_core(cmd_list, jsonify):
|
|
493
507
|
"""
|
|
494
508
|
[CORE] Single command executor: MODULE.FUNCTION...
|
|
@@ -535,11 +549,12 @@ def _exec_lm_core(cmd_list, jsonify):
|
|
|
535
549
|
# ------------ LM output format: dict(jsonify) / str(raw) ------------- #
|
|
536
550
|
# Handle LM output data
|
|
537
551
|
if isinstance(lm_output, dict):
|
|
538
|
-
#
|
|
552
|
+
# jsonify (True) json output, (False) default, "human readable" output)
|
|
539
553
|
lm_output = dumps(lm_output) if jsonify else '\n'.join(
|
|
540
554
|
[f" {key}: {value}" for key, value in lm_output.items()])
|
|
541
555
|
if lm_func == 'help':
|
|
542
|
-
# Special case
|
|
556
|
+
# Special case:
|
|
557
|
+
# jsonify (True) json output, (False) default, "human readable" formatted output)
|
|
543
558
|
lm_output = dumps(lm_output) if jsonify else '\n'.join([f" {out}," for out in lm_output])
|
|
544
559
|
# Return LM exec result
|
|
545
560
|
return True, str(lm_output)
|
|
@@ -582,7 +597,7 @@ def exec_lm_pipe(taskstr):
|
|
|
582
597
|
for cmd in (cmd.strip().split() for cmd in taskstr.split(';') if len(cmd) > 0):
|
|
583
598
|
if len(cmd) > 0 and cmd[0].startswith("#"):
|
|
584
599
|
console_write(f"[SKIP] exec_lm_pipe: {' '.join(cmd)}")
|
|
585
|
-
|
|
600
|
+
continue
|
|
586
601
|
if not lm_exec(cmd)[0]:
|
|
587
602
|
errlog_add(f"[WARN] exec_lm_pipe: {cmd}")
|
|
588
603
|
except Exception as e:
|
micrOS/source/Web.py
CHANGED
|
@@ -102,8 +102,9 @@ class WebEngine:
|
|
|
102
102
|
cmd = url.replace('/rest', '')
|
|
103
103
|
if len(cmd) > 1:
|
|
104
104
|
# REST sub-parameter handling (rest commands)
|
|
105
|
-
cmd = (cmd.replace('/', ' ').replace('
|
|
106
|
-
.replace('%E2%80%
|
|
105
|
+
cmd = (cmd.replace('/', ' ').replace('-', ' ').replace("%3E", ">")
|
|
106
|
+
.replace('%22', '"').replace('%E2%80%9C', '"').replace('%E2%80%9D', '"')
|
|
107
|
+
.strip().split())
|
|
107
108
|
# EXECUTE COMMAND - LoadModule
|
|
108
109
|
if WebEngine.AUTH:
|
|
109
110
|
state, out = lm_exec(cmd, jsonify=True) if lm_is_loaded(cmd[0]) else (True, 'Auth:Protected')
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: micrOSDevToolKit
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.10.2
|
|
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
|
|
@@ -494,11 +494,11 @@ Version **3.0.0-0** `micrOS-Autonomous`
|
|
|
494
494
|
- (1) Async SSL/TLS integration (micropython 1.22+ required) [DONE]
|
|
495
495
|
- urequest module async redesign for rest clients [OK]
|
|
496
496
|
- LM_telegram (Notify) + server (listener - chatbot) [OK]
|
|
497
|
-
- (2) ESP-NOW (peer-to-peer communication) integration into InterCon [PoC][TODO]
|
|
498
|
-
- (3) New intercon syntax - command level integration: [
|
|
497
|
+
- (2) ESP-NOW (peer-to-peer communication) integration into InterCon [PoC:OK][TODO]
|
|
498
|
+
- (3) New intercon syntax - command level integration: [DONE]
|
|
499
499
|
- rgb toggle >>RingLight.local
|
|
500
|
-
- similar as: intercon sendcmd host="RingLight.local" cmd="rgb toggle"
|
|
501
|
-
- (4) Create multi level project structure (curret is flat fs) [TODO] FS
|
|
500
|
+
- similar as (obsolete): intercon sendcmd host="RingLight.local" cmd="rgb toggle"
|
|
501
|
+
- (4) Create multi level project structure (curret is flat fs) [TODO?] FS
|
|
502
502
|
- New micrOS FS structure:
|
|
503
503
|
- Note:
|
|
504
504
|
- On device (boot) micrOS Hooks.py/os_dir_fs_hook (check+correct) [Phase1-FS:TODO]
|
|
@@ -528,6 +528,9 @@ Version **3.0.0-0** `micrOS-Autonomous`
|
|
|
528
528
|
- *.js
|
|
529
529
|
- *.css
|
|
530
530
|
|
|
531
|
+
- /logs
|
|
532
|
+
- still there (created runtime)
|
|
533
|
+
|
|
531
534
|
- (5) Proper mip installer support (/lib) [TODO]
|
|
532
535
|
- Note: Autonomous package management over wifi (github)
|
|
533
536
|
- pacman download
|
|
@@ -731,8 +734,6 @@ devToolKit.py -c -p '--dev BedLamp help'
|
|
|
731
734
|
help
|
|
732
735
|
dht22
|
|
733
736
|
help
|
|
734
|
-
intercon
|
|
735
|
-
help
|
|
736
737
|
robustness
|
|
737
738
|
help
|
|
738
739
|
system
|
|
@@ -862,8 +863,6 @@ BedLamp $ help
|
|
|
862
863
|
help
|
|
863
864
|
dht22
|
|
864
865
|
help
|
|
865
|
-
intercon
|
|
866
|
-
help
|
|
867
866
|
robustness
|
|
868
867
|
help
|
|
869
868
|
system
|
|
@@ -954,10 +953,9 @@ micrOS Load Module resources
|
|
|
954
953
|
43 105 LM_lmpacman.py (mlint: True) (pylint: 8.38) (ref.: 0)
|
|
955
954
|
44 176 LM_gameOfLife.py (mlint: True) (pylint: 9.29) (ref.: 2)
|
|
956
955
|
45 58 LM_catgame.py (mlint: True) (pylint: 8.46) (ref.: 0)
|
|
957
|
-
46
|
|
958
|
-
47
|
|
959
|
-
48
|
|
960
|
-
49 34 LM_sdcard.py (mlint: True) (pylint: 7.88) (ref.: 0)
|
|
956
|
+
46 43 LM_ds18.py (mlint: True) (pylint: 5.0) (ref.: 2)
|
|
957
|
+
47 250 LM_i2s_mic.py (mlint: False) (pylint: 8.71) (ref.: 1)
|
|
958
|
+
48 34 LM_sdcard.py (mlint: True) (pylint: 7.88) (ref.: 0)
|
|
961
959
|
|
|
962
960
|
SUM CODE LINES (WITH COMMENTS, WITHOUT EMPTY LINES): 6822
|
|
963
961
|
```
|
|
@@ -1048,7 +1046,6 @@ micrOS/toolkit/workspace/precompiled
|
|
|
1048
1046
|
│ ├── LM_esp32.py
|
|
1049
1047
|
│ ├── LM_genIO.mpy
|
|
1050
1048
|
│ ├── LM_i2c.py
|
|
1051
|
-
│ ├── LM_intercon.mpy
|
|
1052
1049
|
│ ├── LM_light_sensor.mpy
|
|
1053
1050
|
│ ├── LM_neoeffects.mpy
|
|
1054
1051
|
│ ├── LM_neopixel.mpy
|
|
@@ -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
|
|
@@ -73,20 +73,20 @@ micrOS/source/LM_genIO.py,sha256=rTiFByly8ImjHBgc2RceGczGp1rzti7Juz_Vvg5hrtc,501
|
|
|
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,10 +127,10 @@ 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
135
|
toolkit/DevEnvOTA.py,sha256=vNa827MOhbNQbeMGGu72YmGlNN_Tm9D6Trdnz3YGpyU,25499
|
|
136
136
|
toolkit/DevEnvUSB.py,sha256=G-Ram-OR27flvVhul8J_ObiMY07Wjvom6Prc4dTfkmo,34108
|
|
@@ -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
|
|
@@ -176,7 +176,7 @@ toolkit/lib/TerminalColors.py,sha256=Ly_8o9-eBmka1dqA2M3DBlcd1zvCCO2K_BnQ1XbqxcE
|
|
|
176
176
|
toolkit/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
177
177
|
toolkit/lib/file_extensions.py,sha256=0DpayBGjKQg7y2ZGJXf5wVPnre_4C5j-7YIViNGvYz4,372
|
|
178
178
|
toolkit/lib/macroScript.py,sha256=DQR8cFoks7fa0dgRUfGhTpEdUJWNQ1vikRoqukRKx14,14014
|
|
179
|
-
toolkit/lib/micrOSClient.py,sha256=
|
|
179
|
+
toolkit/lib/micrOSClient.py,sha256=q1zN3nqW9t36sHqYt0fKsP61tPSC-u21-7WYqbJcO0Q,19346
|
|
180
180
|
toolkit/lib/micrOSClientHistory.py,sha256=EyCqbFeMy940bfXq4Yfu8dcvb7GnBvuHHxOAIgmW1FQ,4736
|
|
181
181
|
toolkit/lib/pip_package_installer.py,sha256=jpC-y1KR72_PJlqyUR6-U5b6l1szVqnIZ4nrSgUsOTM,4262
|
|
182
182
|
toolkit/simulator_lib/.DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
|
|
@@ -273,7 +273,7 @@ toolkit/user_data/webhooks/macro.py,sha256=E_Um6fc9P6sBKvChyrKgksHmBmaFUuq_Xxy8I
|
|
|
273
273
|
toolkit/user_data/webhooks/template.macro,sha256=XikSl3FsD6W9pUx3sqavM5tWIMBquFx9f3bh_CB8k-A,631
|
|
274
274
|
toolkit/user_data/webhooks/template.py,sha256=WssXY2BDKIwvObq0SpFCjjpEGzgbLlozFTug4ANswWM,342
|
|
275
275
|
toolkit/workspace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
276
|
-
toolkit/workspace/precompiled/Common.mpy,sha256=
|
|
276
|
+
toolkit/workspace/precompiled/Common.mpy,sha256=30q9Yqa0QgfEaLk_Xb85XizYbBE8HPcmR-gEfkVWzDI,2151
|
|
277
277
|
toolkit/workspace/precompiled/Config.mpy,sha256=A9ew69drKFA0SbfIvuTdeaXZQSvmwX0gDlnQa_8i-IE,3082
|
|
278
278
|
toolkit/workspace/precompiled/Debug.mpy,sha256=OpoE-QcllAnASSnAC0V364G7zHjbYI_0jSPzPRBhWkI,1823
|
|
279
279
|
toolkit/workspace/precompiled/Espnow.mpy,sha256=6201uzjatkJ9QHh7JXiLoX_mPxJCMJ90H4v6vgduc0Q,1834
|
|
@@ -286,7 +286,7 @@ toolkit/workspace/precompiled/IO_m5stamp.mpy,sha256=cn991tZyBZd4W3iO10EiLW29g8mV
|
|
|
286
286
|
toolkit/workspace/precompiled/IO_qtpy.mpy,sha256=eHy5zmBlv3Yn6KgubYEBMWeC8OAdQRWtfJPRoppJnaE,872
|
|
287
287
|
toolkit/workspace/precompiled/IO_rp2.mpy,sha256=eODuSmUmahkSp__Fb3j0M6dJdhhnC5Xq3agOMFo5pwk,60
|
|
288
288
|
toolkit/workspace/precompiled/IO_tinypico.mpy,sha256=GS1NSeCBed-xLa3ZpVrk8UQONlgMgaukuH6BzTcDbFU,559
|
|
289
|
-
toolkit/workspace/precompiled/InterConnect.mpy,sha256=
|
|
289
|
+
toolkit/workspace/precompiled/InterConnect.mpy,sha256=kvjpZZ4DYu-BAX2aK-Kuby-iTB9gh58CYG5HP4bTyCU,2362
|
|
290
290
|
toolkit/workspace/precompiled/Interrupts.mpy,sha256=5lOWBB8qoF3YIOzNem4_9W-NWxCZsSbtGTusfUsql2E,2132
|
|
291
291
|
toolkit/workspace/precompiled/LM_L298N_DCmotor.mpy,sha256=1QPhQTw3YijVSh0pkaxCfEAjb1M5FAafyGe_J7xLUJM,878
|
|
292
292
|
toolkit/workspace/precompiled/LM_L9110_DCmotor.py,sha256=sf6TtuXRrfElhm_9rbp4bPjnKGTwO3PnuXVCC5Ob7Us,1847
|
|
@@ -312,20 +312,20 @@ toolkit/workspace/precompiled/LM_genIO.mpy,sha256=F9utR5Ng-QuTq5R5ISvYPO8xASEdSn
|
|
|
312
312
|
toolkit/workspace/precompiled/LM_haptic.mpy,sha256=46BgYkjC3AdNaJaKflFnY0oEUsd9qg6yGquX7jyFLnM,1276
|
|
313
313
|
toolkit/workspace/precompiled/LM_i2c.py,sha256=WKuKxC85TKBSAT8SO4cm8OCPyceAsohHCQFTmomp8iA,1533
|
|
314
314
|
toolkit/workspace/precompiled/LM_i2s_mic.mpy,sha256=lTYjVoLA8QF5JKauAY67Lugl0mhlBabwQwimO9EmOIk,3989
|
|
315
|
-
toolkit/workspace/precompiled/LM_intercon.mpy,sha256=
|
|
315
|
+
toolkit/workspace/precompiled/LM_intercon.mpy,sha256=jlQECkdZ8LUGQ3yuwrW2gfjFYZhZKEVZRdAuNdWAGjA,621
|
|
316
316
|
toolkit/workspace/precompiled/LM_keychain.mpy,sha256=cZVyHNny2uNsWfTNaGWBtZUr5bqQ76wEyFcxWx3Nagg,3627
|
|
317
317
|
toolkit/workspace/precompiled/LM_ld2410.mpy,sha256=H7XHzLPkpyE-pRFZqBKn6M-Y5RtpNiV9prOPcmfZ6zg,2581
|
|
318
|
-
toolkit/workspace/precompiled/LM_light_sensor.mpy,sha256=
|
|
318
|
+
toolkit/workspace/precompiled/LM_light_sensor.mpy,sha256=FQsOIOaioYpzBETO_2EM5NrOGGR15_-C44Fd5uz14eM,1538
|
|
319
319
|
toolkit/workspace/precompiled/LM_neoeffects.mpy,sha256=lO0sxfiAgyASgYNjX3c_usY3TR9WeT3F2NHJkiJ182U,3091
|
|
320
320
|
toolkit/workspace/precompiled/LM_neopixel.mpy,sha256=3o4Jvmc3Knr30VJ4b7JebpUsU7dBdcYBZzRD_9a4zBI,3663
|
|
321
321
|
toolkit/workspace/precompiled/LM_oled.mpy,sha256=KQj4jfLwlmx2dT_GWbFzZE6FlMRPUgJvri5XbnSIod0,3154
|
|
322
322
|
toolkit/workspace/precompiled/LM_oled_sh1106.mpy,sha256=0cQpu1MPkrPxvd1Fvln9c9lq9qPV6oi8iGNTZM4YbIY,3761
|
|
323
|
-
toolkit/workspace/precompiled/LM_oled_ui.mpy,sha256=
|
|
324
|
-
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
|
|
325
325
|
toolkit/workspace/precompiled/LM_pacman.mpy,sha256=njOwVrPKOtC4J5kRCtwV8E8hHTTTt7HzqV121HmCsxE,3507
|
|
326
326
|
toolkit/workspace/precompiled/LM_pet_feeder.py,sha256=ILrozpnq2_ckkVDUROysMWRksKjflsKpIHvgHdvn-JA,2572
|
|
327
327
|
toolkit/workspace/precompiled/LM_ph_sensor.py,sha256=QBVF6cHX3l9jsKcbEZprpyFtwRVLbup-_A7RmRYsdp8,1355
|
|
328
|
-
toolkit/workspace/precompiled/LM_presence.mpy,sha256=
|
|
328
|
+
toolkit/workspace/precompiled/LM_presence.mpy,sha256=vcu_qUj6oU-Cp_jepQRio3BxPe0SQFTBYkJex9JCcDM,2754
|
|
329
329
|
toolkit/workspace/precompiled/LM_rencoder.py,sha256=9w00JP8UKC_GEKr18xgZ5axX9xc_wVeR9XlWpVR2Qzw,3973
|
|
330
330
|
toolkit/workspace/precompiled/LM_rest.mpy,sha256=U-2Pihzos6A2xLtcE33qWW6qtoYLH2UM_ZN8LmRrexg,1036
|
|
331
331
|
toolkit/workspace/precompiled/LM_rgb.mpy,sha256=o12V42r67SvMkhLMINbUVAguShK_GN7AzqmtX4fOqCE,3467
|
|
@@ -338,8 +338,8 @@ toolkit/workspace/precompiled/LM_servo.mpy,sha256=S1mH7tS6WK-vclAPQrWK46_IB2GlBZ
|
|
|
338
338
|
toolkit/workspace/precompiled/LM_sound_event.mpy,sha256=QJ5xmKtK2sfA9lyROJRRpSAjypl10MkwLdW-QsXhRf8,7384
|
|
339
339
|
toolkit/workspace/precompiled/LM_stepper.mpy,sha256=20Jpee74AjyjjMaHmgKbZvU5phcOvh8nQNSUDCAk_KE,1466
|
|
340
340
|
toolkit/workspace/precompiled/LM_switch.mpy,sha256=58sjZQokfBYBZlplFQB5-t-3O-2mlsE3NXjvJ5FgD_U,2237
|
|
341
|
-
toolkit/workspace/precompiled/LM_system.mpy,sha256=
|
|
342
|
-
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
|
|
343
343
|
toolkit/workspace/precompiled/LM_tinyrgb.mpy,sha256=qWR-e8DXuzmstxQlyic0YjwFaGiBBBWpf57Wyn1jjFc,1016
|
|
344
344
|
toolkit/workspace/precompiled/LM_trackball.mpy,sha256=eDVf55dNJXd0Mzg1MZH0talUloPEGFNccE08vwbgn0g,3471
|
|
345
345
|
toolkit/workspace/precompiled/LM_veml7700.mpy,sha256=NxOvdbrqyyhhwjm2d2dfrJK0dTK3NiP5kQ5GDXjXgq0,1953
|
|
@@ -348,11 +348,11 @@ toolkit/workspace/precompiled/Network.mpy,sha256=WtpvhGB2bvEe94dAHV40fpEyk-Fi0D6
|
|
|
348
348
|
toolkit/workspace/precompiled/Notify.mpy,sha256=ioeDVMh9qBtACWQMASrrhGkSfp1KKUN6d2rt0NpbClo,974
|
|
349
349
|
toolkit/workspace/precompiled/Scheduler.mpy,sha256=ctCj7FfXj5TchPPxe_9dmnTXWN88egtbAnmJ0N9u_1w,2202
|
|
350
350
|
toolkit/workspace/precompiled/Server.mpy,sha256=dtSXLYpBcdz0DveB_S6nos46h-m6hwlQ-38G-iVQwKQ,4762
|
|
351
|
-
toolkit/workspace/precompiled/Shell.mpy,sha256
|
|
352
|
-
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
|
|
353
353
|
toolkit/workspace/precompiled/Time.mpy,sha256=AZAtFj-l2ERKUpWgQS4gyq_XUx1ddy4ZTTgpRxbWK9M,2773
|
|
354
354
|
toolkit/workspace/precompiled/Types.mpy,sha256=LssRbPgvsWuR4d2m3R7VMIvsnkVp9nN0ltwaY2wGop8,1401
|
|
355
|
-
toolkit/workspace/precompiled/Web.mpy,sha256
|
|
355
|
+
toolkit/workspace/precompiled/Web.mpy,sha256=-YbLZ4LeJtsXY1o2a2V7e3JBlqi9XldMxQjnbl_ps-g,3133
|
|
356
356
|
toolkit/workspace/precompiled/_mpy.version,sha256=Kik-fvRGfWAmpEjKdJLq7nPOqYR_jVgB0aiXZ8LMvMA,6
|
|
357
357
|
toolkit/workspace/precompiled/dashboard.html,sha256=xBZOZ8AMO55QheuZ41Sl0Arvb44qnnai9D67A8YxlVE,2641
|
|
358
358
|
toolkit/workspace/precompiled/index.html,sha256=cv0hap5bhBoRR_z1KALC3fbjH2rQZY9JJPfF-dxVclw,1656
|
|
@@ -367,8 +367,8 @@ toolkit/workspace/precompiled/urequests.mpy,sha256=-JDY-DOtJrGdwQo0-P809zZu-cJBR
|
|
|
367
367
|
toolkit/workspace/precompiled/ustyle.css,sha256=P-s8ENwAcWoZi5bocrK3_kVzEjaRFKtFvEF6JRh4MBY,1429
|
|
368
368
|
toolkit/workspace/precompiled/uwidgets.js,sha256=BGeUSbNHn6PClgIgIE6QszwQVJ6j7lzgCBwvIX8cYgo,6631
|
|
369
369
|
toolkit/workspace/precompiled/uwidgets_pro.js,sha256=gbkk3SVttEVvDCwde-pJhAh4k7GuCFPdcWNq32pcKPE,3639
|
|
370
|
-
micrOSDevToolKit-2.
|
|
371
|
-
micrOSDevToolKit-2.
|
|
372
|
-
micrOSDevToolKit-2.
|
|
373
|
-
micrOSDevToolKit-2.
|
|
374
|
-
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,,
|