家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱

2023-08-01 18:07:14 7点赞 66收藏 9评论

⚡️国家电网电力获取

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱

本应用可以帮助你将国网的电费、用电量数据接入homeassistant,实现实时追踪家庭用电量情况;并且可以将每日用电量保存到数据库,历史有迹可循。具体提供两类数据:

  1. 在homeassistant以实体显示:

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱
  1. 可选,近三十天每日用电量数据(mongodb数据库),例如:

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱

一、适用范围

  1. 适用于除南方电网覆盖省份外的用户。即除广东、广西、云南、贵州、海南等省份的用户外,均可使用本应用获取电力、电费数据。

  2. 不管是通过哪种哪种安装的homeassistant,只要可以运行python,有约1G硬盘空间和500M运行内存,都可以采用本仓库部署。

本镜像支持架构:

  • linux/amd64:适用于 x86-64(amd64)架构的 Linux 系统,例如windows电脑

  • linux/arm64:适用于 ARMv8 架构的 Linux 系统,例如树莓派4,N1盒子。

  • linux/arm/v7:适用于 ARMv7 架构的 Linux 系统,例如玩客云,32位树莓派。

  • 其他架构移步github仓库自行build。

二、实现流程

通过python的selenium包获取国家电网的数据,通过homeassistant的提供的REST API将采用POST请求将实体状态更新到homeassistant。

三、安装

1)方法一(推荐):docker镜像部署,速度快

  1. 安装docker和homeassistant,Homeassistant极简安装法

  2. 创建项目文件夹

    mkdir sgcc_electricity cd sgcc_electricity

  3. 创建环境变量文件

    vim .env

    参考以下文件编写.env文件

    # 以下项都需要修改 # 国网登录信息 PHONE_NUMBER="xxx" # 修改为自己的登录账号 PASSWORD="xxxx" # 修改为自己的登录密码 # 数据库配置 ENABLE_DATABASE_STORAGE=True # "mongodb://USERNAME:PASSWORD@localhost:27017/" # 数据库地址 修改USERNAME PASSWORD和localhost DB_NAME="homeassistant" # 数据库名,默认为homeassistant # COLLECTION_NAME默认为electricity_daily_usage_{国网用户id},不支持修改。 # homeassistant配置 HASS_URL="http://localhost:8123/" # 改为你的localhost为你的homeassistant地址 HASS_TOKEN="eyxxxxx" # homeassistant的长期令牌 # selenium运行参数 JOB_START_TIME="07:00" # 任务开始时间,24小时制,例如"07:00”则为每天早上7点执行,第一次启动程序如果时间晚于早上7点则会立即执行一次。 ## 其他默认参数 DRIVER_IMPLICITY_WAIT_TIME=60 # 浏览器默认等待时间,秒。 RETRY_TIMES_LIMIT=5 # 登录重试次数 LOGIN_EXPECTED_TIME=60 # 登录超时时间,秒 RETRY_WAIT_TIME_OFFSET_UNIT=10 FIRST_SLEEP_TIME=10 # 第一次运行等待时间,秒 # 日志级别 LOG_LEVEL="INFO" # 例如“DUBUG”可以查看出错情况

  4. 编写docker-compose.yml文件

    vim docker-compose.yml

    填入以下内容

    version: "3" services: app: env_file: - .env image: renhai/sgcc_electricity:latest # armv7改latest为armv7-latest container_name: sgcc_electricity network_mode: bridge environment: - SET_CONTAINER_TIMEZONE=true - CONTAINER_TIMEZONE=Asia/Shanghai restart: unless-stopped command: python3 main.py # 默认将近30天数据写入mongo数据库,方便查询 mongo: image: mongo:4.4.18 restart: always container_name: mongo-for-sgcc network_mode: bridge environment: MONGO_INITDB_ROOT_USERNAME: USERNAME # 修改为自己的用户名 MONGO_INITDB_ROOT_PASSWORD: PASSWORD # 修改为自己的密码 MONGODB_DATABASE: "homeassistant" # 修改为自己的数据库名,和.env中的数据库名一致 CONTAINER_TIMEZONE: Asia/Shanghai volumes: - ./db:/data/db ports: - "27017:27017"

5. 运行电力获取

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱

本应用可以帮助你将国网的电费、用电量数据接入homeassistant,实现实时追踪家庭用电量情况;并且可以将每日用电量保存到数据库,历史有迹可循。具体提供两类数据:

  1. 在homeassistant以实体显示:

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱
  1. 可选,近三十天每日用电量数据(mongodb数据库),例如:

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱

一、适用范围

  1. 适用于除南方电网覆盖省份外的用户。即除广东、广西、云南、贵州、海南等省份的用户外,均可使用本应用获取电力、电费数据。

  2. 不管是通过哪种哪种安装的homeassistant,只要可以运行python,有约1G硬盘空间和500M运行内存,都可以采用本仓库部署。

本镜像支持架构:

  • linux/amd64:适用于 x86-64(amd64)架构的 Linux 系统,例如windows电脑。

  • linux/arm64:适用于 ARMv8 架构的 Linux 系统,例如树莓派4,N1盒子。

  • linux/arm/v7:适用于 ARMv7 架构的 Linux 系统,例如玩客云,32位树莓派。

  • 其他架构移步github仓库自行build。

二、实现流程

通过python的selenium包获取国家电网的数据,通过homeassistant的提供的REST API将采用POST请求将实体状态更新到homeassistant。

三、安装

1)方法一(推荐):docker镜像部署,速度快

  1. 安装docker和homeassistant,Homeassistant极简安装法

  2. 创建项目文件夹

    mkdir sgcc_electricity cd sgcc_electricity

  3. 创建环境变量文件

    vim .env

    参考以下文件编写.env文件(以docker hub仓库页面为准)

    # 以下项都需要修改 # 国网登录信息 PHONE_NUMBER="xxx" # 修改为自己的登录账号 PASSWORD="xxxx" # 修改为自己的登录密码 # 数据库配置 ENABLE_DATABASE_STORAGE=True # "mongodb://USERNAME:PASSWORD@localhost:27017/" # 数据库地址 修改USERNAME PASSWORD和localhost DB_NAME="homeassistant" # 数据库名,默认为homeassistant # COLLECTION_NAME默认为electricity_daily_usage_{国网用户id},不支持修改。 # homeassistant配置 HASS_URL="http://localhost:8123/" # 改为你的localhost为你的homeassistant地址 HASS_TOKEN="eyxxxxx" # homeassistant的长期令牌 # selenium运行参数 JOB_START_TIME="07:00" # 任务开始时间,24小时制,例如"07:00”则为每天早上7点执行,第一次启动程序如果时间晚于早上7点则会立即执行一次。 ## 其他默认参数 DRIVER_IMPLICITY_WAIT_TIME=60 # 浏览器默认等待时间,秒。 RETRY_TIMES_LIMIT=5 # 登录重试次数 LOGIN_EXPECTED_TIME=60 # 登录超时时间,秒 RETRY_WAIT_TIME_OFFSET_UNIT=10 FIRST_SLEEP_TIME=10 # 第一次运行等待时间,秒 # 日志级别 LOG_LEVEL="INFO" # 例如“DUBUG”可以查看出错情况

  4. 编写docker-compose.yml文件

    vim docker-compose.yml

    填入以下内容

    (以docker hub和仓库页面为准):

    version: "3" services: app: env_file: - .env image: renhai/sgcc_electricity:latest # armv7改latest为armv7-latest container_name: sgcc_electricity network_mode: bridge environment: - SET_CONTAINER_TIMEZONE=true - CONTAINER_TIMEZONE=Asia/Shanghai restart: unless-stopped command: python3 main.py # 默认将近30天数据写入mongo数据库,方便查询 mongo: image: mongo:4.4.18 restart: always container_name: mongo-for-sgcc network_mode: bridge environment: MONGO_INITDB_ROOT_USERNAME: USERNAME # 修改为自己的用户名 MONGO_INITDB_ROOT_PASSWORD: PASSWORD # 修改为自己的密码 MONGODB_DATABASE: "homeassistant" # 修改为自己的数据库名,和.env中的数据库名一致 CONTAINER_TIMEZONE: Asia/Shanghai volumes: - ./db:/data/db ports: - "27017:27017"

5. 运行

``` docker compose up --build # 或者后台运行 docker compose up -d --build ```

四、配置与使用

1)第一次运行需要创建并填写.env文件,按文件说明进行填写。

2)(可选)修改实体

填写homeassistant的配置文件

由于采用REST API方式创建sensor,没有做实体注册,无法在webui里编辑。如果需要,你可以在configuration.yaml下增加如下配置后重启HA,这样你就可在webUI编辑对应的实体了,这样含有_entity后缀的实体就可以进行修改了。

  • 如果你有一个户号,参照以下配置:

# Example configuration.yaml entry # 文件中只能有一个template template: # 参考文档: https://www.home-assistant.io/integrations/template - trigger: - platform: event event_type: "state_changed" event_data: entity_id: sensor.electricity_charge_balance sensor: - name: electricity_charge_balance_entity unique_id: electricity_charge_balance_entity state: "{{ states('sensor.electricity_charge_balance') }}" state_class: measurement unit_of_measurement: "CNY" device_class: monetary - trigger: - platform: event event_type: "state_changed" event_data: entity_id: sensor.last_electricity_usage sensor: - name: 最近一天用电量 unique_id: last_electricity_usage_entity state: "{{ states('sensor.last_electricity_usage') }}" attributes: present_date: "{{ state_attr('sensor.last_electricity_usage', 'present_date') }}" last_updated: "{{ state_attr('sensor.last_electricity_usage', 'last_updated') }}" state_class: total unit_of_measurement: "kWh" device_class: energy - trigger: - platform: event event_type: "state_changed" event_data: entity_id: sensor.yearly_electricity_usage sensor: - name: yearly_electricity_usage_entity unique_id: yearly_electricity_usage_entity state: "{{ states('sensor.yearly_electricity_usage') }}" state_class: total_increasing unit_of_measurement: "kWh" device_class: energy - trigger: - platform: event event_type: "state_changed" event_data: entity_id: sensor.yearly_electricity_charge sensor: - name: yearly_electricity_charge_entity unique_id: yearly_electricity_charge_entity state: "{{ states('sensor.yearly_electricity_charge') }}" state_class: total_increasing unit_of_measurement: "CNY" device_class: monetary

  • 如果你有多个户号,每个户号参照configuration.yaml配置。

    注:如果你有一个户号,在HA里就是以上实体名;****如果你有多个户号,实体名称还要加 “_户号”后缀,举例:sensor.last_electricity_usage_1234567890

❗️进行自定义操作之后,请使用带entity的实体。比如使用sensor.last_electricity_usage_entity_1234567890而不是sensor.last_electricity_usage_1234567890。

3)(可选)ha内数据展示

结合mini-graph-card](https://github.com/kalkih/mini-graph-card) 和mushroom实现效果:

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱

type: custom:mini-graph-card entities: - entity: sensor.last_electricity_usage_entity name: 国网每日用电量 aggregate_func: first show_state: true show_points: true group_by: date hour24: true hours_to_show: 240

4)(可选)配合用电阶梯,实现实时电价。

image-20230729172257731image-20230729172257731

具体操作:

修改homeassistant.yml文件然后重启或重载配置文件,注意当前阶梯中的sensor.yearly_electricity_usage_entity要根据你的实际情况修改:

# 文件中只能有一个sensor sensor: # 实时电价 - platform: template #平台名称 sensors: #传感器列表 real_time_electricity_price: #实体名称:只能用小写,下划线 unique_id: "real_time_electricity_price" #UID(必须) friendly_name: '实时电价' #在前端显示的传感器昵称(可选) unit_of_measurement: "CNY/kWh" #传感器数值的单位(可选) icon_template: mdi:currency-jpy #默认图标 value_template: > #定义一个获取传感器状态的模板(必须)下面的6和22是指6点和22点,"1""2""3"是指阶梯123,6个价格分别是3个阶梯的峰谷价格 {% if now().strftime("%H")| int >= 6 ="1" %} 0.617 {%elif now().strftime("%H")| int >= 6 ="2" %} 0.677 {%elif now().strftime("%H")| int >= 6 ="3" %} 0.977 {% elif states("sensor.current_ladder")=="1" %} 0.307 {% elif states("sensor.current_ladder")=="2" %} 0.337 {% elif states("sensor.current_ladder")=="3" %} 0.487 {% endif %} # 当前阶梯 - platform: template sensors: current_ladder: unique_id: "current_ladder" friendly_name: '当前阶梯' unit_of_measurement: "级" icon_template: mdi:elevation-rise value_template: > #这里是上海的三个阶梯数值,第2阶梯3120,第三阶梯4800 {% if states("sensor.yearly_electricity_usage_entity") | float <= 3120 %} 1 {% elif states("sensor.yearly_electricity_usage_entity") | float >3120 4800 %} 2 {% else %} 3 {% endif %}

可以在能源面板进行配置,对可以统计电量的设备实现分阶梯计算用电量。

tip:打开ha>仪表盘>能源>添加用电数据>实时电价实体-选择real_time_electricity_price。

家庭用电量轻松掌握,Docker和Homeassistant助你省电省钱

5)电量通知

可以使用homeassistant内置通知或者其他通知服务,比如pushdeer

写在最后

原作者:https://github.com/louisslee/sgcc_electricity,原始README_origin.md

有人同步过:https://github.com/liantianji/sgcc_electricity

展开 收起

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

1799元起

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

2485.01元起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)

3479.01元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2849元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1796元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2783.51元起

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、64GB)

5899元起

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

UGREEN 绿联 DX4600+ 4盘位NAS(赛扬N5105、8GB)

1999元起

ASUS 华硕 AS6702T 4盘位NAS存储 黑色(Core2 Quad Q8300、4GB)

ASUS 华硕 AS6702T 4盘位NAS存储 黑色(Core2 Quad Q8300、4GB)

4299元起

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

TERRAMASTER 铁威马 F4-424 Pro 四盘位NAS(Intel Core i3、32GB)黑色

2499元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3299元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

UGREEN 绿联 DH2600 双盘位NAS (N5105、4GB)

UGREEN 绿联 DH2600 双盘位NAS (N5105、4GB)

1349元起

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS家庭个人云网络存储服务器手机平板扩容适用iPhone15 水

ZSpace 极空间 私有云Z2Pro 四核2盘位NAS家庭个人云网络存储服务器手机平板扩容适用iPhone15 水

1299元起
9评论

  • 精彩
  • 最新
  • Docker创建后,始终连接不上mongo数据库, - -!

    校验提示文案

    提交
    参照github页面的env文件配置

    校验提示文案

    提交
    果然,Github上的复制过去就连接成功了 - -!现在卡在mini-graph-card和mushroom上,残念~~~~~

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 这个错误怎么解决啊?
    [ERROR ] ---- Webdriver quit abnormly, reason: Message: element not interactable
    (Session info: headless chrome=90.0.4430.212)

    校验提示文案

    提交
    参考github仓库的issue

    校验提示文案

    提交
    搞定 谢谢!

    校验提示文案

    提交
    收起所有回复
  • 哇,这篇内容写得真是太棒了!特别是提到的 Docker 和 Homeassistant,这两个工具可以让你轻松掌握家庭用电量,真正让你省电省钱!不得不夸你真是有才啊!

    校验提示文案

    提交
  • 南方的有没有能用的?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章

renhaiidea

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
66
扫一下,分享更方便,购买更轻松