Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
IoTSharp
提交
df002387
I
IoTSharp
项目概览
jobily
/
IoTSharp
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
IoTSharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
df002387
编写于
5月 20, 2019
作者:
麦壳饼
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix for xml and binary data
上级
b9b5d5f7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
65 addition
and
8 deletion
+65
-8
IoTSharp/Extensions/DataExtension.cs
IoTSharp/Extensions/DataExtension.cs
+2
-2
IoTSharp/Handlers/MqttEventsHandler.cs
IoTSharp/Handlers/MqttEventsHandler.cs
+35
-6
docs/iotsharp/content/api/mqtt.zh-cn.md
docs/iotsharp/content/api/mqtt.zh-cn.md
+28
-0
未找到文件。
IoTSharp/Extensions/DataExtension.cs
浏览文件 @
df002387
...
...
@@ -162,12 +162,12 @@ namespace IoTSharp.Extensions
if
(
kp
.
Value
.
GetType
()
==
typeof
(
byte
[]))
{
tdata
.
Type
=
DataType
.
Binary
;
tdata
.
Value_B
oolean
=
(
bool
)
kp
.
Value
;
tdata
.
Value_B
inary
=
(
byte
[]
)
kp
.
Value
;
}
else
if
(
kp
.
Value
.
GetType
()
==
typeof
(
System
.
Xml
.
XmlDocument
))
{
tdata
.
Type
=
DataType
.
XML
;
tdata
.
Value_XML
=
((
System
.
Xml
.
XmlDocument
)
kp
.
Value
).
ToString
()
;
tdata
.
Value_XML
=
((
System
.
Xml
.
XmlDocument
)
kp
.
Value
).
InnerXml
;
}
else
{
...
...
IoTSharp/Handlers/MqttEventsHandler.cs
浏览文件 @
df002387
...
...
@@ -70,9 +70,41 @@ namespace IoTSharp.Handlers
if
(
tpary
.
Length
>=
3
&&
tpary
[
0
]
==
"devices"
&&
Devices
.
ContainsKey
(
e
.
ClientId
))
{
Device
device
=
JudgeOrCreateNewDevice
(
tpary
,
Devices
[
e
.
ClientId
]);
var
keyValues
=
e
.
ApplicationMessage
.
ConvertPayloadToDictionary
();
if
(
device
!=
null
)
{
Dictionary
<
string
,
object
>
keyValues
=
new
Dictionary
<
string
,
object
>();
if
(
tpary
.
Length
>=
4
)
{
string
keyname
=
tpary
.
Length
>=
5
?
tpary
[
4
]
:
tpary
[
3
];
if
(
tpary
[
3
].
ToLower
()
==
"xml"
)
{
try
{
var
xml
=
new
System
.
Xml
.
XmlDocument
();
xml
.
LoadXml
(
e
.
ApplicationMessage
.
ConvertPayloadToString
());
keyValues
.
Add
(
keyname
,
xml
);
}
catch
(
Exception
ex
)
{
_logger
.
LogWarning
(
ex
,
$"xml data error
{
topic
}
,
{
ex
.
Message
}
"
);
}
}
else
if
(
tpary
[
3
].
ToLower
()
==
"binary"
)
{
keyValues
.
Add
(
keyname
,
e
.
ApplicationMessage
.
Payload
);
}
}
else
{
try
{
keyValues
=
e
.
ApplicationMessage
.
ConvertPayloadToDictionary
();
}
catch
(
Exception
ex
)
{
_logger
.
LogWarning
(
ex
,
$"ConvertPayloadToDictionary Error
{
topic
}
,
{
ex
.
Message
}
"
);
}
}
if
(
tpary
[
2
]
==
"telemetry"
)
{
Task
.
Run
(
async
()
=>
...
...
@@ -93,7 +125,7 @@ namespace IoTSharp.Handlers
{
try
{
var
result
=
await
_dbContext
.
SaveAsync
<
AttributeLatest
,
AttributeData
>(
keyValues
,
device
,
DataSide
.
ClientSide
);
}
catch
(
Exception
ex
)
...
...
@@ -105,10 +137,7 @@ namespace IoTSharp.Handlers
}
}
}
}
internal
void
Server_ClientDisconnected
(
IMqttServerEx
server
,
MqttServerClientDisconnectedEventArgs
args
)
...
...
docs/iotsharp/content/api/mqtt.zh-cn.md
0 → 100644
浏览文件 @
df002387
# MQTT API说明
## Topic 规则
### 设备:
属性数据 /devices/me/attributes
遥测数据 /devices/me/telemetry
### 网关:
上传自身属性数据 /devices/me/attributes
上传自身遥测数据 /devices/me/telemetry
上传子设备属性数据 /devices/
<子设备名称>
/attributes
上传子设备遥测数据 /devices/
<子设备名称>
/telemetry
上传子设备的属性和遥测数据时 , 首先会查找设备是否存在, 如果存在, 则创建设备, 创建设备的租户和客户信息继承自网关,自动创建的设备与普通设备没有区别。
子设备名称如果指定的是已存在设备或者其他网关的子设备则不能创建, 也就是说, 一个客户的所有设备名称是唯一的。
##
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录