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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
o
l13jçã@s†ddlZddlZddlZddlZddlmZddlmmZddl    m
Z
ddl m Z e  e¡ZdZdZdZdZd    ZGd
d „d ƒZdS) éN)ÚAny)Úsettings)Ú DeviceStorezsnlp/v1/+/rpt/statezsnlp/v1/+/rpt/eventzsnlp/v1/+/rpt/ackzsnlp/v1/+/rpt/progresszsnlp/v1/+/rpt/logc @sjeZdZd*dededBddfdd„Zd+dd„Zd+d    d
„Zd*d ej    d e
d e
de
de
ddf dd„Z d*d ej    d e
d e
de
de
ddf dd„Z d ej    d e
dej ddfdd„Zd,dededeee
fdedeee
ff
dd„Zd-dededeee
fdedeee
ff
dd „Zdededeee
fdedeee
ff
d!d"„Zd.d$edeee
fd%eddfd&d'„Zedefd(d)„ƒZdS)/Ú MqttServiceNÚ device_storeÚ    auto_initÚreturncCs||_||_d|_d|_dS)NF)rrÚ_clientÚ
_connected)Úselfrr©r ú/D:\apps\smartlearning\server\app\mqtt\client.pyÚ__init__s
zMqttService.__init__cCs¸tjs
t d¡dStjtjjtjd|_    tj
r!|j      tj
tj ¡|j |j    _|j|j    _|j|j    _z|j    jtjtjdd|j     ¡t dtjtj¡WdSty[t d¡YdSw)NzMQTT disabled by configuration)Zcallback_api_versionÚ    client_idé<)Z    keepalivezMQTT client connecting to %s:%sz7Failed to connect MQTT broker; running in API-only mode)rÚ mqtt_enabledÚloggerÚinfoÚmqttÚClientZCallbackAPIVersionZVERSION2Úmqtt_client_idr    Ú mqtt_usernameZusername_pw_setÚ mqtt_passwordÚ _on_connectZ
on_connectÚ _on_messageZ
on_messageÚ_on_disconnectZ on_disconnectÚconnectÚ mqtt_brokerÚ    mqtt_portZ
loop_startÚ    ExceptionÚ    exception©r r r r Ústarts&
þ
 
 
 
 ÿzMqttService.startcCs"|jr|j ¡|j ¡dSdS©N)r    Z    loop_stopZ
disconnectr!r r r Ústop3s
þzMqttService.stopÚclientÚuserdataÚflagsÚ reason_codeÚ
propertiescCsf|dks
t|ƒdkr+d|_tttttfD]}|j|d|vrdnddqt     d¡dSt 
d|¡dS)    NrÚSuccessTÚacké©ÚqoszMQTT connected and subscribedzMQTT connect failed: %s) Ústrr
ÚTOPIC_RPT_STATEÚTOPIC_RPT_EVENTÚ TOPIC_RPT_ACKÚTOPIC_RPT_PROGRESSÚ TOPIC_RPT_LOGZ    subscriberrÚerror)r r%r&r'r(r)Útopicr r r r8s zMqttService._on_connectcCsd|_t d|¡dS)NFzMQTT disconnected: %s)r
rÚwarning)r r%r&r'r(r)r r r rAszMqttService._on_disconnectÚmsgc CsVz™t |j d¡¡}|j d¡}t|ƒdkr|dn    | di¡ dd¡}t|ƒdkr.|dn| d    d¡}| di¡}t| d
t         ¡¡ƒ}    | d i¡}
|d krg|j
  ||
|    ¡|j rd|j   ||
|    ¡WdSWdS|d kru|j
 ||
¡WdS|dvr‰|j
 |i|
¥d|i¥¡WdS|dkr—t d||
¡WdSWdStyªt d|j¡YdSw)Nzutf-8ú/éÚheaderÚ    device_idÚunknownééÿÿÿÿÚmsg_typeÚ    timestampÚpayloadÚstater+)ÚeventZprogressÚ_typeÚlogzDevice %s log: %sz#Failed to handle MQTT message on %s)ÚjsonÚloadsrBÚdecoder6ÚsplitÚlenÚgetÚintÚtimerZ update_staterZon_device_stateZ
record_ackZ record_eventrrrr ) r r%r&r8rBÚpartsr<r@r;rAÚbodyr r r rEs. (   ÿ ÿ ÿzMqttService._on_messagerr<ÚactionrBÚttlcCó0| ||||¡}d|›d}|j||dd|S)Núsnlp/v1/z/cmd/ctlr,r-©Ú_build_commandÚ_publish©r r<rQrBrRÚcommandr6r r r Ú publish_ctl\ó zMqttService.publish_ctlécCrS)NrTz    /cmd/taskr,r-rUrXr r r Ú publish_taskbr[zMqttService.publish_taskcCs(d|tt ¡ƒtt ¡ƒ|dœ||dœS)Nz1.0)Úversionr<Zreq_idrArR)r;rQrB)r/ÚuuidÚuuid4rMrN)r r<rQrBrRr r r rVhs
 
û÷zMqttService._build_commandr,r6r.cCs<|jr|jst d|¡dS|jj|tj|dd|ddS)Nz3MQTT not connected; command queued locally only: %sF)Ú ensure_asciir-)r    r
rr7ZpublishrGÚdumps)r r6rBr.r r r rWus   zMqttService._publishcCs|jSr#)r
r!r r r Ú    connected{szMqttService.connectedr#)rN)r)r\)r,)Ú__name__Ú
__module__Ú __qualname__rÚobjectrr"r$rrrrrZ MQTTMessagerr/ÚdictrMrZr]rVrWÚpropertyÚboolrcr r r r rs
 
&&    00.$ r)rGÚloggingrNr_ÚtypingrZpaho.mqtt.clientrr%Ú
app.configrÚapp.services.device_storerÚ    getLoggerrdrr0r1r2r3r4rr r r r Ú<module>s