成果展示

image.png

准备

本文章写的是用应用安装HA的情况,如果是用虚拟机安装的完整版,MQTT就可直接在插件(add ones)里安装

安装 Home Assistant

首先安装home assistant,参考我以前的视频

https://www.bilibili.com/video/BV1Jq4y157rU/
TrueNAS SCALE社区应用设置指定网络接口,真正独立IP,实现bt分流,修复HomeKit

安装MQTT

安装mosquitto
image.png

image.png

image.png

没有截图的地方就是默认

电量模块

购买原件

创作立场声明:本文所有商品为自费购入。

刷写Tasmota固件

下载固件 ota.tasmota.com/tasmota/release/ 或者 github.com 下载:tasmota-CN.bin ,这个是简体中文版

下载安信可烧录软件 开发工具清单 | 安信可科技 (ai-thinker.com) 下载烧录WiFi固件工具:ESP_DOWNLOAD_TOOL
把ESP-01S插上烧录器并接上电脑电脑

解压烧录软件并运行,运行后会自动安装驱动。如果没有安装就到 开发工具清单 | 安信可科技 (ai-thinker.com) 下载 "串口驱动",安装驱动后会出现一个COM设备

image.png

image.png

在烧录软件里选ESP8266,develop

image.png

第一行选择刚下载的固件,并在前面打钩 ,在@后面输 0X000000
COM:选刚刚在设备管理器上看到的COM口,我这是COM3

点START烧录固件

显示完成表示烧录完成。到此tasmota刷写完成,关掉烧录软件

配置Tasmota

把烧录器和ESP-01S重新拔插一下,然后到手机上操作。

image.png

打开手机WIFI,搜索WIF 手机上会多一个tasmota开头的WIFI,选择并连接。

image.png

连上后就会出现这个配置WIFi界面,如果没有出现,就到浏览器里面 输入 192.168.4.1 可以看到这个界面,在这里填上路由器的WIF名称和密码。

点击保存

然后到路由器里看DHCP给Tasmota分配的IP,到浏览器里打开IP地址

image.png

image.png

image.png

填上安装的MQTT信息,设置好后保存,保存后会重启。

image.png

image.png

保存后会重启,重启后到主菜单,上面会多出电压电流等信息,不过数据都是0,因为还没有接上PZE-004T

现在设置好了,把ESP-01S和烧录器从电脑上拔下,再把ESP-01S从烧录器上拔下

接线

image.png

所有线接好后
用电工胶带把电源模块粘在外壳上

测试

把互感器接到插入红黑(图片上最粗的两根)其中一根线上,然后将红线接入火,黑色接入零(插线板左零右火)
注意,可以先接一个插头再测试,直接插电危险!!!

image.png

然后访问IP就可以看到电压等信息,就是成功了

现在可以装到强电箱上去了

1645245081492.jpg

我这里互感器是圈在总闸下面的火线上,火线是接在照明的空开下面

Home Assistant 里面添加MQTT插件

image.png

image.png

服务器填 :mosquitto.ix-mosquitto.svc.cluster.local
用户名和密码留空

image.png

如果MQTT设置正确,就会出现一个已发现Tasmota,点击配置来配置tasmota,直接默认点击确认即可

添加电费配置文件

使用finalshell链接NAS,找到homeassistant的配置目录,打开configuration.yaml

添加配置

sensor:
#--------dianbiao  start--------------
#总电量
  - platform: mqtt
    name: "Meter_Total"
    state_topic: "tele/tasmota/SENSOR"
    value_template: "{{value_json['ENERGY'].Total }}"
    unit_of_measurement: "KWH"
 
#昨日电量
  - platform: mqtt
    name: "Meter_zuori_dianliang"
    state_topic: "tele/tasmota/SENSOR"
    value_template: "{{value_json['ENERGY'].Yesterday }}"
    unit_of_measurement: "KWH"

#今日电量
  - platform: mqtt
    name: "Meter_jinri_dianliang"
    state_topic: "tele/tasmota/SENSOR"
    value_template: "{{value_json['ENERGY'].Today }}"
    unit_of_measurement: "KWH"
#当前功率
  - platform: mqtt
    name: "Meter_gonglv"
    state_topic: "tele/tasmota/SENSOR"
    value_template: "{{value_json['ENERGY'].Power }}"
    unit_of_measurement: "W"
#功率因素
  - platform: mqtt
    name: "Meter_yinshu"
    state_topic: "tele/tasmota/SENSOR"
    value_template: "{{value_json['ENERGY'].Factor }}"
    unit_of_measurement: " "
#当前电压
  - platform: mqtt
    name: "Meter_dianya"
    state_topic: "tele/tasmota/SENSOR"
    value_template: "{{value_json['ENERGY'].Voltage }}"
    unit_of_measurement: "V"
#当前电流
  - platform: mqtt
    name: "Meter_dianliu"
    state_topic: "tele/tasmota/SENSOR"
    value_template: "{{value_json['ENERGY'].Current }}"
    unit_of_measurement: "A"

#总电量--??
  - platform: template
    sensors:
      zong_dianliang: 
        value_template: >
          {{states("sensor.Meter_Total")|float | round(2)}}
        unit_of_measurement: "KWH"

#今日总电量--??
  - platform: template
    sensors:
      jinri_zong_dianliang: 
        value_template: >
          {{states("sensor.Meter_jinri_dianliang")|float | round(2)}}
        unit_of_measurement: "KWH"

#每天峰OR谷电费
  - platform: template
    sensors:
      dianfei_daily_feng: #峰时 
        value_template: >
          {{(states("sensor.daily_energy_peak") | float * 0.5953) | round(2)}}
        unit_of_measurement: "RMB"

  - platform: template
    sensors:
      dianfei_daily_gu: #谷时 
        value_template: >
          {{(states("sensor.daily_energy_offpeak") | float * 0.3153) | round(2)}}
        unit_of_measurement: "RMB"

#每月峰OR谷电费
  - platform: template
    sensors:
      dianfei_monthly_feng: #峰时 
        value_template: >
          {{(states("sensor.monthly_energy_peak") | float * 0.5953) | round(2)}}
        unit_of_measurement: "RMB"

  - platform: template
    sensors:
      dianfei_monthly_gu: #谷时 
        value_template: >
          {{(states("sensor.monthly_energy_offpeak") | float * 0.3153) | round(2)}}
        unit_of_measurement: "RMB"

#今日总电费
  - platform: template
    sensors:
      daily_zong_dianfei: 
        value_template: >
          {{states("sensor.dianfei_daily_feng")|float + states("sensor.dianfei_daily_gu") | float | round(2)}}
        unit_of_measurement: "RMB"

#本月总电费
  - platform: template
    sensors:
      monthly_zong_dianfei: 
        value_template: >
          {{states("sensor.dianfei_monthly_feng")|float + states("sensor.dianfei_monthly_gu") | float | round(2)}}
        unit_of_measurement: "RMB"

#峰OR谷电价标记处理
utility_meter:
  energy:
   # source: sensor.zong_dianliang
    source: sensor.meter_total
    cycle: monthly

  daily_energy:
    source: sensor.energy   #utility_meter定义
    cycle: daily
    tariffs:
      - peak
      - offpeak
  monthly_energy:
    source: sensor.energy  #utility_meter定义
    cycle: monthly
    tariffs:
      - peak
      - offpeak

修改峰谷电费即可

添加配置在automations.yaml

- id: '1581863480417'
  alias: 峰谷电费
  description: 标记峰-谷电量
  trigger:
  - at: 08:00:00
    platform: time
  - at: '22:00:00'
    platform: time
  condition: []
  action:
  - entity_id: utility_meter.daily_energy
    service: utility_meter.next_tariff
  - entity_id: utility_meter.monthly_energy
    service: utility_meter.next_tariff

修改峰谷时间

保存后重启Home Assistant

image.png

点击编辑,添加卡片,如图对应的实体名的中文,点击铅笔图标可以修改名称

image.png

最终完成!

本文部分内容来自以下

感谢:
家庭用电量及电费统计模块 (Home Assistant 、Node-RED、MQTT综合应

智能传感培正PZEM-004T峰谷电费统计HA配置

更多峰谷电费的模型可以去翰思彼岸

最后修改:2022 年 02 月 19 日
感谢您的支持