本帖最后由 lambilly 于 2024-9-26 15:36 编辑
众所周知,国网的电费插件挂了,短期不会恢复。由于本人已使用了培正电表,加上编写了实时阶梯电价(辅助元素)、今天电费(SENSOR)、昨天电费(SENSOR)、本月电费(SENSOR),基本上实现了国网的功能,而且数据也很准,差距均在+-0.03元之内。所以与国网的只差账户余额,所以编写了以下NODE-RED流程。
1、主要是福建国网的电费是每天上午5点22分获取到前天的电费,也就是说昨天的电费还未计入到余额中。函数实现流程如下:
var payment = msg.payment; //需要充值的额度 0为不充值
var balance = msg.balance; //需校准的国网APP余额 0为保持当前余额
var yesterday_cost = msg.yesterday_cost; //需校准的昨天电费 0为保持当前昨天电费
var before_yesterday_cost = msg.before_yesterday_cost; //需校准的前天电费 0为保持当前前天电费
var last_balance = msg.last_balance; //当前余额
var last_yesterday_cost = msg.last_balance_data.attributes.yesterday_cost; //当前昨天电费
var last_before_yesterday_cost = msg.last_balance_data.attributes.before_yesterday_cost; //当前前天电费
var yu_jiao_dian_fei = 0; //最终预交电费余额
var update_time = msg.AllTime.datetime;
var today_cost = msg.today_cost;
today_cost = today_cost.toFixed(2);
if (msg.topic == "jiaozhun"){
if (balance != 0) //只校准当前余额
yu_jiao_dian_fei = balance + payment;
else //余额不变只充值
yu_jiao_dian_fei = last_balance + payment;
if(msg.yesterday_cost ==0 ) //不校准昨天电费
yesterday_cost = last_yesterday_cost;
if (msg.before_yesterday_cost == 0) //不校准前天电费
before_yesterday_cost = last_before_yesterday_cost;
}
if (msg.topic == "jifei"){
yu_jiao_dian_fei = last_balance - last_before_yesterday_cost;
before_yesterday_cost = last_yesterday_cost;
yesterday_cost = today_cost;
};
yu_jiao_dian_fei = yu_jiao_dian_fei.toFixed(2);
msg = {
payment,
balance,
today_cost,
last_balance,
yesterday_cost,
before_yesterday_cost,
yu_jiao_dian_fei,
update_time
};
return msg;
另外,昨天电费、今天电费有些人说不准。我实现的逻辑是这样的。
因为:培正电表只采集今天电量,昨天电量以及总电量,首先使用辅助元素编写本月电量,如下。
之后根据阶段电价进行月电费计算;
今天电费=月总电量*(各阶梯电费)—(月总电量-今天电量)*(各阶梯电费)
昨天电费=月总电量*(各阶梯电费)—(月总电量-昨天电量-今天电量)*(各阶梯电费)
这样就比较准。
flows.zip
(2.56 KB, 下载次数: 5)
|