# wf-iot
#### 项目介绍
IOT云平台
#### 软件架构
软件架构说明
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本项目
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 码云特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
5. 码云官方提供的使用手册 [http://git.mydoc.io/](http://git.mydoc.io/)
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
#### 开发文档
# **多路智能通信平台**
## **统一名词**
名称|类型|说明
-|-|-
accountId|string|接入我们云平台的企业id
productionId|string|产品id
productionKey|string|产品key
productionKeySecure|string|用于设备登陆认证强校验
deviceId|string|设备id
sessionId|string |设备或者H5终端的会话id
applicationId|string|应用id
userId|string|用户id,企业不同应用下各自用户体系下的用户
serverHost|string|主机地址
serverPort|int|主机端口
deviceIp|string|设备联网分配的ip地址
## **曲速透明传输协议**
### **设备--云端**
#### **登陆认证**
设备通过负载均衡节点查询获得主机地址,连接对应的主机和端口,然后去进行登陆验证。
##### 基本协议格式
设备向云端进行登陆认证时发送的的协议的格式分两种情况。认证登陆时消息数据的参数要以一个空格字符分割,以换行符作为结束标记。认证登陆后透传的数据以换行符作为一条消息数据的结束标记。消息数据为字符串形式。
##### (1)当设备与云端通信选择不加密时,即MODE 为N(弱校验)
MC MODE PK DID\n
##### (2)当设备云端通信选择加密时,即MODE非N(强校验)
MC MODE PKSTOKEN\n
说明:
>MC :消息数据的启始标志,指定为@#*WF ,如果云端接收数据后发现数据头部不含有该标志则丢弃。<br>
MODE:登陆认证的加解密方式,可选参数为[N,ECC,RSA] ,N即None,不采用任何加解密;ECC即椭圆加密算法;RSA即非对称加密算法。<br>
PK:productionKey,即产品key。
DID:deviceId即设备id,登陆认证deviceId。<br>
PSKTOKEN:[PK,DID,nowtime].pks;'.'符号的前面部分是加密后的数据,后面部分是采用的加密算法对应的公钥。<br>
nowtime 时间戳是为了被截包暴力验证。
##### 心跳
心跳具体用接入的设备自己定义大小格式等信息,发送到前置机,前置机会对其做心跳检测,设备登陆认证后透传的数据也可以当做心跳。
##### 重连机制
设备30秒超时未发送数据(包括心跳),前置机断开连接,等待设备重新连接;设备断开连接后重新验证登陆。
**登陆认证流程**
![image](https://note.youdao.com/yws/api/personal/file/BA7575B20B654C33A9CD26616F2BBFC4?method=download&shareKey=0092d0e36497a3afbfc966259d194762)
#### 设备鉴权
当登陆认证过程不采用加密方式时,直接获取设备登陆认证透传的productKey和deviceId参数,调用设备鉴权服务api。当登陆认证过程采用加密方式时,获取PKSTOKEN再调用对应api。鉴权成功则设备认证成功,设备与云端建立通信设备透传数据;鉴权失败则云端断开这个连接。
##### 设备鉴权API
###### 不采用加密方式,做弱校验时:
请求地址|请求方式
-|-
https://cloud.warpfuture.com/iot/auth/checkWithKey|Post
###### 请求参数
名称|类型|说明
-|-|-
productionKey|string|产品key
deviceId|string|设备id
###### 返回参数
名称|类型|说明
-|-|-
accountId|string|企业id
productionId|string|产品id
deviceId|string|设备id
###### 采用加密方式,做强校验时:
请求地址|请求方式
-|-
https://cloud.warpfuture.com/iot/auth/checkWithSecure|Post
###### 请求参数
名称|类型|说明
-|-|-
pkstoken|string|含有公钥的加密字符串
productionSecure|string|产品公钥
###### 返回参数
名称|类型|说明
-|-|-
accountId|string|企业id
productionId|string|产品id
deviceId|string|设备id
**设备登陆认证失败或成功记录**
设备登陆认证失败与否都将数据按一定格式丢到kafka,供后面数据分析所用
>{<br>
"message": ,<br>
"messageTime":"" , //时间戳 <br>
"data":{<br>
"accountId":"" ,//企业id <br>
"deviceId":"", //设备id <br>
"productionId":"",//产品id <br>
"deviceIp":"" //设备联网的ip <br>
}<br>
}
#### **数据上报**
设备认证成功后透传的数据以Base64解码后在云端以数据上报的规定好的格式放到kafka里面(kafka以accountId分topic),给消费者监听。
数据上报的格式如下:
>{<br>
"accountId":"",<br>
"source":{<br>
"deviceId":"",<br>
"productionId":"",<br>
"deviceIp":"" //为实时定位设备所在位置作分布图所需<br>
},<br>
"messageTime":, //时间类型long <br>
"data":"" //设备透传的数据<br>
}
**固件信息上报说明**
>设备固件基本信息通过设备通过https定时检查固件版本升级时将固件详细的信息以json格式传递给云端OTA固件升级服务那边。
固件基本信息参数表
名称|类型|说明
-|-|-
originOtaVersion|string|固件版本
deviceId|string|设备id
## **Websocket协议**
### **应用--云端**
#### **app登陆认证**
用户使用已经注册的账号调用云端登陆验证接口登陆app后会返回一个token,app利用返回的token调用建立websocket长连接的接口建立连接通道。若用户已经登陆直接带token到云端,云端校验这个token合法性,若合法建立连接通道。
token时效为24小时,若token在调用建立连接通道的接口前已经失效,则接口调用失败即app与云端建立连接通道失败。若token在建立连接通道后才失效,则在连接通道断开之前依然可以通信。
在与云端建立连接通信前,需要调用负载均衡服务获取云端连接地址和端口(或者域名),然后带着token与云端建立通信。
app与云端通信协议的数据格式如下:
>{<br>
"accountId":"",<br>
"data":"",<br>
"messageTime": , //long类型<br>
"source":{<br>
"applicationId":"",<br>
"sessionId":"",<br>
"deviceId":"",<br>
"userId":"" <br>
},<br>
"target":{<br>
"productionId":"",<br>
"deviceId":"" <br>
}<br>
}
#### **token校验**
app通过负载均衡节点查询获取到连接地址后建立websocket连接带上token参数,云端获取到token调用token校验接口去校验token的合法性质。若token校验合法,返回userId给云端。
##### token校验API
请求地址|请求方式
-|-
请求参数
名称|类型|说明
-|-|-
token|string|app请求云端建立websocket长连接时带来的token
返回参数
名称|类型|说明
-|-|-
userId|string|app应用下对应的用户id
applicationId|string|应用id
accountId|string|企业id
返回格式例子
>{<br>
"code":"" ,<br>
"message": , //说明消息的内容<br>
"data":{
"accountId":"" ,//企业id <br>
"applicationId":"" ,//应用id <br>
"userId":"", //用户id <br>
"deviceId":"" //用户使用设备id <br>
关于物联网的java项目.zip
需积分: 0 140 浏览量
更新于2024-01-14
收藏 402KB ZIP 举报
物联网(Internet of Things, IoT)是现代信息技术领域的一个重要分支,它通过将各种设备、物品与互联网连接起来,实现数据的交互和智能控制。在这个Java项目中,我们聚焦于利用Java技术来构建物联网应用,这涉及到多个关键知识点。
1. **Java编程语言**:Java以其跨平台性、稳定性和丰富的库支持,成为了物联网开发的常用语言。理解Java的基础语法、面向对象编程概念以及异常处理等是该项目的前提。
2. **Java IoT框架**:在物联网场景下,Java提供了诸如Apache Mynewt、Eclipse Kura、Java Embedded或Oracle IoT Cloud Service等框架。这些框架简化了设备连接、数据处理和云服务集成的过程。
3. **传感器和设备接口**:物联网项目通常涉及硬件设备,如温度传感器、GPS模块等。Java开发者需要了解如何通过APIs或特定协议(如MQTT、CoAP)与这些设备进行通信。
4. **数据处理和分析**:收集到的物联网数据需要进行存储、处理和分析。Java提供Hadoop、Spark等大数据处理工具,以及用于实时流处理的Kafka和Flink等框架。
5. **网络通信**:物联网应用需要处理大量的网络通信。Java的Socket编程、HTTP/HTTPS协议库以及WebSocket等技术在实现设备间通信中起到关键作用。
6. **云计算集成**:很多物联网项目会结合云服务,如AWS IoT、Google Cloud IoT或Azure IoT Hub。Java SDKs使得开发者能轻松地与这些云平台交互,进行设备管理、数据存储和分析。
7. **安全性**:物联网的安全问题不容忽视,包括设备安全、数据传输安全和应用程序安全。Java提供了SSL/TLS加密、数字签名和访问控制等机制,以保护物联网系统的安全。
8. **微服务架构**:为了应对物联网系统的复杂性,微服务架构常被采用。Java Spring Boot和Spring Cloud框架提供了构建和管理微服务的强大工具。
9. **用户界面和API设计**:用户界面和API是与用户交互的关键。JavaFX和Swing可用于桌面应用的开发,而RESTful API设计则便于不同系统间的通信。
10. **持续集成/持续部署(CI/CD)**:在Java项目中,Jenkins、GitLab CI/CD等工具可帮助自动化构建、测试和部署流程,提高开发效率。
在“5575757faga”这个文件中,可能是项目源代码或特定资源。通过深入研究这个文件,可以进一步了解上述知识点在实际项目中的应用。记住,实践是检验理论的最好方式,动手操作是学习Java物联网开发的关键步骤。
zero2100
- 粉丝: 172
- 资源: 2460
最新资源
- 校园失物招领网站:设计与实现的全流程解析
- 基于java的公司固定资产管理系统.doc
- 基于java+springboot+vue+mysql的学科竞赛管理系统 源码+数据库+论文(高分毕业设计).zip
- 人工智能领域计算断层成像技术研究最新进展综述
- 微藻检测10-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 快速排序算法在Rust语言的实现及其优化
- 2024年超融合网络架构研究与实践报告.pdf
- 埃森哲:2024年360°价值报告(英文版).pdf
- ISACA中国社区2024女性职业现状调查报告.pdf
- 如何看待“适度宽松”的货币政策.pdf
- 双目立体匹配三维重建点云C++ 本工程基于网上开源代码进行修改,内容如下: 1.修改为 VS2015 Debug win32 版本,支持利用特征点和 OpenCV 立体匹配算法进行进行三维重建及显示
- 华为云AI数字人生态赋能千行百业高效发展.pdf
- 金融业数据安全发展与实践报告.pdf
- 候鸟生命线—共筑候鸟迁徙保护网络.pdf
- 2024年全国统一电力市场建设情况及展望报告.pdf
- 2018-2023年粤港澳、京津冀、长三角三大区域高校本科专业调整趋势.pdf