Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
黄嘉阳
/
iot-mqtt-protocol
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
8a23b819
authored
Oct 31, 2023
by
huangjy
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
mqtt协议包,新增远程升级
parent
cb92d1d0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
135 additions
and
10 deletions
src/main/java/org/jetlinks/protocol/official/JetLinksMqttDeviceMessageCodec.java
src/main/java/org/jetlinks/protocol/official/TopicMessageCodec.java
src/main/java/org/jetlinks/protocol/official/entity/CustomFirmwareMessage.java
src/main/java/org/jetlinks/protocol/official/entity/CustomUpgradeFirmwareMessage.java
src/main/java/org/jetlinks/protocol/official/JetLinksMqttDeviceMessageCodec.java
View file @
8a23b819
...
...
@@ -2,6 +2,7 @@ package org.jetlinks.protocol.official;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.fasterxml.jackson.core.JsonGenerator
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.google.common.collect.Maps
;
import
io.netty.buffer.ByteBuf
;
...
...
@@ -12,12 +13,10 @@ import org.jetlinks.core.message.DeviceMessage;
import
org.jetlinks.core.message.DisconnectDeviceMessage
;
import
org.jetlinks.core.message.Message
;
import
org.jetlinks.core.message.codec.*
;
import
org.jetlinks.core.message.firmware.UpgradeFirmwareMessage
;
import
org.jetlinks.core.message.property.ReadPropertyMessage
;
import
org.jetlinks.core.message.property.WritePropertyMessage
;
import
org.jetlinks.protocol.official.entity.CustomMessage
;
import
org.jetlinks.protocol.official.entity.CustomReadMessage
;
import
org.jetlinks.protocol.official.entity.CustomWriteMessage
;
import
org.jetlinks.protocol.official.entity.UserServerInfo
;
import
org.jetlinks.protocol.official.entity.*
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
...
...
@@ -127,6 +126,7 @@ public class JetLinksMqttDeviceMessageCodec implements DeviceMessageCodec {
CustomWriteMessage
.
PayLoad
payLoad
=
new
CustomWriteMessage
.
PayLoad
();
payLoad
.
setDeviceId
(
deviceMessage
.
getDeviceId
());
Map
<
String
,
Object
>
properties
=
((
WritePropertyMessage
)
deviceMessage
).
getProperties
();
Object
result
=
properties
.
get
(
"usrServerInfo"
);
if
(
result
!=
null
)
{
...
...
@@ -137,12 +137,47 @@ public class JetLinksMqttDeviceMessageCodec implements DeviceMessageCodec {
}
else
{
payLoad
.
setProperties
(
properties
);
}
customSendMessage
.
setPayload
(
payLoad
);
customSendMessage
.
setTimestamp
(
deviceMessage
.
getTimestamp
());
customSendMessage
.
setMessageId
(
deviceMessage
.
getMessageId
());
mapper
.
configure
(
JsonGenerator
.
Feature
.
ESCAPE_NON_ASCII
,
true
);
convertResult
=
TopicMessageCodec
.
encode
(
mapper
,
customSendMessage
);
}
else
{
}
else
if
(
deviceMessage
instanceof
UpgradeFirmwareMessage
)
{
CustomUpgradeFirmwareMessage
customUpgradeFirmwareMessage
=
new
CustomUpgradeFirmwareMessage
();
CustomUpgradeFirmwareMessage
.
Header
header
=
new
CustomUpgradeFirmwareMessage
.
Header
();
header
.
setTimestamp
(
deviceMessage
.
getTimestamp
());
header
.
setVersion
(
1
);
header
.
setUuid
(
deviceMessage
.
getMessageId
());
customUpgradeFirmwareMessage
.
setHeader
(
header
);
CustomUpgradeFirmwareMessage
.
PayLoad
payLoad
=
new
CustomUpgradeFirmwareMessage
.
PayLoad
();
String
url
=
((
UpgradeFirmwareMessage
)
deviceMessage
).
getUrl
();
payLoad
.
setUrl
(
url
);
Map
<
String
,
Object
>
parameters
=
((
UpgradeFirmwareMessage
)
deviceMessage
).
getParameters
();
payLoad
.
setParameters
(
parameters
);
String
signMethod
=
((
UpgradeFirmwareMessage
)
deviceMessage
).
getSignMethod
();
payLoad
.
setSignMethod
(
signMethod
);
long
size
=
((
UpgradeFirmwareMessage
)
deviceMessage
).
getSize
();
payLoad
.
setSize
(
size
);
String
sign
=
((
UpgradeFirmwareMessage
)
deviceMessage
).
getSign
();
payLoad
.
setSign
(
sign
);
String
version
=
((
UpgradeFirmwareMessage
)
deviceMessage
).
getVersion
();
payLoad
.
setFirmwareVersion
(
version
);
payLoad
.
setFirmwareId
(((
UpgradeFirmwareMessage
)
deviceMessage
).
getFirmwareId
());
customUpgradeFirmwareMessage
.
setPayload
(
payLoad
);
customUpgradeFirmwareMessage
.
setMessageId
(
deviceMessage
.
getMessageId
());
customUpgradeFirmwareMessage
.
setDeviceId
(
deviceMessage
.
getDeviceId
());
convertResult
=
TopicMessageCodec
.
encode
(
mapper
,
customUpgradeFirmwareMessage
);
}
else
{
convertResult
=
TopicMessageCodec
.
encode
(
mapper
,
deviceMessage
);
}
...
...
@@ -182,11 +217,11 @@ public class JetLinksMqttDeviceMessageCodec implements DeviceMessageCodec {
}
catch
(
UnsupportedEncodingException
e
)
{
throw
new
RuntimeException
(
e
);
}
CustomMessage
customMessage
=
JSON
.
parseObject
(
body
,
CustomMessage
.
class
);
String
properties
=
customMessage
.
getPayload
().
getProperties
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
String
result
;
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
if
(
message
.
getTopic
().
contains
(
"read"
)
||
message
.
getTopic
().
contains
(
"write"
))
{
CustomMessage
customMessage
=
JSON
.
parseObject
(
body
,
CustomMessage
.
class
);
String
properties
=
customMessage
.
getPayload
().
getProperties
();
String
messageId
=
customMessage
.
getHeader
().
getUuid
();
JSONObject
jsonObject
=
JSON
.
parseObject
(
properties
);
Set
<
String
>
keySet
=
jsonObject
.
keySet
();
...
...
@@ -199,9 +234,29 @@ public class JetLinksMqttDeviceMessageCodec implements DeviceMessageCodec {
map
.
put
(
"messageId"
,
messageId
);
map
.
put
(
"timestamp"
,
System
.
currentTimeMillis
());
result
=
JSON
.
toJSONString
(
map
);
}
else
{
}
else
if
(
message
.
getTopic
().
contains
(
"firmware/upgrade"
))
{
CustomFirmwareMessage
customFirmwareMessage
=
JSON
.
parseObject
(
body
,
CustomFirmwareMessage
.
class
);
CustomFirmwareMessage
.
PayLoad
payload
=
customFirmwareMessage
.
getPayload
();
if
(
message
.
getTopic
().
contains
(
"firmware/upgrade/reply"
))
{
map
.
put
(
"success"
,
true
);
map
.
put
(
"messageId"
,
customFirmwareMessage
.
getHeader
().
getUuid
());
}
else
{
map
.
put
(
"success"
,
payload
.
getRetCode
()
==
0
);
map
.
put
(
"progress"
,
payload
.
getProgress
());
map
.
put
(
"complete"
,
payload
.
getProgress
()
==
100
);
map
.
put
(
"errorReason"
,
payload
.
getValue
());
map
.
put
(
"version"
,
payload
.
getFirmwareVersion
());
map
.
put
(
"firmwareId"
,
payload
.
getFirmwareId
());
}
map
.
put
(
"timestamp"
,
System
.
currentTimeMillis
());
result
=
JSON
.
toJSONString
(
map
);
}
else
if
(
message
.
getTopic
().
contains
(
"properties/report"
)){
CustomMessage
customMessage
=
JSON
.
parseObject
(
body
,
CustomMessage
.
class
);
String
properties
=
customMessage
.
getPayload
().
getProperties
();
map
.
put
(
"properties"
,
JSON
.
parseObject
(
properties
));
result
=
JSON
.
toJSONString
(
map
);
}
else
{
result
=
body
;
}
byte
[]
bytes
;
try
{
...
...
src/main/java/org/jetlinks/protocol/official/TopicMessageCodec.java
View file @
8a23b819
This diff is collapsed.
Click to expand it.
src/main/java/org/jetlinks/protocol/official/entity/CustomFirmwareMessage.java
0 → 100644
View file @
8a23b819
package
org
.
jetlinks
.
protocol
.
official
.
entity
;
import
lombok.Data
;
@Data
public
class
CustomFirmwareMessage
{
private
Header
header
;
private
PayLoad
payload
;
private
boolean
success
;
private
String
messageId
;
private
Long
timestamp
;
@Data
public
class
Header
{
private
String
version
;
private
String
uuid
;
private
Long
timestamp
;
}
@Data
public
class
PayLoad
{
private
Integer
progress
;
private
Integer
retCode
;
private
String
firmwareVersion
;
private
String
firmwareId
;
private
String
value
;
}
@Data
public
class
DeviceAttrInfo
{
private
String
key
;
private
String
value
;
}
}
src/main/java/org/jetlinks/protocol/official/entity/CustomUpgradeFirmwareMessage.java
0 → 100644
View file @
8a23b819
package
org
.
jetlinks
.
protocol
.
official
.
entity
;
import
lombok.Data
;
import
org.jetlinks.core.message.firmware.UpgradeFirmwareMessage
;
import
java.util.Map
;
@Data
public
class
CustomUpgradeFirmwareMessage
extends
UpgradeFirmwareMessage
{
private
Header
header
;
private
PayLoad
payload
;
@Data
public
static
class
Header
{
private
int
version
;
private
String
uuid
;
private
Long
timestamp
;
}
@Data
public
static
class
PayLoad
{
private
String
url
;
private
String
firmwareVersion
;
private
String
sign
;
private
String
signMethod
;
private
String
firmwareId
;
private
long
size
;
private
Map
<
String
,
Object
>
parameters
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment