Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
vue_django_test
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周田
vue_django_test
Commits
8c324a58
Commit
8c324a58
authored
Aug 28, 2023
by
周田
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:将设备各项参数的websocket 的 group name 换为 port
parent
2030137d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
12 deletions
+30
-12
mqtt.py
mqtt/mqtt.py
+21
-10
utils.py
mqtt/utils.py
+9
-2
No files found.
mqtt/mqtt.py
View file @
8c324a58
...
@@ -2,6 +2,8 @@ import paho.mqtt.client as mqtt
...
@@ -2,6 +2,8 @@ import paho.mqtt.client as mqtt
from
django.conf
import
settings
from
django.conf
import
settings
from
.utils
import
parse_proto
from
.utils
import
parse_proto
from
chat.consumers
import
send_websocket_message
from
chat.consumers
import
send_websocket_message
from
django.core.cache
import
cache
from
device_data_op.models
import
TableXproAllDevinfo
def
on_connect
(
mqtt_client
,
userdata
,
flags
,
rc
):
def
on_connect
(
mqtt_client
,
userdata
,
flags
,
rc
):
...
@@ -18,25 +20,34 @@ def on_message(mqtt_client, userdata, msg):
...
@@ -18,25 +20,34 @@ def on_message(mqtt_client, userdata, msg):
# 接收mqtt消息的代码
# 接收mqtt消息的代码
# mqtt_message_received.send(sender=None, message=msg.payload)
# mqtt_message_received.send(sender=None, message=msg.payload)
# print(f'Received message on topic: {msg.topic} with payload: {msg.payload}')
# print(f'Received message on topic: {msg.topic} with payload: {msg.payload}')
data
=
parse_proto
(
msg
.
payload
)
data
,
device_name
=
parse_proto
(
msg
.
payload
)
# data = msg.payload.decode('utf-8')
# data = msg.payload.decode('utf-8')
print
(
f
'Received message on topic: {msg.topic} with payload: {data}'
)
print
(
f
'Received message on topic: {msg.topic} with payload: {data}'
)
send_message
(
data
)
send_message
(
data
,
device_name
)
def
send_message
(
data
:
dict
):
def
send_message
(
data
:
dict
,
device_name
:
str
):
"""
"""
发送 websocket 消息
发送 websocket 消息
TODO: 通过不同的 port 发向不同的 group name
"""
"""
send_websocket_message
(
data
)
send_websocket_message
(
data
)
cmds
=
data
.
get
(
'CMDS'
)
dev_info
=
TableXproAllDevinfo
.
objects
.
filter
(
dev_name
=
device_name
)
.
first
()
if
cmds
is
None
:
if
"TCP"
in
dev_info
.
comunitate_mode
.
upper
():
return
name
=
dev_info
.
tcp_port
if
cmds
[
0
]
==
'$'
:
elif
"UDP"
in
dev_info
.
comunitate_mode
.
upper
():
send_websocket_message
(
data
,
group_name
=
"chat_acu7m5"
)
name
=
dev_info
.
udp_port_src
else
:
print
(
name
)
send_websocket_message
(
data
,
group_name
=
"chat_hwf"
)
send_websocket_message
(
data
,
group_name
=
f
'chat_{name}'
)
# cmds = data.get('CMDS')
# if cmds is None:
# return
# if cmds[0] == '$':
# send_websocket_message(data, group_name="chat_acu7m5")
# else:
# send_websocket_message(data, group_name="chat_hwf")
client
=
mqtt
.
Client
()
client
=
mqtt
.
Client
()
...
...
mqtt/utils.py
View file @
8c324a58
...
@@ -4,7 +4,14 @@ from .auto_generate_python.Device_datastruct_pb2 import TDSXDC_Device_cmd
...
@@ -4,7 +4,14 @@ from .auto_generate_python.Device_datastruct_pb2 import TDSXDC_Device_cmd
from
google.protobuf.json_format
import
MessageToJson
from
google.protobuf.json_format
import
MessageToJson
def
parse_proto
(
data
:
bytes
)
->
dict
:
def
parse_proto
(
data
:
bytes
)
->
(
dict
,
str
):
"""
解析发送过来的 protobuf
:param data: protobuf 的二进制流
:return:
dict: 解析完成的 protobuf
str: 设备名
"""
cmd
=
TDSCmd_pb2
.
TDSCmd
()
cmd
=
TDSCmd_pb2
.
TDSCmd
()
cmd
.
ParseFromString
(
data
)
cmd
.
ParseFromString
(
data
)
...
@@ -20,7 +27,7 @@ def parse_proto(data: bytes) -> dict:
...
@@ -20,7 +27,7 @@ def parse_proto(data: bytes) -> dict:
data
=
{
item
.
fieldName
:
item
.
value
data
=
{
item
.
fieldName
:
item
.
value
for
item
in
device_cmd
.
fields
}
for
item
in
device_cmd
.
fields
}
# return json.dumps(json.loads(data), separators=(',', ':'))
# return json.dumps(json.loads(data), separators=(',', ':'))
return
data
return
data
,
device_cmd
.
dev_name
def
compose_protobuf_message
(
param
:
dict
,
dst_suid
:
int
)
->
bytes
:
def
compose_protobuf_message
(
param
:
dict
,
dst_suid
:
int
)
->
bytes
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment