当前位置: 首页 > news >正文

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

相关文章:

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

前言 本文将以OrangePi AIpro为基础,在此基础构建HomeAssistant、YOLO目标检测实现智能家居更加灵活智能的场景实现。 表头表头设备OrangePi AIpro(8T)系统版本Ubuntu 22.04.4 LTSCPU4核64位处理器 AI处理器AI算力AI算力 8TOPS算力接口HDMI2、GPIO接口、Type-C、M.2…...

Python 点云裁剪

点云裁剪 一、介绍1.1 概念1.2 函数讲解二、代码示例2.1 代码实现2.2 代码讲解三、结果示例一、介绍 1.1 概念 点云裁剪 :根据待裁剪对象的多边形体积(json文件)实现点云的裁剪。 1.2 函数讲解 下面代码示例中主要用到了两个函数。 读取待裁剪对象的多边形体积信息(json文…...

Presto 从提交SQL到获取结果 源码详解(2)

逻辑执行计划: //进入逻辑执行计划阶段 doAnalyzeQuery().new LogicalPlanner().plan(analysis);//createAnalyzePlan createAnalyzePlan(analysis, (Analyze) statement);//返回RelationPlan,(返回root根节点,逻辑树上包含输出字…...

Python的类全面系统学习

文章目录 1. 基本概念1.1 类(Class)1.2 对象(Object) 2. 类的属性和方法3. 类的继承3.1 继承的概念3.2 单继承3.3 多重继承 4. 方法重写与多态4.1 方法重写4.2 多态 5. 特殊方法与运算符重载5.1 特殊方法(魔法方法&…...

信号处理中简单实用的方法

最小二乘法拟合消除趋势项 消除趋势项函数 在MATLAB的工具箱中已有消除线性趋势项的detrend函数;再介绍以最小二乘法拟合消除趋势项的polydetrend 函数。 函数:detrend功能:消除线性趋势项 调用格式:ydetrend(x) 说明:输入参数x是带有线性趋势项的信号序列,输出…...

Jeecg | 如何解决 ERR Client sent AUTH, but no password is set 问题

最近在尝试Jeecg低代码开发,但是碰到了超级多的问题,不过总归是成功运行起来了。 下面说说碰到的最后一个配置问题:连接redis失败 Error starting ApplicationContext. To display the conditions report re-run your application with deb…...

数据容器:set(集合) 更新啦!

数据容器:set(集合) 1.集合的定义方式 {元素, 元素, 元素} # 定义集合 my_set {"欣欣向荣", "嘉嘉", "red", "欣欣向荣", "嘉嘉", "red", "欣欣向荣", "嘉嘉…...

算法入门----小话算法(1)

下面就首先从一些数学问题入手。 Q1&#xff1a; 如何证明时间复杂度O(logN) < O(N) < O(NlogN) < O(N2) < O(2N) < O(N!) < O(NN)? A&#xff1a; 如果一个以整数为参数的不等式不能很容易看出不等的关系&#xff0c;那么最好用图示或者数学归纳法。 很显…...

Vue | 自定义组件双向绑定基础用法

Vue | 自定义组件双向绑定基础用法 vue 中&#xff0c;由于单向数据流&#xff0c;常规的父子组件属性更新&#xff0c;需要 在父组件绑定相应属性&#xff0c;再绑定相应事件&#xff0c;事件里去做更新的操作&#xff0c;利用语法糖 可以减少绑定事件的操作。 这里就简单的梳…...

python使用modbustcp协议与PLC进行简单通信

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…...

mongodb在游戏开发领域的优势

1、分布式id 游戏服务器里的大部分数据都是要求全局唯一的&#xff0c;例如玩家id&#xff0c;道具id。之所以有这种要求&#xff0c;是因为运营业务上需要进行合服操作&#xff0c;保证不同服的数据在进行合服之后&#xff0c;也能保证id不冲突。如果采用关系型数据库&#x…...

大数据Scala教程从入门到精通第十篇:Scala在IDEA中编写Hello World代码的简单说明

一&#xff1a;代码展示 object Main {def main(args: Array[String]): Unit {//SCALA中可以不写;//绿色的小三角达标的是这个类中有一个MAIN方法代表是可以执行的。//ctrl shift f10可以直接运行println("Hello world!")//Java中的类库我们可以直接使用System.o…...

【SPSS】基于因子分析法对水果茶调查问卷进行分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

ElasticSearch学习篇12_《检索技术核心20讲》基础篇

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243 课程分为基础篇、进阶篇、系统案例篇 主要记录企业课程学习过程课程大纲关键点&#xff0c;以文档形式记录笔记。 内容 检索技术&#xff1a;它是更底层的通用技术&#xff0c…...

Reids高频面试题汇总总结

一、Redis基础 Redis是什么? Redis是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等,并提供了丰富的操作命令来操作这些数据结构。Redis的主要特点是什么? 高性能:Redis将数据存储在内…...

19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正

19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正 0 引言1 gia数据处理过程0 引言 由水量平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算冰后回弹改正、第四部分计算地下…...

车载客流统计设备:双目3D还原智能统计算法的应用与优势

随着城市交通的日益繁忙和公共交通系统的不断完善&#xff0c;对公交车等交通工具的客流统计和分析变得越来越重要。传统的客流统计方法往往存在效率低下、精度不足等问题&#xff0c;难以满足现代城市交通管理的需求。而基于双目3D还原智能统计算法的车载客流统计设备&#xf…...

U盘无法打开?数据恢复与预防措施全解析

在日常生活和工作中&#xff0c;U盘已成为我们存储和传输数据的重要工具。然而&#xff0c;有时我们会遇到U盘无法打开的情况&#xff0c;这无疑给我们带来了诸多不便。本文将深入探讨U盘打不开的现象、原因及解决方案&#xff0c;并分享如何预防此类问题的发生。 一、U盘无法访…...

apollo版本更新简要概述

apollo版本更新简要概述 Apollo 里程碑版本9.0重要更新Apollo 开源平台 9.0 的主要新特征如下&#xff1a;基于包管理的 PnC 扩展开发范式基于包管理的感知扩展开发范式全新打造的 Dreamview Plus 开发者工具感知模型全面升级&#xff0c;支持增量训练 版本8.0版本6.0 Apollo 里…...

基于心电疾病分类的深度学习模型部署应用于OrangePi Kunpeng Pro开发板

一、开发板资源介绍 该板具有4核心64位的处理器和8TOPS的AI算力&#xff0c;让我们验证一下&#xff0c;在该板上跑深度学习模型的效果如何&#xff1f; 二、配网及远程SSH登录访问系统 在通过microusb连接串口进入开发板调试&#xff0c;在命令行终端执行以下命令 1&#…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...