HomeAssistant開源的智能家居docker快速部署實踐筆記(CentOS7)

1. SGCC_Electricity 應用介紹

SGCC_Electricity 是一個用于將國家電網(State Grid Corporation of China,簡稱 SGCC)的電費和用電量數據接入 Home Assistant 的自定義集成組件。通過該應用,用戶可以實時追蹤家庭用電量情況,并將每日用電量數據保存到數據庫中,以便后續查詢和分析。

1.1. 核心功能

  1. 實時數據接入

    • 電費與用電量同步:SGCC_Electricity 能夠直接從國家電網的官方系統獲取用戶家庭的實時電費和用電量數據,并同步到 Home Assistant 中。
    • 自動化更新:支持設置定時更新頻率,確保 Home Assistant 中的數據始終與國家電網的最新數據保持一致。
  2. 數據存儲與歷史查詢

    • 數據庫存儲:應用支持將每日用電量數據保存到用戶指定的數據庫中(如 Sqlite3 等),確保歷史數據有跡可循。
    • 歷史數據查詢:用戶可以通過 Home Assistant 的界面或第三方工具查詢歷史用電量數據,分析用電趨勢,制定節能計劃。
  3. 可視化展示

    • Home Assistant 儀表板集成:SGCC_Electricity 提供的數據可以直接在 Home Assistant 的儀表板中展示,用戶可以自定義儀表板,以圖表、卡片等形式直觀地查看用電量情況。
    • 多維度分析:支持按日、周、月等時間維度分析用電量,幫助用戶更好地了解家庭用電習慣。

1.2. 使用場景

  • 家庭節能管理:用戶可以通過 SGCC_Electricity 實時了解家庭用電量情況,發現高耗電設備或時段,及時調整用電習慣,實現節能減排。
  • 智能家居聯動:結合 Home Assistant 的其他功能,用戶可以設置自動化規則,如當用電量超過一定閾值時自動關閉非必要電器,或根據用電量情況調整室內溫度等。
  • 數據分析與報告:對于需要定期提交用電量報告的用戶(如企業、學校等),SGCC_Electricity 提供的歷史數據查詢功能可以大大簡化報告制作流程。

1.3. 關于Home Assistant

Home Assistant是一個開源的智能家居自動化系統,其核心特點是將本地控制和隱私保護放在首位。它由全球范圍內的愛好者和DIY(自己動手做)熱衷者組成的社區推動發展,并且在2024年被列為頂級開源項目之一。以下是關于Home Assistant的簡單概述:

  • 開源與社區驅動:Home Assistant是一個非營利項目,由Open Home Foundation支持,它不能被出售或收購。該系統的開發依賴于一個活躍且友好的全球社區,成員們熱衷于分享他們對智能家居的熱情和技術。
  • 本地控制與隱私:Home Assistant強調本地控制,意味著用戶的數據和操作主要在本地設備上處理,而不是上傳到云端,這有助于保護用戶隱私。
  • 語音助手集成:Home Assistant支持與主流語音助手如Alexa和Google Assistant的集成,允許用戶通過語音命令控制家中的智能設備。
  • 自定義與擴展性:作為一個開源項目,Home Assistant提供了高度的自定義和擴展性,用戶可以根據自己的需求添加功能或集成新的設備。
  • 快速且私密的語音助手:Home Assistant還擁有自己的語音助手,它運行在價格實惠的硬件上,提供極快的響應速度,并且支持喚醒詞功能,同時保證用戶數據的私密性。
  • 社區參與:Home Assistant的社區非常活躍,用戶可以參與討論、分享經驗,甚至貢獻代碼來改進系統。
  • 最新動態與路線圖:用戶可以通過Home Assistant的官方網站了解項目的最新進展、發布說明、博客文章以及未來的發展路線圖。
  • Home Assistant的官方網站是https://www.home-assistant.io/,用戶可以在這里找到更多關于系統的詳細信息、安裝指南、設備集成列表以及社區資源等。
    在這里插入圖片描述

2. 系統快速部署

2.1. 系統概述

Docker鏡像部署方式

系統由SGCC_Electricity 應用系統和Home Assistant系統平臺構成,其中Home Assistant是本地私有化離線方式。
在這里插入圖片描述

2.2. CentOS7 離線安裝Docker

Docker 離線安裝包下載地址https://download.docker.com/linux/centos/7/x86_64/stable/Packages/。

依賴包參考如下文檔,在此只安裝核心文件。

[root@DeepLearning ha]#rpm -ivh docker-ce-cli-19.03.12-3.el7.x86_64.rpm
[root@DeepLearning ha]#rpm -ivh container-selinux-2.119.1-1.c57a6f9.el7.noarch.rpm
[root@DeepLearning ha]#rpm -ivh containerd.io-1.2.13-3.2.el7.x86_64.rpm
[root@DeepLearning ha]#rpm -ivh docker-ce-18.09.0-3.el7.x86_64.rpm
[root@DeepLearning ha]#rpm -ivh docker-compose-plugin-2.6.0-3.el7.x86_64.rpm 
  • 啟動 Docker 服務
    安裝完成后,啟動 Docker 服務:
[root@DeepLearning ha]#systemctl start docker
  • 設置 Docker 開機自啟:
[root@DeepLearning ha]#systemctl enable docker
  • 檢查 Docker 安裝
    確保 Docker 本身已正確安裝:
[root@DeepLearning ha]#docker --version

2.3. 安裝Home Assistant鏡像

官方安裝文檔,參考https://www.home-assistant.io/installation/linux。
隨著 Docker 命令變得越來越復雜,切換到使用 docker compose 可能會更合適,因為它支持在服務失敗或系統重啟時自動重啟。創建一個 compose.yml 文件(注:實際文件名為 docker-compose.yml)。

創建ha目錄,創建docker-compose.yml文件,把如下內容編輯進去。

[root@DeepLearning ha]#mkdir ha
[root@DeepLearning ha]#touch docker-compose.yml
[root@DeepLearning ha]#nano docker-compose.yml

docker compose 安裝方式,鏡像配置文件。

services:homeassistant:container_name: homeassistantimage: ghcr.io/home-assistant/home-assistant:stable # 中國地區鏡像地址:ghcr.nju.edu.cn/home-assistant/home-assistant:stable或者用你自己的 $volumes:- "./config:/config"- "/etc/localtime:/etc/localtime:ro"- "/run/dbus:/run/dbus:ro" # 藍牙設備需要environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghairestart: unless-stoppedprivileged: true

從中國區鏡像地址安裝鏡像。

[root@DeepLearning ha]#docker compose up --build -d

Docker 容器默認運行在獨立的網絡命名空間中,若未顯式映射端口,外部無法訪問。設置ports端口,如下配置所示。

[root@DeepLearning ha]#vi docker-compose.yml
services:homeassistant:container_name: homeassistantimage: ghcr.nju.edu.cn/home-assistant/home-assistant:stableports:- "8123:8123" # 關鍵:將容器的 8123 端口映射到宿主機的 8123 端口volumes:- "./config:/config"- "/etc/localtime:/etc/localtime:ro"- "/run/dbus:/run/dbus:ro"environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghairestart: unless-stoppedprivileged: true

停止當前服務,重新啟動服務。

docker compose down  # 停止當前服務
docker compose up -d # 重新啟動服務

2.4. Home Assistant獲取永久訪問令牌

https://blog.csdn.net/qq_25886111/article/details/106282492

在這里插入圖片描述

2.5. 安裝sgcc_electricity鏡像

2.5.1. 克隆倉庫

git clone https://github.com/ARC-MX/sgcc_electricity_new.git
# 如果github網絡環境不好的話可以使用國內鏡像,完全同步的,個人推薦使用國內鏡像
# git clone https://gitee.com/ARC-MX/sgcc_electricity_new.git
cd sgcc_electricity_new

2.5.2. 創建環境變量文件

cp example.env .env
vim .env # 參考以下文件編寫.env文件

### 以下項都需要修改
## 國網登錄信息
# 修改為自己的登錄賬號
PHONE_NUMBER="xxx" 
# 修改為自己的登錄密碼
PASSWORD="xxxx" 
# 排除指定用戶ID,如果出現一些不想檢測的ID或者有些充電、發電帳號、可以使用這個環境變量,如果有多個就用","分隔,","之間不要有空格
IGNORE_USER_ID=xxxxxxx,xxxxxxx,xxxxxxx# SQLite 數據庫配置
# or False 不啟用數據庫儲存每日用電量數據。
ENABLE_DATABASE_STORAGE=True
# 數據庫名,默認為homeassistant
DB_NAME="homeassistant.db"
# COLLECTION_NAME默認為electricity_daily_usage_{國網用戶id},不支持修改。## homeassistant配置
# 改為你的localhost為你的homeassistant地址
HASS_URL="http://localhost:8123/" 
# homeassistant的長期令牌
HASS_TOKEN="eyxxxxx"## selenium運行參數
# 任務開始時間,24小時制,例如"07:00”則為每天早上7點執行,第一次啟動程序如果時間晚于早上7點則會立即執行一次,每隔12小時執行一次。
JOB_START_TIME="07:00"
# 每次操作等待時間,推薦設定范圍為[2,30],該值表示每次點擊網頁后所要等待數據加載的時間,如果出現“no such element”諸如此類的錯誤可適當調大該值,如果硬件性能較好可以適當調小該值
RETRY_WAIT_TIME_OFFSET_UNIT=15## 記錄的天數, 僅支持填寫 7 或 30
# 國網原本可以記錄 30 天,現在不開通智能繳費只能查詢 7 天造成錯誤
DATA_RETENTION_DAYS=7## 余額提醒
# 是否繳費提醒
RECHARGE_NOTIFY=Flase
# 余額
BALANCE=5.0
# pushplus token 如果有多個就用","分隔,","之間不要有空格,單個就不要有","
PUSHPLUS_TOKEN=xxxxxxx,xxxxxxx,xxxxxxx

2.5.3. 運行

我已經優化了鏡像環境,將鏡像的地址配置為阿里云,如果要使用docker hub的源可以將docker-compose.yml中 image: registry.cn-hangzhou.aliyuncs.com/arcw/sgcc_electricity:latest 改為 arcw/sgcc_electricity:latest

services:sgcc_electricity_app:env_file:- .envimage: registry.cn-hangzhou.aliyuncs.com/arcw/sgcc_electricity:latest # for use docker.io: arcw/sgcc_electricity:latestprivileged: true # 這是后加上的container_name: sgcc_electricitynetwork_mode: "host"environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghairestart: unless-stoppedvolumes:- ./:/data        # if you want to read homeassistant.db, homeassistant.db is in the container at /data/command: python3 main.pyinit: true

運行獲取傳感器名稱:

docker-compose up -d
docker-compose logs sgcc_electricity_app

在這里插入圖片描述

3. 實踐中所遇到的問題:

3.1. docker: ‘compose’ is not a docker command

docker compose version
docker: ‘compose’ is not a docker command.

Docker Compose 是一個獨立的工具,需要單獨安裝。根據你的 Docker 版本和環境,選擇適合的安裝方法。

3.2. 運行docker鏡像,報權限錯:

OpenBLAS blas_thread_init: pthread_create failed for thread 1 of 6: Operation not permitted

解決方案:
增加參數,privileged: true:這會授予容器幾乎所有的內核功能,類似于使用 docker run --privileged。

vim docker-compose.yml
services:sgcc_electricity_app:env_file:- .envimage: registry.cn-hangzhou.aliyuncs.com/arcw/sgcc_electricity:latest # for use docker.io: arcw/sgcc_electricity:latestcontainer_name: sgcc_electricitynetwork_mode: "host"environment:- SET_CONTAINER_TIMEZONE=true- CONTAINER_TIMEZONE=Asia/Shanghairestart: unless-stoppedvolumes:- ./:/data        # if you want to read homeassistant.db, homeassistant.db is in the container at /data/command: python3 main.pyinit: true

參考:
[1]. https://github.com/ARC-MX/sgcc_electricity_new
[2]. https://www.home-assistant.io/installation/linux
[3].花陌黎呀. Home Assistant獲取永久訪問令牌. CSDN博客. 2020.05
[4].一枚小爪哇. 【CentOS7離線安裝Docker】. CSDN博客. 2021.12

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82284.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82284.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82284.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

maven 3.0多線程編譯提高編譯速度

mvn package 默認只使用 單線程 來執行構建生命周期(即順序地構建每一個模塊)。 如果你使用的是多模塊項目,Maven 從 3.0 開始提供了**并行構建(parallel build)**的能力,但它不是默認開啟的。 如何啟用多…

python模塊管理環境變量

概要 在 Python 應用中,為了將配置信息與代碼分離、增強安全性并支持多環境(開發、測試、生產)運行,使用專門的模塊來管理環境變量是最佳實踐。常見工具包括: 標準庫 os.environ:直接讀取操作系統環境變量…

K8s 集群運行時:從 Docker 升級到 Containerd

一、背景:Kubernetes容器運行時演進史 自2020年Kubernetes 1.20版本宣布棄用Docker作為默認容器運行時以來,容器技術生態經歷了重大變革。作為CNCF畢業項目,Containerd憑借其輕量化架構、原生CRI支持和卓越性能表現,逐漸成為云原生…

30-消息隊列

一、消息隊列概述 隊列又稱消息隊列,是一種常用于任務間通信的數據結構,隊列可以在任務與任務間、 中斷和任務間傳遞信息,實現了任務接收來自其他任務或中斷的不固定長度的消息,任務能夠從隊列里面讀取消息,當隊列中的…

AI Agent開發第74課-解構AI偽需求的魔幻現實主義

開篇 ??在之前的系列中我們狂炫了AI Agent的各種高端操作(向量數據庫聯動、多模態感知、動態工作流等…),仿佛每個程序員都能用LLM魔法點石成金?。 但今天咱們要潑一盆透心涼的冷水——當企業把AI當成萬能膠水強行粘合所有需求時,連電風扇都能被玩出量子糾纏的魔幻現實…

低代碼AI開發新趨勢:Dify平臺化開發實戰

在人工智能快速發展的今天,AI應用的開發方式也在不斷演變。從傳統的手寫代碼到如今的低代碼甚至零代碼開發,技術的進步讓更多的非專業開發者也能輕松上手。本文將帶你走進Dify平臺化開發的世界,探索如何通過這一強大的低代碼AI開發平臺&#…

開發積累總結

export default 和export const 均用于從模塊導出函數、對象或原始值,區別在于: export default:一個文件中只能有一個,為默認導出,在引用時指定名字。 export const:一個文件中有多個,為命名…

【TCP/IP協議族詳解】

目錄 第1層 鏈路/網絡接口層—幀(Frame) 1. 鏈路層功能 2. 常見協議 2.1. ARP(地址解析協議) 3. 常見設備 第2層 網絡層—數據包(Packet) 1. 網絡層功能 2. 常見協議 2.1. ICMP(互聯網…

vocabulary in program

編號意思(英譯中)音標單詞1n. 稀薄;稀罕;珍奇/?re?r?sn/rareness2n.登記表,注冊簿;注冊員;(人或樂器的)聲區,音區;(適合特定場合使…

整平機技術進階:從原理到實戰的深度解析

一、整平機的力學原理與數學模型 整平機的核心在于通過材料塑性變形消除內應力,其力學過程可簡化為以下模型: 彈塑性變形理論 當材料通過輥輪時,表層受拉應力,芯部受壓應力,超過屈服強度后產生永久變形。 關鍵公式&a…

【b站計算機拓荒者】【2025】微信小程序開發教程 - chapter1 初識小程序 - 3項目目錄結構4快速上手

3 項目目錄結構 3.1 項目目錄結構 3.1.1 目錄介紹 # 1 項目主配置文件,在項目根路徑下,控制整個項目的-app.js # 小程序入口文件,小程序啟動,會執行此js-app.json # 小程序全局配置文件,配置小程序導航欄顏色等信息…

427. 建立四叉樹

https://leetcode.cn/problems/construct-quad-tree/description/?envTypestudy-plan-v2&envIdtop-interview-150思路:這題乍一看很復雜但是只要讀懂題找到規律就會發現其實很簡單 四叉樹的構造規律: 1. 如果一個區域的值全相等,那么這個…

IDEA中創建SpringBoot項目沒有Java8

IDEA中創建SpringBoot項目沒有Java8 文章目錄 IDEA中創建SpringBoot項目沒有Java8一:解決辦法 很久沒單獨創建springboot項目,今天使用idea的Spring Initializr 創建 Spring Boot項目時,發現java版本里,無法選擇jdk1.8,只有17、21、22,所以本文介紹了使用Spring Ini…

聊一聊手動測試與探索性測試的區別

目錄 一 定義與目標 手動測試 探索性測試 二 執行方式 手動測試 探索性測試 三 測試重點及計劃性 手動測試 探索性測試 四 測試效率及成本 手動測試 探索性測試 五 優缺點對比 六 關鍵卻別與總結 七 適應場景 手動測試 探索性測試 八 實際應用與結合 在我們進…

Spring用到的設計模式

Spring框架中廣泛應用了多種設計模式,以提升代碼的靈活性和可維護性。 工廠模式:BeanFactory,整個 IoC 容器就是一個工廠。 單例模式:Spring 管理的 Bean 默認都是單例的。 模版方法:如 RedisTemplate、JdbcTemplat…

Mybatis(2)

sql注入攻擊 SQL注入攻擊是一種常見的網絡安全威脅,攻擊者通過在輸入字段中插入惡意SQL代碼,繞過應用程序的安全機制,直接操縱數據庫。 SQL注入的原理 SQL注入利用應用程序未對用戶輸入進行充分過濾或轉義的漏洞。當用戶輸入被直接拼接到S…

【Node.js】高級主題

個人主頁:Guiat 歸屬專欄:node.js 文章目錄 1. Node.js 高級主題概覽1.1 高級主題架構圖 2. 事件循環與異步編程深度解析2.1 事件循環機制詳解事件循環階段詳解 2.2 異步編程模式演進高級異步模式實現 3. 內存管理與性能優化3.1 V8 內存管理機制內存監控…

冰箱熱交換的原理以及如何加氟

冰箱如何加氟: 氟利昂被節流裝置降壓后,進入冰箱的蒸發器,此時它處于低溫低壓液態狀態。在冰箱內部(例如 0C 或 -10C):它很容易氣化(因為其沸點很低)在氣化過程中吸收周圍熱量。 1…

WordPress多語言插件安裝與使用教程

WordPress多語言插件GTranslate的使用方法 在wordpress網站后臺搜索多語言插件GTranslate并安裝,安裝完成、用戶插件后開始設置,以下為設置方法: 1、先在后臺左側找到Gtranslate,進入到設置界面 2、選擇要顯示的形式&#xff0c…

DELL EMC PowerStore BBU更換手冊

寫在前面 上周給客戶賣了一個BBU電池,客戶要寫一個更換方案。順利完成了更換,下面就把這個更換方案給大家share出來,以后客戶要寫,您就Ctrlc 和Ctrlv就可以了。 下面的步驟是最理想的方式,中間沒有任何的問題&#xff…