Teckin SS33 Outdoor Wifi Plug

I have already flashed the old ESP based versions of the Feit outdoor plugs, but don’t like that both outlets are controlled by one relay. I have also confirmed that the current version of this plug are no longer ESP based. Original post here: Costco Feit Dual Outlet Outdoor Smart Plug

@ideal2545 posted this writeup for flashing the Teckin SS31. I thought that looked great, but I could not find the SS31 anywhere: Teckin SS31 Outdoor Wifi Plug

Insert the SS33. Looks like it replaced the SS31 and has 3 outlets. I do not think that this will be flashable for long, though, as it appears they are straying away from ESP boards at some point. GPIO #'s and hint of future non-ESP based boards here: Teckin SS33

I was able to successfully flash this device using @ideal2545 post on the SS31. The pins to solder the wires to are exactly the same.

My FTDI adapter only has 1 ground pin, so I connected the two grounds from the ESP board together. Also, as @ideal2545 noted, make sure to reveres RX and TX.

My config file notes the GPIO pins for the relays. I also have the conditions set to have the output light be on if any of the 3 outlets are turned on.

substitutions:
  deviceName: ss33_outdoor_plug
  prettyDeviceName: SS33 Outdoor Plug

esphome:
  name: $deviceName
  platform: ESP8266
  board: esp8285

wifi:
  ssid: "ssid"
  password: "password"

  manual_ip:
    static_ip: X.X.X.X
    gateway: X.X.X.X
    subnet: X.X.X.X

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${prettyDeviceName} Fallback"
    password: "password"

captive_portal:

# Enable Over the Air updates
ota:
  password: "XXXX"

# Enable Home Assistant API
api:
  password: "XXXX"

# Enable logging
logger:
  baud_rate: 9600

status_led:
  pin: 
    number: GPIO4
    inverted: True

output:
  - platform: gpio
    id: relay_status
    pin: GPIO5
    inverted: True

switch:
  - platform: gpio
    name: ${prettyDeviceName} Switch 1
    pin: GPIO12
    id: relay_1
    on_turn_on:
          then:
            - if:
                condition:
                  and:
                    - switch.is_off: relay_2
                    - switch.is_off: relay_3
                then:
                  - output.turn_on: relay_status
    on_turn_off:
          then:
            - if:
                condition:
                  and:
                    - switch.is_off: relay_2
                    - switch.is_off: relay_3
                then:
                  - output.turn_off: relay_status
  - platform: gpio
    name: ${prettyDeviceName} Switch 2
    pin: GPIO14
    id: relay_2
    on_turn_on:
          then:
            - if:
                condition:
                  and:
                    - switch.is_off: relay_1
                    - switch.is_off: relay_3
                then:
                  - output.turn_on: relay_status
    on_turn_off:
          then:
            - if:
                condition:
                  and:
                    - switch.is_off: relay_1
                    - switch.is_off: relay_3
                then:
                  - output.turn_off: relay_status
  - platform: gpio
    name: ${prettyDeviceName} Switch 3
    pin: GPIO3
    id: relay_3
    on_turn_on:
          then:
            - if:
                condition:
                  and:
                    - switch.is_off: relay_1
                    - switch.is_off: relay_2
                then:
                  - output.turn_on: relay_status
    on_turn_off:
          then:
            - if:
                condition:
                  and:
                    - switch.is_off: relay_1
                    - switch.is_off: relay_2
                then:
                  - output.turn_off: relay_status

binary_sensor:
  - platform: gpio
    id: button
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: True
    on_press:
      - switch.toggle: relay_1
      - switch.toggle: relay_2
      - switch.toggle: relay_3
    name: ${prettyDeviceName} Button