基于鸿蒙运维的园区智慧微电网实战

系统 OpenHarmony
随着时代的进步,电子信息技术不断发展,互联网行业也需要不断前进。而鸿蒙作为一款新兴的操作系统,注重分布式能力,使得设备之间能够更好地协同工作,共享资源,提升整体系统性能。

我们项目主要是为了实现对环境温度、湿度、风力等数据的实时获取,并且可以实时获取硬件端测试的发电量,电池电压、电流,等数据实时监控电池的健康状况。作为一个刚入门的开发者,在鸿蒙开发的过程中确实遇到了很多困难。这些困难主要是在于如何将一些后端的数据和前端APP联系起来,让他查看起来美观清晰,简单明了。我们根据官方提供的全面资料,自己不断的尝试与调整,最终也是有了初步的结果。

运行环境

DevEco Studio版本:DevEco Studio 3.1.1 Release及以上版本。

鸿蒙 SDK版本:API 9, 鸿蒙 3.2 Release。

前期准备

软件安装与环境搭建

这一部分的内容在官方资料文档里有着十分清晰的讲解,并且鸿蒙本身的安装难度并不高,所以这里就不多说了,如果有问题可以联系我们。

创建项目

创建新项目时,点击File按钮,在弹出的列表里点击New,然后创建New Project。输入自己的项目名和文件存放位置,本项目采用的ArkTS语言进行开发。

图2.2 项目创建

真机签名

为了进行程序在DAYU200上的调试与开发,首先需要进行真机签名,可以通过DevEco Studio来进行自动签名

图2.3 真机签名

主要功能

登录

我们打开应用之后首先就是登录界面,能够实现账号登陆、账号注册及其他登录方式。登录界面主要由文本、文本框、按钮以及一些为了美观的图片组成。

Image($r("app.media.tupian"))
      .width(240)
      .height(160)  
    Text('登陆界面')
      .fontSize(40)
      .fontweight(Fontweight.Medium)
      .height(80)
    Text('登陆账号以使用更多服务')
      .fontSize(18)
      .fontWeight(FontWeight.Regular)
      .height(50)
    TextInput({placeholder:'账号'})
      .maxLength(11)
      .type(InputType.Number)
      .height(50)
    TextInput({placeholder:'密码'})
      .maxLength(11)
      .type(InputType.Password)
      .height(50)
      .onChange((value: string)=>{
        this.account = value;
      })

在忘记密码时可以选用方便的短信登录或者重置密码,没有账号也可以选择注册账号。

Row() {
      Text('短信验证码登陆')
        .fontSize(15).fontColor(0x317aff)
      Text('忘记密码')
        .fontSize(15).fontColor(0x317aff)
    }.width('100%').justifyContent(FlexAlign.SpaceBetween)
    Text('Circle button').fontSize(9).fontColor(0xFFFFFF)
    Button('登陆',{type: ButtonType.Capsule}).height(50).width(100).fontSize(20)
      .onClick(() =>{router.push({ url:"pages/tabsdemo" })})
    Button('注册账号',{type: ButtonType.Capsule}).height(50).width(100)
      .backgroundColor(0xFFFFFF).fontColor(0x317aff)

或者是使用其他的方式去进行登录。

Text('其他登陆方式').fontColor(0xCCCCCC).height(50)
    Row() {
      Button('微信',{type: ButtonType.Circle})
        .backgroundColor(0x00CC33).height(70)
      Button('QQ',{type: ButtonType.Circle})
        .backgroundColor(0x33CCFF).height(70)
      Button('邮箱',{type: ButtonType.Circle})
        .backgroundColor(0xFFFF33).height(70).fontColor(0x317aff)
    }.width('100%').justifyContent(FlexAlign.SpaceEvenly)

图3.1 登录界面展示

发电设备全生命周期监测

 这部分代码我们通过Text、Image等基本小组件保证整体界面的美观性,并且通过Onclick等组件触发,使用户可以选择自己想要具体查看的数据。

Column({space:10}){
      Image($r("app.media.tupian")).width(300).height(200)}

显示天气的文字与图片,并且让其点击之后可以跳转到相关界面。

Row(){
        Image('/common/images/image1/tianqi.png').height(60).width(60)
        Text(' 当前天气').fontSize(35).width('70%')
          .onClick(() =>{router.push({ url:"pages/shebei/tianqi1" })})
        Image('/common/images/yjt.png').height(60).width(60)
          .onClick(() =>{router.push({ url:"pages/shebei/tianqi1" })})
      }.backgroundColor('#CDFFCD').width('100%')

显示风力发电的文字与图片,并且让其点击之后可以跳转到相关界面。

Row(){
        Image('/common/images/image1/fengli.png').height(60).width(60)
        Text(' 风力发电').fontSize(35).width('70%')
          .onClick(() =>{router.push({ url:"pages/shebei/fengli" })})
        Image('/common/images/yjt.png').height(60).width(60)
          .onClick(() =>{router.push({ url:"pages/shebei/fengli" })})
      }.backgroundColor('#CDFFCD').width('100%')

显示太阳能发电的文字与图片,并且让其点击之后可以跳转到相关界面。

Row(){
        Image('/common/images/image1/tyn.png').height(60).width(60)
        Text(' 太阳能').fontSize(35).width('70%')
          .onClick(() =>{router.push({ url:"pages/shebei/tyn" })})
        Image('/common/images/yjt.png').height(60).width(60)
          .onClick(() =>{router.push({ url:"pages/shebei/tyn" })})
      }.backgroundColor('#CDFFCD').width('100%')

显示环境温度的文字与图片,并且让其点击之后可以跳转到相关界面。

Row(){
        Image('/common/images/image1/wendu.png').height(60).width(60)
        Text(' 温度').fontSize(35).width('70%')
          .onClick(() =>{router.push({ url:"pages/shebei/wendu" })})
        Image('/common/images/yjt.png').height(60).width(60)
          .onClick(() =>{router.push({ url:"pages/shebei/wendu" })})
      }.backgroundColor('#CDFFCD').width('100%')

显示环境温度的文字与图片,并且让其点击之后可以跳转到相关界面。

Row(){
        Image('/common/images/image1/shidu.png').height(60).width(60)
        Text(' 湿度').fontSize(35).width('70%')
          .onClick(() =>{router.push({ url:"pages/shebei/shidu" })})
        Image('/common/images/yjt.png').height(60).width(60)
          .onClick(() =>{router.push({ url:"pages/shebei/shidu" })})
      }.backgroundColor('#CDFFCD').width('100%')

图3.2 设备界面展示

电量预测

关于整体界面的代码和上面发电设备的代码形式基本一致,就不在重复展示了,只展示一下这个界面的效果,以及点击进去之后的理想效果。

图3.3.1电池的主要界面

图3.3.2 电流电压界面展示

图3.3.3 电池温度界面展示

主体界面展示

我们通过toolbar和tabs组件,使其可够实现页面跳转,滑动翻页,保证三个主要页面的正常使用与区分。这一块由于有些复杂,导致一些代码有些长,看起来有点凌乱。

struct Tabsdemo {
      @State currentIndex: number = 0
      @Builder TabBuilder0(index: number){
        Column(){
          Image(this.currentIndex === index?'/common/images/shebei1.png':'/common/images/shebei.png')
            .width(40).height(40)
          Text('设备管理').fontColor(this.currentIndex === index ? '#4FB6C8': '#838383')
          .fontSize(15)
        }.width('100%')
      }
      @Builder TabBuilder1(index: number){
        Column(){
          Image(this.currentIndex === index?'/common/images/dianchi1.png':'/common/images/dianchi.png')
            .width(40).height(40)
          Text('电池监测').fontColor(this.currentIndex === index ? '#4FB6C8':'#838383')
          .fontSize(15)
        }.width('100%')
      }
      @Builder TabBuilder2(index: number){
        Column(){
          Image(this.currentIndex===index?'/common/images/wode1.png':'/common/images/wode.png')
            .width(55).height(55)
        }.width('100%')
      }
    }

在我们前面的代码也有些展示,我们通过onclick组件与router.push组合使用,通过点按实现具体界面的切换,例如:

Text(' 当前天气').fontSize(35).width('70%')
      .onClick(() =>{router.push({ url:"pages/shebei/tianqi1" })})

我们界面的切换基本就是采用这种形式。

图3.4 界面切换展示

展望

随着时代的进步,电子信息技术不断发展,互联网行业也需要不断前进。而鸿蒙作为一款新兴的操作系统,注重分布式能力,使得设备之间能够更好地协同工作,共享资源,提升整体系统性能。这些为开发者提供了更灵活的方式,使得开发者越来越多的开始接触鸿蒙操作系统,鸿蒙也将成为未来科技市场的重要组成部分。

在这个过程中我们也将要不断的学习进步,向外交流以适应现在这个充满创新的时代。

责任编辑:姜华 来源: 鸿蒙开发者社区
相关推荐

2014-08-26 11:08:50

OpenStack运维

2016-04-06 10:02:23

手机微博运维监控

2017-05-09 20:19:23

力维云云服务云计算

2022-08-31 14:53:36

数字孪生智慧微网建设

2015-06-24 10:42:19

云计算运维自动化运维ANSIBLE

2019-05-30 11:25:42

智慧运维

2014-08-19 09:10:45

IT运维

2010-11-11 11:32:36

IT管理北塔软件电网信息化

2009-10-19 15:46:14

ITIL摩卡

2011-08-03 09:52:19

IT运维管理ITIL

2016-11-18 09:50:18

华为智慧城市

2013-03-13 15:33:03

用友

2016-10-26 16:37:35

运维云智慧

2019-03-15 10:13:10

运维云计算运营

2016-09-13 10:35:16

微信Q运维CMDB

2013-04-16 14:55:21

自动化运维Puppet实战

2014-07-17 16:53:12

2015-10-08 10:55:23

云服务自动化运维 ANSIBLE
点赞
收藏

51CTO技术栈公众号