devices.esphome.io
BlitzWolf BH-AP2501
BlitzWolf BH-AP2501
Device Type: miscElectrical Standard: euBoard: esp8266Difficulty: Chip needs replacement, 5/5Project URL: https://github.com/wildekek/BlitzHome-BH-AP2501
  
      
  
        
        
General Notes
These devices run a Tuya WBR3 MCU which needs to be replaced: preferably by an ESP12F.
GPIO Pinout
| Pin | Function | 
|---|---|
| GPIO1 | UART TX | 
| GPIO3 | UART RX | 
| EN | 10k pull-up | 
| RES | 10k pull-up | 
| GPIO15 | 10k pull-down | 
Configuration
substitutions:  device_name: "air-purifier"  device_friendly_name: "Air Purifier"  device_description: "Clean air good."  time_timezone: "Europe/Amsterdam"
esphome:  name: $device_name  friendly_name: $device_friendly_name  comment: $device_description  name_add_mac_suffix: false
esp8266:  board: esp12e
# Enable status LEDstatus_led:    pin:      number: GPIO2      inverted: true
# Enable logginglogger:  level: INFO  # Disable logging via UART, we need it for the Tuya MCU  baud_rate: 0
# Enable Home Assistant APIapi:  encryption:    key: !secret home_assistant_key
ota:  password: !secret ota_password
# Configure WiFiwifi:  ssid: !secret wifi_ssid  password: !secret wifi_password  ap:
captive_portal:
# Initialize the UART that connects to the Tuya MCUuart:  rx_pin: GPIO3  tx_pin: GPIO1  baud_rate: 9600
# Register the Tuya MCU connectiontuya:
# Fan controloutput:  - platform: template    id: fan_output    type: float    # Off = 0    # Low = 0.33333    # Medium = 0.66666    # High = 1    write_action:      - logger.log:          level: INFO          format: "Fan output: %f"          args: ["state"]      - if:          condition:            lambda: return (state == 0);          then:            - fan.turn_off:                id: tuya_fan          else:            - if:                condition:                  lambda: return (state < .4);                then:                  # Fan = Low                  - fan.turn_on:                      id: tuya_fan                      speed: 4                else:                  - if:                      condition:                        lambda: return (state < .8);                      then:                        # Fan = Mid                        - fan.turn_on:                            id: tuya_fan                            speed: 3                      else:                        # Fan = High                        - fan.turn_on:                            id: tuya_fan                            speed: 2
fan:  - platform: speed    output: fan_output    id: speed_fan    name: "Fan"    speed_count: 3  - platform: "tuya"    name: "Fan"    id: "tuya_fan"    internal: True    switch_datapoint: 1    speed_datapoint: 3    speed_count: 4 # 1=Auto, 2=High, 3=Medium, 4=Sleep
sensor:  # PM2.5 sensor  - platform: "tuya"    name: "PM2.5"    sensor_datapoint: 2    device_class: "aqi"    state_class: "measurement"    accuracy_decimals: 0  # Filter utilization  - platform: "tuya"    name: "Filter remaining"    sensor_datapoint: 5    unit_of_measurement: "%"    icon: mdi:ticket-percent-outline    entity_category: diagnostic  # Countdown remaining  - platform: "tuya"    name: "Countdown Remaining"    sensor_datapoint: 19    icon: mdi:fan-clock    unit_of_measurement: "minutes"  # Air quality  - platform: "tuya"    name: "Air Quality"    sensor_datapoint: 21    icon: mdi:air-filter
number:  # Set countdown timer  - platform: "tuya"    name: "Countdown"    number_datapoint: 18    unit_of_measurement: hours    mode: box    icon: "mdi:fan-clock"    min_value: 0    max_value: 24    step: 1
switch:  # Ionizer  - platform: "tuya"    name: "Ionizer"    switch_datapoint: 6    icon: mdi:chart-bubble  # UV sterilization  - platform: "tuya"    name: "UV sterilization"    switch_datapoint: 9    icon: mdi:sun-wireless  # Filter reset  - platform: "tuya"    id: "filter_reset"    switch_datapoint: 11    internal: True
# Button to reset filter cartridgebutton:  - platform: template    name: "Filter cartridge reset"    entity_category: diagnostic    icon: mdi:air-filter    on_press:      then:        - fan.turn_on: tuya_fan        - switch.turn_on: filter_reset        - delay: 1s        - switch.turn_off: filter_reset