[经验分享] 结合聚言模型训练和hi3861采集环境的AI空调应用 原创

数创院刘Sir 显示全部楼层 发表于 2024-8-27 14:50:14
适配到最新的bate5版本的API12工程
AI空调主要有以下4点功能:
1.基于hi3861使用温湿度传感器和烟雾浓度传感器对室内环境进行精准监测,通过TCP稳定安全的在手机应用上查看家里的环境情况
2.自己在ubuntu下搭建服务器通过公网映射过端口,应用可以随时随地的远程查看家里的环境情况
3.基于聚言投喂用户个人历史行为指定专属分析模型,智能分析的空调模式完全适应个人身体情况
4.应用界面动态的根据环境进行环境图标的变化提示,背景图片也结合温湿度两个数据变化为对应天气示意图

fakename.png    fakename.png
功能1环境监测开发:
说明:设备端环境采集案例网上案例很多这里不做讲解,设备端主要是把采集数据定时向TCP服务器发送即可,可以使用模拟数据。
ubuntu自己写TCP转发服务器的C语言代码运行后把设备端的数据进行转发,公网映射我这里使用的cpolar免费领的一个映射端口,这样应用端连接映射后的TCP端口和IP就可以实现远程的数据监听了。应用端因为考虑到大部分个人开发者都没有next真机,这里我使用的是DevEco Studio NEXT Developer Beta5 5.0.3.700的模拟器,因为只有公网才能被模拟器连接。
应用端功能1主要开发TCP客户端和数据解析
  1. tcp.bind(bindAddress, err => {
  2.       if (err) {
  3.         console.log('bind fail');
  4.         return;
  5.       }
  6.       console.log('bind success');
  7.     });
  8.     tcp.connect(tcpconnectoptions).then(() => {
  9.       this.connect = '设备已连接'
  10.       console.log('connect success')
  11.     }).catch((err:Error) => {
  12.       this.connect = '设备离线'
  13.       console.log('connect fail');
  14.     });
  15. tcp.on('message', value => {
  16.       console.log("on message")
  17.       let str = ""

  18.       for (let i: number = 0; i < value.message.byteLength; i++) {
  19.         let uint8Array = new Uint8Array(value.message)
  20.         let messages = uint8Array[i]
  21.         let message = String.fromCharCode(messages);
  22.         str += message;
  23.       }

  24.       console.log('on message message:'+ JSON.stringify(str));
  25.       console.log('message remoteInfo:'+ JSON.stringify(value.remoteInfo));
  26.       this.temp = JSON.parse(str).indoor;
  27.       this.hum = JSON.parse(str).humi;
  28.       this.gas = JSON.parse(str).gas;
复制代码
只做应用开发的伙伴可以使用网络模拟器发送模拟的环境数据,看看是否能成功被解析环境数据
fakename.png
功能2 AI分析模型开发
这里我使用的是聚言训练的模型,因为 我不是专业的模型训练师,百度这些的模型训练我看了一下操作挺麻烦的,动不动就要开通各种付费权限才能使用基础功能部署起来,聚言有免费的调用次数,然后训练的时候只需要自己丢文档去学习即可,教程如下:
进入聚言官网https://chatmax.net/org/,创建项目
fakename.png

将我们的个人历史操作行为整理成表格最好投喂给AI,只投喂这部分知识

fakename.png

然后问答风格训练,将我们提问的方式以json格式提交一些例子,给出类似答案的中文版本问题方便AI看懂问题,同理答案也给案例按照json格式回复,这样才能被软硬件提取数据。
fakename.png
然后我们可以在项目里看到自己项目的APIkey,应用端开发HTTP接口去调用封装这个AI模型
fakename.png
然后调用封装好的模型接口,发送温度给它,就会给出推测的空调温度和工作模式,因为是json格式的,我们可以直接通过json解析函数提前温度和工作模式
  1. this.AI.request(JSON.stringify({
  2.               "indoor": parseInt(this.temp)
  3.             }))
  4.             let intervalId = setInterval(()=>{
  5.               if(this.AI.text.length > 0){
  6.                 this.mode = JSON.parse(this.AI.text).mode
  7.                 this.set = JSON.parse(this.AI.text).set
  8.                 clearInterval(intervalId)
  9.               }
  10.             },100)
复制代码
注意因为免费的问答次数只有300次,所以别收到环境数据就去推测,避免浪费次数,我加了个按钮,只有点击推测按钮才去调用推理模型。这个模型有个好处就是现在自带常用大模型,问问题的只要不按照json格式问,就可以正常聊天使用,也就意味着推理的数据更加智能。
功能3 动态环境背景和图标
我的温湿度和有毒气体浓度的自动变化图标去是阿里巴巴图标库里配套下载的,这样能保证图标看起来只是变色,不会变形。而天气背景图,现在的AI绘图都能画的比较符合要求且好看形象。通过条件判断来改变背景图的图片,这个功能逻辑比较简单,就看个人的UI设计能力了

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部