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

 找回密码
 立即注册
查看: 61|回复: 0

[技术探讨] 想用一个esp模块控制2~3路输出风扇的速度控制

[复制链接]

21

主题

143

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
674
HASS币
0
发表于 昨天 20:50 | 显示全部楼层 |阅读模式
一个esp8266 模块 现在 是一路风扇速度控制 一个光线传感器 一个温湿度传感器 代码如下:
substitutions:
  device_name: "Super Fan"
  device_name_low: "super-fan"
  comment: "Super Fan"
  version: "1.0.0"
  speed_low: "50"
  speed_med: "75"
  speed_full: "100"

esphome:
  name: "${device_name_low}"
  project:
    name: "n1.fan_controller"
    version: "${version}"
  on_boot:
    then:
      - delay: 10s
      - fan.turn_on:
          id: fan_speed
          speed: "${speed_low}"
      - delay: 5s
      - fan.turn_on:
          id: fan_speed
          speed: "${speed_full}"
  friendly_name: 散热风扇调速 控制系统
  comment: 散热风扇调速 50%,75%,100%,带温湿度传感器,控制系统。
esp8266:
  board: d1_mini_lite

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "wsWjDf+9Ooe****m4lWy3TniUnSAzOTHuYqSo6cNMOQ="

ota:
  - platform: esphome
    password: "8***24a3cd15d1416928b3b066443cc"

wifi:
  ssid: "**"
  password: "********"
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "***"
    password: "88888888"

captive_portal:
web_server:
  port: 80

i2c:
  sda: GPIO4
  scl: GPIO5
  scan: true
  id: bus_a

output:
  - platform: esp8266_pwm
    pin: GPIO02
    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: 1
    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: D7
    temperature:
      name: "Living Room Temperature"
    humidity:
      name: "Living Room Humidity"
    update_interval: 30s  
  - platform: bh1750
    i2c_id: bus_a
    name: "BH1750 Illuminance"
    address: 0x23
    update_interval: 30s   


光线传感器可以不要 现在想多几路风扇调速输出,求指教,这样就可以用一个模块 控制几路风扇用于弱电箱不同位置的散热。


回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 14:57 , Processed in 0.377349 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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