Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
IoTSharp
IoTSharp
提交
598d59df
IoTSharp
项目概览
IoTSharp
/
IoTSharp
9 个月 前同步成功
通知
15
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
IoTSharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
598d59df
编写于
5月 20, 2019
作者:
麦壳饼
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix for xml and binary data
上级
bbf6246a
变更
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
浏览文件 @
598d59df
...
...
@@ -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
浏览文件 @
598d59df
...
...
@@ -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
浏览文件 @
598d59df
# 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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录