找回密码
 立即注册

微信扫码登录

搜索
查看: 397|回复: 5

[技术探讨] 痛苦啊,统计空调年月日运行时间咋弄啊

[复制链接]

1

主题

1

回帖

27

积分

新手上路

积分
27
金钱
25
HASS币
0
发表于 2025-7-8 18:05:05 | 显示全部楼层 |阅读模式
呜呜呜,好痛苦,部门有好多台中央空调, image.png 我想统计每天每周每月的运行时间、还有总运行时间、还有每台空调运行时间占总时间的比率,我想输出表格和曲线来做数据分析,可是我死活弄不成啊,崩溃啊,我不是编程专业的,纯靠cursor,但是HA系统有很多自己的规则,呜呜呜,咋搞啊,求大佬指导
回复

使用道具 举报

jjcs 手机认证

56

主题

1991

回帖

8069

积分

论坛元老

积分
8069
金钱
6012
HASS币
50
发表于 2025-7-8 19:49:38 | 显示全部楼层
用nodered
折腾精神永存,感恩感谢论坛每一位愿意分享和帮助过我的大佬,论坛有你更精彩
回复

使用道具 举报

1

主题

27

回帖

241

积分

中级会员

积分
241
金钱
213
HASS币
0
发表于 2025-7-8 19:55:40 | 显示全部楼层
同意楼上。你的 home assistant 支持 add-on 的话,你部署一个 node-red 服务(你可以理解为这是一个支持你自己灵活编排执行流程、写一些简单的代码脚本的服务)。
然后搞一个定时触发器,触发后把上面你那几台空调的相关实体属性,用 JavaScript 搞个遍历,加加减减,就能得到你要的信息了。
回复

使用道具 举报

1

主题

1

回帖

27

积分

新手上路

积分
27
金钱
25
HASS币
0
 楼主| 发表于 7 天前 | 显示全部楼层
conanlau 发表于 2025-7-8 19:55
同意楼上。你的 home assistant 支持 add-on 的话,你部署一个 node-red 服务(你可以理解为这是一个支持你 ...

请问这样弄能输出结果么?输出个excel或者csv格式的文件
回复

使用道具 举报

16

主题

705

回帖

3813

积分

论坛元老

HomeAssistant

积分
3813
金钱
3087
HASS币
20
发表于 7 天前 | 显示全部楼层
544551869 发表于 2025-7-9 08:10
请问这样弄能输出结果么?输出个excel或者csv格式的文件

每行的数据用逗号隔开输出到文本文件,最后改成.csv就行
回复

使用道具 举报

45

主题

295

回帖

2495

积分

金牌会员

积分
2495
金钱
2155
HASS币
0
发表于 7 天前 | 显示全部楼层
本帖最后由 huyifanstar 于 2025-7-9 21:01 编辑

开关的时间、功率什么的存到mysql数据库里,grafana去查这个数据库




大致建表SQL:

CREATE TABLE `air_conditioner_log` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `room` VARCHAR(10) NOT NULL,
  `switch_status` ENUM('on', 'off') NOT NULL,
  `power` FLOAT DEFAULT NULL,
  `timestamp` DATETIME NOT NULL
);



nodered配合插入

示例:


var mqttValue = msg.payload; // MQTT 发来的状态,比如 "on" 或 "off"
var currentPower = msg.power || 1000; // 如果你能从 msg 里拿到功率,就用,否则默认 1000W

var sqlQuery = "INSERT INTO `air_conditioner_log` (`room`, `switch_status`, `power`, `timestamp`) " +
               "VALUES ('cw', '" + mqttValue + "', " + currentPower + ", NOW())";

msg.topic = sqlQuery;
return msg;




如果用到了mqtt:

var data = msg.payload;
var switchStatus = data.switch_status;
var power = data.power;

var sqlQuery = "INSERT INTO `air_conditioner_log` (`room`, `switch_status`, `power`, `timestamp`) " +
               "VALUES ('cw', '" + switchStatus + "', " + power + ", NOW())";

msg.topic = sqlQuery;
return msg;




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-7-16 17:39 , Processed in 0.080976 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表