找回密码
 立即注册

微信扫码登录

搜索
查看: 190|回复: 3

[技术探讨] 通过pid实现空调恒温

[复制链接]

2

主题

17

回帖

338

积分

中级会员

积分
338
金钱
319
HASS币
0
发表于 昨天 14:46 | 显示全部楼层 |阅读模式
本帖最后由 渴望阳光112 于 2025-8-1 15:23 编辑

首先贴一个原贴地址:https://rudd-o.com/linux-and-free-software/how-to-get-sub-degree-accuracy-in-home-temperature-using-a-dumb-a-c-and-esphome
在白嫖的gemini帮助下对代码进行了修改。外接温湿度传感器,esp8266负责计算和输出,homeassistant作为控制界面,最后nodered负责执行。(实际上这是第二版了,第一版通过红外控制,只需要homeassistant作为控制界面,适用无法接入homeassistant的空调)
1. 芯片选择:作为小白,最开始选择的是带有红外接收发射功能的esp8266板子,需要另外购买cp2102串口转换模块,板子需要焊接针脚,为了提升焊接质量,斥巨资买了白菜t12焊台,后来才知道有可以直接用type接口连接电脑刷写的esp8266板子。
2. 安装esphome,具体教材自己搜索或者问AI,我装的群晖docker中esphome网页版
3. 接下来编译固件,根据自己情况对固件进行修改。具体改哪些下边#有备注,名称之类的也可以修改
4.固件编译好之后下载,刷入esphome(具体怎么刷省略,自己搜教程)

5.在homeassistant中esphome集成中自动发现并配置,在诊断中启动p、i、d值,方便调试pid参数。最好新建一个界面用于调试,提前下载apexcharts卡片,编译一下,直观一点,只需要把里面的实体改一下就行

type: custom:apexcharts-card
header:
  show: true
  title: PID 实时状态监控
  show_states: true
  colorize_states: true
graph_span: 3h
update_interval: 10s
apex_config:
  tooltip:
    shared: true
    intersect: false
    x:
      format: HH:mm:ss
  xaxis:
    crosshairs:
      show: true
yaxis:
  - id: temp
    min: 16
    max: 30
    decimals: 1
    apex_config:
      title:
        text: 温度 (°C)
      tickAmount: 6
  - id: pid
    opposite: true
    decimals: 2
    apex_config:
      title:
        text: PID 值
series:
  - entity: sensor.shu_fang_ti_gan_wen_du_da_kin_heat_index
    name: 房间温度
    yaxis_id: temp
    type: line
    stroke_width: 2
    color: "#3498db"
  - entity: climate.ir_transceiver_11_living_space
    attribute: temperature
    name: 目标温度
    yaxis_id: temp
    type: line
    stroke_width: 2
    color: "#e74c3c"
    show:
      in_header: false
  - entity: sensor.ir_transceiver_11_living_space_pid_p
    name: P值
    yaxis_id: pid
    type: area
    stroke_width: 1
    opacity: 0.2
    color: "#2ecc71"
  - entity: sensor.ir_transceiver_11_living_space_pid_i
    name: I值
    yaxis_id: pid
    type: area
    stroke_width: 1
    opacity: 0.2
    color: "#f1c40f"
  - entity: sensor.ir_transceiver_11_living_space_pid_d
    name: D值
    yaxis_id: pid
    type: area
    stroke_width: 1
    opacity: 0.2
    color: "#9b59b6"


6.最后就是nodered中的执行部分,需要修改各个节点里面的实体,并且修改“整合指令+有效性检查”这个节点中“// 获取三个传感器的当前状态”下三个实体风速、模式和温度的具体名称
7.最后就是在ai的帮助下进行pid参数调试,这是一个坑,不怕折腾的上吧




截屏2025-08-01 14.33.03.png
截屏2025-08-01 14.52.36.png

woshi.yaml.zip

3.64 KB, 下载次数: 0

售价: 1 金钱  [记录]  [购买]

pid调节代码

nodered流.json.zip

3.31 KB, 下载次数: 0

评分

参与人数 1金钱 +12 收起 理由
隔壁的王叔叔 + 12 高手,这是高手!

查看全部评分

回复

使用道具 举报

13

主题

182

回帖

1470

积分

金牌会员

积分
1470
金钱
1270
HASS币
20
发表于 昨天 15:05 | 显示全部楼层
这都让你玩出花来了,牛!!!!
回复

使用道具 举报

14

主题

1608

回帖

5290

积分

论坛元老

积分
5290
金钱
3668
HASS币
0
发表于 昨天 16:00 | 显示全部楼层
挺好,感谢分享,加分
回复

使用道具 举报

mhbj 手机认证

3

主题

17

回帖

117

积分

注册会员

积分
117
金钱
97
HASS币
0
发表于 昨天 16:51 | 显示全部楼层
真牛啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 21:56 , Processed in 0.102336 second(s), 13 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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