REPTI ZOO Smart WIFI Reptile Fogger ZTF03M to ESPHome

Purchased one of these for Amazon, and apparently were released December 2023 (from the low serial numbers I got, can confirm as pretty early poor software quality):

I had hoped it was Tuya based (as many are), but sadly it was not. I tried their built in app, and like others have reported, it crashes and unusable. It’s using some IoT Cloud service from China I had not heard of before. (If I reinstall it, I will note it here)

Upon removal, found very clearly it’s using an ESP8266-07S module surprisingly with an external antenna taped to the back of the unit so it’s not on the bottom for better signal. This actually quite nice and could allow later for a custom external antenna for even better coverage.


THIS IS AT YOUR OWN RISK. I AM NOT RESPONSIBLE FOR DAMAGE TO YOU OR YOUR PROPERTY

Here’s a messy pic of the header pins:

GPIO0 is the front toggle button.

FLASHING:

  • Unplug power before opening
  • Hold the front toggle button in while powering up the board with your favorite TTL converter
  • I used 3.3V to power it
  • Once powered up and flashing, you can release the toggle button

What’s working:

  • Red / Green Status LEDs
  • Front Toggle Button
  • Water reservoir float switch
  • Blower Fan
  • Fogger transducer

What’s not working:

  • The potentiometer appears to be connected through an opamp to the ADC line of the ESP8266, but did not observe any voltage change while turning it. Not sure what it does as not in the documentation either. I suspect it was used for setting the output strength, but just a hypothesis from testing with the originally flashed unit.

Notes:

  • I do not recommend running the transducer without the blower running
  • It uses a series of transistors internally so doesn’t look like you can turn the blower or the transducer on unless the float switch detects water (turning upside can be used for testing)
  • It’s surprisingly easy to work on and open up, only 4 screws. The blower is easy to replace and a standard size. Transducer also looks easy to replace.

I believe this is the streamlined version of my ESPHome configuration:

substitutions:
  disp_name: "humidifier01"

esphome:
  name: ${disp_name}
  platform: ESP8266
  board: esp07s

time:
  - platform: homeassistant
    id: homeassistant_time
    on_time_sync:
      then:
        - logger.log: "Synchronized system clock"


# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption: 
    key: !secret esphome_api_key

ota:
  password: !secret esphome_humidifer01_password

wifi:
  ssid: !secret esphome_wifi_ssid
  password: !secret esphome_wifi_password
  domain: !secret esphome_domain
  power_save_mode: NONE
  fast_connect: False

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: !secret esphome_ap_ssid
    password: !secret esphome_ap_password

captive_portal:

switch:
  - platform: gpio
    name: "Blower Fan"
    id: rel_1
    pin: GPIO15
    on_turn_on:
      - switch.turn_on: rel_2
    on_turn_off:
      - switch.turn_off: rel_2
  - platform: gpio
    name: "Fogger Transducer"
    id: rel_2
    pin: GPIO4
    on_turn_on:
      - switch.turn_on: rel_1
    on_turn_off:
      - switch.turn_off: rel_1

output:
    - id: led_water_out
      platform: gpio
      pin: GPIO16
      inverted: true

light:
  - platform: binary
    name: "Water Reservoir Empty"
    output: led_water_out
  - platform: status_led
    name: "Status LED"
    pin: 
      number: GPIO2
      inverted: false
    id: esp8266_status_led
    disabled_by_default: true

binary_sensor:
  - platform: gpio
    name: "Front Button"
    pin: 
      number: GPIO0
      inverted: true
    on_press:
      then:
        - switch.toggle: rel_1
  - platform: gpio
    name: "Water Reservoir"
    device_class: problem
    pin: 
      number: GPIO13
      inverted: true
    on_state:
      then:
        - output.turn_on: led_water_out
        - switch.turn_off: rel_1
        - switch.turn_off: rel_2
        - light.turn_off: esp8266_status_led
    on_release:
      then:
        - light.turn_on: esp8266_status_led

When the unit powers up after being flashed, it should start with a Green LED that flashes. Once it’s connected to WiFi, it should stay solid Green unless it runs out of water and turns Red. I set it up as well so if the fan or transducer turn on, it turns the other on. Probably could do a script or other ways to make the cleaner. If you press the front button, it will turn toggle the unit fogger/fan between on and off.

If for some reason anyone else is crazy enough to try this, and you figure out anything else, please let me know :slight_smile: Several of the GPIO lines are connected but unsure what are being used for as some parts were tricky to trace.

2 Likes