用手机控制空调
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用手机控制空调相关的知识,希望对你有一定的参考价值。
手机使用红外技术,通过智能遥控 APP 与家电连接,仅需一部手机,即可方便遥控各类家电(如电视、空调、机顶盒、DVD、相机、投影仪、网络盒子)。如果您使用的是华为手机,以华为P40 Pro手机为例:
一、添加和使用遥控器
1、进入实用工具 > 智能遥控 > 添加 ,选择遥控器类型(电视、空调、机顶盒、相机、网络盒子、DVD、投影仪)和品牌。
2、将手机顶部的红外线发射孔对准家电,根据提示添加要遥控的家电并保存。
3、添加成功后,点击开机图标,即可使用。
二、开启或关闭遥控器按键音
进入智能遥控>四点图标>设置,关闭或开启按键声音和振动提示。 参考技术A 现在的智能手机上有万能摇控,可以设置摇控家里的各种电器。 参考技术B 一般很多手机自带有遥控器,只需要用自带的遥控器进入选择你的空调型号,就可以使用空调了。 参考技术C 我家有三个单体空调,型号比较老,每次要在各自的控制面板上调节开关和温度,也没有定时控温功能。如果想实现远程操控(比如在手机上),最简单的方案就是 Nest Thermostat。然而抠门如我一看每个售价$169,三个要五百多美元,便萌生自己改装的念头。
可行吗?根据电路常识推测,空调各部分工作应该是由相应 IO(Input / Output)的高低电位触发,那么只要找到控制面板所连结的 IO,就可以取而代之。换个角度,即使空调结构是黑盒子,既然 Nest Thermostat 能用于大部分空调型号,这说明:1,空调的 API(操控界面)是高度统一的;2,只要能模拟 Nest 的行为,就可以实现从空调 API 到 Nest API 的转换;3,网上一定有许多通用的 DIY 开源项目。
在这个课题上,我花了一半时间找合适的开源项目。你需要综合评价:对方解决的问题是否和你一致,交互界面你是否喜欢,配件是否经济实惠,软硬件系统是否强健,是否有后续开放性,可否融合到更广的智能家居平台等等。由于是第一次改装家电,后两个因素暂时不考虑。因为我手头有多余的树莓派 Zero,在定制的 Linux 系统下可以轻松安装 Web App,通过 ssh 编程也极为简便,于是就以 thermostat + raspberry pi + web 为关键词搜索,最终选中了这个方案:PyStat。
七夕女神来我家吹空调发现遥控器找不见了!快用Yolov5训练个目标识别模型并调用手机摄像头找找!
?女神说要来我家吹空调?
我揉了揉惺忪的双眼,反复确认了多遍,嗯,没有看错!
为了给女神一个好的印象,我打算提前打开空调让室内降到一个舒适的温度;可猛然间发现空调遥控器找不见了!
这可怎么办?我急中生智:可以用 Yolov5 训练个空调遥控器目标识别模型并调用手机摄像头找找看嘛!
事不宜迟,开整!
目录
1 万事大吉
1.1 数据集准备
训练一个模型, 首先要准备一定量的数据集,如果一张一张从网上下载的话太费时间,没等收集完照片女神早就来了,那时还没找到空调遥控器的话不太好,于是我打算用 python 爬虫技术来快速完成这一步操作!
读者若有对爬虫的学习需求可以点击下方链接参考我的 python 爬虫专栏:
Python 网络数据爬取及分析「从入门到精通」
1.1.1 基于requests库的百度图片爬取
我决定就对百度图片库中的 “空调遥控器” 相关图片进行爬取,今天是七夕,就爬 520 张吧。
百度图片库 “空调遥控器” 相关图片爬取代码如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import re
import requests
word = "空调遥控器"
url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&pn='
numPicture = 520
file = 'E:/images'
t, num = 0, 0
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'
}
response = requests.Session()
response.headers = headers
while t <= numPicture:
url = url + str(t)
html = response.get(url, timeout=10, allow_redirects=False)
pic_urls = re.findall('"objURL":"(.*?)",', html.text, re.S)
for pic_url in pic_urls:
print('Download 第' + str(num) + '张图片,图片 url:' + str(pic_url))
string = file + r'\\\\' + word + '+' + str(num) + '.jpg'
local_path = open(string, 'wb')
photo = requests.get(pic_url, timeout=7)
local_path.write(photo.content)
local_path.close()
num += 1
t = t + 52
爬取结果示例:
1.1.2 重命名
为了便于下一步框选数据集标签操作,吻合 yolov5 对于数据集图片及对应标签名字必须一致的特点,以及避免因出现中文而报错的隐患,我打算在标注数据集图片之前先进行一下重命名操作:直接按顺序依次重命名为 1.jpg、2.jpg、3.jpg ……
重命名代码如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
folderpath = r'E:\\images'
picsPath = os.listdir(folderpath)
i = 1
for picPath in picsPath:
pass_name = os.path.join(folderpath, picPath)
new_name = os.path.join(folderpath + '/' + str(i) + '.jpg')
os.rename(pass_name, new_name)
print("旧路径:", pass_name," ---> 重命名后路径:", new_name)
i += 1
运行结果展示:
至此,数据集准备工作就告一段落啦!
1.2 标注数据集
关于如何制作和训练自己的数据集,我之前也写过相应文章,读者可点击下方链接查看:
GitHub YOLOv5 开源代码项目系列讲解(二)------制作和训练自己的数据集
这一步我按照 Github Yolov5 官网源码指示,选用下面链接网站进行线上数据标注:https://www.makesense.ai/
值得注意的是,yolov5 要求图片与对应标签名称必须一致,且要求必须分别放置到 images 和labels 文件夹中。
而这部分要求,这个线上标注数据的网站就可以帮我们制作好。
因为我要做的是 “空调遥控器” 的目标检测,所以仅设置一个标签:"remote"
注:若设置两个或多个标签,则依次为第 “0" 个"、第 “1” 个,顺序很重要喔。
接再来就是漫长而枯燥的框选目标的过程……
520 张图片终于标完啦,伸个懒腰,把它们对应目标的标签 txt 文件。
至此,枯燥乏味的数据标注工作也结束啦。
1.3 训练模型
在 yolov5-v5.0 目录下新建 mydata 文件夹,并在其中新建 images 文件夹和 labels 文件夹,随后在 images 文件夹和 labels 文件夹下新建 train 文件夹和 test 文件夹。将上几步得到的 label 文件和 image 文件分别传入对应位置。
接下来在开源代码 data 目录下新建 mydata.yaml 文件并键入
值得注意的是,在 train.py 文件的 add_argument 方法中找到 “--data”,并将其设置为上一步新建的 mydata.yaml 文件目录;强烈建议将 “--workers” 值设置为 “0”,避免因多线程问题而报错。
注:train.py 文件的参数作用可点击下面链接参考
GitHub YOLOv5 开源代码项目系列讲解(四)------训练相关参数解释
正在欢天喜地打算庆祝工作做完大半之时,突然想到官网给出的训练模型已经提供了 80 种物体识别实例, 我记得其中有个叫 “remote” 的物体可识别,应该就是遥控器!
于是我果断点了暂停,还好这一想法迸发得早,不然在女神来之前恐怕都训练不完呢!
2 别高兴得太早
2.1 调用人家训练好的模型
一拍大腿,都怪我太冲动,仔细想想就不用干那么多无用功了。
接受现实,赶紧数一数 “remote” 在第几类吧,并注意一些重要配置参数待会要进行键入。
注:datect.py 文件的参数作用可点击下面链接参考
GitHub YOLOv5 开源代码项目系列讲解(三)------预测相关参数解释
3 大功告成
3.1 调用手机摄像头找遥控器
首先打开手机上的 “IP摄像头” APP。
点击 “打开IP摄像头服务器”。
勾选 “RTSP” 并点击 “分享”。
记下局域网地址
在 GitHub 上就已经提供了连接手机实时检测的代码示例。
打开 PyCharm,在右上角点击 “Edit Configuration”,填入 “Parameters” 值。
- --view-img:用于在电脑上实时显示目标检测画面。
- --source:用于接入手机上的局域网地址。
--source http://admin:admin@后面紧接局域网地址
如:--source http://admin:admin@192.***.***.***:****
3.2 运行结果
啊这……这结果看得我目瞪口呆:空调遥控器这不在电脑键盘上呢么;可能是想到女神要来我家我激动地脑袋嗡嗡的叭,不然怎么会 “骑着毛驴找毛驴” 呢!
就在这时,门口传来了温柔而轻盈敲门声 ……
版权声明:本文为CSDN博主「荣仔!最靓的仔!」的原创文章,遵循 CC 4.0 BY-SA 版权协议。
转载请在醒目位置附上原文出处链接及本声明。
CSDN博主「荣仔!最靓的仔!」的其他原创专栏链接:
《机器学习》学习笔记专栏:https://blog.csdn.net/it_charge/category_9920949.html
《数字图像处理》学习笔记专栏:https://blog.csdn.net/it_charge/category_9899861.html
《Python网络数据爬取及分析》专栏:https://blog.csdn.net/it_charge/category_10097766.html
《GitHub YOLOv5 开源代码项目系列讲解》专栏:https://blog.csdn.net/it_charge/category_11244228.html
《「深度学习一遍过」必修篇》专栏:https://blog.csdn.net/it_charge/category_11251478.html
《23种设计模式在王者荣耀中的应用》专栏:https://blog.csdn.net/it_charge/category_9842143.html
感谢阅读 ! 感谢支持 ! 感谢关注 !
欢迎大家交流评论,一起学习!
年七夕节于中国大陆 • 重庆
END
以上是关于用手机控制空调的主要内容,如果未能解决你的问题,请参考以下文章