# AirHome 智能控制系统通信协议的实现 #
## 项目概述 ##
  本项目是一个采用C#语言实现的智能家居控制系统通信协议。其适用于智能控制系统中智能设备模块(如WIFI、ZigBee、蓝牙和红外等)与远程服务器或本地智能设备(如手机、平板电脑、PC等)之间进行数据透明传输,协议定义了消息的功能和通信报文格式。
### 建议 ###
1. 为了数据的一致性,每条消息都需要进行回复,即有控制就有反馈、有请求就有响应。
2. 在通信方式上终端模块与服务器采用TCP连接,而本地APP或PC端软件控制采用UDP通信。
### 约定 ###
1. 协议中所有编码方式采用[UTF-8](http://zh.wikipedia.org/zh/UTF-8)(8-bit Unicode Transformation Format)可变长度字符编码。
2. 所有报文数据中的十六进制字符串均使用**大写**形式,即除0~9外,其他字母使用A~F的大写形式。
3. 消息头定义中的“消息体长度”**不包括**自定义转义字符ESC的长度,同时[CRC](http://en.wikipedia.org/wiki/Cyclic_redundancy_check)也**不会对**自定义转义字符ESC进行校验,而是对原字符进行校验,这与消息生成和解析的步骤有关。
4. 由于存在转义字符的原因,相关字节长度会有相应的增加。如灯具色温调节代码0X1002由原来的2个字节变3个字节的0X101BE7,解析时请先替换回原字符。
5. 对于灯具设备,如果有亮度调节、色温调节或[RGB](http://en.wikipedia.org/wiki/RGB_color_model)调节等功能,执行这些功能时将会使用继电器(如果有的话)自动打开。
6. 为了实现灯具设备状态的记忆功能,同时区别**最小亮度调节**与**关闭灯具设备**功能,约定1%为最小的调光等级,具体实现效果由灯具设备决定。
### 定义 ###
1. **设备ID**:设备ID有时也称为UID,每个通信模块出厂时可以人为给定一个编号并烧录到模块中,作为通信模块的唯一标识符。
2. **通道编号**:如果一个设备ID所对应的模块可以控制多个子设备,那么每个子设备通过一个通道编号来标识。需要注意的时,每个子设备可能拥有不同的功能,具体的功能将会在搜索设备时由底层(终端执行控制设备)反馈给上层(服务器或APP等)。
3. **消息类型**:用于表示报文传输的方向和类型,目前支持以下四种,即服务器或APP客户端到终端设备、终端设备到服务器或APP客户端、终端设备主动上报到服务器或APP客户端,以及服务器或APP客户端响应终端设备的上报中告警。
4. **消息ID**:它是一个功能消息的唯一标识。如果一个消息ID为0X0000,那么该消息可能具有多个功能。
5. **消息参数**:由参数类型、参数值长度和参数值组成。此参数可以根据所需功能无限扩展。
6. **设备功能**:即是每个设备(或子设备)所具有的功能,将来可以通过功能代码继续扩展。
### 缩写 ###
1. **STX**:通讯专用字符即文始字符,其全称为Start Of Text,ASCII码值为0X02,它标志着传送正文(数据块)的开始。
2. **ETX**:通讯专用字符即文终字符,其全称为End Of Text,ASCII码值为0X03,它标志着一个数据块的结束。
3. **ESC**:Escape的简写,也称转码字符,ASCII码值为0X1B,本文用于对数据帧起始符和结束符之间出现的STX、ETX以及自身ESC的转义。
4. **CRC**:循环冗余校验(Cyclic Redundancy Check),它是一种常用的差错校验码,用于确保数据传输的正确性和完整性。本文使用的是CRC16查表算法。
## 分区及功能 ##
  每个家庭单元可能拥有一个住所,也有可以拥有多个不同的住所,如一个常住的住所和一个用于度假的别墅。这些依据住所之间可能相距很远,但他们都属于同一个家庭。每个住所由多个房间组成,这些房间可能还会分上下楼,具体的分区由用户自己决定,每个家庭的房间也有所不同。
![PartitionTier](PartitionTier.png "分区层级")
### 分区层级 ###
1. **家庭**作为整个分组的根, 其包含一个或多个住所。
2. **住宅**是包含一个或多个区域的住所,一个家庭可能拥有多个住所,例如一个主要的住宅和一个度假的别墅。一般而言,一个家庭至少包含一个住所,这个住所也可以不在同一个地方,但在逻辑上它是一体的。
3. **区域**是房间和场所的集合,比如“楼上”、“楼下”和“车库”等。每个住所包含一个或多个区域、每个区域由一个或多个房间或场所组成。
4. **房间**是分区的最小单位,每个住所包含一个或多个房间。
### 功能结构 ###
![FunctionStructure](FunctionStructure.png "功能结构")
1. **设备**:此处的设备即为智能产品,其拥有一个或多个通道,具有一个或多个功能,支持WiFi或蓝牙等通信方式进行连接。
2. **通道**:通道也称为回路,每个通道对应一个“子设备”,并可能拥有不同的功能。例如一个智能设备中可能由灯具、摄像头、电机和各种传感器等组成,要想只通过一个WIFI模块控制这些“子设备”,就必须分多路进行操作,而且每一路均有自己的功能特点和控制方式。回路也称为通道,一个回路对应一个“子设备”,如果回路编号为0X00,表示所有回路。
3. **功能**:设备拥有的功能是由设备特性所决定的,例如灯具产品可能拥有开关、亮度调节、色温调节、色彩调节和模式切换等功能,而空调可以进行开关、温度调节以及各种模式切换等。
4. **数据点**:数据点是对功能的细化,每个功能对应一个或多个数据点。例如开关功能对应一个开或关状态的数据点,亮度调节功能对应该一个亮度值数据点;而色温调节功能需要冷色温值和暖色温值两个数据点来实现;色彩调节功能需要红光、绿色和蓝光三个数据点才能实现。
### 设备功能 ###
1. **配置功能**:配置功能用于对设备的信息进行设置操作,如搜索设备、定位设备、设备分组、设置设备名称、设置备注信息、设置定时任务时间、同步时间和恢复出厂设置等。
2. **控制功能**:控制操作会改变设备的工作状态,如电气参数、物理状态等,灯具常用的控制操作如打开或关闭、调节灯具亮度、调节灯具色温、调节灯具RGB等。
3. **数据采集**:为了查看设备当前的运行状态,可以使用数据采集命令到获取,灯具常用的状态包括开关、亮度、色温和RGB等;同时也可以使用该命令来获取设备分组、名称以及备注等信息。
4. **主动请求**:设备根据预先设置的地址主动进行请求,如上电后自动登录到服务器以及定时向服务器发送心跳包等。
5. **事件上报**:当设备检测到事件报警或设备的某此参数超过设定的阈值时,就会触发事件上报。该功能可能需要相关传感器的支持。
6. **数据点功能**:数据点功能是相关功能的细化,它可以用于扩展新功能。
## 通信流程 ##
### 消息下发与回复流程 ###
  服务器或APP客户端向终端设备发送报文消息,终端设备在一定时间内收到该消息后应返回相关的报文消息作为回复。<br/><br/>
  若服务器或APP客户端在T1秒时间内收到终端设备回复的报文消息,那么说明消息发送成功;但如果服务器或APP客户端在该时间内未收到终端设备的回复消息,将重新发送该报文消息。<br/><br/>
  若重发N1次后服务器或APP客户端仍然没有收到终端设备的回复消息,那么将认为报文消�
没有合适的资源?快使用搜索试试~ 我知道了~
这是一个基于C#的智能家居控制系统通信协议的实现 .zip
共38个文件
cs:22个
png:9个
sln:1个
需积分: 5 0 下载量 69 浏览量
2024-03-18
12:57:30
上传
评论
收藏 225KB ZIP 举报
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
资源推荐
资源详情
资源评论
收起资源包目录
这是一个基于C#的智能家居控制系统通信协议的实现。.zip (38个子文件)
资料总结
SimpleHeartbeatPacket.png 3KB
PartitionTier.png 23KB
.gitattributes 2KB
AirHome.sln 968B
ParseMessage.png 42KB
FunctionStructure.png 20KB
MessageSend.png 20KB
.gitignore 3KB
GenerateMessage.png 27KB
HeartbeatPacket.png 25KB
MessageExample.png 3KB
EventReport.png 20KB
README.md 41KB
AirHome
Exception.cs 2KB
StringHelper.cs 2KB
Device.cs 4KB
AirAction.cs 5KB
Counter.cs 795B
User.cs 446B
SettingAction.cs 27KB
Datagram.cs 24KB
UIntHelper.cs 2KB
UpdateArgs.cs 679B
Enumeration.cs 30KB
StatusAction.cs 8KB
Crc.cs 3KB
Properties
AssemblyInfo.cs 1KB
DataPoint.cs 154B
Home.cs 242B
OperateAction.cs 5KB
AirHome.csproj 3KB
DatagramEventArgs.cs 870B
Zone.cs 6KB
AirHome.nuspec 584B
ControlAction.cs 9KB
House.cs 22KB
ClassDiagram.cd 10KB
Room.cs 2KB
共 38 条
- 1
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功