外观
09.分布式智能家居项目雏形
约 1171 字大约 4 分钟
嵌入式NETLinux单片机
2023-08-17
① 需求分析
客户端进入室内后能够主动发现服务(如:环境服务,灯光服务)
各种服务可以有不同的载体(如:由不同设备提供)
各种服务之间,服务与客户端之间完全无耦合(服务可自由增减)
客户端可以是移动APP,可以是桌面软件
② 技术可行性分析
发现服务:UDP广播+自定义协议
客服端主动广播服务查询协议包
服务设备接收到查询协议包,回复协议内容及协议使用方式
服务自由增减:自定义协议
服务设备遵循相同的协议:数据传输协议,服务提供模式,等
客服端通过协议使用服务,无需关心服务设备的形态及位置
③ 基础设施
提供服务的设备(嵌入式,服务器,PC,等)必须具备联网能力且遵循服务协议。
④ 系统概要设计

⑤ 交互

注
1:主动UDP广播
4:具体某一个服务设备
⑥ 系统详细设计
服务发现
客服端主动广播服务发现数据包

服务应答
服务设备将能够提本机IP及能够提供的服务信息发回客户端

⑦ 客户端详细设计
- 通过广播服务发现数据包,收集当前环境的服务信息
- 可用服务通过“菜单”(UDP)方式呈现,并提示服务使用方式(服务设备)
- 选择服务后,连接到对应设备,通过协议消息发送服务请求命令
- 收到设备回复后,断开设备连接(请求-应答)
⑧ 服务端详细设计
联网模块
设备提供服务前,必须联网(无线or 有线)
服务前端
接收服务发现数据包,并应答当前设备服务信息
服务后端
服务设备驱动,如:温湿度传感器驱动,灯光控制驱动,等
⑨ 服务设备软件架构设计

⑩ 服务设备启动流程

⑪ 几个问题
- 设备上运行什么操作系统?
- 设备运行的系统中如何创建多个并行执行的任务?
- 设备如何连接通过wifi 联网?
- 设备上的网络编程通过什么接口完成?
本教程是基于小熊派写的,小熊派使用的是openharmony
⑫ OpenHarmony是什么?
开放原子开源基金会(OpenAtom Foundation)旗下开源项目
- 定位是一个面向全场景的开源分布式操作系统
项目包含了分布式操作系统所需的全部能力
- 包括内核层、系统服务层、应用框架层
华为及众多贡献者,在开源社区内直接贡献
轻量系统:硬件资源极其有限,支持的设备最小内存为128KiB。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。
小型系统:面向应用处理器的设备,支持的设备最小内存为1MiB。可支撑的产品如智能家居领域的IP Camera、电子猫眼、路由器以及智慧出行域的行车记录仪等。
标准系统:面向应用处理器例如Arm Cortex-A的设备,支持的设备最小内存为128MilB.以提供增强的交互能力、3DGPU以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。
⑬ OpenHarmony 轻量级系统应用开发精要
系统组件剪裁与配置
- .//vendor/hisilicon/hispark pegasus/confiig.json
板载功能剪裁与配置
- .//device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
⑭ OpenHarmony轻量级系统应用开发精要
在application/sample/wifi-iot/app目录下新建工程目录(如: demo_service)
工程目录下新建BUILD.gn文件
修改 application目录下的BUILD.gn文件

⑮ OpenHarmony轻量级系统应用开发精要


编程实验:分布式智能家居项目雏形
BUILD.gn
static_library("demo_service") {
sources = [
"main_entry.c"
]
include_dirs = [
"//utils/native/lite/include",
"//foundation/communication/wifi_lite/interfaces/wifiservice",
"//base/iot_hardware/peripheral/interfaces/kits",
"//device/bearpi/bearpi_hm_nano/sdk_liteos/include",
]
}main_entry.c
