【IOT】OrangePi+HomeAssistant+Yolov5智能家居融合

前言

本文将以OrangePi AIpro为基础,在此基础构建HomeAssistant、YOLO目标检测实现智能家居更加灵活智能的场景实现。

表头表头
设备OrangePi AIpro(8T)
系统版本Ubuntu 22.04.4 LTS
CPU4核64位处理器+ AI处理器
AI算力AI算力 8TOPS算力
接口HDMI2、GPIO接口、Type-C、M.2插槽、TF插槽、千兆网口、USB3.02、USB Type-C 3.0、Micro USB、MIPI摄像头*2、MIPI屏
系统内存8GB
场景范围AI教学实训、AI算法验证、智能小车、机械臂、边缘计算、无人机、人工智能、云计算、AR/VR、智能安防、智能家居、智能交通等领域。

● 更多硬件参数:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/parameter/Orange-Pi-AIpro.html

产品外观

1.产品外观

img

1.主板上装有一个大型的铝制散热器,顶部配有一个黑色的风扇,用于散热,确保设备在运行时保持低温。
2.侧面有分布HDMI接口、USB接口、RJ45网口等接口

2.产品详细图

img

社区及生态
● 官方网站:香橙派(Orange Pi)-Orange Pi官网-香橙派开发板,开源硬件,开源软件,开源芯片,电脑键盘
● 官方社区:Orange Pi 论坛
● 昇腾社区:开发者主页-昇腾社区
● 学习资源:香橙派AIpro学习资源一站式导航

智能家居实现

img

实现思路

● HomeAssistant通过插件接入智能家居中的设备
● NodeRed获取(监听)智能家居中的设备状态根据配置的流程进行执行判断
● 根据设备触发状态、获取OrangePi摄像头的图像信息
● 将由NodeRed发起接口调用YOLO获取识别的结果
● NodeRed根据识别结果进行不同的判断,调用HomeAssistant进行后续的判断

落地场景

家中小孩打开电视后只能观看半小时,半小时后自动关机

● 当智能家居中人在传感器判断有人存在时
● NodeRed获取到传感器的人在状态触发后续流程
● 调用摄像头获取区域内人像信息
● 将图像信息通过接口调用YOLO进行判断是小孩子还是成年人
● 根据YOLO识别的结果,如果结果是小孩子的可能性较大
● 执行延时30分钟,调用HomeAssistant电视实体进行关机

技术实现

基础OrangePI

通电开机

● 机器插入电源后、推荐使用网线接入路由器,可以直接查询到设备的IP地址

img

● 使用SSH工具进行连接

账号:root
密码: Mind@123

img


更新软件包
sudo apt update
sudo apt upgrade
Docker安装

● 移除历史Docker

sudo apt-get remove docker docker-engine docker.io containerd runc

● 安装Docker

sudo apt-get remove docker docker-engine docker.io containerd runc
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
apt-get install docker-ce docker-ce-cli containerd.io

● 查看Docker版本

img

测试Docker

● 拉取Nginx镜像

img

● 启动

img

● 测试

img

HomeAssistant

Home Assistant是一个开源的家庭自动化平台,旨在让用户更方便地控制和管理家中的智能设备。它可以运行在多种硬件上,并支持广泛的设备和服务集成,允许用户创建个性化的自动化方案。
简单理解就是是一个可以将多个品牌智能家居(大佬开发插件)集成到一个系统中进行控制配置联动联动的智能系统,且高度可定制化的支持。

Docker启动HomeAssistant容器
docker run -d \
-p 8123:8123 \
--name homeassistant \
-h homeassistant \
--net home_assistant_net \
-v /opt/homeassistant/config:/config \
-v /opt/homeassistant/data:/data \
-v /opt/homeassistant/log:/log \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Shanghai \
ghcr.io/home-assistant/home-assistant:stable
homeassistant/homeassistant:latest

img

● 容器启动后将容器内的8123端口映射到设备的8123,所以访问设备IP+8123端口即可打开系统页面

img

HomeAssistant系统初始化

● 系统初始化是需要设置账号密码、选择所属位置等信息

img

img

安装HACS

HACS 即 Home Assistant社区商店(Home Assistant Community Store),提供了一个强大的用户界面来处理所有自定义需求的下载。通过HACS可安装第三方集成和Hass主题。
● 根据HACS网站教程可以执行如下命令进行安装

wget -O - https://get.hacs.xyz | bash -
安装Xiaomi Miot Auto

由于我家是米家设备比较多,所以选择可以操作米家设备的插件
MIoT-Spec 是小米IoT平台根据硬件产品的联网方式、产品功能的特点、用户使用场景的特征和用户对硬件产品使用体验的要求,设计的描述硬件产品功能定义的标准规范。
本插件利用了miot协议的规范,可将小米设备自动接入HomeAssistant,目前已支持大部分小米米家智能设备。且该插件支持HA后台界面集成,无需配置yaml即可轻松将小米设备接入HA。
● 在HACS中搜索Xiaomi Miot Auto,选择安装后重启服务即可。

img

● 第一次使用需要登录Github授权,正常登录输入验证码授权即可
● 授权完成后输入小米账号和密码,HA即可自动将该小米账号下的设备自动同步下来

img

NodeRed

Node-RED是一个基于流的开发工具,主要用于视觉编程和物联网(IoT)集成。它由IBM在2013年首次发布,目前作为开源项目在广泛的社区中得到维护和发展。Node-RED特别适合快速创建原型和集成不同的硬件设备、API和在线服务。
轻量级运行时基于 Node.js 构建,充分利用了其事件驱动的非阻塞模型。这使得它非常适合在低成本硬件的网络边缘以及云端运行。

Docker启动NodeRed
docker run -u root:node-red -v /home/node_red:/data --privileged=true -p 1881:1880 --name NodeRed -d nodered/node-red --restart=always

● 访问设备IP+1881端口进入NodeRed界面

img

安装插件node-red-contrib-home-assistant-websocket

开源的插件,专为 Node-RED 设计,旨在让你能够轻松地通过 WebSocket 协议与 Home Assistant 智能家居平台进行交互。借助这个项目,你可以创建自定义的工作流,自动化你的家庭环境,实现对各种智能设备的灵活控制。
● 右上角菜单功能->节点管理->点击安装->输入node-red-contrib-home-assistant-websocket,下载安装即可。
● 安装完成后右侧出现多个HomeAssistant的模块

img

配置HomeAssistant服务

● 拖入任意一HomeAssistant模块后,可以在节点中配置URL和访问令牌
● 访问令牌在HomeAssistant中获取

img

配置触发流程

● 当人体存在触发时原定是发起HTTP请求,因技术问题改为执行命令
● 执行命令延时5秒钟后读取文件,延时是为了等待识别结果
● 执行命令后将执行后的结果放入指定文件当中
● 使用函数来处理分隔字符串
● 根据分隔后识别的结果进行判断
● 如果为否则继续执行命令进行识别
● 如果为是则延时30分钟后关闭插座

img

YOLOv5

YOLOv5(You Only Look Once version 5)是一个流行的实时目标检测模型,它在计算机视觉领域被广泛应用于各种任务,如物体检测、图像分割和跟踪。YOLOv5由Ultralytics开发,继承了YOLO(You Only Look Once)系列模型的快速和高效特点,同时在模型性能和易用性方面进行了多项改进。
● 得益于官方示例的完整,可以直接借鉴官方平台基于YOLOv5的物体检测

配置环境变量
# 配置程序编译依赖的头文件与库文件路径
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest 
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
安装CNAA

参考官方安装文档,要求7.0及以上社区版本。文档

安装Ffmpeg
apt-get install ffmpeg libavcodec-dev libswscale-dev libavdevice-dev

img

获取ACLLite仓库,参考文档
# 拉取ACLLite仓库,并进入目录
git clone https://gitee.com/ascend/ACLLite.git
cd ACLLite


# 设置环境变量,其中DDK_PATH中/usr/local请替换为实际CANN包的安装路径

export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub
# 安装,编译过程中会将库文件安装到/lib目录下,所以会有sudo命令,需要输入密码

bash build_so.sh

img

样例下载
cd ${HOME}     
git clone https://gitee.com/ascend/EdgeAndRobotics.git

# 切换到样例目录
cd EdgeAndRobotics/Samples/YOLOV5USBCamera

img

● 准备测试样例视频

cd data
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/test.mp4 --no-check-certificate

● 模型转换
● 获取PyTorch框架的Yolov5模型(*.onnx),并转换为昇腾AI处理器能识别的模型(*.om)
● 配置环境变量

export TE_PARALLEL_COMPILER=1
export MAX_COMPILE_CORE_NUMBER=1

● 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行

cd ../model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/yolov5s.onnx --no-check-certificate
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/yolov5s/aipp.cfg --no-check-certificate
atc --model=yolov5s.onnx --framework=5 --output=yolov5s --input_shape="images:1,3,640,640"  --soc_version=Ascend310B4  --insert_op_conf=aipp.cfg

--model:Yolov5网络的模型文件的路径。
--framework:原始框架类型。5表示ONNX。
--output:yolov5s.om模型文件的路径。请注意,记录保存该om模型文件的路径,后续开发应用时需要使用。
--input_shape:模型输入数据的shape。
--soc_version:昇腾AI处理器的版本。

img

● 编译样例源码

cd ../scripts 
bash sample_build.sh

img

● 由于购买的摄像头不支持,已换货,在此演示执行进入Samples/YOLOV5MultiInput进行本地文件的识别
● 同样是执行(测试样例视频)(编译样例源码)
● 进行识别测试

# 在直连电脑场景,执行以下脚本运行样例。此时会以结果打屏的形式呈现推理效果
bash sample_run.sh stdout

# 在HDMI连接屏幕场景,执行以下脚本运行样例。此时会以画面的形式呈现推理效果
bash sample_run.sh imshow
.```

![img](https://devpress.csdnimg.cn/5fa5de91c9b54931b1aaf091860c4b65.png "#left")

.```
### [扩展]ResNet50
基于图片的识别,可以减轻设备的压力,由识别视频改为识别视频中某帧的图片来实现。
提示信息中的top1-5表示图片置信度的前5种类别、index表示类别标识、value表示该分类的最大置信度,class表示所属类别

img

总结

⛳️ OrangePi总结

● 智能家居和OrangePi边缘计算可以相辅相成。智能家居物联网将大量的设备连接到了互联网上,可以很方便的操作,传统的依赖于云端识别和计算,而由OrangePi搭建的识别推演进行边缘计算则提供了一种有效的方式来处理和分析这些数据,使得智能家居系统能够更加智能、响应更加迅速。
● 最后的最后引用雷布斯的一句话:科技不再是高高在上,科技要服务于每一个人!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/662657.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

06.逻辑回归

文章目录 Generate Model优化边界为线性证明损失函数比较逻辑回归不能用均方误差Generative v.s. DiscriminativeMulti-class Classification逻辑回归的限制自己找线性变换 Generate Model 假设样本符合高斯分布 即找 μ \mu μ和 σ \sigma σ 优化 共用 Σ \Sigma Σ减少…

CSS学习笔记:vw、vh实现移动端适配

移动端适配 移动端即手机端,也称M端 移动端适配:同一套移动端页面在不同屏幕尺寸的手机上可以实现宽度和高度的自适应,也就是页面中元素的宽度和高度可以根据屏幕尺寸的变化等比缩放 之前我在一篇博客中介绍了rem实现移动端适配&#xff0…

这样写代码太优雅了吧

文章目录 优化案例初次优化再次优化看看Spring源码的处理 优化案例 假设一个场景, 开发代码时,需要对类中的方法进行遍历,判断有没有注解NotNull,暂时没有合适的工具类,需要自己手搓一个。 无须多想,分分钟…

CSS学习笔记:响应式布局的原理——媒体查询

什么是响应式布局? 在实际书写代码时,我们不会自己去手写媒体查询来实现响应式布局,我们一般会调用现成的代码库或使用现成的框架(但这些代码库或框架的底层原理是媒体查询,所以了解媒体查询也是很有必要的&#xff0…

应用弹窗优先级

背景 由于活动业务越来越多,积累的弹窗越来越多和杂乱,出现如下弹窗交互问题: 弹窗无限重叠,影响操作 弹出顺序无优先级,重要弹窗被隐藏 原因相信大家都一样,产品是一次次迭代的,也可能是不…

ozon卖家精灵,ozon卖家怎么使用

在跨境电商的浪潮中,OZON作为俄罗斯领先的电商平台,吸引了众多卖家争相入驻。然而,面对日益激烈的市场竞争,如何提升店铺的运营效果,成为卖家们迫切需要解决的问题。而OZON卖家精灵作为一款专为OZON卖家打造的辅助工具…

Lua的几个特殊用法

:/.的区别 详细可以参考https://zhuanlan.zhihu.com/p/651619116。最重要的不同就是传递默认参数self。 通过.调用函数,传递self实例 通过 : 调用函数,传递self (不需要显示的传递self参数,默认就会传递,但…

ROS | C++和python实现发布结点和订阅结点

发布者结点: 代码实现: python: C: C和Python发布结点的差异: python: 发布结点pub 大管家rospy调用publisher函数发布话题 (话题,类型,话题长度) C: 先定义一个大管家:NodeHandle 然后大管家发布话题…

【C++】二维前缀和

1.题目 2.算法思路 和一维前缀和的方法类似&#xff0c;我们需要预处理一个求和矩阵&#xff0c;然后再求和。 下面是模板&#xff1a; 上面两张图片总结出来了两个公式&#xff0c;这是解决此类问题的关键。 3.代码 #include <iostream> using namespace std; #incl…

【车载开发系列】Vector工具链的安装

【车载开发系列】Vector工具链的安装 【车载开发系列】Vector工具链的安装 【车载开发系列】Vector工具链的安装一. VectorDriver二. DaVinci_Developer三. DaVinci Configurator 一. VectorDriver Vector Driver Setup是Vector产品链中重要的驱动软件,所有的硬件设备进行连接…

看看最新的B端登录界面,你是不是被潮流抛弃了?

毛玻璃风格&#xff08;Frosted Glass Style&#xff09;是新拟态设计风格中的一种分支&#xff0c;它灵感来源于现实世界中的毛玻璃材质。毛玻璃是一种通过在玻璃表面加工处理的方式&#xff0c;使其具有模糊、云翳和透明效果的特殊玻璃。 在设计中&#xff0c;毛玻璃风格通常…

PS:电子书App自动截图后合成一个PDF文档

说明&#xff1a;有的电子书App不能下载到本地&#xff0c;通过自动截图后合成一个PDF文档来解决&#xff01; 一、自动截图App 1.安装”免ROOT自动化助手“ 2.创建一个任务 3.编辑任务&#xff1a;根据电子书的操作顺序制定&#xff0c;400次就是书籍页数&#xff08;次数一…

备份服务器的安全风险以及如何通过TDE透明加密提升安全性

备份服务器的潜在安全风险主要包括以下几个方面&#xff1a; 1. 数据泄露风险&#xff1a; 备份数据可能包含敏感信息&#xff0c;如用户个人信息、商业机密等。如果备份数据未经适当保护&#xff0c;例如存储在不安全的位置或未加密&#xff0c;黑客或未授权的人员可能会获取…

React-基础样式控制

组件基础样式方案 React组件基础的样式控制有两种方式 1、行内样式&#xff08;不推荐&#xff09; 属性名是多个单词的需要使用驼峰写法 也可以把样式都提取到一个变量里&#xff0c;再赋值到style里 2、class类名控制 classnames优化类名控制 classnames是一个简单的JS库&…

【揭秘!在线ChatGPT神器,体验入口在此!】

&#x1f680;【揭秘&#xff01;在线ChatGPT神器&#xff0c;体验入口在此&#xff01;】&#x1f680; 前言 嘿&#xff0c;大家好&#xff01;今天我要和大家分享一些关于如何使用免费的ChatGPT的技巧。ChatGPT是一项令人兴奋的人工智能技术&#xff0c;它可以成为我们的好…

沃飞长空总部落地成都高新,为蓉低空经济发展助力!

5月25日&#xff0c;吉利科技集团与成都高新区签署合作协议&#xff0c;吉利科技集团旗下沃飞长空全球总部落地成都高新区。 根据协议&#xff0c;沃飞长空全球总部项目落地成都未来科技城&#xff0c;将布局总部办公、研发和生产制造低空出行航空器等业务。双方将积极发挥各自…

MySQL第六次作业

一、创建部门表 指令&#xff1a; mysql> CREATE TABLE dept (-> dept_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 部门编号,-> dept_name CHAR(20) COMMENT 部门名称-> ); 演示&#xff1a; 二、插入部门数据 指令&#xff1a; mysql> INSERT INTO dept…

如何使用GPT-4o?如何使用 GPT-4o API?

如何使用GPT-4o&#xff1f; GPT-4o 也可以通过 ChatGPT 界面使用 如何使用 GPT-4o API 新的 GPT-4o 模型遵循 OpenAI 现有的聊天完成 API&#xff0c;使其向后兼容且易于使用。 ​ 如何升级GPT4Plus&#xff1f; 升级ChatGPTPLSU4需要一张虚拟卡&#xff0c;点击获取​​​…

vue项目集成萤石云在Web系统中实现实时摄像头监控及控制功能

需求 需求&#xff1a; 开发人员在产线上放置一个萤石摄像头&#xff0c;前端在可视化大屏上实时监控&#xff0c;且控制左右上下功能。 效果 萤石云接入web前期准备工作 阅读萤石云API文档&#xff1a;萤石云开放平台开发者文档 阅读萤石云控制API文档&#xff1a;萤石云摄…

企业电脑加密系统是如何发展的,今天最可靠的电脑加密系统是什么

企业电脑加密系统历经了几十年的发展&#xff0c;如今技术已经逐渐成熟&#xff0c;加密强度和防泄密效果越来越显著&#xff0c;那么它是怎么发展的&#xff0c;以及当今使用的加密技术是什么呢&#xff1f; 一、发展历程 1.早期探索阶段&#xff1a; 时间&#xff1a;上世纪…