『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 4544|回复: 18

[技术探讨] esphome控制12v-pwm风扇后,如何在homeassistant读取滑块的数值

[复制链接]

2

主题

99

帖子

1258

积分

论坛积极会员

积分
1258
金钱
1159
HASS币
0
发表于 2023-3-3 17:05:43 | 显示全部楼层 |阅读模式
本帖最后由 yiwlg 于 2023-3-3 17:07 编辑

各位大神,麻烦帮帮忙,在esphome文档没有找到所需的

如上图所示,如何将滑块速度变成一个可控实体,我在日志上,只能看到开关状态,谢谢
esphome部分代码:
fan:
  - platform: speed
    output: pwmfan
    name: ${device_name} Fan_speed
    #oscillation_output: pwmfan
    #speed_count: 100
    on_speed_set:
     - logger.log: "Fan Speed was changed!"

    on_turn_on:
     - logger.log: "Fan Turned On!"


1.png
2.png
回复

使用道具 举报

8

主题

119

帖子

1005

积分

论坛DIY达人

积分
1005
金钱
881
HASS币
20
发表于 2023-3-4 19:12:20 | 显示全部楼层
进开发者工具状态选项卡里看看
回复

使用道具 举报

20

主题

265

帖子

1852

积分

金牌会员

Rank: 6Rank: 6

积分
1852
金钱
1587
HASS币
0
发表于 2023-3-4 21:13:40 | 显示全部楼层

output:
  - platform: esp8266_pwm
    pin: GPIO2    #D4
    frequency: 15000 Hz
    id: pwm_output

fan:
  - platform: speed
    id: fan_speed
    output: pwm_output
    speed_count: 100
    name: "${device_name} 开关"
   
number:
  - platform: template
    icon: "mdi:fan"
    id: speed_input
    name: "${device_name} 风速"
    lambda: |-
      return id(fan_speed).speed;
    step: 1
    min_value: 30
    max_value: 100
    unit_of_measurement: "%"
    update_interval: 1s
    set_action:
      then:
        - fan.turn_on:
            id: fan_speed
            speed: !lambda "return x;"
        - component.update: fanmode
        - component.update: sensor_fanspeed

select:
  - platform: template
    icon: "mdi:fan"
    name: "${device_name} 模式"
    id: fanmode
    update_interval: 1s
    lambda: |-
      if(id(fan_speed).speed <= ${speed_low})
        return std::string("Low");
      else if(id(fan_speed).speed == ${speed_med})
        return std::string("Medium");
      else if(id(fan_speed).speed >= ${speed_full})
        return std::string("Full");
      else
        return std::string("Custom");
    set_action:
      then:
        - lambda: |-
            auto call = id(fan_speed).turn_on();
            if(x == "Low")
              call.set_speed(${speed_low});
            else if(x == "Medium")
              call.set_speed(${speed_med});
            else if(x == "Full")
              call.set_speed(${speed_full});
            else
              call.set_speed(id(speed_input).state);
              
            call.perform();
        - component.update: speed_input
        - component.update: sensor_fanspeed
    options:
      - Low
      - Medium
      - Full
      - Custom

button:
  - platform: template
    icon: "mdi:fan-speed-1"
    name: "${device_name} Low"
    id: fanlow
    on_press:
      - fan.turn_on:
          id: fan_speed
          speed: "${speed_low}"
  - platform: template
    icon: "mdi:fan-speed-2"
    name: "${device_name} Med"
    on_press:
      - fan.turn_on:
          id: fan_speed
          speed: "${speed_med}"
  - platform: template
    icon: "mdi:fan-speed-3"
    name: "${device_name} Full"
    on_press:
      - fan.turn_on:
          id: fan_speed
          speed: "${speed_full}"
  - platform: restart
    name: "${device_name} 初始化"

sensor:
  - platform: template
    id: sensor_fanspeed
    icon: "mdi:fan"
    name: "风扇速度"
    lambda: |-
      return id(fan_speed).speed;
    update_interval: 1s
    accuracy_decimals: 0
    unit_of_measurement: "%"
  - platform: dht
    pin: GPIO4    #D2
    temperature:
      name: "${device_name} Temperature"
    humidity:
      name: "${device_name} Humidity"
    model: AUTO_DETECT
    update_interval: 5s #获取频率
    

  
   
 


可以显示挡位

评分

参与人数 1金钱 +10 收起 理由
sorrypqa + 10 大神666!

查看全部评分

回复

使用道具 举报

2

主题

99

帖子

1258

积分

论坛积极会员

积分
1258
金钱
1159
HASS币
0
 楼主| 发表于 2023-3-6 14:55:00 | 显示全部楼层

感谢,我测试一下
回复

使用道具 举报

2

主题

99

帖子

1258

积分

论坛积极会员

积分
1258
金钱
1159
HASS币
0
 楼主| 发表于 2023-3-6 15:12:45 | 显示全部楼层
cmsj 发表于 2023-3-4 19:12
进开发者工具状态选项卡里看看

已经尝试过,想吧fan开关下面的进度条,暴露出来,单独控制
回复

使用道具 举报

2

主题

99

帖子

1258

积分

论坛积极会员

积分
1258
金钱
1159
HASS币
0
 楼主| 发表于 2023-3-6 15:20:49 | 显示全部楼层

可以了,感谢大神,学习到了
回复

使用道具 举报

22

主题

184

帖子

1524

积分

金牌会员

Rank: 6Rank: 6

积分
1524
金钱
1340
HASS币
10
发表于 2023-5-10 08:57:48 | 显示全部楼层
老哥请教一下,esphome怎么控制pwm风扇啊,要怎么接线
我的pwm风扇的供电是单独用了个12v的电源供电,第三个引脚空着,esphome的GPIO16和pwm风扇的pwm引脚对接的,在hass里面调整风扇的速度,风扇的速度没有变化,但是8266的蓝灯亮度会变化
回复

使用道具 举报

2

主题

99

帖子

1258

积分

论坛积极会员

积分
1258
金钱
1159
HASS币
0
 楼主| 发表于 2023-5-10 09:31:49 | 显示全部楼层
Anooki 发表于 2023-5-10 08:57
老哥请教一下,esphome怎么控制pwm风扇啊,要怎么接线
我的pwm风扇的供电是单独用了个12v的电源供电,第三 ...

三楼大哥已经说得挺清楚了,代码方面,接线的话,好像要共地
回复

使用道具 举报

20

主题

265

帖子

1852

积分

金牌会员

Rank: 6Rank: 6

积分
1852
金钱
1587
HASS币
0
发表于 2023-5-10 09:34:46 | 显示全部楼层
Anooki 发表于 2023-5-10 08:57
老哥请教一下,esphome怎么控制pwm风扇啊,要怎么接线
我的pwm风扇的供电是单独用了个12v的电源供电,第三 ...

D4接PWM 另外一个接地  vin 接电源   vout接风扇
回复

使用道具 举报

22

主题

184

帖子

1524

积分

金牌会员

Rank: 6Rank: 6

积分
1524
金钱
1340
HASS币
10
发表于 2023-5-10 10:35:23 | 显示全部楼层
kaka0992 发表于 2023-5-10 09:34
D4接PWM 另外一个接地  vin 接电源   vout接风扇

我是小白,老哥再请教一下,vin是指8266的vin脚吗,这个是给8266供电的?我是用usb供电的。没找到vout脚,能不能详细的说说,非常感谢
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 22:28 , Processed in 1.207901 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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