成果展示
准备
本文章写的是用应用安装HA的情况,如果是用虚拟机安装的完整版,MQTT就可直接在插件(add ones)里安装
安装 Home Assistant
首先安装home assistant,参考我以前的视频
https://www.bilibili.com/video/BV1Jq4y157rU/
TrueNAS SCALE社区应用设置指定网络接口,真正独立IP,实现bt分流,修复HomeKit
安装MQTT
安装mosquitto
没有截图的地方就是默认
电量模块
购买原件
创作立场声明:本文所有商品为自费购入。
- peacefair品牌交流电压电流功率因数电能通信模块模组TTL串口通信
最好购买1000A开合式CT 43.65元 - CH340C下载烧录器ESP8266 ESP-01 ESP-01S WIFI模块下载器 调试器
最好购买ESP-01S+CH340C下载烧录器 17.5元 - 220V转5V9V12V400/500/700MA/1A隔离开关电源模块AC-DC降压模块
我买的200V转5V 1A的 8元 - LM2596S DC-DC直流可调降压电源模块稳压板3A 12/24转12/5/3.3V
(5-36v输入)转3.3V 3.5元 - 母对母的杜邦线 大家自行购买
- 电烙铁
- 电线 这个可以用不需要的电线
刷写Tasmota固件
下载固件 ota.tasmota.com/tasmota/release/ 或者 github.com 下载:tasmota-CN.bin ,这个是简体中文版
下载安信可烧录软件 开发工具清单 | 安信可科技 (ai-thinker.com) 下载烧录WiFi固件工具:ESP_DOWNLOAD_TOOL
把ESP-01S插上烧录器并接上电脑电脑
解压烧录软件并运行,运行后会自动安装驱动。如果没有安装就到 开发工具清单 | 安信可科技 (ai-thinker.com) 下载 "串口驱动",安装驱动后会出现一个COM设备
在烧录软件里选ESP8266,develop
第一行选择刚下载的固件,并在前面打钩 ,在@后面输 0X000000
COM:选刚刚在设备管理器上看到的COM口,我这是COM3
点START烧录固件
显示完成表示烧录完成。到此tasmota刷写完成,关掉烧录软件
配置Tasmota
把烧录器和ESP-01S重新拔插一下,然后到手机上操作。
打开手机WIFI,搜索WIF 手机上会多一个tasmota开头的WIFI,选择并连接。
连上后就会出现这个配置WIFi界面,如果没有出现,就到浏览器里面 输入 192.168.4.1 可以看到这个界面,在这里填上路由器的WIF名称和密码。
点击保存
然后到路由器里看DHCP给Tasmota分配的IP,到浏览器里打开IP地址
填上安装的MQTT信息,设置好后保存,保存后会重启。
保存后会重启,重启后到主菜单,上面会多出电压电流等信息,不过数据都是0,因为还没有接上PZE-004T
现在设置好了,把ESP-01S和烧录器从电脑上拔下,再把ESP-01S从烧录器上拔下
接线
用电工胶带把电源模块粘在外壳上
测试
把互感器接到插入红黑(图片上最粗的两根)其中一根线上,然后将红线接入火,黑色接入零(插线板左零右火)
注意,可以先接一个插头再测试,直接插电危险!!!
然后访问IP就可以看到电压等信息,就是成功了
现在可以装到强电箱上去了
我这里互感器是圈在总闸下面的火线上,火线是接在照明的空开下面
Home Assistant 里面添加MQTT插件
服务器填 :mosquitto.ix-mosquitto.svc.cluster.local
用户名和密码留空
如果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
点击编辑,添加卡片,如图对应的实体名的中文,点击铅笔图标可以修改名称
最终完成!
本文部分内容来自以下
感谢:
家庭用电量及电费统计模块 (Home Assistant 、Node-RED、MQTT综合应
更多峰谷电费的模型可以去翰思彼岸