兴趣内容
精选
最新
家庭用电量及电费统计模块 (Home Assistant 、Node-RED、MQTT综合应
【写作说明】:看了 frLab的个人主页| 什么值得买 smzdm.com 的几篇关于 Home Assistant 的文章Home Assistant 篇一:从Node-RED与微信推送谈起_NAS存储_什么值得买 smzdm.comHome Assistant 篇二:群晖Docker安装Home Assistant_NAS存储_什么值得买 smzdm.comHome Assistant 篇三:给HA插上翅膀——HACS与MQTT_NAS存储_什么值得买 smzdm.com总想搞个事情出来,在网上找了些资料,感觉搞一个家庭用电量及电费统计模块很不错,又能就习一下Home Assistant和Node-RED,电路又很简单。总用购买了五个配件:peacefair品牌交流电压电流功率因数电能通信模块模组TTL串口通信-tmall.com锟斤拷猫 最好购买1000A开合式CT。我还买了TTL转USB线,但没有用到。首购金10元,到手 40元CH340C下载烧录器ESP8266 ESP-01 ESP-01S WIFI模块下载器 调试器-tmall.com锟斤拷猫   最好购买ESP-01S+CH340C下载烧录器,烧录器以后还可以使用。17.5元220V转5V9V12V400/500/700MA/1A隔离开关电源模块AC-DC降压模块-tmall.com锟斤拷猫 200V转5V电源模块,800ma应该够了,我买的是1A的。8元LM2596S DC-DC直流可调降压电源模块稳压板3A 12/24转12/5/3.3V-tmall.com锟斤拷猫 降压模块3.3V输出,也可以购买5V转3.3V模块,5V转3.3V的模块应该还要便宜点。3.5元40P彩色杜邦线 母对母 公对母 公对公 长10CM/20CM/30CM/40CM-tmall.com锟斤拷猫  还有这个母对母的杜邦线,家里有就没买了。2元。还要电铬铁和焊锡丝,这个没有可以到但电子产品的借用一下,也可以自己购买,我个自家有就没算成本了。总共花费71元。给大家总体展示一下。   安装软件服务首先安装 Home Assistant 、 Node-RED、QTT 和设置Node-RED的企业推送  参考  frLab 的三篇Home Assistant文章,我就不详细说了,上链接。Home Assistant 篇一:从Node-RED与微信推送谈起,Home Assistant 篇二:群晖Docker安装Home Assistant,Home Assistant 篇三:给HA插上翅膀——HACS与MQTT。硬件组装购买硬件:     peacefair PZEM-004T 交流电压电流功率等信息测量通信模块。如果要测家庭总用电量请购买100A的,10A只能测2200W以下功率的电器。互感器CT最好购买开合式的,贵7元,这样就可以不用拆强电箱的进线。peacefair品牌交流电压电流功率因数电能通信模块模组TTL串口通信41元天猫精选去购买      CH340C下载烧录器+ESP-01S,CH340C下载烧录器不是必须购买,如果有一定基础可以自己用USB线烧录,以前有的可以重复使用。WIFI模块最好购买ESP-01S,ESP-01要多接两个电阻,接线也复杂很多。看电路图:CH340C下载烧录器ESP8266ESP-01ESP-01SWIFI模块下载器调试器10元天猫精选去购买   电源模块:因为peacefair PZEM-004T要5V输入,ESP-01S要3.3V输入,所有要有两个模块 220V转5V和5V转3.3V。也有些模块有5V和3.3V两种输出。220V转5V9V12V400/500/700MA/1A隔离开关电源模块AC-DC降压模块4.8元天猫精选去购买  LM2596SDC-DC直流可调降压电源模块稳压板3A12/24转12/5/3.3V3.5元天猫精选去购买    母对母杜邦线,接线用。40P彩色杜邦线母对母公对母公对公长10CM/20CM/30CM/40CM2元天猫精选去购买刷写固件:刷 Tasmota 下载固件 ota.tasmota.com/tasmota/release/  或者  github.com 下载:tasmota-CN.bin ,这个是简体中文版下载安信可烧录软件 开发工具清单 | 安信可科技 ai-thinker.com 下载第3个 “3、烧录WiFi固件工具:ESP_DOWNLOAD_TOOL”  把ESP-01S插上烧录器并接上电脑电脑解压烧录软件并运行,运行后会自动安装驱动。如果没有安装就到 开发工具清单 | 安信可科技 ai-thinker.com 下载 "串口驱动",安装驱动后会出现一个COM设备在烧录软件里选ESP8266,develop。第一行选择刚下载的固件,并在前面打钩,在@后面输 0X000000,FLASH SIZE 选 8Mbit,COM:选刚刚在设备管理器上看到的COM口,我这是COM3,其它的看和我上面对比一下,也选一样的。点START烧录固件。显示完成表示烧录完成。到此tasmota刷写完成,关掉烧录软件。配制WIFI :配制ESP-01S的WIFI把烧录器和ESP-01S从电脑的USB接口上扯出,再从新插到电脑USB接口上,然后到手机上操作。打开手机WIFI,搜索WIF 手机上会多一个tasmota开头的WIFI,后面的字母数字和我手机上的不一样。选择并连接。连上后就会出现这个配置WIFi界面,如果没有出现,就到浏览器里面 输入 192.168.4.1 可以看到这个界面,在这里填上路由器或AP的WIF名称和密码。点击保存,会跳转显示ESP-01S获取到的IP信息页面,因为显示时间比较短,没有截到图。如果在上一步没有看到ESP-01S的IP,就到路由器DHCP客户端上去查看,一个以tasmota开头的设置。到路由器上查看DHCP客户端IP就不详说了,这个大家应该都会。到电脑浏览器里输入ESP-01S的IP(我的是192.168.222.125),如果看到这个界面说明WIFI设置成功,可以到网页上设置了。设置ESP-01S填上安装的MQTT信息,安装MQTT可以看 Home Assistant 篇三:给HA插上翅膀——HACS与MQTT_NAS存储_什么值得买 smzdm.com设置好后保存,保存后会重启。保存后会重启,重启后到主菜单,上面会多出电压电流等信息,不过数据都是0,因为还没有接上PZE-004T。现在设置好了,把ESP-01S和烧录器从电脑上扯下,再把ESP-01S从烧录器上拔下。接线:现在可以装到强电箱上去了。用电工胶把电源模块胶到PZE-004T的外壳上,把ESP-001S放到外里。互感器我是套在入户零线上,因为火线空间太小不好装。现在所有安装都完成了。到 Home Assistant 里面添加MQTT插件这装Home Assistant按 Home Assistant 篇二:群晖Docker安装Home Assistant_NAS存储_什么值得买 smzdm.com 这篇文章安装添加集成如果有需要可以把他们添加个中文别名,点想要修改的一行到这Home Assistant就可以显示电压电流功率总用电量等信息了。月初自动清零和显示电费信息编辑 /config/configuration.yaml 文件,怎么找到这个文件请查看 Home Assistant 篇二:群晖Docker安装Home Assistant_NAS存储_什么值得买 smzdm.com ,添加以下代码,用来显示电费和月初1号0点清空总电量。sensor:          #本月电费  - platform: template    sensors:      zong_dianfei:         value_template: >          {% set dianlian=states"sensor.tasmota_energy_total" | float %}          {% set onedianjia=0.588 %}          {% set twodianjia=0.05 %}          {% set threedianjia=0.25 %}          {% set onedianlian=200 %}          {% set twodianlian1=350 %}          {% set twodianlian2=450 %}          {% set two1month=[4,5,6,10,11,12] %}          {% if now.month in two1month %}          {% set twodianlian=twodianlian1 %}          {% else %}          {% set twodianlian=twodianlian2 %}          {% endif %}          {% if dianlian > twodianlian %}          {% set threedianfei= dianlian - twodianlian * threedianjia %}          {% else %}          {% set threedianfei=0 %}          {% endif %}          {% if dianlian > onedianlian %}          {% set twodianfei= dianlian - onedianlian * twodianjia %}          {% else %}          {% set twodianfei=0 %}          {% endif %}          {% set zong_dianfei=dianlian * onedianjia  + twodianfei + threedianfei %}          {% ifzong_dianfei>0 %}          {{ zong_dianfei | round2 }}          {% endif %}                  friendly_name: 'zong_dianfei'         unit_of_measurement: "RMB"    #今日电费,本月电费-本月今天以前的电费  - platform: template    sensors:      jintian_dianfei:         value_template: >          {% set dianlian=states"sensor.tasmota_energy_total" | float %}          {% set jintiandianlian=states"sensor.tasmota_energy_today" | float %}          {% set onedianjia=0.588 %}          {% set twodianjia=0.05 %}          {% set threedianjia=0.25 %}          {% set onedianlian=200 %}          {% set twodianlian1=350 %}          {% set twodianlian2=450 %}          {% set two1month=[4,5,6,10,11,12] %}          {% if now.month in two1month %}          {% set twodianlian=twodianlian1 %}          {% else %}          {% set twodianlian=twodianlian2 %}          {% endif %}          {% if dianlian > twodianlian %}          {% set threedianfei= dianlian - twodianlian * threedianjia %}          {% else %}          {% set threedianfei=0 %}          {% endif %}          {% if dianlian > onedianlian %}          {% set twodianfei= dianlian - onedianlian * twodianjia %}          {% else %}          {% set twodianfei=0 %}          {% endif %}          {% set zongdianfei= dianlian * onedianjia  + twodianfei + threedianfei %}          {% set before_dianliang= dianlian - jintiandianlian %}          {% if before_dianliang > twodianlian %}          {% set threedianfei= before_dianliang - twodianlian * threedianjia %}          {% else %}          {% set threedianfei=0 %}          {% endif %}          {% if before_dianliang > onedianlian %}          {% set twodianfei= before_dianliang - onedianlian * twodianjia %}          {% else %}          {% set twodianfei=0 %}          {% endif %}          {% set before_dianfei= before_dianliang * onedianjia  + twodianfei + threedianfei %}          {% set jintian_dianfei=zongdianfei - before_dianfei %}          {% ifjintian_dianfei>0 %}          {{ jintian_dianfei | round2 }}          {% endif %}                  friendly_name: 'jintian_dianfei'         unit_of_measurement: "RMB"    #昨日电费,本月今天以前的电费-本月昨天以前的电费  - platform: template    sensors:      zuotian_dianfei:         value_template: >          {% set dianlian=states"sensor.tasmota_energy_total" | float %}          {% set jintiandianlian=states"sensor.tasmota_energy_today" | float %}          {% set zuotiandianlian=states"sensor.tasmota_energy_yesterday" | float %}          {% set onedianjia=0.588 %}          {% set twodianjia=0.05 %}          {% set threedianjia=0.25 %}          {% set onedianlian=200 %}          {% set twodianlian1=350 %}          {% set twodianlian2=450 %}          {% set two1month=[4,5,6,10,11,12] %}          {% if now.month in two1month %}          {% set twodianlian=twodianlian1 %}          {% else %}          {% set twodianlian=twodianlian2 %}          {% endif %}          {% set before_dianliang= dianlian - jintiandianlian %}          {% if before_dianliang > twodianlian %}          {% set threedianfei= before_dianliang - twodianlian * threedianjia %}          {% else %}          {% set threedianfei=0 %}          {% endif %}          {% if before_dianliang > onedianlian %}          {% set twodianfei= before_dianliang - onedianlian * twodianjia %}          {% else %}          {% set twodianfei=0 %}          {% endif %}          {% set before_dianfei= before_dianliang * onedianjia  + twodianfei + threedianfei %}          {% set zuotian_before_dianliang= dianlian - jintiandianlian - zuotiandianlian %}          {% if zuotian_before_dianliang > twodianlian %}          {% set threedianfei= zuotian_before_dianliang - twodianlian * threedianjia %}          {% else %}          {% set threedianfei=0 %}          {% endif %}          {% if zuotian_before_dianliang > onedianlian %}          {% set twodianfei= zuotian_before_dianliang - onedianlian * twodianjia %}          {% else %}          {% set twodianfei=0 %}          {% endif %}          {% set zuotian_before_dianfei= zuotian_before_dianliang * onedianjia  + twodianfei + threedianfei %}          {% set zuotian_dianfei = before_dianfei - zuotian_before_dianfei %}          {% if zuotian_dianfei>0 %}          {{ zuotian_dianfei | round2 }}          {% endif %}                  friendly_name: 'zuotian_dianfei'         unit_of_measurement: "RMB"#计量清零automation:  - id: 'monitor_clear'    alias: 月初清零电表    initial_state: true    hide_entity: false    trigger:      - platform: template        value_template: '{{ states"sensor.tasmota_energy_today" | round3 == 0.000 }}'    condition:      - condition: template        value_template: '{{ now.strftime"%d" | int == 1 }}'    action:      - service: mqtt.publish        data:          topic: 'cmnd/sonoff/EnergyReset2'          payload: '0'      - service: mqtt.publish        data:          topic: 'cmnd/sonoff/EnergyReset3'          payload: '0'里面的 0.588 为基本电价,0.05为二档电价-一档电价,0.25三档电价-二档电价,4,5,6,10,11,12这几个月为春秋季二档电量为350度,其它几个月为冬夏季二档电量为450度。如果不同就按照修改。这样就可以每月1号0点把总电量清零变成月电量和显示电费了。用 Node-RED 把用电信息推送到企业微信Home Assistant 篇一:从Node-RED与微信推送谈起_NAS存储_什么值得买 smzdm.com 这篇已经告诉我们怎么用Node_RED把信息推送到企业微信,现在我们要做的就是Node-RED提取Home Assistant信息处理好后再推送。Node-RED安装Home Assistant插件登录安装好的Node-RED,再到节点管理添加 node-red-contrib-home-assistant-websocket 插件 导入以下流程[    {        "id": "dcbd8ed9f4179814",        "type": "inject",        "z": "b58a7128aa4b97b4",        "name": "每天9点发送用电信息",        "props": [            {                "p": "payload"            },            {                "p": "topic",                "vt": "str"            }        ],        "repeat": "",        "crontab": "00 09 * * *",        "once": false,        "onceDelay": 0.1,        "topic": "",        "payloadType": "date",        "x": 460,        "y": 180,        "wires": [            [                "82a8fda3f504513e",                "1dc399c57821bd14",                "5cd3531c2512bffd",                "9f24f15912873f5b"            ]        ]    },    {        "id": "82a8fda3f504513e",        "type": "api-current-state",        "z": "b58a7128aa4b97b4",        "name": "昨天用电量",        "server": "e8349c19021c66e6",        "version": 2,        "outputs": 1,        "halt_if": "",        "halt_if_type": "num",        "halt_if_compare": "is",        "entity_id": "sensor.tasmota_energy_yesterday",        "state_type": "num",        "blockInputOverrides": false,        "outputProperties": [            {                "property": "payload1",                "propertyType": "msg",                "value": "",                "valueType": "entityState"            },            {                "property": "data1",                "propertyType": "msg",                "value": "",                "valueType": "entity"            }        ],        "override_topic": false,        "state_location": "payload",        "override_payload": "msg",        "entity_location": "data",        "override_data": "msg",        "x": 690,        "y": 120,        "wires": [            [                "84eed89c4ae0a7e5"            ]        ]    },    {        "id": "96391bb46eab6444",        "type": "function",        "z": "b58a7128aa4b97b4",        "name": "",        "func": "nvar message=msg.payload;nnvar desc='本月已用电量:'+ message[2] + 'KWHrn';ndesc+='本月已用电费:'+ message[3] + '元rn';ndesc+='昨天用电量:'+ message[0] + 'KWHrn';ndesc+='昨天电费:'+ message[1] + '元';nnwechat = {n    "touser" : "@all",n    "msgtype": "textcard",n    "textcard": {n        "title": '家庭用电详情',n        "description" : desc,n        "url" : `Home Assistant网址和端口`,n        "btntxt":"查看详情",n    },n}nnmsg.payload = {};nmsg.payload = wechat;nnreturn msg;",        "outputs": 1,        "noerr": 0,        "initialize": "",        "finalize": "",        "libs": [],        "x": 770,        "y": 420,        "wires": [            [                "2252d013b647ef4f"            ]        ]    },    {        "id": "2252d013b647ef4f",        "type": "bizwechat-push",        "z": "b58a7128aa4b97b4",        "name": "",        "bizwechat": "c36787cd99e1d359",        "x": 900,        "y": 420,        "wires": [            []        ]    },    {        "id": "1dc399c57821bd14",        "type": "api-current-state",        "z": "b58a7128aa4b97b4",        "name": "昨天电费",        "server": "e8349c19021c66e6",        "version": 2,        "outputs": 1,        "halt_if": "",        "halt_if_type": "str",        "halt_if_compare": "is",        "entity_id": "sensor.zuotian_dianfei",        "state_type": "num",        "blockInputOverrides": false,        "outputProperties": [            {                "property": "payload2",                "propertyType": "msg",                "value": "",                "valueType": "entityState"            },            {                "property": "data2",                "propertyType": "msg",                "value": "",                "valueType": "entity"            }        ],        "override_topic": false,        "state_location": "payload",        "override_payload": "msg",        "entity_location": "data",        "override_data": "msg",        "x": 680,        "y": 160,        "wires": [            [                "84eed89c4ae0a7e5"            ]        ]    },    {        "id": "5cd3531c2512bffd",        "type": "api-current-state",        "z": "b58a7128aa4b97b4",        "name": "本月已用电量",        "server": "e8349c19021c66e6",        "version": 2,        "outputs": 1,        "halt_if": "",        "halt_if_type": "str",        "halt_if_compare": "is",        "entity_id": "sensor.tasmota_energy_total",        "state_type": "num",        "blockInputOverrides": false,        "outputProperties": [            {                "property": "payload3",                "propertyType": "msg",                "value": "",                "valueType": "entityState"            },            {                "property": "data3",                "propertyType": "msg",                "value": "",                "valueType": "entity"            }        ],        "override_topic": false,        "state_location": "payload",        "override_payload": "msg",        "entity_location": "data",        "override_data": "msg",        "x": 700,        "y": 200,        "wires": [            [                "84eed89c4ae0a7e5"            ]        ]    },    {        "id": "9f24f15912873f5b",        "type": "api-current-state",        "z": "b58a7128aa4b97b4",        "name": "本月已用电费",        "server": "e8349c19021c66e6",        "version": 2,        "outputs": 1,        "halt_if": "",        "halt_if_type": "str",        "halt_if_compare": "is",        "entity_id": "sensor.zong_dianfei",        "state_type": "num",        "blockInputOverrides": false,        "outputProperties": [            {                "property": "payload4",                "propertyType": "msg",                "value": "",                "valueType": "entityState"            },            {                "property": "data4",                "propertyType": "msg",                "value": "",                "valueType": "entity"            }        ],        "override_topic": false,        "state_location": "payload",        "override_payload": "msg",        "entity_location": "data",        "override_data": "msg",        "x": 700,        "y": 240,        "wires": [            [                "84eed89c4ae0a7e5"            ]        ]    },    {        "id": "bbfb4fd669583aba",        "type": "debug",        "z": "b58a7128aa4b97b4",        "name": "",        "active": false,        "tosidebar": true,        "console": true,        "tostatus": true,        "complete": "payload",        "targetType": "msg",        "statusVal": "payload",        "statusType": "auto",        "x": 920,        "y": 300,        "wires": []    },    {        "id": "a7061ef619785c6a",        "type": "join",        "z": "b58a7128aa4b97b4",        "name": "合并成数组",        "mode": "custom",        "build": "array",        "property": "payload",        "propertyType": "msg",        "key": "topic",        "joiner": "n",        "joinerType": "str",        "accumulate": false,        "timeout": "",        "count": "4",        "reduceRight": false,        "reduceExp": "",        "reduceInit": "",        "reduceInitType": "",        "reduceFixup": "",        "x": 430,        "y": 420,        "wires": [            [                "759804d789b42f8e",                "ea66b8ca18cc54ae"            ]        ]    },    {        "id": "84eed89c4ae0a7e5",        "type": "function",        "z": "b58a7128aa4b97b4",        "name": "合并",        "func": "nreturn { payload:[msg.payload1, msg.payload2,msg.payload3,msg.payload4]};n",        "outputs": 1,        "noerr": 0,        "initialize": "",        "finalize": "",        "libs": [],        "x": 890,        "y": 180,        "wires": [            [                "a7061ef619785c6a"            ]        ]    },    {        "id": "759804d789b42f8e",        "type": "debug",        "z": "b58a7128aa4b97b4",        "name": "",        "active": false,        "tosidebar": true,        "console": true,        "tostatus": true,        "complete": "payload",        "targetType": "msg",        "statusVal": "payload",        "statusType": "auto",        "x": 800,        "y": 540,        "wires": []    },    {        "id": "ea66b8ca18cc54ae",        "type": "function",        "z": "b58a7128aa4b97b4",        "name": "合并成一个数组",        "func": "var redata=[0,0,0,0]nfor var x in msg.payloadn{n    var data=msg.payload[x];n    forvar i =0;i=i-1 && data[i] && data[i]>0{n            redata[i]=data[i];n        }n    }n}nreturn { payload:redata};n",        "outputs": 1,        "noerr": 0,        "initialize": "",        "finalize": "",        "libs": [],        "x": 620,        "y": 420,        "wires": [            [                "bbfb4fd669583aba",                "96391bb46eab6444"            ]        ]    },    {        "id": "e8349c19021c66e6",        "type": "server",        "name": "Home Assistant",        "version": 1,        "legacy": false,        "addon": false,        "rejectUnauthorizedCerts": true,        "ha_boolean": "y|yes|true|on|home|open",        "connectionDelay": true,        "cacheJson": true    },    {        "id": "c36787cd99e1d359",        "type": "bizwechat-configurator",        "name": "企业微信推送",        "port": "3001",        "corpid": "",        "agentid": "",        "corpsecret": "",        "url": "",        "token": "",        "aeskey": "",        "client_id": "",        "client_secret": ""    }]   最后点部署。。。。到此所有工作做完了。最后欢迎收藏、评论、点赞。  
微信的“支付有优惠”如何赠送金币给好友
微信的支付有优惠小程序可以收集金币,终于换购一定金额的免费提现券,但是一个额度的兑换券一周只能兑换一次,比较麻烦,想委托身边的朋友帮忙购买,他们往往又没有金币,怎么办呢?唯一的解决办法就是把你多的金币赠送给好友一些。如何赠送呢?【1】打开微信小程序“支付有优惠”【2】在存放金币的瓶子界面,把手机头朝下倒置。平放不行,得倒置。这样会触发金币被倒出来的功能。【3】再把手机正过来,小程序就会跳出赠送金币的界面。最多赠送9个。提示:自己做测试的话用1个试,因为不管你最后选没选赠送人,系统都会默认金币被赠送了,直到12小时没人领才会给你退回来。用这个方法可以用自己的多个微信号提现,不过我没尝试,大家可以试试。