物联网从HomeAssistant开始

文章目录

一、什么是home-assistant?

Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts.

一款将本地控制与隐私置于首位的开源家庭自动化解决方案,由全球各地的 DIY 爱好者与技术极客玩家社区共同驱动。

1.核心架构

Home Assistant 核心由四个主要部分组成。除此之外,它还包含许多辅助类用于处理常见场景,例如提供实体或处理位置信息。

  • 事件总线(Event Bus):负责协调事件的触发与监听 ------ 这是 Home Assistant 的核心命脉。
  • 状态机(State Machine):跟踪各类实体的状态,并在状态变更时触发 state_changed 事件。
  • 服务注册表(Service Registry):在事件总线上监听 call_service 事件,并允许其他代码注册服务操作。
  • 定时器(Timer):每秒在事件总线上发送一次 time_changed 事件。

    来源:https://developers.home-assistant.io/docs/architecture/core

2.集成架构

Home Assistant Core 可以通过 集成(integrations) 进行扩展。每个集成负责 Home Assistant 中的一个特定 领域(domain)(如灯光、传感器、媒体设备等)。集成能够监听或触发事件、提供操作功能,并维护实体状态。

集成由两部分组成:组件(component)(基础逻辑)和 平台(platforms)(与其他集成交互的模块)。集成使用 Python 编写,能够充分利用 Python 的所有优势。开箱即用的 Home Assistant 提供了大量内置集成,覆盖常见的智能家居设备和服务。

来源:https://developers.home-assistant.io/docs/architecture_components

二、在树梅派5上安装home-assistant

https://www.home-assistant.io/installation/
https://github.com/home-assistant/operating-system/releases

目前是在树梅派安装docker运行的home-assistant,后面打算采用HA OS。

bash 复制代码
docker-compose up -d
yaml 复制代码
version: '3'
services:
  # https://www.home-assistant.io/installation/linux#docker-compose
  homeassistant:
    container_name: homeassistant
    image: "homeassistant/home-assistant"
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "8123:8123"
    volumes:
      - /root/homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
      - /etc/hosts:/etc/hosts:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host

三、接入米家

好久没更新了:https://github.com/ha0y/xiaomi_miot_raw

最近还在更新:https://github.com/al-one/hass-xiaomi-miot
官方强势来袭:https://github.com/XiaoMi/ha_xiaomi_home

1.对比下趋势

https://ossinsight.io/analyze/XiaoMi/ha_xiaomi_home?vs=al-one%2Fhass-xiaomi-miot#overview

还是建议用小米官方的

2.手动安装插件

bash 复制代码
git clone https://github.com/XiaoMi/ha_xiaomi_home
cp -r ha_xiaomi_home/custom_components/xiaomi_home /root/homeassistant/custom_components

3.配置方式

安装完成后,重启 Home Assistant。待 Home Assistant 启动后,在「设置」菜单中点击「设备与服务」选项,在新界面中选择「添加集成」,搜索「xiaomi home」,按照提示操作即可。

四、接入公牛

1.手动安装插件

https://github.com/stevenjoezhang/hass-iotbull

bash 复制代码
git clone https://github.com/stevenjoezhang/hass-iotbull
cp -r hass-iotbull/custom_components/bull /root/homeassistant/custom_components

2.配置方式

安装完成后,重启 Home Assistant。待 Home Assistant 启动后,在「设置」菜单中点击「设备与服务」选项,在新界面中选择「添加集成」,搜索「Bull IoT」,按照提示操作即可。

五、接入海尔

https://github.com/banto6/haier

1.手动安装插件

bash 复制代码
git clone https://github.com/banto6/haier
cp -r haier/custom_components/haier /root/homeassistant/custom_components

2.配置方式

通过Stream抓包,搜索关键词:assign,点击查看json即可

https://zhuanlan.zhihu.com/p/697084466

六、接入国家电网

这种感觉不太好:https://github.com/ARC-MX/sgcc_electricity_new/blob/master/ha_addons_doc/Add-on教程.md

还是老本行,用docker吧

yaml 复制代码
services:
  sgcc_electricity_app:
    env_file:
      - .env
    image: registry.cn-hangzhou.aliyuncs.com/arcw/sgcc_electricity:latest # for use docker.io: arcw/sgcc_electricity:latest
    container_name: sgcc_electricity
    network_mode: "host"
    environment:
      - SET_CONTAINER_TIMEZONE=true
      - CONTAINER_TIMEZONE=Asia/Shanghai
    restart: unless-stopped
    volumes:
      - ./:/data        # if you want to read homeassistant.db, homeassistant.db is in the container at /data/
    command: python3 main.py
    init: true

.env如下:

复制代码
### 以下项都需要修改
## 国网登录信息
# 修改为自己的登录账号
PHONE_NUMBER="xxx" 
# 修改为自己的登录密码
PASSWORD="xxxx" 
# 排除指定用户ID,如果出现一些不想检测的ID或者有些充电、发电帐号、可以使用这个环境变量,如果有多个就用","分隔,","之间不要有空格
IGNORE_USER_ID=xxxxxxx,xxxxxxx,xxxxxxx

# SQLite 数据库配置
# or False 不启用数据库储存每日用电量数据。
ENABLE_DATABASE_STORAGE=False
# 数据库名,默认为homeassistant
DB_NAME="homeassistant.db"

## 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=False
# 余额
BALANCE=5.0
# pushplus token 如果有多个就用","分隔,","之间不要有空格
PUSHPLUS_TOKEN=xxxxxxx,xxxxxxx,xxxxxxx
相关推荐
LCG米4 小时前
基于4G Cat.1与NB-IoT的双模物联网通信模组开发实战(移远EC200S/广和通L610)
物联网
武汉唯众智创4 小时前
“物联网 Python 开发教程”课程教学解决方案
开发语言·python·物联网·物联网技术·物联网 python 开发·python 开发
TDengine (老段)5 小时前
携手桂冠电力、南网储能、中能拾贝,TDengine 三项案例入选“星河奖”
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
线束线缆组件品替网6 小时前
TE Linx RF 物联网射频模块的 RF 线缆连接设计思路
数码相机·物联网·测试工具·电脑·音视频·pcb工艺
深圳市恒星物联科技有限公司6 小时前
国内排水监测公司有哪些?
大数据·网络·数据库·物联网
eonmeter7 小时前
从人工抄表到智能管控,磁卡水表如何重塑我们的用水生活?
物联网·智能水表·磁卡水表·ic卡水表
eonmeter7 小时前
物联网+水务!射频卡水表正在改变我们的用水生活
物联网·射频卡水表·智能水表·刷卡水表·用水管理
颜颜yan_21 小时前
时序数据库选型指南:工业物联网时代如何选择数据底座
数据库·物联网·时序数据库
csg110721 小时前
高效驱动,灵活控制:深度解析RZ7899大电流DC双向马达驱动芯片及其创新应用
单片机·嵌入式硬件·物联网
dixiuapp1 天前
智能报修系统从连接到预测的价值跃迁
大数据·人工智能·物联网·sass·工单管理系统