Commit 77a22835 by 周田

chore: mqtt and proto in python

parent eabd9836
__pycache__
*.pyc
.idea
# chat/consumers.py
import json
from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
from channels.generic.websocket import AsyncWebsocketConsumer
# sync code
# class ChatConsumer(WebsocketConsumer):
# def connect(self):
# self.room_name = self.scope["url_route"]["kwargs"]["room_name"]
# self.room_group_name = f"chat_{self.room_name}"
# # Join room group
# async_to_sync(self.channel_layer.group_add)(
# self.room_group_name, self.channel_name
# )
# self.accept()
# def disconnect(self, close_code):
# # Leave room group
# async_to_sync(self.channel_layer.group_discard)(
# self.room_group_name, self.channel_name
# )
# # Receive message from WebSocket
# def receive(self, text_data):
# text_data_json = json.loads(text_data)
# message = text_data_json["message"]
# # Send message to room group
# async_to_sync(self.channel_layer.group_send)(
# self.room_group_name, {"type": "chat.message", "message": message}
# )
# # Receive message from room group
# def chat_message(self, event):
# message = event["message"]
# # Send message to WebSocket
# self.send(text_data=json.dumps({"message": message}))
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = self.scope["url_route"]["kwargs"]["room_name"]
self.room_group_name = f"chat_{self.room_name}"
# Join room group
await self.channel_layer.group_add(self.room_group_name, self.channel_name)
await self.accept()
async def disconnect(self, close_code):
# Leave room group
await self.channel_layer.group_discard(self.room_group_name, self.channel_name)
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json["message"]
# Send message to room group
# HTTP GET /chat/lobby/ 200 [0.02, 127.0.0.1:6781]
# chat_lobby
# print(self.room_group_name)
await self.channel_layer.group_send(
self.room_group_name, {"type": "chat.message", "message": message}
)
# Receive message from room group
async def chat_message(self, event):
message = event["message"]
# Send message to WebSocket
# await self.send(text_data=json.dumps({"message": message}))
await self.send(text_data=message)
# chat/routing.py
from django.urls import re_path
from . import consumers
websocket_urlpatterns = [
re_path(r"ws/chat/(?P<room_name>\w+)/$", consumers.ChatConsumer.as_asgi()),
]
\ No newline at end of file
<!-- chat/templates/chat/index.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Chat Rooms</title>
</head>
<body>
What chat room would you like to enter?<br>
<input id="room-name-input" type="text" size="100"><br>
<input id="room-name-submit" type="button" value="Enter">
<script>
document.querySelector('#room-name-input').focus();
document.querySelector('#room-name-input').onkeyup = function(e) {
if (e.key === 'Enter') { // enter, return
document.querySelector('#room-name-submit').click();
}
};
document.querySelector('#room-name-submit').onclick = function(e) {
var roomName = document.querySelector('#room-name-input').value;
window.location.pathname = '/chat/' + roomName + '/';
};
</script>
</body>
</html>
\ No newline at end of file
<!-- chat/templates/chat/room.html -->
{% extends 'base.html' %}
{% block title_content %}Chat Room{% endblock title_content %}
{% block body_content %}
<el-scrollbar ref="scrollbarRef" height="400px" always>
<div ref="innerRef">
<p v-for="item in items" :key="item" class="scrollbar-demo-item">
{$ item $}
</p>
</div>
</el-scrollbar>
<el-input id="chat-message-input" v-model="input" placeholder="Please input" @keyup.enter="send"></el-input>
<el-button @click="send">Send</el-button>
{{ room_name|json_script:"room-name" }}
{% endblock body_content %}
{% block script_content %}
<script>
const roomName = JSON.parse(document.getElementById('room-name').textContent);
let App = {
setup() {
const innerRef = Vue.ref()
const scrollbarRef = Vue.ref()
const input = Vue.ref("")
let chatSocket = null
const items = Vue.ref([])
// 状态监测,由于监测不到 items 的变化只能用这种标志位了
const flag = Vue.ref(false)
const send = () => {
if (chatSocket == null) {
console.error("chatSocket is null")
return
}
chatSocket.send(JSON.stringify({
'message': input.value
}))
input.value = ''
}
Vue.watch(flag, (newValue, oldValue) => {
setTimeout(() => {
// 执行实际逻辑
scrollbarRef.value.setScrollTop(innerRef.value.clientHeight)
}, 50)
})
Vue.onMounted(() => {
chatSocket = new WebSocket(
'ws://'
+ window.location.host
+ '/ws/chat/'
+ roomName
+ '/'
);
chatSocket.onmessage = (e) => {
const data = JSON.parse(e.data);
items.value.push(data.message)
flag.value = !flag.value
};
chatSocket.onclose = (e) => {
console.error('Chat socket closed unexpectedly');
};
})
return {
items,
input,
send,
innerRef,
scrollbarRef,
}
}
}
</script>
{% endblock script_content %}
{% block css_content %}
.scrollbar-demo-item {
display: flex;
align-items: center;
justify-content: center;
height: 50px;
margin: 10px;
text-align: center;
border-radius: 4px;
background: var(--el-color-primary-light-9);
color: var(--el-color-primary);
}
.el-slider {
margin-top: 20px;
}
{% endblock css_content %}
# chat/urls.py
from django.urls import path
from . import views
urlpatterns = [
]
\ No newline at end of file
from django.shortcuts import render
......@@ -15,6 +15,7 @@
"element-plus": "^2.3.9",
"path": "^0.12.7",
"process": "^0.11.10",
"protobufjs": "^7.2.4",
"terser": "^5.19.2",
"vue": "^3.3.4",
"vue-router": "^4.2.4"
......@@ -22,6 +23,7 @@
"devDependencies": {
"@vitejs/plugin-vue": "^4.2.3",
"typescript": "^5.0.2",
"unocss": "^0.54.2",
"vite": "^4.4.5",
"vue-tsc": "^1.8.5"
},
......
<script setup lang="ts">
import { ref } from 'vue'
import { ElButton } from 'element-plus'
import axios from 'axios'
import Test from '@/components/Test'
const count = ref(0)
const add = () => {
count.value++
}
const msg = ref<string>('')
const get_msg = () => {
axios.get('test/')
.then(res => {
console.log(res)
msg.value = res.data.message
})
.catch(err => {
console.error(err)
})
}
import Chat from '@/views/Chat'
</script>
<template>
<el-button @click="add">Button</el-button>
{{ count }}
<br>
<test></test>
<el-button @click="get_msg">get data</el-button>
{{ msg }}
<chat />
</template>
......@@ -5,6 +5,7 @@ import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import router from './router'
import 'virtual:uno.css'
const app = createApp(App)
......
......@@ -64,6 +64,7 @@ button:focus-visible {
margin: 0 auto;
padding: 2rem;
text-align: center;
width: 75%;
}
@media (prefers-color-scheme: light) {
......
<script setup lang="ts">
import { ref, watch, onMounted } from 'vue';
import { ElScrollbar, ElInput, ElButton } from 'element-plus';
const innerRef = ref<HTMLDivElement>();
const scrollbarRef = ref<InstanceType<typeof ElScrollbar>>();
const input = ref('');
const items = ref<string[]>([
'{"interface_id":"IID_OAM_Server_HistoryPerformance","dst_suid":285540352,"src_suid":285474816,"priority":100,"ts":"2023-08-08T08:16:14.224831Z","parameters":[{"@type":"type.googleapis.com/RequireHistoryPerformance","station_id":286261248,"start_time":"2023-07-17 02:27:44","end_time":"2023-07-17 02:39:07"}],"forward_flag":0,"request_index":"0","operations_type":0}',
'{"interface_id":"IID_OAM_Server_HistoryPerformance","dst_suid":285540352,"src_suid":285474816,"priority":100,"ts":"2023-08-08T08:16:14.224831Z","parameters":[{"@type":"type.googleapis.com/RequireHistoryPerformance","station_id":286261248,"start_time":"2023-07-17 02:27:44","end_time":"2023-07-17 02:39:07"}],"forward_flag":0,"request_index":"0","operations_type":0}',
'{"interface_id":"IID_OAM_Server_HistoryPerformance","dst_suid":285540352,"src_suid":285474816,"priority":100,"ts":"2023-08-08T08:16:14.224831Z","parameters":[{"@type":"type.googleapis.com/RequireHistoryPerformance","station_id":286261248,"start_time":"2023-07-17 02:27:44","end_time":"2023-07-17 02:39:07"}],"forward_flag":0,"request_index":"0","operations_type":0}',
'{"interface_id":"IID_OAM_Server_HistoryPerformance","dst_suid":285540352,"src_suid":285474816,"priority":100,"ts":"2023-08-08T08:16:14.224831Z","parameters":[{"@type":"type.googleapis.com/RequireHistoryPerformance","station_id":286261248,"start_time":"2023-07-17 02:27:44","end_time":"2023-07-17 02:39:07"}],"forward_flag":0,"request_index":"0","operations_type":0}',
'{"interface_id":"IID_OAM_Server_HistoryPerformance","dst_suid":285540352,"src_suid":285474816,"priority":100,"ts":"2023-08-08T08:16:14.224831Z","parameters":[{"@type":"type.googleapis.com/RequireHistoryPerformance","station_id":286261248,"start_time":"2023-07-17 02:27:44","end_time":"2023-07-17 02:39:07"}],"forward_flag":0,"request_index":"0","operations_type":0}',
'{"interface_id":"IID_OAM_Server_HistoryPerformance","dst_suid":285540352,"src_suid":285474816,"priority":100,"ts":"2023-08-08T08:16:14.224831Z","parameters":[{"@type":"type.googleapis.com/RequireHistoryPerformance","station_id":286261248,"start_time":"2023-07-17 02:27:44","end_time":"2023-07-17 02:39:07"}],"forward_flag":0,"request_index":"0","operations_type":0}',
'{"interface_id":"IID_OAM_Server_HistoryPerformance","dst_suid":285540352,"src_suid":285474816,"priority":100,"ts":"2023-08-08T08:16:14.224831Z","parameters":[{"@type":"type.googleapis.com/RequireHistoryPerformance","station_id":286261248,"start_time":"2023-07-17 02:27:44","end_time":"2023-07-17 02:39:07"}],"forward_flag":0,"request_index":"0","operations_type":0}',
]);
const flag = ref<boolean>(false);
let chatSocket: WebSocket | null = null;
const send = () => {
if (chatSocket === null) {
console.error('chatSocket is null');
return;
}
chatSocket.send(JSON.stringify({
'message': input.value
}));
input.value = '';
}
watch(flag, () => {
setTimeout(() => {
scrollbarRef.value!.setScrollTop(innerRef.value!.offsetHeight);
}, 50);
});
onMounted(() => {
chatSocket = new WebSocket(
'ws://'
+ window.location.host
+ '/ws/chat/mqtt/'
);
chatSocket.onmessage = (e) => {
// console.log(e);
// console.log(e.data)
// // 接收到的是字节流数据(ArrayBuffer)
// const byteArray = new Uint8Array(e.data);
// // 将字节流转换为字符串或其他格式进行处理
// const message = byteArray.toString();
items.value.push(JSON.stringify(e.data));
flag.value = !flag.value
};
chatSocket.onclose = (e) => {
console.error('Chat socket closed unexpectedly', e);
};
})
</script>
<template>
<el-scrollbar ref="scrollbarRef" mb-10 h-100 always>
<div ref="innerRef">
<p v-for="item in items" :key="item" class="scrollbar-demo-item">
<div>{{ JSON.parse(item)!.ts }}</div>
{{ item }}
</p>
</div>
</el-scrollbar>
<el-input v-model="input" placeholder="Please input" @keyup.enter="send"></el-input>
<el-button mt-10 @click="send">Send</el-button>
</template>
<style scoped>
.scrollbar-demo-item {
display: flex;
/* align-items: center; */
/* justify-content: center; */
height: auto;
margin: 10px;
text-align: left;
border-radius: 4px;
background: #fff;
color: #4d4c4c;
}
</style>
/**
* @file datastruct.proto
* @brief this file define all struct same as database table
* @author Fan Chuanlin, fancl@dscr.com.cn
* @version 1.0
* @date 2021-10-24
*/
syntax = "proto3";
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
import "TDSCmd.proto";
option go_package="../protogo";
//************************user define start***********************************//
//定义全部设备的报警ID
enum AlarmID_define
{
ID_Base = 0;
DevAla_id_Base = 30000000;
DevAla_id_Offline = 30000001; //统一全部设备都在用的
// ACU7.5米设备告警ID
DevAla_id_ACU7m5_Xaxis_alarm = 30001001;
DevAla_id_ACU7m5_Yaxis_alarm = 30001002;
DevAla_id_ACU7m5_east_limit = 30001003;
DevAla_id_ACU7m5_west_limit = 30001004;
DevAla_id_ACU7m5_south_limit = 30001005;
DevAla_id_ACU7m5_north_limit = 30001006;
//其他设备待补充
}
message Proto3DeviceAllCMD //用来传递协议的定义
{
int32 ID = 1;
string DEV_NAME = 2; //指令归属的设备名称 : AA_BBB_XXXXCMD
string PROTOCOL_NAME = 3; //协议名称 : AA_BBB_XXXXCMD
repeated Proto3DeviceCMDDefine CMDs = 4; //repeated 一个repeated就是一个完整的指令
}
//对应数据库的表2和表3
message Proto3DeviceCMDDefine //用来传递协议的定义
{
string CMD_NAME = 1; //指令名称 : AA_BBB_XXXXCMD
string ENCODE = 2; // 协议类型HEX ASCII
int32 Timing_CMD_Cycle_period = 3; // 定时自动发送报文周期 单位S
repeated Proto3CMDFieldCfg felids = 4; //repeated 选项保存全部字段的定义 一个repeated就是一个字段的定义
}
message Proto3ForReloadProtocol //用于协议重载的数据结构
{
string dev_name = 1;
string cmd_name = 2; ///< 字段序列号
enum Flags
{
NORMAL_DISPATCH = 0;//增量 表示只更新单个设备单个指令
FULL_DISPATCH = 1;//全量 表示重载单个设备的整个协议
}
Flags flags = 3; /// normal , full
}
message Proto3TableDevCmdNamePoll //表2 的参数
{
int32 id = 1;
string protocol_name = 2; //指令归属的设备协议名称 : AA_BBB_PROTOCOL
string cmd_name = 3; //指令名称 : AA_BBB_XXXXCMD
string cmd_type = 4; // TX1:下发的命令\ RX:收到的报文
string encode = 5; // 协议类型HEX(十六进制) ASCII(ASCII明文)
int32 timing_cmd_cycle_period = 6; // 定时自动发送报文周期 单位S
string cmd_explain = 7; // 指令备注说明
}
message Proto3TableAllDevCmdDefine //表3 的参数
{
int32 id = 1;
string cmd_name = 2; //指令名称 : aa_bbb_xxxxcmd 指令名称必须unique
string cmd_type = 3; // tx1:下发的命令\ rx:收到的报文
int32 fieldindex = 4; ///< 字段序列号
string fieldname = 5; ///< 字段名称
int32 fieldsize = 6; ///< 字段大小
string value = 7; ///< 字段的值
string minvalue = 8; ///< 最大值
string maxvalue = 9; ///< 最小值
int32 datatype = 10; ///< 字段的数据类型
int32 operation_in = 11; ///<对于从设备读取到的数据需要进行的加减乘除的处理
int32 operation_in_num = 12; ///>对于从设备读取到的数据需要进行的加减乘除的处理的参数
int32 operation_out = 13; ///<对于从上层传下来的数据需要进行的加减乘除的处理
int32 operation_out_num = 14; ///>对于从上层传下来的数据需要进行的加减乘除的处理的参数
int32 operabo_in = 15; ///>细节的字节序控制 类似modbus{ ab\ba\abcd\dcba等}
int32 operabo_out = 16; ///>细节的字节序控制
string lua_script_in = 17; ///< lua脚本名
string lua_script_out = 18; ///< lua脚本名
}
//设备层 数据库 设备通讯信息表格对应结构体
message Proto3DeviceInfoCfg //这个表项对应数据库表1
{
int32 ID = 1;
int32 DEV_ID = 2; //设备名:AA_BBB:AA项目_BBB设备 必填 唯一
string DEV_NAME = 3; //设备名:AA_BBB:AA项目_BBB设备
string PROTOCOL_NAME =4; //设备对应的协议名称
string CMD_EXCEL_PATH = 5; //设备指令定义表的路径
string COMUNITATE_MODE = 6; //通讯方式 TCP_SERVER、TCP_CLIENT、UDP_SERVE、UDPMC 。。。(后面还可以扩展串口)
string TCP_IP = 7; // TCP IP地址
int32 TCP_PORT = 8; // TCP 端口号
string UDP_IP_SRC = 9; // UDP本地IP
int32 UDP_PORT_SRC = 10; // UDP本地端口号
string UDP_IP_DST = 11; // UDP目标IP地址
int32 UDP_PORT_DST = 12; // UDP目标端口号
string UDPMC_IP = 13; // UDP组播 绑定的网卡ip
string UDPMC_IP_TX = 14; // UDP组播 用于发送的IP组播地址
int32 UDPMC_PORT_TX = 15; // UDP组播 用于发送的IP组播端口号
string UDPMC_IP_RX = 16; // UDP组播 用于接收的IP组播地址
int32 UDPMC_PORT_RX = 17; // UDP组播 用于接收的IP组播端口号
}
message Proto3CMDFieldCfg //协议字段定义的参数
{
int32 ID = 1;
int32 fieldIndex = 2; ///< 字段序列号
string fieldName = 3; ///< 字段名称
int32 fieldSize = 4; ///< 字段大小
string value = 5; ///< 字段的值
string minValue= 6; ///< 最大值
string maxValue = 7; ///< 最小值
int32 dataType = 8; ///< 字段的数据类型
int32 operation_in = 9; ///<对于从设备读取到的数据需要进行的加减乘除的处理
int32 operation_in_num = 10; ///>对于从设备读取到的数据需要进行的加减乘除的处理的参数
int32 operation_out = 11; ///<对于从上层传下来的数据需要进行的加减乘除的处理
int32 operation_out_num = 12; ///>对于从上层传下来的数据需要进行的加减乘除的处理的参数
int32 operaBO_in = 13; ///>细节的字节序控制 类似modbus{ AB\BA\ABCD\DCBA等}
int32 operaBO_out = 14; ///>细节的字节序控制
string Lua_Script_in = 15; ///< Lua脚本名
string Lua_Script_out = 16; ///< Lua脚本名
bytes value_bytes = 19 ; ///< 给不定长的payload字段使用
}
//设备层数据库增删查改用的 包含了操作类型 要操作的表格名称
message TDSDBC_CURD
{
string table = 1;
enum Flags
{
NORMAL_DISPATCH = 0;//增量
FULL_DISPATCH = 1;//全量
}
Flags flags = 2;
enum Operation
{
OPERATION_ADD = 0;
OPERATION_DEL = 1;
OPERATION_UPDATE = 2;
OPERATION_QUERY = 3;
}
Operation operation = 3;
CodeValue code = 4; // 回执
string msg = 5; // 回执消息
string msg_CHN = 6; // 回执消息
repeated google.protobuf.Any any_data = 7;
}
//设备层 报文的收发都使用这个
message TDSXDC_Device_cmd
{
uint32 DeviceID = 1; //具体设备ID
string dev_name=2; //设备名称 英文
string cmd_name = 3; //指令名称 : AA_BBB_XXXXCMD
CodeValue code = 4; // 回执
string msg = 5; // 回执消息
string msg_CHN = 6; // 回执消息
repeated Proto3CMDFieldCfg fields = 7; //repeated 选项保存全部字段的定义 一个repeated就是一个字段的定义
}
/**
* @file OAM_datastruct.proto
* @brief TDSCmd define
* @author YueWang
* @version 1.0
* @date 2022-09-23
*/
syntax = "proto3";
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
import "TDSCmd.proto";
//alrm level
enum Level{
Defaul_Level = 0; //告警级别非下列两种时为0
Normal_Alarm = 1;
Critical_Alarm = 2;
}
//log level
enum LogLevel{
Default_LogLevel = 0; //log级别非下列三种时为0
Normal = 1;
Warning = 2;
Error = 3;
}
enum OperandType {
_DEFAULT = 0; //数值不是下列几种情况时,为0
_UINT = 1;
_INT = 2;
_STRING = 3;
_FLOAT = 4;
_DOUBLE = 5;
}
// operator
enum Operator{
Default_Operator = 0; //操作符为空时,Default_Operator为0
GreaterThan = 1;
GreaterThanOrEqualTo = 2;
EqualTo = 3;
LessThan = 4;
LessThanOrEqualTo = 5;
NotEqualTo = 6;
}
enum RelationOperator {
Default_RelationOperator = 0; //关系符为空时,Default_RelationOperator为0
AND = 1;
OR = 2;
}
//message return back to device when OAM receive the alarm info from device
message DeviceRet{
uint32 AlarmID = 1;//这个就OAM会用到
uint32 StationID = 2;
uint32 DeviceID = 3;
CodeValue CodeRet = 4;
string Message = 5;
}
//normal message respond back to UI OR Lower OAM
message Respond{
CodeValue CodeRet = 1;
string Message = 2;
}
//StationID is SUID of device,DeviceID is the sub device
message StationDevID{
uint32 StationID = 1;
uint32 DeviceID = 2;
}
//alarm attribution
message AlarmAttri
{
uint32 Id = 1;
uint32 AlarmID = 2;
Level AlarmLevel =3;
string AlarmDescriptionCHN = 4;
string AlarmDescriptionENG = 5;
uint32 IsMon = 6;
google.protobuf.Timestamp CreateTime = 7;
}
//performance attribution
message PerAttri
{
uint32 Id = 1;
uint32 PerID = 2;
string DataCatlog =3;
string FieldName = 4;
string PerDescriptionCHN = 5;
string PerDescriptionENG = 6;
OperandType FieldType = 7;
string FieldUnit = 8;
Operator Operator1 = 9;
string Operand1 = 10;
RelationOperator Relation = 11;
Operator Operator2 = 12;
string Operand2 = 13;
uint32 IsMon = 14;
Level PerAlarmLevel = 15;
string AlarmDesCHN = 16;
string AlarmDesENG = 17;
google.protobuf.Timestamp CreateTime = 18;
}
//current alarm
message CurrAlarm
{
uint32 Id = 1;
uint32 AlarmID = 2;
uint32 StationID = 3;
uint32 DeviceID = 4;
Level AlarmLevel =5;
string AlarmDescriptionCHN = 6;
string AlarmDescriptionENG = 7;
google.protobuf.Timestamp ReportTime = 8;
}
// history of alarm
message HisAlarm
{
uint32 Id = 1;
uint32 AlarmID = 2;
uint32 StationID = 3;
uint32 DeviceID = 4;
Level AlarmLevel =5;
string AlarmDescriptionCHN = 6;
string AlarmDescriptionENG = 7;
google.protobuf.Timestamp StartTime = 8;
google.protobuf.Timestamp EndTime = 9;
}
message SysStatus
{
uint32 StationID = 1;
uint32 DeviceID = 2;
Devistatus Status = 3;
google.protobuf.Timestamp ReportTime = 4;
}
message Log{
uint32 Id = 1;
uint32 StationID = 2;
uint32 DeviceID = 3;
LogLevel Loglevel = 4;
string LogInfoCHN = 5;
string LogInfoENG = 6;
string Manipunator = 7;
google.protobuf.Timestamp ReportTime = 8 ;
}
message PerInfo{
uint32 Id = 1;
uint32 PerID = 2;
uint32 StationID = 3;
uint32 DeviceID = 4;
string DataCatlog = 5;
string FieldName = 6;
string FieldValue = 7;
string PerDescriptionCHN = 8;
string PerDescriptionENG = 9;
google.protobuf.Timestamp UpdateTime = 10 ;
}
message PerRequire{
string DataCatlog = 1;
string FieldName = 2;
uint32 IsMon = 3;
}
/**
* @file cmmstruct.proto
* @brief TDSCmd define
* @author Fan Chuanlin, fanchuanlin@aliyun.com
* @version 1.0
* @date 2022-09-06
*/
syntax = "proto3";
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
option go_package = "../protogo";
//成功失败 枚举
enum CodeValue
{
base_start = 0;
Succeed = 1;
Failed = 2;
}
enum IID
{
IID_Base = 0;
//====================== server =============================
IID_Server_Base = 10000;
// common
IID_Server_SyncEnd = 10001;
// satellite action
IID_Server_SatelliteList = 10101;
IID_Server_SatelliteList_respond = 10102;//list
IID_Server_SatelliteBaseUpdate = 10103;
IID_Server_SatelliteBaseUpdate_respond = 10104;
IID_Server_SatellitePriorityUpdate = 10105;
IID_Server_SatellitePriorityUpdate_respond = 10106;
IID_Server_SatellitePriorityList = 10107;
IID_Server_SatellitePriorityList_respond = 10108;
IID_Server_SatelliteAvailableUpdate = 10109;
IID_Server_SatelliteAvailableUpdate_respond = 10110;
IID_Server_SatelliteElementUpdate = 10111;
IID_Server_SatelliteElementUpdate_respond = 10112;
IID_Server_SatelliteElementLoad = 10113;
IID_Server_SatelliteElementLoad_respond = 10114;
IID_Server_SatelliteDel = 10115;
IID_Server_SatelliteDel_respond = 10116;
IID_Server_SatelliteInstantaneousRootUpdate = 10117;
IID_Server_SatelliteInstantaneousRootUpdate_respond = 10118;
IID_Server_SatelliteListSend = 10119;
IID_Server_SatelliteListSend_respond = 10120;
IID_Server_SatelliteListReceive = 10121;
IID_Server_SatelliteListReceive_respond = 10122;
// 卫星射频/解调参数
IID_Server_SatelliteWorkParamList = 10201;
IID_Server_SatelliteWorkParamList_respond = 10202;//list
IID_Server_SatelliteWorkParamUpdate = 10203;
IID_Server_SatelliteWorkParamUpdate_respond = 10204;
IID_Server_SatelliteWorkParamDel = 10205;
IID_Server_SatelliteWorkParamDel_respond = 10206;
IID_Server_SatelliteWorkParamListSend = 10207;
IID_Server_SatelliteWorkParamListSend_respond = 10208;
IID_Server_SatelliteWorkParamListReceive = 10209;
IID_Server_SatelliteWorkParamListReceive_respond = 10210;
// site action
IID_Server_SiteList = 10301;
IID_Server_SiteList_respond = 10302;//list
IID_Server_SiteUpdate = 10303;
IID_Server_SiteUpdate_respond = 10304;
IID_Server_SiteParamUpdate = 10305;
IID_Server_SiteParamUpdate_respond = 10306;
IID_Server_SiteDel = 10307;
IID_Server_SiteDel_respond = 10308;
IID_Server_SiteListSend = 10309;
IID_Server_SiteListSend_respond = 10310;
IID_Server_SiteListReceive = 10311;
IID_Server_SiteListReceive_respond = 10312;
// task action
IID_Server_TaskList = 10401;
IID_Server_TaskList_respond = 10402;//list
IID_Server_TaskForecast = 10403;
IID_Server_TaskForecast_respond = 10404;//list
IID_Server_TaskUpdate = 10405;
IID_Server_TaskUpdate_respond = 10406;
IID_Server_TaskDel = 10407;
IID_Server_TaskDel_respond = 10408;
IID_Server_TaskDetailDat = 10409;
IID_Server_TaskDetailDat_respond = 10410;//data
IID_Server_TaskDetailPoint = 10411;
IID_Server_TaskDetailPoint_respond = 10412;//data
IID_Server_TaskPause = 10413;
IID_Server_TaskPause_respond = 10414;
IID_Server_TaskRestart = 10415;
IID_Server_TaskRestart_respond = 10416;
IID_Server_TaskHandleConflict = 10417;
IID_Server_TaskHandleConflict_respond = 10418;//list
IID_Server_TaskHandModeSwitch = 10419;
IID_Server_TaskHandModeSwitch_respond = 10420;
IID_Server_TaskIndex = 10421;
IID_Server_TaskIndex_respond = 10422;//data
IID_Server_TaskListSend = 10423;
IID_Server_TaskListSend_respond = 10424;
IID_Server_TaskListReceive = 10425;
IID_Server_TaskListReceive_respond = 10426;
IID_Server_FileReceive = 10427;
IID_Server_FileReceive_respond = 10428;
IID_Server_TaskExecAnalysisResult = 105;
IID_Server_TaskExecAnalysisResult_respond = 10502;
IID_Server_TaskExecList = 10503;
IID_Server_TaskExecList_respond = 10504;//list
// more setting action
IID_Server_MoreSettingSet = 10601;
IID_Server_MoreSettingSet_respond = 10602;
IID_Server_MoreSettingGet = 10603;
IID_Server_MoreSettingGet_respond = 10604;// 正常-data ,获取存储规则-list
IID_Server_MoreSettingGetDefault = 10605;
IID_Server_MoreSettingGetDefault_respond = 10606;//data
IID_Server_MoreSettingDataSet = 10607;
IID_Server_MoreSettingDataSet_respond = 10608;
IID_Server_MoreSettingDataDel = 10609;
IID_Server_MoreSettingDataDel_respond = 10610;
IID_Server_MoreSettingRestoreDefault = 10611;
IID_Server_MoreSettingRestoreDefault_respond = 10612;
// user action
IID_Server_Login = 10701;
IID_Server_Login_respond = 10702;//data
IID_Server_UserCreate = 10703;
IID_Server_UserCreate_respond = 10704;
IID_Server_UserUpdate = 10705;
IID_Server_UserUpdate_respond = 10706;
IID_Server_UserDel = 10707;
IID_Server_UserDel_respond = 10708;
IID_Server_UserList = 10709;
IID_Server_UserList_respond = 10710;//list
//====================== UI =============================
IID_UI_Base = 20000;
IID_UI_xxx = 20001;
IID_UI_xxx_respond = 20002;
//====================== Device =============================
IID_Device_Base = 30000;
IID_Device_DBC_CURD = 30001;
IID_Device_DBC_CURD_respond = 30002;
IID_Device_Xpro_TX_cmd = 30003;
IID_Device_Xpro_TX_cmd_respond = 30004;
IID_Device_Xpro_RX_cmd = 30005;//用不上 统一用 IID_OAM_Device_Performance_RX 前端或server 根据命令名称判断是显示的还是其他业务
IID_Device_Xpro_RX_cmd_respond = 30006; //用不上
//====================== AGI =============================
IID_AGI_Base=40000;
IID_AGI_TLE=40001;
IID_AGI_TLE_respond=40002;
IID_AGI_Report=40003;
IID_AGI_Report_respond=40004;
//====================== OAM =============================
IID_OAM_Base = 50000;
// public use
IID_OAM_HeartBeat_RX = 50001;
IID_OAM_LOG_RX = 50003;
// OAM relay
IID_OAM_SysStatus_Relay = 50005;
IID_OAM_SysStatus_Relay_Respond = 50006;
IID_OAM_Performance_Relay = 50007;
IID_OAM_Performance_Relay_Respond = 50008;
IID_OAM_Alert_Start_Relay = 50009;
IID_OAM_Alert_Start_Relay_Respond = 50010;
IID_OAM_Alert_End_Relay = 50011;
IID_OAM_Alert_End_Relay_Respond = 50012;
IID_OAM_LOG_Relay = 50013;
IID_OAM_LOG_Relay_Respond = 50014;
// communicate with UI
IID_OAM_UI_SysStatus_Require = 50015;
IID_OAM_UI_SysStatus_Respond = 50016;
IID_OAM_UI_SysStatus_Update = 50017;
IID_OAM_UI_SysStatus_Update_Respond = 50018;
IID_OAM_UI_CurrentAlarms_Require = 50019;
IID_OAM_UI_CurrentAlarms_Respond = 50020;
IID_OAM_UI_CurrentAlarms_Start_Update = 50021;
IID_OAM_UI_CurrentAlarms_Start_Update_Respond = 50022;
IID_OAM_UI_CurrentAlarms_End_Update = 50023;
IID_OAM_UI_CurrentAlarms_End_Update_Respond = 50024;
IID_OAM_UI_HistoryAlarms_Require = 50025;
IID_OAM_UI_HistoryAlarms_Respond = 50026;
IID_OAM_UI_AlarmAttribution_Require = 50027;
IID_OAM_UI_AlarmAttribution_Respond = 50028;
IID_OAM_UI_AlarmAttribution_Update_Require = 50029;
IID_OAM_UI_AlarmAttribution_Update_Respond = 50030;
IID_OAM_UI_PerInfos_Require = 50031;
IID_OAM_UI_PerInfos_Respond = 50032;
IID_OAM_UI_PerAttribution_Require = 50033;
IID_OAM_UI_PerAttribution_Respond = 50034;
IID_OAM_UI_PerAttribution_Update_Require = 50035;
IID_OAM_UI_PerAttribution_Update_Respond = 50036;
IID_OAM_UI_LOG_Require = 50037;
IID_OAM_UI_LOG_Respond = 50038;
// communicate with Device
IID_OAM_Device_Alert_Start = 50039;
IID_OAM_Device_Alert_Start_Respond = 50040;
IID_OAM_Device_Alert_End = 50041;
IID_OAM_Device_Alert_End_Respond = 50042;
IID_OAM_Device_Performance_RX = 50043;
/*
......
xxxx id%2 == 1
xxxx_respond = id+1
*/
}
/// sub system define
enum BROKERAREA
{
BROKERAREA_LOCAL = 0;
BROKERAREA_CLOUD_LEVEL2 = 1;
BROKERAREA_CLOUD_LEVEL1 = 2;
}
enum SUBSYSTEM
{
SUBSYSTEM_base = 0;
SUBSYSTEM_Server = 1;
SUBSYSTEM_UI = 2;
SUBSYSTEM_Device = 3;
SUBSYSTEM_AGI = 4;
SUBSYSTEM_OAM = 5;
SUBSYSTEM_default = 6;
}
message TestParams
{
string key = 1;
string value = 2;
}
//设备状态枚举
enum Devistatus
{
Init_status = 0;
Online = 1;
Offline = 2;
Alarm = 3;
}
//心跳
message Heartbeat
{
uint32 suid = 1;
repeated IID iid_list = 2;
map<uint32, Devistatus> Dev_status = 3; //存放设备状态 <DEV_SUID,STATUS>
}
message TDSCmd
{
IID interface_id = 1;
uint32 dst_suid = 2;
uint32 src_suid = 3;
uint32 forward_flag = 4;
uint32 priority = 5; //报文优先级 可以优先发送
uint64 request_index = 6;
uint32 operations_type =7;
google.protobuf.Timestamp ts = 8;
repeated google.protobuf.Any parameters = 9;
}
\ No newline at end of file
// uno.config.ts
import { defineConfig, presetAttributify, presetUno } from 'unocss'
export default defineConfig({
// ...UnoCSS选项
presets: [
presetAttributify({
/* 预设选项 */
}),
presetUno()
// ...自定义预设
]
})
\ No newline at end of file
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import legacy from '@vitejs/plugin-legacy'
import UnoCSS from 'unocss/vite'
import { resolve } from 'path'
import process from 'process'
......@@ -20,11 +21,11 @@ export default defineConfig({
legacy({
targets: ['defaults', 'not IE 11'],
}),
vue()
vue(),
UnoCSS()
],
base: './',
server: {
host: '0.0.0.0',
port: 8000,
}
})
from django.contrib import admin
# Register your models here.
from django.apps import AppConfig
class MqttConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'mqtt'
/**
* @file datastruct.proto
* @brief this file define all struct same as database table
* @author Fan Chuanlin, fancl@dscr.com.cn
* @version 1.0
* @date 2021-10-24
*/
syntax = "proto3";
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
import "TDSCmd.proto";
option go_package="../protogo";
//************************user define start***********************************//
//定义全部设备的报警ID
enum AlarmID_define
{
ID_Base = 0;
DevAla_id_Base = 30000000;
DevAla_id_Offline = 30000001; //统一全部设备都在用的
// ACU7.5米设备告警ID
DevAla_id_ACU7m5_Xaxis_alarm = 30001001;
DevAla_id_ACU7m5_Yaxis_alarm = 30001002;
DevAla_id_ACU7m5_east_limit = 30001003;
DevAla_id_ACU7m5_west_limit = 30001004;
DevAla_id_ACU7m5_south_limit = 30001005;
DevAla_id_ACU7m5_north_limit = 30001006;
//其他设备待补充
}
message Proto3DeviceAllCMD //用来传递协议的定义
{
int32 ID = 1;
string DEV_NAME = 2; //指令归属的设备名称 : AA_BBB_XXXXCMD
string PROTOCOL_NAME = 3; //协议名称 : AA_BBB_XXXXCMD
repeated Proto3DeviceCMDDefine CMDs = 4; //repeated 一个repeated就是一个完整的指令
}
//对应数据库的表2和表3
message Proto3DeviceCMDDefine //用来传递协议的定义
{
string CMD_NAME = 1; //指令名称 : AA_BBB_XXXXCMD
string ENCODE = 2; // 协议类型HEX ASCII
int32 Timing_CMD_Cycle_period = 3; // 定时自动发送报文周期 单位S
repeated Proto3CMDFieldCfg felids = 4; //repeated 选项保存全部字段的定义 一个repeated就是一个字段的定义
}
message Proto3ForReloadProtocol //用于协议重载的数据结构
{
string dev_name = 1;
string cmd_name = 2; ///< 字段序列号
enum Flags
{
NORMAL_DISPATCH = 0;//增量 表示只更新单个设备单个指令
FULL_DISPATCH = 1;//全量 表示重载单个设备的整个协议
}
Flags flags = 3; /// normal , full
}
message Proto3TableDevCmdNamePoll //表2 的参数
{
int32 id = 1;
string protocol_name = 2; //指令归属的设备协议名称 : AA_BBB_PROTOCOL
string cmd_name = 3; //指令名称 : AA_BBB_XXXXCMD
string cmd_type = 4; // TX1:下发的命令\ RX:收到的报文
string encode = 5; // 协议类型HEX(十六进制) ASCII(ASCII明文)
int32 timing_cmd_cycle_period = 6; // 定时自动发送报文周期 单位S
string cmd_explain = 7; // 指令备注说明
}
message Proto3TableAllDevCmdDefine //表3 的参数
{
int32 id = 1;
string cmd_name = 2; //指令名称 : aa_bbb_xxxxcmd 指令名称必须unique
string cmd_type = 3; // tx1:下发的命令\ rx:收到的报文
int32 fieldindex = 4; ///< 字段序列号
string fieldname = 5; ///< 字段名称
int32 fieldsize = 6; ///< 字段大小
string value = 7; ///< 字段的值
string minvalue = 8; ///< 最大值
string maxvalue = 9; ///< 最小值
int32 datatype = 10; ///< 字段的数据类型
int32 operation_in = 11; ///<对于从设备读取到的数据需要进行的加减乘除的处理
int32 operation_in_num = 12; ///>对于从设备读取到的数据需要进行的加减乘除的处理的参数
int32 operation_out = 13; ///<对于从上层传下来的数据需要进行的加减乘除的处理
int32 operation_out_num = 14; ///>对于从上层传下来的数据需要进行的加减乘除的处理的参数
int32 operabo_in = 15; ///>细节的字节序控制 类似modbus{ ab\ba\abcd\dcba等}
int32 operabo_out = 16; ///>细节的字节序控制
string lua_script_in = 17; ///< lua脚本名
string lua_script_out = 18; ///< lua脚本名
}
//设备层 数据库 设备通讯信息表格对应结构体
message Proto3DeviceInfoCfg //这个表项对应数据库表1
{
int32 ID = 1;
int32 DEV_ID = 2; //设备名:AA_BBB:AA项目_BBB设备 必填 唯一
string DEV_NAME = 3; //设备名:AA_BBB:AA项目_BBB设备
string PROTOCOL_NAME =4; //设备对应的协议名称
string CMD_EXCEL_PATH = 5; //设备指令定义表的路径
string COMUNITATE_MODE = 6; //通讯方式 TCP_SERVER、TCP_CLIENT、UDP_SERVE、UDPMC 。。。(后面还可以扩展串口)
string TCP_IP = 7; // TCP IP地址
int32 TCP_PORT = 8; // TCP 端口号
string UDP_IP_SRC = 9; // UDP本地IP
int32 UDP_PORT_SRC = 10; // UDP本地端口号
string UDP_IP_DST = 11; // UDP目标IP地址
int32 UDP_PORT_DST = 12; // UDP目标端口号
string UDPMC_IP = 13; // UDP组播 绑定的网卡ip
string UDPMC_IP_TX = 14; // UDP组播 用于发送的IP组播地址
int32 UDPMC_PORT_TX = 15; // UDP组播 用于发送的IP组播端口号
string UDPMC_IP_RX = 16; // UDP组播 用于接收的IP组播地址
int32 UDPMC_PORT_RX = 17; // UDP组播 用于接收的IP组播端口号
}
message Proto3CMDFieldCfg //协议字段定义的参数
{
int32 ID = 1;
int32 fieldIndex = 2; ///< 字段序列号
string fieldName = 3; ///< 字段名称
int32 fieldSize = 4; ///< 字段大小
string value = 5; ///< 字段的值
string minValue= 6; ///< 最大值
string maxValue = 7; ///< 最小值
int32 dataType = 8; ///< 字段的数据类型
int32 operation_in = 9; ///<对于从设备读取到的数据需要进行的加减乘除的处理
int32 operation_in_num = 10; ///>对于从设备读取到的数据需要进行的加减乘除的处理的参数
int32 operation_out = 11; ///<对于从上层传下来的数据需要进行的加减乘除的处理
int32 operation_out_num = 12; ///>对于从上层传下来的数据需要进行的加减乘除的处理的参数
int32 operaBO_in = 13; ///>细节的字节序控制 类似modbus{ AB\BA\ABCD\DCBA等}
int32 operaBO_out = 14; ///>细节的字节序控制
string Lua_Script_in = 15; ///< Lua脚本名
string Lua_Script_out = 16; ///< Lua脚本名
bytes value_bytes = 19 ; ///< 给不定长的payload字段使用
}
//设备层数据库增删查改用的 包含了操作类型 要操作的表格名称
message TDSDBC_CURD
{
string table = 1;
enum Flags
{
NORMAL_DISPATCH = 0;//增量
FULL_DISPATCH = 1;//全量
}
Flags flags = 2;
enum Operation
{
OPERATION_ADD = 0;
OPERATION_DEL = 1;
OPERATION_UPDATE = 2;
OPERATION_QUERY = 3;
}
Operation operation = 3;
CodeValue code = 4; // 回执
string msg = 5; // 回执消息
string msg_CHN = 6; // 回执消息
repeated google.protobuf.Any any_data = 7;
}
//设备层 报文的收发都使用这个
message TDSXDC_Device_cmd
{
uint32 DeviceID = 1; //具体设备ID
string dev_name=2; //设备名称 英文
string cmd_name = 3; //指令名称 : AA_BBB_XXXXCMD
CodeValue code = 4; // 回执
string msg = 5; // 回执消息
string msg_CHN = 6; // 回执消息
repeated Proto3CMDFieldCfg fields = 7; //repeated 选项保存全部字段的定义 一个repeated就是一个字段的定义
}
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: Device_datastruct.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
import TDSCmd_pb2 as TDSCmd__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x44\x65vice_datastruct.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x0cTDSCmd.proto\"o\n\x12Proto3DeviceAllCMD\x12\n\n\x02ID\x18\x01 \x01(\x05\x12\x10\n\x08\x44\x45V_NAME\x18\x02 \x01(\t\x12\x15\n\rPROTOCOL_NAME\x18\x03 \x01(\t\x12$\n\x04\x43MDs\x18\x04 \x03(\x0b\x32\x16.Proto3DeviceCMDDefine\"~\n\x15Proto3DeviceCMDDefine\x12\x10\n\x08\x43MD_NAME\x18\x01 \x01(\t\x12\x0e\n\x06\x45NCODE\x18\x02 \x01(\t\x12\x1f\n\x17Timing_CMD_Cycle_period\x18\x03 \x01(\x05\x12\"\n\x06\x66\x65lids\x18\x04 \x03(\x0b\x32\x12.Proto3CMDFieldCfg\"\x9d\x01\n\x17Proto3ForReloadProtocol\x12\x10\n\x08\x64\x65v_name\x18\x01 \x01(\t\x12\x10\n\x08\x63md_name\x18\x02 \x01(\t\x12-\n\x05\x66lags\x18\x03 \x01(\x0e\x32\x1e.Proto3ForReloadProtocol.Flags\"/\n\x05\x46lags\x12\x13\n\x0fNORMAL_DISPATCH\x10\x00\x12\x11\n\rFULL_DISPATCH\x10\x01\"\xa8\x01\n\x19Proto3TableDevCmdNamePoll\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x15\n\rprotocol_name\x18\x02 \x01(\t\x12\x10\n\x08\x63md_name\x18\x03 \x01(\t\x12\x10\n\x08\x63md_type\x18\x04 \x01(\t\x12\x0e\n\x06\x65ncode\x18\x05 \x01(\t\x12\x1f\n\x17timing_cmd_cycle_period\x18\x06 \x01(\x05\x12\x13\n\x0b\x63md_explain\x18\x07 \x01(\t\"\x85\x03\n\x1aProto3TableAllDevCmdDefine\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x10\n\x08\x63md_name\x18\x02 \x01(\t\x12\x10\n\x08\x63md_type\x18\x03 \x01(\t\x12\x12\n\nfieldindex\x18\x04 \x01(\x05\x12\x11\n\tfieldname\x18\x05 \x01(\t\x12\x11\n\tfieldsize\x18\x06 \x01(\x05\x12\r\n\x05value\x18\x07 \x01(\t\x12\x10\n\x08minvalue\x18\x08 \x01(\t\x12\x10\n\x08maxvalue\x18\t \x01(\t\x12\x10\n\x08\x64\x61tatype\x18\n \x01(\x05\x12\x14\n\x0coperation_in\x18\x0b \x01(\x05\x12\x18\n\x10operation_in_num\x18\x0c \x01(\x05\x12\x15\n\roperation_out\x18\r \x01(\x05\x12\x19\n\x11operation_out_num\x18\x0e \x01(\x05\x12\x12\n\noperabo_in\x18\x0f \x01(\x05\x12\x13\n\x0boperabo_out\x18\x10 \x01(\x05\x12\x15\n\rlua_script_in\x18\x11 \x01(\t\x12\x16\n\x0elua_script_out\x18\x12 \x01(\t\"\xa2\x03\n\x13Proto3DeviceInfoCfg\x12\n\n\x02ID\x18\x01 \x01(\x05\x12\x0e\n\x06STA_ID\x18\x02 \x01(\t\x12\x0e\n\x06\x44\x45V_ID\x18\x03 \x01(\x05\x12\x10\n\x08\x44\x45V_NAME\x18\x04 \x01(\t\x12\x14\n\x0c\x44\x45V_NAME_CHN\x18\x05 \x01(\t\x12\x15\n\rPROTOCOL_NAME\x18\x06 \x01(\t\x12\x16\n\x0e\x43MD_EXCEL_PATH\x18\x07 \x01(\t\x12\x17\n\x0f\x43OMUNITATE_MODE\x18\x08 \x01(\t\x12\x0e\n\x06TCP_IP\x18\t \x01(\t\x12\x10\n\x08TCP_PORT\x18\n \x01(\x05\x12\x12\n\nUDP_IP_SRC\x18\x0b \x01(\t\x12\x14\n\x0cUDP_PORT_SRC\x18\x0c \x01(\x05\x12\x12\n\nUDP_IP_DST\x18\r \x01(\t\x12\x14\n\x0cUDP_PORT_DST\x18\x0e \x01(\x05\x12\x10\n\x08UDPMC_IP\x18\x0f \x01(\t\x12\x13\n\x0bUDPMC_IP_TX\x18\x10 \x01(\t\x12\x15\n\rUDPMC_PORT_TX\x18\x11 \x01(\x05\x12\x13\n\x0bUDPMC_IP_RX\x18\x12 \x01(\t\x12\x15\n\rUDPMC_PORT_RX\x18\x13 \x01(\x05\x12\x0f\n\x07REMARKS\x18\x14 \x01(\t\"\xed\x02\n\x11Proto3CMDFieldCfg\x12\n\n\x02ID\x18\x01 \x01(\x05\x12\x12\n\nfieldIndex\x18\x02 \x01(\x05\x12\x11\n\tfieldName\x18\x03 \x01(\t\x12\x11\n\tfieldSize\x18\x04 \x01(\x05\x12\r\n\x05value\x18\x05 \x01(\t\x12\x10\n\x08minValue\x18\x06 \x01(\t\x12\x10\n\x08maxValue\x18\x07 \x01(\t\x12\x10\n\x08\x64\x61taType\x18\x08 \x01(\x05\x12\x14\n\x0coperation_in\x18\t \x01(\x05\x12\x18\n\x10operation_in_num\x18\n \x01(\x05\x12\x15\n\roperation_out\x18\x0b \x01(\x05\x12\x19\n\x11operation_out_num\x18\x0c \x01(\x05\x12\x12\n\noperaBO_in\x18\r \x01(\x05\x12\x13\n\x0boperaBO_out\x18\x0e \x01(\x05\x12\x15\n\rLua_Script_in\x18\x0f \x01(\t\x12\x16\n\x0eLua_Script_out\x18\x10 \x01(\t\x12\x13\n\x0bvalue_bytes\x18\x13 \x01(\x0c\"\xaa\x01\n\x1cProto3TableSoftLimitAngleCfg\x12\n\n\x02ID\x18\x01 \x01(\x05\x12\x0e\n\x06STA_ID\x18\x02 \x01(\t\x12\x10\n\x08\x44\x45V_NAME\x18\x03 \x01(\t\x12\x14\n\x0c\x44\x45V_NAME_CHN\x18\x04 \x01(\t\x12\x15\n\rPROTOCOL_NAME\x18\x05 \x01(\t\x12\x1e\n\x16PITCH_SOFT_LIMIT_ANGLE\x18\x06 \x01(\t\x12\x0f\n\x07REMARKS\x18\x07 \x01(\t\"\xd9\x02\n\x0bTDSDBC_CURD\x12\r\n\x05table\x18\x01 \x01(\t\x12!\n\x05\x66lags\x18\x02 \x01(\x0e\x32\x12.TDSDBC_CURD.Flags\x12)\n\toperation\x18\x03 \x01(\x0e\x32\x16.TDSDBC_CURD.Operation\x12\x18\n\x04\x63ode\x18\x04 \x01(\x0e\x32\n.CodeValue\x12\x0b\n\x03msg\x18\x05 \x01(\t\x12\x0f\n\x07msg_CHN\x18\x06 \x01(\t\x12&\n\x08\x61ny_data\x18\x07 \x03(\x0b\x32\x14.google.protobuf.Any\"/\n\x05\x46lags\x12\x13\n\x0fNORMAL_DISPATCH\x10\x00\x12\x11\n\rFULL_DISPATCH\x10\x01\"\\\n\tOperation\x12\x11\n\rOPERATION_ADD\x10\x00\x12\x11\n\rOPERATION_DEL\x10\x01\x12\x14\n\x10OPERATION_UPDATE\x10\x02\x12\x13\n\x0fOPERATION_QUERY\x10\x03\"\xbc\x01\n\x11TDSXDC_Device_cmd\x12\x10\n\x08\x44\x65viceID\x18\x01 \x01(\r\x12\x10\n\x08\x64\x65v_name\x18\x02 \x01(\t\x12\x10\n\x08\x63md_name\x18\x03 \x01(\t\x12\x15\n\rprotocol_name\x18\x04 \x01(\t\x12\x18\n\x04\x63ode\x18\x05 \x01(\x0e\x32\n.CodeValue\x12\x0b\n\x03msg\x18\x06 \x01(\t\x12\x0f\n\x07msg_CHN\x18\x07 \x01(\t\x12\"\n\x06\x66ields\x18\x08 \x03(\x0b\x32\x12.Proto3CMDFieldCfg*\x7f\n\x0e\x41larmID_define\x12\x0b\n\x07ID_Base\x10\x00\x12\x15\n\x0e\x44\x65vAla_id_Base\x10\x80\x87\xa7\x0e\x12\x18\n\x11\x44\x65vAla_id_Offline\x10\x81\x87\xa7\x0e\x12/\n(DevAla_id_Antenna_pitch_angle_soft_limit\x10\x82\x87\xa7\x0e\x42\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'Device_datastruct_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_ALARMID_DEFINE._serialized_start=2566
_ALARMID_DEFINE._serialized_end=2693
_PROTO3DEVICEALLCMD._serialized_start=101
_PROTO3DEVICEALLCMD._serialized_end=212
_PROTO3DEVICECMDDEFINE._serialized_start=214
_PROTO3DEVICECMDDEFINE._serialized_end=340
_PROTO3FORRELOADPROTOCOL._serialized_start=343
_PROTO3FORRELOADPROTOCOL._serialized_end=500
_PROTO3FORRELOADPROTOCOL_FLAGS._serialized_start=453
_PROTO3FORRELOADPROTOCOL_FLAGS._serialized_end=500
_PROTO3TABLEDEVCMDNAMEPOLL._serialized_start=503
_PROTO3TABLEDEVCMDNAMEPOLL._serialized_end=671
_PROTO3TABLEALLDEVCMDDEFINE._serialized_start=674
_PROTO3TABLEALLDEVCMDDEFINE._serialized_end=1063
_PROTO3DEVICEINFOCFG._serialized_start=1066
_PROTO3DEVICEINFOCFG._serialized_end=1484
_PROTO3CMDFIELDCFG._serialized_start=1487
_PROTO3CMDFIELDCFG._serialized_end=1852
_PROTO3TABLESOFTLIMITANGLECFG._serialized_start=1855
_PROTO3TABLESOFTLIMITANGLECFG._serialized_end=2025
_TDSDBC_CURD._serialized_start=2028
_TDSDBC_CURD._serialized_end=2373
_TDSDBC_CURD_FLAGS._serialized_start=453
_TDSDBC_CURD_FLAGS._serialized_end=500
_TDSDBC_CURD_OPERATION._serialized_start=2281
_TDSDBC_CURD_OPERATION._serialized_end=2373
_TDSXDC_DEVICE_CMD._serialized_start=2376
_TDSXDC_DEVICE_CMD._serialized_end=2564
# @@protoc_insertion_point(module_scope)
/**
* @file OAM_datastruct.proto
* @brief TDSCmd define
* @author YueWang
* @version 1.0
* @date 2022-09-23
*/
syntax = "proto3";
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
import "TDSCmd.proto";
//alrm level
enum Level{
Defaul_Level = 0; //告警级别非下列两种时为0
Normal_Alarm = 1;
Critical_Alarm = 2;
}
//log level
enum LogLevel{
Default_LogLevel = 0; //log级别非下列三种时为0
Normal = 1;
Warning = 2;
Error = 3;
}
enum OperandType {
_DEFAULT = 0; //数值不是下列几种情况时,为0
_UINT = 1;
_INT = 2;
_STRING = 3;
_FLOAT = 4;
_DOUBLE = 5;
}
// operator
enum Operator{
Default_Operator = 0; //操作符为空时,Default_Operator为0
GreaterThan = 1;
GreaterThanOrEqualTo = 2;
EqualTo = 3;
LessThan = 4;
LessThanOrEqualTo = 5;
NotEqualTo = 6;
}
enum RelationOperator {
Default_RelationOperator = 0; //关系符为空时,Default_RelationOperator为0
AND = 1;
OR = 2;
}
//message return back to device when OAM receive the alarm info from device
message DeviceRet{
uint32 AlarmID = 1;//这个就OAM会用到
uint32 StationID = 2;
uint32 DeviceID = 3;
CodeValue CodeRet = 4;
string Message = 5;
}
//normal message respond back to UI OR Lower OAM
message Respond{
CodeValue CodeRet = 1;
string Message = 2;
}
//StationID is SUID of device,DeviceID is the sub device
message StationDevID{
uint32 StationID = 1;
uint32 DeviceID = 2;
}
//alarm attribution
message AlarmAttri
{
uint32 Id = 1;
uint32 AlarmID = 2;
Level AlarmLevel =3;
string AlarmDescriptionCHN = 4;
string AlarmDescriptionENG = 5;
uint32 IsMon = 6;
google.protobuf.Timestamp CreateTime = 7;
}
//performance attribution
message PerAttri
{
uint32 Id = 1;
uint32 PerID = 2;
string DataCatlog =3;
string FieldName = 4;
string PerDescriptionCHN = 5;
string PerDescriptionENG = 6;
OperandType FieldType = 7;
string FieldUnit = 8;
Operator Operator1 = 9;
string Operand1 = 10;
RelationOperator Relation = 11;
Operator Operator2 = 12;
string Operand2 = 13;
uint32 IsMon = 14;
Level PerAlarmLevel = 15;
string AlarmDesCHN = 16;
string AlarmDesENG = 17;
google.protobuf.Timestamp CreateTime = 18;
}
//current alarm
message CurrAlarm
{
uint32 Id = 1;
uint32 AlarmID = 2;
uint32 StationID = 3;
uint32 DeviceID = 4;
Level AlarmLevel =5;
string AlarmDescriptionCHN = 6;
string AlarmDescriptionENG = 7;
google.protobuf.Timestamp ReportTime = 8;
}
// history of alarm
message HisAlarm
{
uint32 Id = 1;
uint32 AlarmID = 2;
uint32 StationID = 3;
uint32 DeviceID = 4;
Level AlarmLevel =5;
string AlarmDescriptionCHN = 6;
string AlarmDescriptionENG = 7;
google.protobuf.Timestamp StartTime = 8;
google.protobuf.Timestamp EndTime = 9;
}
message SysStatus
{
uint32 StationID = 1;
uint32 DeviceID = 2;
Devistatus Status = 3;
google.protobuf.Timestamp ReportTime = 4;
}
message Log{
uint32 Id = 1;
uint32 StationID = 2;
uint32 DeviceID = 3;
LogLevel Loglevel = 4;
string LogInfoCHN = 5;
string LogInfoENG = 6;
string Manipunator = 7;
google.protobuf.Timestamp ReportTime = 8 ;
}
message PerInfo{
uint32 Id = 1;
uint32 PerID = 2;
uint32 StationID = 3;
uint32 DeviceID = 4;
string DataCatlog = 5;
string FieldName = 6;
string FieldValue = 7;
string PerDescriptionCHN = 8;
string PerDescriptionENG = 9;
google.protobuf.Timestamp UpdateTime = 10 ;
}
message PerRequire{
string DataCatlog = 1;
string FieldName = 2;
uint32 IsMon = 3;
}
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: OAM_datastruct.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from . import TDSCmd_pb2 as TDSCmd_pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14OAM_datastruct.proto\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x0cTDSCmd.proto\"o\n\tDeviceRet\x12\x0f\n\x07\x41larmID\x18\x01 \x01(\r\x12\x11\n\tStationID\x18\x02 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x03 \x01(\r\x12\x1b\n\x07\x43odeRet\x18\x04 \x01(\x0e\x32\n.CodeValue\x12\x0f\n\x07Message\x18\x05 \x01(\t\"7\n\x07Respond\x12\x1b\n\x07\x43odeRet\x18\x01 \x01(\x0e\x32\n.CodeValue\x12\x0f\n\x07Message\x18\x02 \x01(\t\"3\n\x0cStationDevID\x12\x11\n\tStationID\x18\x01 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x02 \x01(\r\"\xbe\x01\n\nAlarmAttri\x12\n\n\x02Id\x18\x01 \x01(\r\x12\x0f\n\x07\x41larmID\x18\x02 \x01(\r\x12\x1a\n\nAlarmLevel\x18\x03 \x01(\x0e\x32\x06.Level\x12\x1b\n\x13\x41larmDescriptionCHN\x18\x04 \x01(\t\x12\x1b\n\x13\x41larmDescriptionENG\x18\x05 \x01(\t\x12\r\n\x05IsMon\x18\x06 \x01(\r\x12.\n\nCreateTime\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xd4\x03\n\x08PerAttri\x12\n\n\x02Id\x18\x01 \x01(\r\x12\r\n\x05PerID\x18\x02 \x01(\r\x12\x12\n\nDataCatlog\x18\x03 \x01(\t\x12\x11\n\tFieldName\x18\x04 \x01(\t\x12\x19\n\x11PerDescriptionCHN\x18\x05 \x01(\t\x12\x19\n\x11PerDescriptionENG\x18\x06 \x01(\t\x12\x1f\n\tFieldType\x18\x07 \x01(\x0e\x32\x0c.OperandType\x12\x11\n\tFieldUnit\x18\x08 \x01(\t\x12\x1c\n\tOperator1\x18\t \x01(\x0e\x32\t.Operator\x12\x10\n\x08Operand1\x18\n \x01(\t\x12#\n\x08Relation\x18\x0b \x01(\x0e\x32\x11.RelationOperator\x12\x1c\n\tOperator2\x18\x0c \x01(\x0e\x32\t.Operator\x12\x10\n\x08Operand2\x18\r \x01(\t\x12\r\n\x05IsMon\x18\x0e \x01(\r\x12\x0f\n\x07IsFixed\x18\x0f \x01(\r\x12\x1d\n\rPerAlarmLevel\x18\x10 \x01(\x0e\x32\x06.Level\x12\x13\n\x0b\x41larmDesCHN\x18\x11 \x01(\t\x12\x13\n\x0b\x41larmDesENG\x18\x12 \x01(\t\x12.\n\nCreateTime\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xd3\x01\n\tCurrAlarm\x12\n\n\x02Id\x18\x01 \x01(\r\x12\x0f\n\x07\x41larmID\x18\x02 \x01(\r\x12\x11\n\tStationID\x18\x03 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x04 \x01(\r\x12\x1a\n\nAlarmLevel\x18\x05 \x01(\x0e\x32\x06.Level\x12\x1b\n\x13\x41larmDescriptionCHN\x18\x06 \x01(\t\x12\x1b\n\x13\x41larmDescriptionENG\x18\x07 \x01(\t\x12.\n\nReportTime\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xfe\x01\n\x08HisAlarm\x12\n\n\x02Id\x18\x01 \x01(\r\x12\x0f\n\x07\x41larmID\x18\x02 \x01(\r\x12\x11\n\tStationID\x18\x03 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x04 \x01(\r\x12\x1a\n\nAlarmLevel\x18\x05 \x01(\x0e\x32\x06.Level\x12\x1b\n\x13\x41larmDescriptionCHN\x18\x06 \x01(\t\x12\x1b\n\x13\x41larmDescriptionENG\x18\x07 \x01(\t\x12-\n\tStartTime\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x45ndTime\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x91\x01\n\tSysStatus\x12\x11\n\tStationID\x18\x01 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x02 \x01(\r\x12\x12\n\nDeviceName\x18\x03 \x01(\t\x12\x1b\n\x06Status\x18\x04 \x01(\x0e\x32\x0b.Devistatus\x12.\n\nReportTime\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe3\x01\n\x03Log\x12\n\n\x02Id\x18\x01 \x01(\r\x12\x11\n\tStationID\x18\x02 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x03 \x01(\r\x12!\n\x0e\x43lassification\x18\x04 \x01(\x0e\x32\t.LogClass\x12\x1b\n\x08Loglevel\x18\x05 \x01(\x0e\x32\t.LogLevel\x12\x12\n\nLogInfoCHN\x18\x06 \x01(\t\x12\x12\n\nLogInfoENG\x18\x07 \x01(\t\x12\x13\n\x0bManipunator\x18\x08 \x01(\t\x12.\n\nReportTime\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xea\x01\n\x07PerInfo\x12\n\n\x02Id\x18\x01 \x01(\r\x12\r\n\x05PerID\x18\x02 \x01(\r\x12\x11\n\tStationID\x18\x03 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x04 \x01(\r\x12\x12\n\nDataCatlog\x18\x05 \x01(\t\x12\x11\n\tFieldName\x18\x06 \x01(\t\x12\x12\n\nFieldValue\x18\x07 \x01(\t\x12\x19\n\x11PerDescriptionCHN\x18\x08 \x01(\t\x12\x19\n\x11PerDescriptionENG\x18\t \x01(\t\x12.\n\nUpdateTime\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"B\n\nPerRequire\x12\x12\n\nDataCatlog\x18\x01 \x01(\t\x12\x11\n\tFieldName\x18\x02 \x01(\t\x12\r\n\x05IsMon\x18\x03 \x01(\r\"\xfb\x01\n\x0bRequireInfo\x12\x11\n\tStationID\x18\x01 \x01(\r\x12\x10\n\x08\x44\x65viceID\x18\x02 \x01(\r\x12-\n\tStartTime\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x45ndTime\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1a\n\nAlarmLevel\x18\x05 \x01(\x0e\x32\x06.Level\x12\x1b\n\x08Loglevel\x18\x06 \x01(\x0e\x32\t.LogLevel\x12\x0f\n\x07\x41larmID\x18\x07 \x01(\r\x12!\n\x0e\x43lassification\x18\x08 \x01(\x0e\x32\t.LogClass\"U\n\x19RequireHistoryPerformance\x12\x12\n\nstation_id\x18\x01 \x01(\x05\x12\x12\n\nstart_time\x18\x02 \x01(\t\x12\x10\n\x08\x65nd_time\x18\x03 \x01(\t\"\x83\x01\n\x12HistoryPerformance\x12\x39\n\x0bperformance\x18\x01 \x03(\x0b\x32$.HistoryPerformance.PerformanceEntry\x1a\x32\n\x10PerformanceEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"F\n!RequireHistoryPerformanceResponse\x12!\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x13.HistoryPerformance*?\n\x05Level\x12\x10\n\x0c\x44\x65\x66\x61ut_Level\x10\x00\x12\x10\n\x0cNormal_Alarm\x10\x01\x12\x12\n\x0e\x43ritical_Alarm\x10\x02*D\n\x08LogLevel\x12\x14\n\x10\x44\x65\x66\x61ult_LogLevel\x10\x00\x12\n\n\x06Normal\x10\x01\x12\x0b\n\x07Warning\x10\x02\x12\t\n\x05\x45rror\x10\x03*V\n\x0bOperandType\x12\x0c\n\x08_DEFAULT\x10\x00\x12\t\n\x05_UINT\x10\x01\x12\x08\n\x04_INT\x10\x02\x12\x0b\n\x07_STRING\x10\x03\x12\n\n\x06_FLOAT\x10\x04\x12\x0b\n\x07_DOUBLE\x10\x05*\x8d\x01\n\x08Operator\x12\x14\n\x10\x44\x65\x66\x61ult_Operator\x10\x00\x12\x0f\n\x0bGreaterThan\x10\x01\x12\x18\n\x14GreaterThanOrEqualTo\x10\x02\x12\x0b\n\x07\x45qualTo\x10\x03\x12\x0c\n\x08LessThan\x10\x04\x12\x15\n\x11LessThanOrEqualTo\x10\x05\x12\x0e\n\nNotEqualTo\x10\x06*A\n\x10RelationOperator\x12\x1c\n\x18\x44\x65\x66\x61ult_RelationOperator\x10\x00\x12\x07\n\x03\x41ND\x10\x01\x12\x06\n\x02OR\x10\x02*\xde\x01\n\x08LogClass\x12\x10\n\x0c\x44\x65\x66\x61ul_Class\x10\x00\x12\x12\n\x0e\x44\x61tabase_Opera\x10\x01\x12\x10\n\x0c\x44\x65vice_Opera\x10\x02\x12\x0c\n\x08UI_Opera\x10\x03\x12\x14\n\x10OAM_SC_HeartBeat\x10\x04\x12\x10\n\x0cServer_Opera\x10\x05\x12\x15\n\x11OAM_SC_AlertStart\x10\x06\x12\x13\n\x0fOAM_SC_AlertEnd\x10\x07\x12\x13\n\x0fOAM_SC_SysCheck\x10\x08\x12\x0f\n\x0bOAM_SC_Init\x10\t\x12\x12\n\x0eOAM_SC_PerInfo\x10\nb\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'OAM_datastruct_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
_HISTORYPERFORMANCE_PERFORMANCEENTRY._options = None
_HISTORYPERFORMANCE_PERFORMANCEENTRY._serialized_options = b'8\001'
_LEVEL._serialized_start=2686
_LEVEL._serialized_end=2749
_LOGLEVEL._serialized_start=2751
_LOGLEVEL._serialized_end=2819
_OPERANDTYPE._serialized_start=2821
_OPERANDTYPE._serialized_end=2907
_OPERATOR._serialized_start=2910
_OPERATOR._serialized_end=3051
_RELATIONOPERATOR._serialized_start=3053
_RELATIONOPERATOR._serialized_end=3118
_LOGCLASS._serialized_start=3121
_LOGCLASS._serialized_end=3343
_DEVICERET._serialized_start=98
_DEVICERET._serialized_end=209
_RESPOND._serialized_start=211
_RESPOND._serialized_end=266
_STATIONDEVID._serialized_start=268
_STATIONDEVID._serialized_end=319
_ALARMATTRI._serialized_start=322
_ALARMATTRI._serialized_end=512
_PERATTRI._serialized_start=515
_PERATTRI._serialized_end=983
_CURRALARM._serialized_start=986
_CURRALARM._serialized_end=1197
_HISALARM._serialized_start=1200
_HISALARM._serialized_end=1454
_SYSSTATUS._serialized_start=1457
_SYSSTATUS._serialized_end=1602
_LOG._serialized_start=1605
_LOG._serialized_end=1832
_PERINFO._serialized_start=1835
_PERINFO._serialized_end=2069
_PERREQUIRE._serialized_start=2071
_PERREQUIRE._serialized_end=2137
_REQUIREINFO._serialized_start=2140
_REQUIREINFO._serialized_end=2391
_REQUIREHISTORYPERFORMANCE._serialized_start=2393
_REQUIREHISTORYPERFORMANCE._serialized_end=2478
_HISTORYPERFORMANCE._serialized_start=2481
_HISTORYPERFORMANCE._serialized_end=2612
_HISTORYPERFORMANCE_PERFORMANCEENTRY._serialized_start=2562
_HISTORYPERFORMANCE_PERFORMANCEENTRY._serialized_end=2612
_REQUIREHISTORYPERFORMANCERESPONSE._serialized_start=2614
_REQUIREHISTORYPERFORMANCERESPONSE._serialized_end=2684
# @@protoc_insertion_point(module_scope)
/**
* @file cmmstruct.proto
* @brief TDSCmd define
* @author Fan Chuanlin, fanchuanlin@aliyun.com
* @version 1.0
* @date 2022-09-06
*/
syntax = "proto3";
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
option go_package = "../protogo";
//成功失败 枚举
enum CodeValue
{
base_start = 0;
Succeed = 1;
Failed = 2;
}
enum IID
{
IID_Base = 0;
//====================== server =============================
IID_Server_Base = 10000;
// common
IID_Server_SyncEnd = 10001;
// satellite action
IID_Server_SatelliteList = 10101;
IID_Server_SatelliteList_respond = 10102;//list
IID_Server_SatelliteBaseUpdate = 10103;
IID_Server_SatelliteBaseUpdate_respond = 10104;
IID_Server_SatellitePriorityUpdate = 10105;
IID_Server_SatellitePriorityUpdate_respond = 10106;
IID_Server_SatellitePriorityList = 10107;
IID_Server_SatellitePriorityList_respond = 10108;
IID_Server_SatelliteAvailableUpdate = 10109;
IID_Server_SatelliteAvailableUpdate_respond = 10110;
IID_Server_SatelliteElementUpdate = 10111;
IID_Server_SatelliteElementUpdate_respond = 10112;
IID_Server_SatelliteElementLoad = 10113;
IID_Server_SatelliteElementLoad_respond = 10114;
IID_Server_SatelliteDel = 10115;
IID_Server_SatelliteDel_respond = 10116;
IID_Server_SatelliteInstantaneousRootUpdate = 10117;
IID_Server_SatelliteInstantaneousRootUpdate_respond = 10118;
IID_Server_SatelliteListSend = 10119;
IID_Server_SatelliteListSend_respond = 10120;
IID_Server_SatelliteListReceive = 10121;
IID_Server_SatelliteListReceive_respond = 10122;
// 卫星射频/解调参数
IID_Server_SatelliteWorkParamList = 10201;
IID_Server_SatelliteWorkParamList_respond = 10202;//list
IID_Server_SatelliteWorkParamUpdate = 10203;
IID_Server_SatelliteWorkParamUpdate_respond = 10204;
IID_Server_SatelliteWorkParamDel = 10205;
IID_Server_SatelliteWorkParamDel_respond = 10206;
IID_Server_SatelliteWorkParamListSend = 10207;
IID_Server_SatelliteWorkParamListSend_respond = 10208;
IID_Server_SatelliteWorkParamListReceive = 10209;
IID_Server_SatelliteWorkParamListReceive_respond = 10210;
// site action
IID_Server_SiteList = 10301;
IID_Server_SiteList_respond = 10302;//list
IID_Server_SiteUpdate = 10303;
IID_Server_SiteUpdate_respond = 10304;
IID_Server_SiteParamUpdate = 10305;
IID_Server_SiteParamUpdate_respond = 10306;
IID_Server_SiteDel = 10307;
IID_Server_SiteDel_respond = 10308;
IID_Server_SiteListSend = 10309;
IID_Server_SiteListSend_respond = 10310;
IID_Server_SiteListReceive = 10311;
IID_Server_SiteListReceive_respond = 10312;
// task action
IID_Server_TaskList = 10401;
IID_Server_TaskList_respond = 10402;//list
IID_Server_TaskForecast = 10403;
IID_Server_TaskForecast_respond = 10404;//list
IID_Server_TaskUpdate = 10405;
IID_Server_TaskUpdate_respond = 10406;
IID_Server_TaskDel = 10407;
IID_Server_TaskDel_respond = 10408;
IID_Server_TaskDetailDat = 10409;
IID_Server_TaskDetailDat_respond = 10410;//data
IID_Server_TaskDetailPoint = 10411;
IID_Server_TaskDetailPoint_respond = 10412;//data
IID_Server_TaskPause = 10413;
IID_Server_TaskPause_respond = 10414;
IID_Server_TaskRestart = 10415;
IID_Server_TaskRestart_respond = 10416;
IID_Server_TaskHandleConflict = 10417;
IID_Server_TaskHandleConflict_respond = 10418;//list
IID_Server_TaskHandModeSwitch = 10419;
IID_Server_TaskHandModeSwitch_respond = 10420;
IID_Server_TaskIndex = 10421;
IID_Server_TaskIndex_respond = 10422;//data
IID_Server_TaskListSend = 10423;
IID_Server_TaskListSend_respond = 10424;
IID_Server_TaskListReceive = 10425;
IID_Server_TaskListReceive_respond = 10426;
IID_Server_FileReceive = 10427;
IID_Server_FileReceive_respond = 10428;
IID_Server_TaskExecAnalysisResult = 105;
IID_Server_TaskExecAnalysisResult_respond = 10502;
IID_Server_TaskExecList = 10503;
IID_Server_TaskExecList_respond = 10504;//list
// more setting action
IID_Server_MoreSettingSet = 10601;
IID_Server_MoreSettingSet_respond = 10602;
IID_Server_MoreSettingGet = 10603;
IID_Server_MoreSettingGet_respond = 10604;// 正常-data ,获取存储规则-list
IID_Server_MoreSettingGetDefault = 10605;
IID_Server_MoreSettingGetDefault_respond = 10606;//data
IID_Server_MoreSettingDataSet = 10607;
IID_Server_MoreSettingDataSet_respond = 10608;
IID_Server_MoreSettingDataDel = 10609;
IID_Server_MoreSettingDataDel_respond = 10610;
IID_Server_MoreSettingRestoreDefault = 10611;
IID_Server_MoreSettingRestoreDefault_respond = 10612;
// user action
IID_Server_Login = 10701;
IID_Server_Login_respond = 10702;//data
IID_Server_UserCreate = 10703;
IID_Server_UserCreate_respond = 10704;
IID_Server_UserUpdate = 10705;
IID_Server_UserUpdate_respond = 10706;
IID_Server_UserDel = 10707;
IID_Server_UserDel_respond = 10708;
IID_Server_UserList = 10709;
IID_Server_UserList_respond = 10710;//list
//====================== UI =============================
IID_UI_Base = 20000;
IID_UI_xxx = 20001;
IID_UI_xxx_respond = 20002;
//====================== Device =============================
IID_Device_Base = 30000;
IID_Device_DBC_CURD = 30001;
IID_Device_DBC_CURD_respond = 30002;
IID_Device_Xpro_TX_cmd = 30003;
IID_Device_Xpro_TX_cmd_respond = 30004;
IID_Device_Xpro_RX_cmd = 30005;//用不上 统一用 IID_OAM_Device_Performance_RX 前端或server 根据命令名称判断是显示的还是其他业务
IID_Device_Xpro_RX_cmd_respond = 30006; //用不上
//====================== AGI =============================
IID_AGI_Base=40000;
IID_AGI_TLE=40001;
IID_AGI_TLE_respond=40002;
IID_AGI_Report=40003;
IID_AGI_Report_respond=40004;
//====================== OAM =============================
IID_OAM_Base = 50000;
// public use
IID_OAM_HeartBeat_RX = 50001;
IID_OAM_LOG_RX = 50003;
// OAM relay
IID_OAM_SysStatus_Relay = 50005;
IID_OAM_SysStatus_Relay_Respond = 50006;
IID_OAM_Performance_Relay = 50007;
IID_OAM_Performance_Relay_Respond = 50008;
IID_OAM_Alert_Start_Relay = 50009;
IID_OAM_Alert_Start_Relay_Respond = 50010;
IID_OAM_Alert_End_Relay = 50011;
IID_OAM_Alert_End_Relay_Respond = 50012;
IID_OAM_LOG_Relay = 50013;
IID_OAM_LOG_Relay_Respond = 50014;
// communicate with UI
IID_OAM_UI_SysStatus_Require = 50015;
IID_OAM_UI_SysStatus_Respond = 50016;
IID_OAM_UI_SysStatus_Update = 50017;
IID_OAM_UI_SysStatus_Update_Respond = 50018;
IID_OAM_UI_CurrentAlarms_Require = 50019;
IID_OAM_UI_CurrentAlarms_Respond = 50020;
IID_OAM_UI_CurrentAlarms_Start_Update = 50021;
IID_OAM_UI_CurrentAlarms_Start_Update_Respond = 50022;
IID_OAM_UI_CurrentAlarms_End_Update = 50023;
IID_OAM_UI_CurrentAlarms_End_Update_Respond = 50024;
IID_OAM_UI_HistoryAlarms_Require = 50025;
IID_OAM_UI_HistoryAlarms_Respond = 50026;
IID_OAM_UI_AlarmAttribution_Require = 50027;
IID_OAM_UI_AlarmAttribution_Respond = 50028;
IID_OAM_UI_AlarmAttribution_Update_Require = 50029;
IID_OAM_UI_AlarmAttribution_Update_Respond = 50030;
IID_OAM_UI_PerInfos_Require = 50031;
IID_OAM_UI_PerInfos_Respond = 50032;
IID_OAM_UI_PerAttribution_Require = 50033;
IID_OAM_UI_PerAttribution_Respond = 50034;
IID_OAM_UI_PerAttribution_Update_Require = 50035;
IID_OAM_UI_PerAttribution_Update_Respond = 50036;
IID_OAM_UI_LOG_Require = 50037;
IID_OAM_UI_LOG_Respond = 50038;
// communicate with Device
IID_OAM_Device_Alert_Start = 50039;
IID_OAM_Device_Alert_Start_Respond = 50040;
IID_OAM_Device_Alert_End = 50041;
IID_OAM_Device_Alert_End_Respond = 50042;
IID_OAM_Device_Performance_RX = 50043;
/*
......
xxxx id%2 == 1
xxxx_respond = id+1
*/
}
/// sub system define
enum BROKERAREA
{
BROKERAREA_LOCAL = 0;
BROKERAREA_CLOUD_LEVEL2 = 1;
BROKERAREA_CLOUD_LEVEL1 = 2;
}
enum SUBSYSTEM
{
SUBSYSTEM_base = 0;
SUBSYSTEM_Server = 1;
SUBSYSTEM_UI = 2;
SUBSYSTEM_Device = 3;
SUBSYSTEM_AGI = 4;
SUBSYSTEM_OAM = 5;
SUBSYSTEM_default = 6;
}
message TestParams
{
string key = 1;
string value = 2;
}
//设备状态枚举
enum Devistatus
{
Init_status = 0;
Online = 1;
Offline = 2;
Alarm = 3;
}
//心跳
message Heartbeat
{
uint32 suid = 1;
repeated IID iid_list = 2;
map<uint32, Devistatus> Dev_status = 3; //存放设备状态 <DEV_SUID,STATUS>
}
message TDSCmd
{
IID interface_id = 1;
uint32 dst_suid = 2;
uint32 src_suid = 3;
uint32 forward_flag = 4;
uint32 priority = 5; //报文优先级 可以优先发送
uint64 request_index = 6;
uint32 operations_type =7;
google.protobuf.Timestamp ts = 8;
repeated google.protobuf.Any parameters = 9;
}
\ No newline at end of file
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-agi.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmod-agi.proto\x12\x15satllite.protobuf.agi\"\xd0\x01\n\nCalcTleReq\x12\x0f\n\x07noradID\x18\x01 \x01(\x05\x12\x11\n\tnoradName\x18\x02 \x01(\t\x12\x0c\n\x04year\x18\x03 \x01(\x05\x12\r\n\x05month\x18\x04 \x01(\x05\x12\x0b\n\x03\x64\x61y\x18\x05 \x01(\x05\x12\x0c\n\x04hour\x18\x06 \x01(\x05\x12\x0e\n\x06minute\x18\x07 \x01(\x05\x12\x0e\n\x06second\x18\x08 \x01(\x05\x12\t\n\x01\x61\x18\t \x01(\x02\x12\n\n\x02\x65\x65\x18\n \x01(\x02\x12\t\n\x01I\x18\x0b \x01(\x02\x12\x0c\n\x04raan\x18\x0c \x01(\x02\x12\x0b\n\x03\x61rc\x18\r \x01(\x02\x12\t\n\x01m\x18\x0e \x01(\x02\"9\n\nCalcTleRet\x12\r\n\x05line0\x18\x01 \x01(\t\x12\r\n\x05line1\x18\x02 \x01(\t\x12\r\n\x05line2\x18\x03 \x01(\t\"\xba\x02\n\rCalcReportReq\x12\x15\n\rstartDateTime\x18\x01 \x01(\t\x12\x13\n\x0b\x65ndDateTime\x18\x02 \x01(\t\x12\x10\n\x08latitude\x18\x03 \x01(\x01\x12\x11\n\tlongitude\x18\x04 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x05 \x01(\x01\x12\r\n\x05slice\x18\x06 \x01(\x01\x12\x0e\n\x06minAzi\x18\x07 \x01(\x01\x12\x0e\n\x06maxAzi\x18\x08 \x01(\x01\x12\x0e\n\x06minEle\x18\t \x01(\x01\x12\x0e\n\x06maxEle\x18\n \x01(\x01\x12\x0f\n\x07minDist\x18\x0b \x01(\x01\x12\x0f\n\x07maxDist\x18\x0c \x01(\x01\x12\x12\n\npointSlice\x18\r \x01(\x01\x12\x14\n\x0cpointCollect\x18\x0e \x01(\x05\x12\r\n\x05line0\x18\x0f \x01(\t\x12\r\n\x05line1\x18\x10 \x01(\t\x12\r\n\x05line2\x18\x11 \x01(\t\"e\n\rCalcReportRet\x12(\n\x04xxds\x18\x01 \x03(\x0b\x32\x1a.satllite.protobuf.agi.Xxd\x12*\n\x05tasks\x18\x02 \x03(\x0b\x32\x1b.satllite.protobuf.agi.Task\";\n\x03Xxd\x12\n\n\x02\x64t\x18\x01 \x01(\t\x12\x0b\n\x03lon\x18\x02 \x01(\x01\x12\x0b\n\x03lat\x18\x03 \x01(\x01\x12\x0e\n\x06height\x18\x04 \x01(\x01\"\xb2\x01\n\x04Task\x12\r\n\x05start\x18\x01 \x01(\t\x12\x0b\n\x03\x65nd\x18\x02 \x01(\t\x12\x10\n\x08startAzi\x18\x03 \x01(\x01\x12\x0e\n\x06\x65ndAzi\x18\x04 \x01(\x01\x12\x10\n\x08startEle\x18\x05 \x01(\x01\x12\x0e\n\x06maxEle\x18\x06 \x01(\x01\x12\x0f\n\x07minDist\x18\x07 \x01(\x01\x12\x0f\n\x07maxDist\x18\x08 \x01(\x01\x12(\n\x04obss\x18\t \x03(\x0b\x32\x1a.satllite.protobuf.agi.Obs\":\n\x03Obs\x12\n\n\x02\x64t\x18\x01 \x01(\t\x12\x0b\n\x03\x61zi\x18\x02 \x01(\x01\x12\x0b\n\x03\x65le\x18\x03 \x01(\x01\x12\r\n\x05range\x18\x04 \x01(\x01\x42\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_agi_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_CALCTLEREQ._serialized_start=41
_CALCTLEREQ._serialized_end=249
_CALCTLERET._serialized_start=251
_CALCTLERET._serialized_end=308
_CALCREPORTREQ._serialized_start=311
_CALCREPORTREQ._serialized_end=625
_CALCREPORTRET._serialized_start=627
_CALCREPORTRET._serialized_end=728
_XXD._serialized_start=730
_XXD._serialized_end=789
_TASK._serialized_start=792
_TASK._serialized_end=970
_OBS._serialized_start=972
_OBS._serialized_end=1030
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-return.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
import TDSCmd_pb2 as TDSCmd__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10mod-return.proto\x1a\x19google/protobuf/any.proto\x1a\x0cTDSCmd.proto\"\xdb\x01\n\rReturnElement\x12\x1a\n\x06result\x18\x01 \x01(\x0e\x32\n.CodeValue\x12\x0b\n\x03msg\x18\x02 \x01(\t\x12\r\n\x05\x65nMsg\x18\x03 \x01(\t\x12\"\n\x04\x64\x61ta\x18\x04 \x01(\x0b\x32\x14.google.protobuf.Any\x12\"\n\x04list\x18\x05 \x03(\x0b\x32\x14.google.protobuf.Any\x12\x11\n\tdstSiteNo\x18\x06 \x01(\t\x12\x11\n\tsrcSiteNo\x18\x07 \x01(\t\x12\x0f\n\x07noArray\x18\x08 \x03(\t\x12\x13\n\x0bsiteNoArray\x18\t \x03(\tB\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_return_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_RETURNELEMENT._serialized_start=62
_RETURNELEMENT._serialized_end=281
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-satellite.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13mod-satellite.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe4\x03\n\x13RetSatelliteElement\x12\r\n\x05norad\x18\x02 \x01(\t\x12\x0c\n\x04\x63ode\x18\x03 \x01(\t\x12\x0e\n\x06\x63nName\x18\x04 \x01(\t\x12\x0e\n\x06\x65nName\x18\x05 \x01(\t\x12\x11\n\tavailable\x18\x06 \x01(\x08\x12\x10\n\x08priority\x18\x07 \x01(\x05\x12\x16\n\x0epriorityBySite\x18\x08 \x01(\x05\x12,\n\x04\x62\x61se\x18\t \x03(\x0b\x32\x1e.RetSatelliteElement.BaseEntry\x12(\n\x07\x64\x65tails\x18\n \x03(\x0b\x32\x17.RetSiteLevel3Satellite\x12\x34\n\x08\x65lements\x18\x0b \x03(\x0b\x32\".RetSatelliteElement.ElementsEntry\x12,\n\nworkParams\x18\x0c \x01(\x0b\x32\x18.RetSatelliteWorkElement\x12\x0b\n\x03off\x18\r \x01(\x08\x12,\n\x08\x63reateDt\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a+\n\tBaseEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a/\n\rElementsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbc\x01\n\x16RetSiteLevel3Satellite\x12\x0e\n\x06siteNo\x18\x01 \x01(\t\x12\x10\n\x08priority\x18\x02 \x01(\x05\x12\x11\n\tavailable\x18\x03 \x01(\x08\x12#\n\x0cobserveGrade\x18\x04 \x01(\x0e\x32\r.ObserveGrade\x12+\n\tworkParam\x18\x05 \x01(\x0b\x32\x18.RetSatelliteWorkElement\x12\x1b\n\x13workParamConfigName\x18\x06 \x01(\t\"\xa2\x01\n\rSatelliteList\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12*\n\x04sort\x18\x03 \x01(\x0e\x32\x1c.SatelliteList.satelliteSort\"F\n\rsatelliteSort\x12\x19\n\x15satelliteSort_default\x10\x00\x12\x1a\n\x16satelliteSort_forecast\x10\x01\"?\n\x0fSatelliteDetail\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\r\n\x05norad\x18\x03 \x01(\t\"D\n\x16SatelliteElementUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x0b\n\x03tle\x18\x03 \x01(\t\"\xc8\x01\n\x13SatelliteBaseUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\r\n\x05norad\x18\x03 \x01(\t\x12\x0e\n\x06\x63nName\x18\x04 \x01(\t\x12\x0c\n\x04\x63ode\x18\x05 \x01(\t\x12\x10\n\x08\x63odeName\x18\x06 \x01(\t\x12\x0f\n\x07\x63ountry\x18\x07 \x01(\t\x12\x11\n\torbitType\x18\x08 \x01(\t\x12\x0f\n\x07purpose\x18\t \x01(\t\x12\x0e\n\x06remark\x18\n \x01(\t\x12\x0e\n\x06\x65nName\x18\x0b \x01(\t\"A\n\x0cSatelliteDel\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x12\n\nnoradArray\x18\x03 \x03(\t\"6\n\x15SatellitePriorityList\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\"L\n\x17SatellitePriorityUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x12\n\nnoradArray\x18\x03 \x03(\t\"6\n\x14SatelliteElementLoad\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0f\n\x07idArray\x18\x02 \x03(\t\"\x90\x01\n\x1bSatelliteElementLoadAutoSet\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x0f\n\x07loadUrl\x18\x03 \x01(\t\x12\x0f\n\x07loadHMS\x18\x04 \x01(\t\x12\x15\n\rloadFrequency\x18\x06 \x01(\x05\x12\x19\n\x11tleStrategyStatus\x18\x08 \x01(\x08\"\xe9\x01\n\x15SatelliteDetailUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\r\n\x05norad\x18\x02 \x01(\t\x12\x0e\n\x06siteNo\x18\x03 \x01(\t\x12\x0e\n\x06\x63nName\x18\x04 \x01(\t\x12\x0c\n\x04\x63ode\x18\x05 \x01(\t\x12\x10\n\x08\x63odeName\x18\x06 \x01(\t\x12\x0f\n\x07\x63ountry\x18\x07 \x01(\t\x12\x11\n\torbitType\x18\x08 \x01(\t\x12\x0f\n\x07purpose\x18\t \x01(\t\x12\x0e\n\x06remark\x18\n \x01(\t\x12\x0e\n\x06\x65nName\x18\x0b \x01(\t\x12\x1d\n\x06params\x18\x0c \x03(\x0b\x32\r.DetailParams\"c\n\x0c\x44\x65tailParams\x12\x0e\n\x06siteNo\x18\x01 \x01(\t\x12\x11\n\tavailable\x18\x02 \x01(\x08\x12\x1c\n\x05grade\x18\x03 \x01(\x0e\x32\r.ObserveGrade\x12\x12\n\nworkConfig\x18\x04 \x01(\x05\"\xc7\x01\n\x17RetSatelliteWorkElement\x12\r\n\x05norad\x18\x01 \x01(\t\x12\x10\n\x08\x63onfigId\x18\x02 \x01(\x05\x12\x0e\n\x06remark\x18\x03 \x01(\t\x12\x12\n\nconfigName\x18\x04 \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\x05 \x01(\t\x12\x1a\n\x06params\x18\x06 \x03(\x0b\x32\n.WorkParam\x12\x0b\n\x03off\x18\x07 \x01(\x08\x12,\n\x08\x63reateDt\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"7\n\x16SatelliteWorkParamList\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\"\x9a\x01\n\x18SatelliteWorkParamUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\r\n\x05norad\x18\x03 \x01(\t\x12\x10\n\x08\x63onfigId\x18\x04 \x01(\x05\x12\x12\n\nconfigName\x18\x05 \x01(\t\x12\x0e\n\x06remark\x18\x06 \x01(\t\x12\x1a\n\x06params\x18\x07 \x03(\x0b\x32\n.WorkParam\"\xc5\x02\n\tWorkParam\x12\x0e\n\x06siteNo\x18\x01 \x01(\t\x12\x1c\n\x14XTrackerSigIntensity\x18\x06 \x01(\x05\x12\x1c\n\x14YTrackerSigIntensity\x18\x07 \x01(\x05\x12\x12\n\nXInitPhase\x18\x08 \x01(\x05\x12\x19\n\x11XPolarizationType\x18\t \x01(\x05\x12\x19\n\x11SPolarizationType\x18\n \x01(\x05\x12\x1c\n\x14XTrackerVoltageLimit\x18\x0b \x01(\x05\x12\x1c\n\x14STrackerVoltageLimit\x18\x0c \x01(\x05\x12\x1b\n\x13SUpPolarizationType\x18\r \x01(\x05\x12\x1b\n\x13XUpPolarizationType\x18\x0e \x01(\x05\x12\x16\n\x0eTrackingStatus\x18\x0f \x01(\x05\x12\x14\n\x0cTrackingBand\x18\x10 \x01(\x05\"X\n\x15SatelliteWorkParamDel\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12 \n\x08keyArray\x18\x03 \x03(\x0b\x32\x0e.NoradConfigId\"0\n\rNoradConfigId\x12\r\n\x05norad\x18\x01 \x01(\t\x12\x10\n\x08\x63onfigId\x18\x02 \x01(\x05\"T\n\x1fSatelliteWorkParamListForChoose\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x12\n\nnoradArray\x18\x03 \x03(\t*`\n\x0cObserveGrade\x12\x17\n\x13ObserveGradeDefault\x10\x00\x12\x11\n\rObserveGrade1\x10\x01\x12\x11\n\rObserveGrade2\x10\x02\x12\x11\n\rObserveGrade3\x10\x03\x42\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_satellite_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_RETSATELLITEELEMENT_BASEENTRY._options = None
_RETSATELLITEELEMENT_BASEENTRY._serialized_options = b'8\001'
_RETSATELLITEELEMENT_ELEMENTSENTRY._options = None
_RETSATELLITEELEMENT_ELEMENTSENTRY._serialized_options = b'8\001'
_OBSERVEGRADE._serialized_start=2948
_OBSERVEGRADE._serialized_end=3044
_RETSATELLITEELEMENT._serialized_start=57
_RETSATELLITEELEMENT._serialized_end=541
_RETSATELLITEELEMENT_BASEENTRY._serialized_start=449
_RETSATELLITEELEMENT_BASEENTRY._serialized_end=492
_RETSATELLITEELEMENT_ELEMENTSENTRY._serialized_start=494
_RETSATELLITEELEMENT_ELEMENTSENTRY._serialized_end=541
_RETSITELEVEL3SATELLITE._serialized_start=544
_RETSITELEVEL3SATELLITE._serialized_end=732
_SATELLITELIST._serialized_start=735
_SATELLITELIST._serialized_end=897
_SATELLITELIST_SATELLITESORT._serialized_start=827
_SATELLITELIST_SATELLITESORT._serialized_end=897
_SATELLITEDETAIL._serialized_start=899
_SATELLITEDETAIL._serialized_end=962
_SATELLITEELEMENTUPDATE._serialized_start=964
_SATELLITEELEMENTUPDATE._serialized_end=1032
_SATELLITEBASEUPDATE._serialized_start=1035
_SATELLITEBASEUPDATE._serialized_end=1235
_SATELLITEDEL._serialized_start=1237
_SATELLITEDEL._serialized_end=1302
_SATELLITEPRIORITYLIST._serialized_start=1304
_SATELLITEPRIORITYLIST._serialized_end=1358
_SATELLITEPRIORITYUPDATE._serialized_start=1360
_SATELLITEPRIORITYUPDATE._serialized_end=1436
_SATELLITEELEMENTLOAD._serialized_start=1438
_SATELLITEELEMENTLOAD._serialized_end=1492
_SATELLITEELEMENTLOADAUTOSET._serialized_start=1495
_SATELLITEELEMENTLOADAUTOSET._serialized_end=1639
_SATELLITEDETAILUPDATE._serialized_start=1642
_SATELLITEDETAILUPDATE._serialized_end=1875
_DETAILPARAMS._serialized_start=1877
_DETAILPARAMS._serialized_end=1976
_RETSATELLITEWORKELEMENT._serialized_start=1979
_RETSATELLITEWORKELEMENT._serialized_end=2178
_SATELLITEWORKPARAMLIST._serialized_start=2180
_SATELLITEWORKPARAMLIST._serialized_end=2235
_SATELLITEWORKPARAMUPDATE._serialized_start=2238
_SATELLITEWORKPARAMUPDATE._serialized_end=2392
_WORKPARAM._serialized_start=2395
_WORKPARAM._serialized_end=2720
_SATELLITEWORKPARAMDEL._serialized_start=2722
_SATELLITEWORKPARAMDEL._serialized_end=2810
_NORADCONFIGID._serialized_start=2812
_NORADCONFIGID._serialized_end=2860
_SATELLITEWORKPARAMLISTFORCHOOSE._serialized_start=2862
_SATELLITEWORKPARAMLISTFORCHOOSE._serialized_end=2946
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-site.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
import mod_user_pb2 as mod__user__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0emod-site.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x0emod-user.proto\"\xb4\x03\n\x0eRetSiteElement\x12\n\n\x02no\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12&\n\x08operator\x18\x04 \x01(\x0b\x32\x14.RetAdminUserElement\x12\x0e\n\x06remark\x18\x05 \x01(\t\x12\x10\n\x08latitude\x18\x06 \x01(\x01\x12\x11\n\tlongitude\x18\x07 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x08 \x01(\x01\x12\x0e\n\x06parent\x18\t \x01(\t\x12+\n\x06params\x18\n \x03(\x0b\x32\x1b.RetSiteElement.ParamsEntry\x12+\n\x06\x65xtend\x18\x0b \x03(\x0b\x32\x1b.RetSiteElement.ExtendEntry\x12\x16\n\x0e\x61vailableArray\x18\x0c \x03(\t\x12\x0b\n\x03off\x18\r \x01(\x08\x12,\n\x08\x63reateDt\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a-\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a-\n\x0b\x45xtendEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"<\n\x08SiteList\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x11\n\tavailable\x18\x03 \x01(\x08\"\x84\x02\n\nSiteUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06remark\x18\x04 \x01(\t\x12\x10\n\x08latitude\x18\x05 \x01(\x01\x12\x11\n\tlongitude\x18\x06 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x07 \x01(\x01\x12\x0f\n\x07\x63ountry\x18\x08 \x01(\t\x12\r\n\x05place\x18\t \x01(\t\x12\x10\n\x08timeZone\x18\n \x01(\t\x12\x0f\n\x07voltage\x18\x0b \x01(\x01\x12\x12\n\ndeltaDelay\x18\x0c \x01(\x05\x12\x11\n\tbandwidth\x18\r \x01(\x01\x12\x18\n\x10networkOperators\x18\x0e \x01(\t\"\xc7\x01\n\x0fSiteParamUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\r\n\x05slice\x18\x03 \x01(\x01\x12\x13\n\x0bminEleAngle\x18\x04 \x01(\x01\x12\x13\n\x0bmaxEleAngle\x18\x05 \x01(\x01\x12\x13\n\x0bminAziAngle\x18\x06 \x01(\x01\x12\x13\n\x0bmaxAziAngle\x18\x07 \x01(\x01\x12\x0f\n\x07minDist\x18\x08 \x01(\x01\x12\x0f\n\x07maxDist\x18\t \x01(\x01\x12\x14\n\x0ctaskDuration\x18\n \x01(\x01\x42\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_site_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_RETSITEELEMENT_PARAMSENTRY._options = None
_RETSITEELEMENT_PARAMSENTRY._serialized_options = b'8\001'
_RETSITEELEMENT_EXTENDENTRY._options = None
_RETSITEELEMENT_EXTENDENTRY._serialized_options = b'8\001'
_RETSITEELEMENT._serialized_start=68
_RETSITEELEMENT._serialized_end=504
_RETSITEELEMENT_PARAMSENTRY._serialized_start=412
_RETSITEELEMENT_PARAMSENTRY._serialized_end=457
_RETSITEELEMENT_EXTENDENTRY._serialized_start=459
_RETSITEELEMENT_EXTENDENTRY._serialized_end=504
_SITELIST._serialized_start=506
_SITELIST._serialized_end=566
_SITEUPDATE._serialized_start=569
_SITEUPDATE._serialized_end=829
_SITEPARAMUPDATE._serialized_start=832
_SITEPARAMUPDATE._serialized_end=1031
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-system.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10mod-system.proto\"\xc6\x01\n\x15RetMoreSettingElement\x12\x0f\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\t\x12\x1c\n\x07setting\x18\x02 \x01(\x0b\x32\x0b.DataParams\x12\x1d\n\x08\x64\x61taSave\x18\x03 \x03(\x0b\x32\x0b.DataParams\x12\x1c\n\x07tleLoad\x18\x04 \x01(\x0b\x32\x0b.DataParams\x12\"\n\rforecastParam\x18\x05 \x03(\x0b\x32\x0b.DataParams\x12\x1d\n\x08taskAuto\x18\x06 \x03(\x0b\x32\x0b.DataParams\"d\n\nDataParams\x12\'\n\x06params\x18\x01 \x03(\x0b\x32\x17.DataParams.ParamsEntry\x1a-\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x1f\n\x0eMoreSettingSet\x12\r\n\x05token\x18\x01 \x01(\x05\"\xa1\x01\n\x12MoreSettingDataSet\x12\r\n\x05token\x18\x01 \x01(\x05\x12\n\n\x02no\x18\x02 \x01(\t\x12\x10\n\x08\x64\x61taType\x18\x03 \x01(\t\x12\x0e\n\x06hostIP\x18\x04 \x01(\t\x12\x10\n\x08hostPort\x18\x05 \x01(\x05\x12\x0e\n\x06userID\x18\x06 \x01(\t\x12\x0b\n\x03pwd\x18\x07 \x01(\t\x12\x11\n\tdirectory\x18\x08 \x01(\t\x12\x0c\n\x04size\x18\t \x01(\x05\"/\n\x12MoreSettingDataDel\x12\r\n\x05token\x18\x01 \x01(\x05\x12\n\n\x02no\x18\x02 \x01(\t\"H\n\x0eMoreSettingGet\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x17\n\x07labelId\x18\x03 \x01(\x0e\x32\x06.Label\"O\n\x15MoreSettingGetDefault\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x17\n\x07labelId\x18\x03 \x01(\x0e\x32\x06.Label\"S\n\x19MoreSettingRestoreDefault\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x17\n\x07labelId\x18\x03 \x01(\x0e\x32\x06.Label*\x86\x01\n\x05Label\x12\x11\n\rLabel_Default\x10\x00\x12\x16\n\x12Label_TaskForecast\x10\x01\x12\x12\n\x0eLabel_DataSave\x10\x02\x12\x11\n\rLabel_TleLoad\x10\x03\x12\x17\n\x13Label_ForecastParam\x10\x04\x12\x12\n\x0eLabel_TaskAuto\x10\x05\x42\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_system_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_DATAPARAMS_PARAMSENTRY._options = None
_DATAPARAMS_PARAMSENTRY._serialized_options = b'8\001'
_LABEL._serialized_start=810
_LABEL._serialized_end=944
_RETMORESETTINGELEMENT._serialized_start=21
_RETMORESETTINGELEMENT._serialized_end=219
_DATAPARAMS._serialized_start=221
_DATAPARAMS._serialized_end=321
_DATAPARAMS_PARAMSENTRY._serialized_start=276
_DATAPARAMS_PARAMSENTRY._serialized_end=321
_MORESETTINGSET._serialized_start=323
_MORESETTINGSET._serialized_end=354
_MORESETTINGDATASET._serialized_start=357
_MORESETTINGDATASET._serialized_end=518
_MORESETTINGDATADEL._serialized_start=520
_MORESETTINGDATADEL._serialized_end=567
_MORESETTINGGET._serialized_start=569
_MORESETTINGGET._serialized_end=641
_MORESETTINGGETDEFAULT._serialized_start=643
_MORESETTINGGETDEFAULT._serialized_end=722
_MORESETTINGRESTOREDEFAULT._serialized_start=724
_MORESETTINGRESTOREDEFAULT._serialized_end=807
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-task-exec.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
import mod_task_pb2 as mod__task__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13mod-task-exec.proto\x1a\x0emod-task.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xa5\x02\n\x12RetTaskExecElement\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x1d\n\x04task\x18\x02 \x01(\x0b\x32\x0f.RetTaskElement\x12+\n\x07startDt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12)\n\x05\x65ndDt\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x06\x65xtend\x18\x05 \x03(\x0b\x32\x1f.RetTaskExecElement.ExtendEntry\x12,\n\x08\x63reateDt\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a-\n\x0b\x45xtendEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x97\x01\n\x0cTaskExecList\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x12\n\ncodeSearch\x18\x02 \x01(\t\x12\x10\n\x08noSearch\x18\x03 \x01(\t\x12)\n\x05start\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03\x65nd\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xa1\x01\n\x16TaskExecAnalysisResult\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x12\n\ncodeSearch\x18\x03 \x01(\t\x12\x10\n\x08noSearch\x18\x04 \x01(\t\x12)\n\x05start\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03\x65nd\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_task_exec_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_RETTASKEXECELEMENT_EXTENDENTRY._options = None
_RETTASKEXECELEMENT_EXTENDENTRY._serialized_options = b'8\001'
_RETTASKEXECELEMENT._serialized_start=73
_RETTASKEXECELEMENT._serialized_end=366
_RETTASKEXECELEMENT_EXTENDENTRY._serialized_start=321
_RETTASKEXECELEMENT_EXTENDENTRY._serialized_end=366
_TASKEXECLIST._serialized_start=369
_TASKEXECLIST._serialized_end=520
_TASKEXECANALYSISRESULT._serialized_start=523
_TASKEXECANALYSISRESULT._serialized_end=684
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-task.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
import mod_satellite_pb2 as mod__satellite__pb2
import mod_site_pb2 as mod__site__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0emod-task.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x13mod-satellite.proto\x1a\x0emod-site.proto\"\xdb\x05\n\x0eRetTaskElement\x12\n\n\x02id\x18\x01 \x01(\t\x12\n\n\x02no\x18\x02 \x01(\t\x12\r\n\x05norad\x18\x03 \x01(\t\x12\'\n\tsatellite\x18\x04 \x01(\x0b\x32\x14.RetSatelliteElement\x12\x0e\n\x06siteNo\x18\x05 \x01(\t\x12\x1d\n\x04site\x18\x06 \x01(\x0b\x32\x0f.RetSiteElement\x12\x0c\n\x04type\x18\x07 \x01(\t\x12\x19\n\x05grade\x18\x08 \x01(\x0e\x32\n.TaskGrade\x12\x1b\n\x06status\x18\t \x01(\x0e\x32\x0b.TaskStatus\x12)\n\x05genDt\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07startDt\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12)\n\x05\x65ndDt\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rstartAziAngle\x18\r \x01(\x01\x12\x13\n\x0b\x65ndAziAngle\x18\x0e \x01(\x01\x12\x15\n\rstartEleAngle\x18\x0f \x01(\x01\x12\x13\n\x0bmaxEleAngle\x18\x10 \x01(\x01\x12\x0e\n\x06\x63ircle\x18\x11 \x01(\x05\x12\x0f\n\x07minDist\x18\x12 \x01(\x01\x12\x0f\n\x07maxDist\x18\x13 \x01(\x01\x12\r\n\x05slice\x18\x14 \x01(\x05\x12+\n\x06\x65xtend\x18\x15 \x03(\x0b\x32\x1b.RetTaskElement.ExtendEntry\x12%\n\x03res\x18\x16 \x03(\x0b\x32\x18.RetTaskElement.ResEntry\x12\x0b\n\x03off\x18\x17 \x01(\x08\x12,\n\x08\x63reateDt\x18\x18 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a-\n\x0b\x45xtendEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a*\n\x08ResEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xe0\x01\n\x08TaskList\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12 \n\x0bstatusArray\x18\x03 \x03(\x0e\x32\x0b.TaskStatus\x12\x12\n\ncodeSearch\x18\x04 \x01(\t\x12\x10\n\x08noSearch\x18\x05 \x01(\t\x12\x19\n\x05grade\x18\x06 \x01(\x0e\x32\n.TaskGrade\x12)\n\x05start\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03\x65nd\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xda\x01\n\x0cTaskForecast\x12\r\n\x05token\x18\x01 \x01(\x05\x12(\n\x0c\x66orecastList\x18\x02 \x03(\x0b\x32\x12.SiteSatelliteList\x12\r\n\x05slice\x18\x03 \x01(\x01\x12\x13\n\x0bminEleAngle\x18\x04 \x01(\x01\x12)\n\x05start\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03\x65nd\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x05grade\x18\x07 \x01(\x0e\x32\n.TaskGrade\"E\n\x11SiteSatelliteList\x12\x0e\n\x06siteNo\x18\x01 \x01(\t\x12\x0c\n\x04tles\x18\x02 \x01(\t\x12\x12\n\nnoradArray\x18\x03 \x03(\t\"#\n\x12RetForecastOneOver\x12\r\n\x05norad\x18\x01 \x01(\t\"L\n\x08TaskPlan\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12!\n\x08taskList\x18\x03 \x03(\x0b\x32\x0f.RetTaskElement\"\x9e\x01\n\x12TaskHandleConflict\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x1f\n\x08\x63onflict\x18\x03 \x01(\x0e\x32\r.ConflictType\x12\x11\n\tleastTime\x18\x04 \x01(\x03\x12\x12\n\nswitchTime\x18\x05 \x01(\x03\x12!\n\x08taskList\x18\x06 \x03(\x0b\x32\x0f.RetTaskElement\"b\n\nTaskIssued\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x12\n\nswitchTime\x18\x03 \x01(\x05\x12!\n\x08taskList\x18\x04 \x03(\x0b\x32\x0f.RetTaskElement\";\n\tTaskPause\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x0f\n\x07idArray\x18\x03 \x03(\t\">\n\x0cTaskRecovery\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x0f\n\x07idArray\x18\x03 \x03(\t\"9\n\x07TaskDel\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x0f\n\x07idArray\x18\x03 \x03(\t\":\n\x0bTaskConfirm\x12\x1b\n\x07operate\x18\x01 \x01(\x0e\x32\n.Operation\x12\x0e\n\x06taskId\x18\x02 \x01(\t\"=\n\x0eRetTaskConfirm\x12\x1b\n\x07operate\x18\x01 \x01(\x0e\x32\n.Operation\x12\x0e\n\x06taskId\x18\x02 \x01(\t\"\x85\x01\n\x0cRetTaskIndex\x12%\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x17.RetTaskIndex.DataEntry\x12!\n\x08taskList\x18\x02 \x03(\x0b\x32\x0f.RetTaskElement\x1a+\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xf5\x01\n\x14TaskForecastParamSet\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\r\n\x05slice\x18\x03 \x01(\x01\x12\x0f\n\x07maxDist\x18\x04 \x01(\x01\x12\x0f\n\x07minDist\x18\x05 \x01(\x01\x12\x13\n\x0bmaxAziAngle\x18\x06 \x01(\x01\x12\x13\n\x0bminAziAngle\x18\x07 \x01(\x01\x12\x13\n\x0bmaxEleAngle\x18\x08 \x01(\x01\x12\x13\n\x0bminEleAngle\x18\t \x01(\x01\x12\x11\n\tpointStep\x18\n \x01(\x05\x12\x15\n\rpointDuration\x18\x0b \x01(\x05\x12\x0f\n\x07\x64\x61tPath\x18\x0c \x01(\t\"\x8d\x02\n\x0bTaskAutoSet\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0e\n\x06siteNo\x18\x02 \x01(\t\x12\x14\n\x0c\x61utoStartHMS\x18\x03 \x01(\t\x12\x12\n\nautoEndHMS\x18\x04 \x01(\t\x12\x15\n\rautoFrequency\x18\x05 \x01(\x05\x12\x1e\n\x16taskAutoStrategyStatus\x18\x06 \x01(\x08\x12\x1f\n\x08\x63onflict\x18\x07 \x01(\x0e\x32\r.ConflictType\x12\x1e\n\x16\x63onflictStrategyStatus\x18\x08 \x01(\x08\x12\x11\n\tleastTime\x18\t \x01(\x03\x12\x12\n\nswitchTime\x18\n \x01(\x03\x12\x16\n\x0e\x63ollectionTime\x18\x0b \x01(\x03\"*\n\rTaskDetailDat\x12\r\n\x05token\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\t\"]\n\nRetTaskDat\x12&\n\x02\x64t\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05range\x18\x02 \x01(\x01\x12\x0b\n\x03\x65le\x18\x03 \x01(\x01\x12\x0b\n\x03\x61zi\x18\x04 \x01(\x01\",\n\x0fTaskDetailPoint\x12\r\n\x05token\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\t\"`\n\x0cRetTaskPoint\x12&\n\x02\x64t\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0b\n\x03lat\x18\x05 \x01(\t\x12\x0b\n\x03lon\x18\x06 \x01(\t\x12\x0e\n\x06height\x18\x07 \x01(\t*\x83\x01\n\nTaskStatus\x12\x0e\n\nStatusInit\x10\x00\x12\x0e\n\nStatusUndo\x10\x01\x12\x11\n\rStatusWaiting\x10\x02\x12\x0f\n\x0bStatusDoing\x10\x03\x12\x0e\n\nStatusDone\x10\x04\x12\x0f\n\x0bStatusPause\x10\x05\x12\x10\n\x0cStatusFailed\x10\n*P\n\tTaskGrade\x12\r\n\tGradeNone\x10\x00\x12\x0f\n\x0bGradeNormal\x10\x01\x12\x12\n\x0eGradeImportant\x10\x02\x12\x0f\n\x0bGradeUrgent\x10\x03*n\n\x0c\x43onflictType\x12\x18\n\x14\x43onflictType_Default\x10\x00\x12\x13\n\x0f\x43onflictType_Dt\x10\x01\x12\x14\n\x10\x43onflictType_Ele\x10\x02\x12\x19\n\x15\x43onflictType_Priority\x10\x03*s\n\tOperation\x12\x14\n\x10OperationDefault\x10\x00\x12\x13\n\x0fOperationIssued\x10\x01\x12\x12\n\x0eOperationPause\x10\x02\x12\x15\n\x11OperationRecovery\x10\x03\x12\x10\n\x0cOperationDel\x10\x04\x42\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_task_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_RETTASKELEMENT_EXTENDENTRY._options = None
_RETTASKELEMENT_EXTENDENTRY._serialized_options = b'8\001'
_RETTASKELEMENT_RESENTRY._options = None
_RETTASKELEMENT_RESENTRY._serialized_options = b'8\001'
_RETTASKINDEX_DATAENTRY._options = None
_RETTASKINDEX_DATAENTRY._serialized_options = b'8\001'
_TASKSTATUS._serialized_start=2964
_TASKSTATUS._serialized_end=3095
_TASKGRADE._serialized_start=3097
_TASKGRADE._serialized_end=3177
_CONFLICTTYPE._serialized_start=3179
_CONFLICTTYPE._serialized_end=3289
_OPERATION._serialized_start=3291
_OPERATION._serialized_end=3406
_RETTASKELEMENT._serialized_start=89
_RETTASKELEMENT._serialized_end=820
_RETTASKELEMENT_EXTENDENTRY._serialized_start=731
_RETTASKELEMENT_EXTENDENTRY._serialized_end=776
_RETTASKELEMENT_RESENTRY._serialized_start=778
_RETTASKELEMENT_RESENTRY._serialized_end=820
_TASKLIST._serialized_start=823
_TASKLIST._serialized_end=1047
_TASKFORECAST._serialized_start=1050
_TASKFORECAST._serialized_end=1268
_SITESATELLITELIST._serialized_start=1270
_SITESATELLITELIST._serialized_end=1339
_RETFORECASTONEOVER._serialized_start=1341
_RETFORECASTONEOVER._serialized_end=1376
_TASKPLAN._serialized_start=1378
_TASKPLAN._serialized_end=1454
_TASKHANDLECONFLICT._serialized_start=1457
_TASKHANDLECONFLICT._serialized_end=1615
_TASKISSUED._serialized_start=1617
_TASKISSUED._serialized_end=1715
_TASKPAUSE._serialized_start=1717
_TASKPAUSE._serialized_end=1776
_TASKRECOVERY._serialized_start=1778
_TASKRECOVERY._serialized_end=1840
_TASKDEL._serialized_start=1842
_TASKDEL._serialized_end=1899
_TASKCONFIRM._serialized_start=1901
_TASKCONFIRM._serialized_end=1959
_RETTASKCONFIRM._serialized_start=1961
_RETTASKCONFIRM._serialized_end=2022
_RETTASKINDEX._serialized_start=2025
_RETTASKINDEX._serialized_end=2158
_RETTASKINDEX_DATAENTRY._serialized_start=2115
_RETTASKINDEX_DATAENTRY._serialized_end=2158
_TASKFORECASTPARAMSET._serialized_start=2161
_TASKFORECASTPARAMSET._serialized_end=2406
_TASKAUTOSET._serialized_start=2409
_TASKAUTOSET._serialized_end=2678
_TASKDETAILDAT._serialized_start=2680
_TASKDETAILDAT._serialized_end=2722
_RETTASKDAT._serialized_start=2724
_RETTASKDAT._serialized_end=2817
_TASKDETAILPOINT._serialized_start=2819
_TASKDETAILPOINT._serialized_end=2863
_RETTASKPOINT._serialized_start=2865
_RETTASKPOINT._serialized_end=2961
# @@protoc_insertion_point(module_scope)
# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: mod-user.proto
"""Generated protocol buffer code."""
from google.protobuf.internal import builder as _builder
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pool as _descriptor_pool
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0emod-user.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf1\x01\n\x13RetAdminUserElement\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x13\n\x04role\x18\x02 \x01(\x0e\x32\x05.Role\x12\x10\n\x08username\x18\x03 \x01(\t\x12\x0b\n\x03pwd\x18\x04 \x01(\t\x12\x0b\n\x03off\x18\x05 \x01(\x05\x12\x30\n\x06\x65xtend\x18\x06 \x03(\x0b\x32 .RetAdminUserElement.ExtendEntry\x12,\n\x08\x63reateDt\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a-\n\x0b\x45xtendEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\".\n\x08UserList\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x13\n\x04role\x18\x02 \x01(\x0e\x32\x05.Role\"P\n\nUserCreate\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x0b\n\x03pwd\x18\x02 \x01(\t\x12\x13\n\x04role\x18\x03 \x01(\x0e\x32\x05.Role\x12\x0e\n\x06remark\x18\x04 \x01(\t\"r\n\nUserUpdate\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x0e\n\x06oldPwd\x18\x03 \x01(\t\x12\x0e\n\x06newPwd\x18\x04 \x01(\t\x12\x13\n\x04role\x18\x05 \x01(\x0e\x32\x05.Role\x12\x0e\n\x06remark\x18\x06 \x01(\t\")\n\x07UserDel\x12\r\n\x05token\x18\x01 \x01(\x05\x12\x0f\n\x07idArray\x18\x02 \x03(\x05\"&\n\x05Login\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x0b\n\x03pwd\x18\x02 \x01(\t*6\n\x04Role\x12\r\n\tUser_None\x10\x00\x12\x0e\n\nUser_Admin\x10\x01\x12\x0f\n\x0bUser_Normal\x10\x02\x42\x0cZ\n../protogob\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'mod_user_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'Z\n../protogo'
_RETADMINUSERELEMENT_EXTENDENTRY._options = None
_RETADMINUSERELEMENT_EXTENDENTRY._serialized_options = b'8\001'
_ROLE._serialized_start=624
_ROLE._serialized_end=678
_RETADMINUSERELEMENT._serialized_start=52
_RETADMINUSERELEMENT._serialized_end=293
_RETADMINUSERELEMENT_EXTENDENTRY._serialized_start=248
_RETADMINUSERELEMENT_EXTENDENTRY._serialized_end=293
_USERLIST._serialized_start=295
_USERLIST._serialized_end=341
_USERCREATE._serialized_start=343
_USERCREATE._serialized_end=423
_USERUPDATE._serialized_start=425
_USERUPDATE._serialized_end=539
_USERDEL._serialized_start=541
_USERDEL._serialized_end=582
_LOGIN._serialized_start=584
_LOGIN._serialized_end=622
# @@protoc_insertion_point(module_scope)
import paho.mqtt.client as mqtt
from django.conf import settings
from .utils import parse_proto
from .signals import mqtt_message_received
# *******************************************************
from channels.layers import get_channel_layer, channel_layers
from asgiref.sync import async_to_sync
def send_websocket_message(message):
channel_layer = get_channel_layer()
async_to_sync(channel_layer.group_send)(
"chat_mqtt",
{"type": "chat.message", "message": message}
)
# *******************************************************
def on_connect(mqtt_client, userdata, flags, rc):
if rc == 0:
print('Connected successfully')
mqtt_client.subscribe('django/mqtt')
else:
print('Bad connection. Code:', rc)
def on_message(mqtt_client, userdata, msg):
# 接收mqtt消息的代码
# mqtt_message_received.send(sender=None, message=msg.payload)
# print(f'Received message on topic: {msg.topic} with payload: {msg.payload}')
data = parse_proto(msg.payload)
send_websocket_message(data)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set(settings.MQTT_USER, settings.MQTT_PASSWORD)
client.connect(
host=settings.MQTT_SERVER,
port=settings.MQTT_PORT,
keepalive=settings.MQTT_KEEPALIVE
)
print('start mqtt')
client.loop_start()
\ No newline at end of file
import django.dispatch
mqtt_message_received = django.dispatch.Signal(providing_args=['message'])
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('publish/', views.publish_message, name='publish'),
]
\ No newline at end of file
import json
from .auto_generate_python import TDSCmd_pb2, OAM_datastruct_pb2
from google.protobuf.json_format import MessageToJson
def parse_proto(data: bytes) -> str:
cmd = TDSCmd_pb2.TDSCmd()
cmd.ParseFromString(data)
data = MessageToJson(cmd,
including_default_value_fields=True,
preserving_proto_field_name=True)
return json.dumps(json.loads(data), separators=(',', ':'))
from django.http import JsonResponse, HttpResponse
from django.middleware.csrf import get_token
from django.shortcuts import render, redirect
from django.dispatch import receiver
from mqtt.mqtt import client as mqtt_client
from mqtt.signals import mqtt_message_received
MESSAGE = b""
def publish_message(request):
# request_data = json.loads(request.body)
topic = request.POST['topic']
msg = request.POST['msg']
rc, mid = mqtt_client.publish(topic, msg)
return JsonResponse({'code': rc})
def index(request):
global MESSAGE
token = get_token(request)
return render(request, 'index.html', {'token': token, 'msg': MESSAGE.decode('utf-8')})
@receiver(mqtt_message_received)
def show_message(sender, **kwargs):
global MESSAGE
print('Received message:', kwargs['message'])
MESSAGE = kwargs['message']
......@@ -10,7 +10,21 @@ https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
import os
from django.core.asgi import get_asgi_application
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import AllowedHostsOriginValidator
from chat.routing import websocket_urlpatterns
import chat.routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'vue_django.settings')
application = get_asgi_application()
django_asgi_app = get_asgi_application()
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(URLRouter(websocket_urlpatterns))
)
})
......@@ -31,6 +31,9 @@ ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'daphne',
'chat',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
......@@ -45,7 +48,7 @@ MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
......@@ -132,3 +135,24 @@ STATICFILES_DIRS = [
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
ASGI_APPLICATION = 'vue_django.asgi.application'
MQTT_SERVER = '192.168.0.89'
MQTT_PORT = 1883
MQTT_KEEPALIVE = 60
MQTT_USER = ""
MQTT_PASSWORD = ""
CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels.layers.InMemoryChannelLayer',
}
# "default": {
# "BACKEND": "channels_redis.core.RedisChannelLayer",
# "CONFIG": {
# "hosts": [("127.0.0.1", 6379)],
# },
# },
}
......@@ -14,11 +14,13 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.urls import path, include
from .views import index, test
urlpatterns = [
path('admin/', admin.site.urls),
path("", index),
path("test/", test),
path("mqtt/", include("mqtt.urls")),
path("chat/", include("chat.urls")),
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment