devices.esphome.io
Ningbo Fuda 5250B Dehumidifier
Ningbo Fuda 5250B Dehumidifier
Device Type: miscElectrical Standard: globalBoard: esp8266Difficulty: Plug-n-flash, 2/5
      
  
        
Ningbo Fuda Intelligent Technology is a company manufacturing a number of devices such as dehumidifiers and air conditioning units. These are typically white-labeled, and come under a number of brand names such as Rohnson, Nedis, Kayami, Cling etc.
Some of these dehumidifiers are WiFi-enabled, by employing a Tuya module, allowing them to be fully controlled over WiFi, typically using the vendor's smartphone app, or the Tuya Smart/Smart Life applications.
Unfortunately, as of October 2023, ESPHome does not include a Humidifier/Hygrostat component to map to Home Assistant's Humidifier integration (see esphome/feature-requests#1859). Until such support is added, the dehumidifier can be exposed as a series of switches, sensors and selects, for each of the functions of the device's control panel.
Flashing
Over-the-air
It is often possible to use tuya-convert to flash the module over-the-air. Note that this applies to ESP8266-based modules; if your model shipped with a BK72xx-based module, other methods such as tuya-cloudcutter can be used.
Both of these tools rely on exploiting vulnerabilities in the stock Tuya firmware, which may be patched in newer versions, so this may or may not work with your device. It is generally advisable to not install firmware updates through the vendor's smartphone application as this may patch any vulnerabilities that exist in the shipped software.
Over serial
If OTA fails, it is possible to flash the module through the serial port pins, using esptool, or, in case your model shipped with a BK72xx, using ltchiptool.
The dehumidifier can be easily disassembled using a Philips screwdriver.  The
Tuya module can be found on a separate daughterboard, connected using a JST
connector to the mainboard, which provides the board with +5V, GND, as well
as RX/TX pins for the UART connecting to the main MCU. The daughterboard
includes a voltage regulator and level shifters to convert between +5V and
+3.3V, that the Tuya module expects. Unfortunately, this is a different UART
than the one required for flashing the firmware. However, the daughterboard
helpfully contains debug pins next to the module:
| Pin | Connect to | 
|---|---|
| UART 0 RX | Serial adapter TXD | 
| IO1 | Serial adapter RXD | 
| IO0 | Short to GND for flashing | 
| GND | Serial adapter/Vcc GND | 
Vcc needs to be provided separately, either +5V through the connector, or
+3.3V directly to the ESP8266.
Board Configuration
The configuration below is for a Rohnson R-9820, model name FDD20-5250BWR5:
esp8266:  board: esp_wroom_02
uart:  rx_pin: GPIO13 # U1RX  tx_pin: GPIO15 # U1TX  baud_rate: 9600
tuya:  on_datapoint_update:    - sensor_datapoint: 11      datapoint_type: bitmask      then:        - lambda: |-            ESP_LOGD("main", "on_datapoint_update %s", format_hex_pretty(x).c_str());            // only seen in the wild is decimal value 8, for Water Tank Full            id(water_tank_full).publish_state((x >> 3) & 1);
binary_sensor:  - platform: template    id: water_tank_full    name: "Water tank"    device_class: problem    icon: "mdi:water-alert"  - platform: tuya    name: "Unknown 101"    sensor_datapoint: 101    internal: true  - platform: tuya    name: "Unknown 105"    sensor_datapoint: 105    internal: true
switch:  - platform: tuya    name: "Power"    switch_datapoint: 1  - platform: tuya    name: "Air clean"    icon: "mdi:leaf"    switch_datapoint: 5  - platform: tuya    name: "Child lock"    icon: "mdi:lock"    switch_datapoint: 7  - platform: tuya    name: "Sleep"    icon: "mdi:sleep"    switch_datapoint: 102
number:  - platform: tuya    name: "Target humidity"    number_datapoint: 4    unit_of_measurement: "%"    device_class: "humidity"    min_value: 30    max_value: 80    step: 5
sensor:  - platform: tuya    name: "Temperature"    sensor_datapoint: 103    unit_of_measurement: "°C"    device_class: "temperature"    accuracy_decimals: 0  - platform: tuya    name: "Humidity"    sensor_datapoint: 104    unit_of_measurement: "%"    device_class: "humidity"    accuracy_decimals: 0
select:  - platform: tuya    name: "Mode"    icon: "mdi:cog"    enum_datapoint: 2    options:      0: Regular      1: Automatic      2: Strong      3: Clothes drying  - platform: tuya    name: "Fan speed"    icon: "mdi:fan"    enum_datapoint: 6    options:      0: Low      1: High#  - platform: tuya#    name: "Unknown"#    enum_datapoint: 12