Pidbid / laf_air_conditioning_companion

This is a project about laf air conditioning companion and how to ust laf,mqtt,IR to control Air Conditioner

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

一 阅前须知

二 阅前基础问答

2.1 这篇文章最终要实现什么

最终要实现一个最基础的空调伴侣,它有以下几种功能:

  • 1 红外控制空调的功能
  • 2 检测室内温湿度的功能
  • 3 将检测到的温湿度数据上传Laf的功能

2.2 本文所用到的硬件都有什么

  • 1 ESP32C3 成本 10元
  • 2 红外发射模块 成本2元
  • 3 红外接收模块 成本3元
  • 4 AHT10温湿度传感器 成本7元
  • 5 杜邦线若干

2.3 为什么控制端不直连MQTTBroker 控制设备端,要加一个Laf?是多此一举吗?

诚然,直连有着操作便捷,流程简单,复杂度低的优势,但我最终决定不使用MQTT 直连的原因如下

  • 1 MQTT协议在小程序、UNIAPP中没有很好的支持,会加大控制端的开发难度
  • 2 直连存在安全隐患,即使可以设置账号与密码进行验证,我并不希望控制密码出现在前端
  • 3 Laf中转更加灵活,它可以将控制指令转化后发给受控端,并且在接入AI之后成为真正的『智能空调伴侣』

三 实现过程的分析与基础思路

3.1 简易思路分析

首先,在本次实现过程中分为三个部分,分别为 Laf云端、设备端、控制端。其中Laf云端负责将数据存库,以及对控制端的数据的转发(Http-->Mqtt),设备端进行空调的控制以及温湿度数据的上传,控制端负责直观的呈现控制过程以及效果。设备端共需完成两个操作,首先为红外遥控器编码录入存储,其次为上述控制以及数据上传。

3.2 简易流程图

流程图

四 设备端操作

设备端的运行环境是Micropython,如何烧录以及如何上传程序不在本文的讨论范围。设备端主要分为两部分的操作,一部分是红外编码的录制,另一部分是红外发射以及数据上传流程。这里顺便说一句,带有红外发射的手机可以通过APP发送红外指令控制空调,这种APP内也是有厂家的数据库,但是我们肯定是获取不到的,因此我们需要自行录制红外编码。如果用若干年前的语言风格来形容,那么这个过程就是机器『学习』的过程。设备端主要代码如下:

4.1 红外编码录制

Micropython的红外库还是不少的,大部分都有『录制』功能,首先引入库文件,接着定义RX与TX的IO之后,初始化红外功能,在进行录制。 如设备端总代码图中所示,ir 即为红外初始化,在录制过程中 将

if __name__ == '__main__':
    .......

修改为

if __name__ == '__main__':
    ir.record_cmd()

结束后,在设备根目录会生成一个ButtonCMD.txt的文本文件,该文件内存放着录入的红外数据。当然,您同样可以将红外录制的数据通过MQTT传至Laf数据库进行存储(TODO)。

4.2 AHT10 温湿度检测

在了解了如何录入红外数据之后,了解AHT10温湿度如何检测就会变得更简单,AHT10模块有四个IO,其中除VCC,GND两个外,剩余SCL与SDA的I2C通信IO。在设备端代码图中可以看到分别将其定义在了ESP32C3 的 6、7两个IO中。获取温湿度数据只需要两个命令即可:

aht = AHT10(0x38,6,7)
temp = aht.temperature()
humi = aht.humidity()

4.3 数据上传以及受控

我们在设备端代码中可以看到数据通过MQTT上传,每5S上传一次(5S一次的频率已经相当快了,一般室内的采样频率可以在一分钟左右)

五 Laf云端

Laf云端起着一个接收、存储数据,整理数据,以及将受控命令转发至设备的功能。(有小伙伴可能会想为什么不使用设备直接MQTT发送数据控制设备?)

5.1 MQTT的初始化以及如何接收数据

可以参加:【Laf 物联网探索】Laf 使用MQTT 的正确姿势以及基础流程

5.2 Laf 编写受控接口并将命令下发


从代码中可以看出,我们简单的定义了一个端口,它会接收控制端发来的命令,接收的格式为

{
    topic:"",//受控端订阅的TOPIC
    content:"",//发送的指令
    qos:0,// MQTT的QOS
    retain:false //MQTT的RETAIN
}

控制端的设计

控制端采用UNIAPP进行设计,有兼容多端的优点,目前简单的项目设计如下
目前仅设计了简简单单的功能,未来可能会回来填这个坑~

关于项目与我

About

This is a project about laf air conditioning companion and how to ust laf,mqtt,IR to control Air Conditioner

License:MIT License


Languages

Language:Vue 34.7%Language:TypeScript 20.5%Language:JavaScript 17.5%Language:CSS 15.2%Language:HTML 11.7%Language:Python 0.5%