【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搭建的识别推演进行边缘计算则提供了一种有效的方式来处理和分析这些数据,使得智能家居系统能够更加智能、响应更加迅速。
● 最后的最后引用雷布斯的一句话:科技不再是高高在上,科技要服务于每一个人!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【YOLOv10】2024年5月最新的YOLO系列模型Yolov10(论文阅读笔记) + 完整创新点说明 + 总结

🚀🚀🚀 YOLOv10: 实时端到端的目标检测。YOLOv10比最先进的YOLOv9延迟时间更低,测试结果可以与YOLOv9媲美,可能会成为YOLO系列模型部署的“新选择”。 官方论文地址:https://arxiv.org/pdf/2405.14458 官方…

怎么更改图片格式?图片在线转格式的使用方法

现在很多的平台在上传图片的时候,都会有规定要求的大小、格式、尺寸,只有符合要求的图片才可以正常上传。在网上传图时想要快速的修改图片格式,比较简单的一个方法就是在使用在线图片格式转换的工具就能够快速处理,下面将图片转格…

关于微信小程序低功耗蓝牙ECharts实时刷新(涉及自定义缓冲区)

简单的蓝牙显示(串口手动发数据测试) 最近搞了这方面的东西,是刚刚开始接触微信小程序,因为是刚刚开始接触蓝牙设备,所以这篇文章适合既不熟悉小程序,又不熟悉蓝牙的新手看。 项目要求是获取到蓝牙传输过来…

在线思维导图编辑!3个AI思维导图生成软件推荐!

思维导图,一种以创新为驱动的视觉化思考工具,已经渗透到我们日常生活和工作的各个角落。当我们需要整理思绪、规划项目或者梳理信息时,思维导图总能提供极大的帮助。 近些年随着云服务等基础设施的完善,我们可以看到越来越多提供…

ITIL4认证考试这么贵,还值得考证吗,有必要学吗?

从2023年4月1日开始,ITIL 4是Foundation认证将会捆绑OTM(Official Training Materials),这样在一次ITIL4的考试费中将会捆绑:试卷费电子教材书费监考费OTM费,每一种考试费都相较于2022年有涨幅,再加上PeopleCert收取的授权机构的授…

视频监控业务平台LntonCVS国标GB28181视频平台智慧城市应用方案

随着科技的不断进步,尤其是人工智能技术的飞速发展,视频应用已经超越了传统的视频监控、视频会议、视频通话和视频指挥调度等基本功能。它们正在向更加多元化、灵活化、融合化和智能化的方向发展。因此,建立一个视频AI中台变得至关重要。 通过…

持续领跑教育科技,网易有道再发“子曰”教育大模型全新应用

5月29日,网易有道“子曰”教育大模型媒体交流会在北京举行。会上,网易有道分享了子曰教育大模型最新技术进展及三大AI创新应用:AI全科学习助手“有道小P”APP、新一代虚拟人口语教练Hi Echo 3.0和新一代知识库问答引擎QAnything。 现场&…

基于STM32单片机老人体温心率血氧跌倒定位短信报警

一.硬件及设计功能 以STM32F103C8T6为中央处理器,GPS模块用采集数据,将数据发送给单片机后,单片机根据定位计算公式得出当前位置的经纬度信息和时间信息。经过LCD显示器处理后得出和时间信息SIM800模块发送短信到设定的手机号上,将…

17 C语言学生管理系统

学生管理系统 &#x1f44d;&#x1f602;&#x1f4af; 项目代码 代码可能存在细节上的错误&#xff0c;希望大家可以指导意见。 #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_STUDENTS 100…

conda修改环境名称后,无法安装包,显示no such file

1问题描述 原本创建环境时设置的名字不太合适&#xff0c;但是因为重新创建环境很麻烦&#xff0c;安装很多包。。所以想直接对包名进行修改&#xff0c;本人采用的方式是直接找到conda环境的文件目录&#xff0c;然后修改文件名&#xff0c;简单粗暴。确实修改成功了&#xf…

模拟集成电路(5)----单级放大器(共栅级)

模拟集成电路(5)----单级放大器&#xff08;共栅级&#xff09; 有一些场合需要一些小的输入电阻&#xff08;电流放大器&#xff09; 大信号分析 − W h e n V i n ≥ V B − V T H ∙ M 1 i s o f f , V o u t V D D − F o r L o w e r V i n I d 1 2 μ n C o x W L ( V…

手摸手教你uniapp原生插件开发

行有余力,心无恐惧 这篇技术文章写了得有两三个礼拜,虽然最近各种事情,工作上的生活上的,但是感觉还是有很多时间被浪费.还记得几年前曾经有一段时间7点多起床运动,然后工作学习,看书提升认知.现在我都要佩服那会儿的自己.如果想回到那种状态,我觉得需要有三个重要的条件. 其…

xcode依赖包package已经安装,但是提示No such module ‘Alamofire‘解决办法

明明已经通过xcode自带的swift包管理器安装好了依赖包&#xff0c;但是却还是提示&#xff1a;No such module&#xff0c;这个坑爹的xcode&#xff0c;我也只能说服气&#xff0c;但是无奈&#xff0c;没办法攻打苹果总部&#xff0c;只能自己想解决办法了 No such module Ala…

香港优才计划找中介是否是智商税,靠谱中介又该如何找?

关于香港优才计划的申请&#xff0c;找中介帮助还是自己DIY&#xff0c;网络上充斥的声音太多&#xff0c;对不了解的人来说&#xff0c;难以抉择的同时还怕上当受骗。 这其中很容易误导人的关键在于——信息差&#xff01; 今天这篇文章的目的就是想让大家看清一些中介和DIY…

MoE模型大火,源2.0-M32诠释“三个臭皮匠,顶个诸葛亮”!

文 | 智能相对论 作者 | 陈泊丞 近半年来&#xff0c;MoE混合专家大模型彻底是火了。 在海外&#xff0c;OpenAI的GPT-4、谷歌的Gemini、Mistral AI的Mistral、xAI的Grok-1等主流大模型都采用了MoE架构。而在国内&#xff0c;浪潮信息也刚刚发布了基于MoE架构的“源2.0-M3…

C++【缺省参数|函数重载|引用】

目录 1 缺省参数 1.1 全缺省 1.2 半缺省 注意 1.3 应用 2 函数重载 函数重载的概念 1、参数类型不同 2、参数个数不同 3、参数类型顺序不同 3 引用 3.1 引用概念 3.2 引用特性 3.3 常引用 3.4 使用场景 3.5 传值、传引用效率比较 3.6 引用和指针的区别 1 缺…

基于51单片机的温度+烟雾报警系统设计

一.硬件方案 本设计采用51单片机为核心控制器&#xff0c;利用气体传感器MQ-2、ADC0832模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片&#xff0c;当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号&#xff0c;以此来…

【C++课程学习】:二叉树的基本函数实现

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f349;二叉树的结构类型&#xff1a; &#x1f349;1.创建二叉树函数&#xff08;根据数组&am…

30【Aseprite 作图】桌子——拆解

1 桌子只要画左上方&#xff0c;竖着5&#xff0c;斜着3个1&#xff0c;斜着两个2&#xff0c;斜着2个3&#xff0c;斜着一个5&#xff0c;斜着一个很长的 然后左右翻转 再上下翻转 在桌子腿部分&#xff0c;竖着三个直线&#xff0c;左右都是斜线&#xff1b;这是横着水平线不…

Python os.path.isfile() 和 os.path.isdir() 函数

Python os.path.isfile 和 os.path.isdir 函数 正文 正文 在网上看到很多人对这两个函数的用法有过说明&#xff0c;然而感觉都没有说到它们的本质&#xff0c;这里特来记录一下。os.path.isfile() 用来判断所给参数是否一个文件。os.path.isdir() 用来判断所给的参数是否是一…