【开发者说】栏目是为HarmonyOS开发者提供的展示和分享平台,在这里,大家可以发表自己的技术洞察和见解,也可以展示自己的开发心得和成果。
欢迎大家积极投稿,后台回复【投稿】,即可获得投稿渠道。期待你们的分享~
一
背景介绍
十四五时期是我国推动乡村振兴和数字中国建设的重要时期,农业领域受到大量政策支持和资金投入,智慧农业发展空前活跃。但目前智慧农业存在一些问题,例如硬件部署系统分散,难以进行统一的管理,每个设备都具有自己的管理界面和数据格式,缺乏统一的通信技术标准,导致设备之间难以互联互通,限制了系统整体的效能和扩展性,以及存在着数据安全,隐私保护等问题。而鸿蒙系统的加入为解决智慧农业上的痛点提供了新思路,为主动把握万物互联时代带来的新机遇,我们团队研发出了一套基于鸿蒙系统的智慧农业中控系统——深爱农。
深圳技术大学FFH团队
二
项目介绍
深爱农旨在打造一个高效,智能的自动化的农业生产管理平台,来改进现代农业生产。这个系统将充当一个智能中心,用于监测和控制各种智能农业设备,包括无人机、移动机器人、自动灌溉系统和环境监测系统等。通过一次开发多端部署的技术使得应用可以在手机,平板,智慧屏等设备上使用,为用户提供无缝的全场景的体验,并通过鸿蒙分布式架构的特点组成互联的系统网络,实现高效组网通信。这个系统将不仅提高农业生产效率,还有助于可持续农业实践的推广。
系统架构
三
ArkUI高效构建多端可运行应用
应用使用ArkTS语言进行开发,运用ArkUI开发框架,大大减少了代码的输入,代码更加简洁美观,同时ArkUI的实时界面预览功能,还提供不同屏幕尺寸设备的应用预览,让开发效果视觉化呈现,避免了重复开发,有效帮助开发者们提升应用界面的开发效率。
四
一次开发多端部署
通过mediaquery模块接口,设置查询条件并绑定回调函数,在对应的条件的回调函数里更改页面布局或者实现业务逻辑,实现页面的响应式设计,在回调函数中判断应用当前处于何种断点,后续便可以通过断点查询的方式,来编写代码适应不同断点。
```
private smListener: mediaquery.MediaQueryListener;
private mdListener: mediaquery.MediaQueryListener;
private lgListener: mediaquery.MediaQueryListener;
aboutToAppear() {
this.smListener = mediaquery.matchMediaSync('(320vp<width<=530vp)');
this.smListener.on("change", this.isBreakpointSM);
this.mdListener = mediaquery.matchMediaSync('(530vp<width<=840vp)');
this.mdListener.on("change", this.isBreakpointMD);
this.lgListener = mediaquery.matchMediaSync('(840vp<width)');
this.lgListener.on("change", this.isBreakpointLG);
}
isBreakpointSM = (mediaQueryResult) => {
if (mediaQueryResult.matches) {
this.curBp = 'sm';
AppStorage.SetOrCreate('curBp', this.curBp);
}
Logger.info(TAG, `this.curBp = ${this.curBp}`);
}
isBreakpointMD = (mediaQueryResult) => {
if (mediaQueryResult.matches) {
this.curBp = 'md';
AppStorage.SetOrCreate('curBp', this.curBp);
}
Logger.info(TAG, `this.curBp = ${this.curBp}`);
}
isBreakpointLG = (mediaQueryResult) => {
if (mediaQueryResult.matches) {
this.curBp = 'lg';
AppStorage.SetOrCreate('curBp', this.curBp);
}
Logger.info(TAG, `this.curBp = ${this.curBp}`);
}
```
通过GridRow和GridCol组件,根据不同宽度类型的设备,设置不同的栅格间距和列数,保证不同设备上各个模块的布局一致性。
1.手机
2.平板
3.智慧屏
五
分布式技术
1. 设备发现
使用@ohos.distributedDeviceManager接口,首先通过createDeviceManager创建设备管理器实例,然后通过getTrustedDeviceListSync同步获取所有可信设备列表;接口调用参考IndexTitleBar,使用showDiainfo进行弹窗显示,registerDeviceListCallback注册监听回调,发现设备或查找到已认证设备会弹窗显示,使用selectDevice()连接选择的设备,如果是已新人设备调用startAbility远程拉取设备应用,为信任设备则调用authenticateDevice接口进行PIN码认证在拉取应用。
2. 设备连接与拉取
首先通过on方法注册设备状态,例如发现设备,设备连接失败,然后通过startDeviceDiscovery方法发现周边设备,然后选择连接设备,再用startAbility启动连接设备的应用。
3. 分布式关系型数据库实现数据同步
在数据持久化方面,使用分布式关系型数据进行数据持久化管理,将农业数据存储和管理分布在多个节点上的数据库系统,实现多设备数据的同步。在智慧农业应用中,选择使用分布式关系型数据库来存储和管理农业方案、设备信息、参数和事件历史数据等。
通过@ohos.data.relationalStore提供的接口高效实现数据库的创建以及增删改查,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。分布式数据同步能力通过RdbStore.on注册数据库观察者,使用RdbStore.obtainDistributedTableName根据本地表名获取指定远程设备的分布式表名,数据发生变动时通过RdbStore.sync同步数据,不需要用时删除指定观察者使用RdbStore.off。
六
未来畅想
在这个万物互联的时代,鸿蒙系统的加入,利用其强大的分布式能力和系统特性,不仅解决了不同农业设备之间的互联互通问题,从底层操作系统源头上也保证了数据的安全可靠,并且能为用户提供无缝的全场景体验,相信随着越来越多的开发者加入到鸿蒙生态,能为智慧农业带来更多新的可能性,真正构建全场景,全连接,全智能的智能化农业系统,为我国实现农业现代化的伟大目标保驾护航。