wangzhibo
2026-10-08 220e4fab27b7f419b3e89e2f2d28ae789aac09d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
o
^13j
ã@s<ddlmZmZmZddlmZeddgdZdefdd„Ze d    ¡defd
d „ƒZ    e 
d ¡ded e fdd„ƒZ e d¡ded e fdd„ƒZ e d¡defdd„ƒZe d¡ded e fdd„ƒZe d¡ded e fdd„ƒZe d¡ded e fdd„ƒZe d¡ded e d efd!d"„ƒZe d#¡ded e d efd$d%„ƒZd&S)'é)Ú    APIRouterÚ HTTPExceptionÚRequest)Ú MqttCommandz/api/v1/devicesÚdevices)ÚprefixÚtagsÚrequestcCs
|jjjS)N)ÚappÚstateÚmqtt)r    ©r ú2D:\apps\smartlearning\server\app\routes\devices.pyÚ    _get_mqtts
rz /initializedcÃs|jjj}d| ¡iS)Nr)r
r Ú init_registryZlist_initialized)r    Úregistryr r rÚlist_initialized_devices s€
 rz/initialized/{device_id}Ú    device_idcÃs,|jjj}| |¡stddd‚|ddœS)Né”z"Device not in initialized registry©Ú status_codeÚdetailÚremoved)rÚstatus)r
r rÚremover)r    rrr r rÚreset_initialized_devices
€
 
 
rz/{device_id}/init-statuscÃs&|jjj}| |¡}||du|dœS)N)rZ initializedÚrecord)r
r rZ
get_record)r    rrrr r rÚget_device_init_statuss€
 
ýrÚcÃs"|jjj}ddd„| ¡DƒiS)NrcSsg|]}| ¡‘qSr )Ú
model_dump)Ú.0Údr r rÚ
<listcomp>(sz list_devices.<locals>.<listcomp>)r
r Ú device_storeÚ list_devices)r    Ústorer r rr$%s€
r$z /{device_id}cÃs*|jjj}| |¡}|stddd‚|S)NrzDevice not foundr)r
r r#Ú
get_devicer)r    rr%Zdevicer r rr&+s €
 
 r&z/{device_id}/ackscÃó|jjj}|| |¡dœS)N)rZacks)r
r r#Úget_acks©r    rr%r r rÚget_device_acks4ó€
r*z/{device_id}/eventscÃr')N)rÚevents)r
r r#Ú
get_eventsr)r r rÚget_device_events:r+r.z/{device_id}/cmdÚcommandcÃó*t|ƒ}| ||j|j|jjpd¡}|S)Né<)rÚ publish_ctlÚactionÚpayloadÚheaderÚttl©r    rr/r Úresultr r rÚ send_command@ó€r9z/{device_id}/taskcÃr0)Ni)rÚ publish_taskr3r4r5r6r7r r rÚ    send_taskGr:r<N)ÚfastapirrrÚapp.models.schemasrÚrouterrÚgetrÚdeleteÚstrrrr$r&r*r.Úpostr9r<r r r rÚ<module>s,