Shelly I3 with ESPHome

I just flashed a Shelly I3 with an ESPHome image (see here).
Pretty fickle thing to do without the fitting connector! But after some trial and error with a small pair of tweezers I got it going. Now I can OTA-update from the ESPHome plugin in HA.
Bootstrapping is such fun!

The three inputs work and show up in the UI.
The LED is not available yet.

Wait till you hit the timing error and floating issue… I don’t want to take put the fun… but for me that is a major issue…

Wifi hickup? Toggle/trigger input… I live with it… but its far from ideal.

Oh and btw. You can do all flashing ota by using intermediate tasmota firmware before flashing esphome…

As @sender says, you flash ota with tasmota

http://shellyip/ota?url=http://dl.dasker.eu/firmware/mg2tasmota-ShellyI3.zip

If i may help, this is my “most stable yaml”…

substitutions:
  devicename: shelly_i3_01

  ssid: ssid
  password: !secret ssid_wifi_key

esphome:
  name: ${devicename}
  platform: ESP8266
  board: esp01_1m
  esp8266_restore_from_flash: true
  on_boot:
    then:
    - delay: 10s
    - globals.set:
       id: can_switch1
       value: "true"
    - globals.set:
       id: can_switch2
       value: "true"

wifi:
  ssid: "IOTDOM"
  password: !secret ssid_wifi_key
  domain: !secret domain
 #use_address: 192.168.6.41
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${devicename} Fallback Hotspot"
    password: !secret Fallback_Hotspot

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

time:
  - platform: sntp
    id: my_time
    
globals:
   - id: can_switch1
     type: bool
     restore_value: no
     initial_value: "false"
   - id: can_switch2
     type: bool
     restore_value: no
     initial_value: "false"

sensor:
  - platform: wifi_signal
    name: "${devicename} - WiFi Signal"
    update_interval: 600s
  
  - platform: uptime
    name: "${devicename} - Uptime"
    icon: mdi:clock-outline
    update_interval: 600s

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO12
      mode: INPUT
    name: ${devicename} Input 1
    id: sensorid1
    filters:
      - delayed_on_off: 200ms
#    on_press:
#      then:
#        - switch.toggle: switchid1
    on_press:
      then:
        lambda: |-
          if(id(can_switch1)){
            id(switchid1).toggle();
          }
  
  - platform: gpio
    pin:
      number: GPIO14
      mode: INPUT
    name: ${devicename} Input 2
    id: sensorid2
    filters:
      - delayed_on_off: 200ms
#    on_press:
#      then:
#        - switch.toggle: switchid2
    on_press:
      then:
        lambda: |-
          if(id(can_switch2)){
            id(switchid2).toggle();
          }
  
  - platform: gpio
    pin:
      number: GPIO13
      mode: INPUT
    name: ${devicename} Input 3
    id: sensorid3
    filters:
      - delayed_on_off: 100ms
      
switch:
  - platform: template
    id: switchid1
    name: "${devicename} Switch 1"
    optimistic: true
    restore_state: true

  - platform: template
    id: switchid2
    name: "${devicename} Switch 2"
    optimistic: true
    restore_state: true
    
  - platform: restart
    name: ${devicename} Restart

Thanks for the tips!

Those problems you mention, are they specific to the I3, Shelly or even ESPHome?

I3 specific

Hi,
Is there still issues with it ?

Thanks

I resolved my issues externally via node red. Only trigger on specific state changes and ignore unwanted ones. I can live with it now.

Thank you for feedback

Can you provide some details how you solved this? I have a couple of i3s flashed with esphome. They are much more stable than with stock firmware (a lot of wifi issues).
But now I have “phantom” button presses.
I control my shutters with the i3s and now in the middle of the night my shutters open - or close …
Very annoying - but i´m struggeling with logging on esphome.
At the moment i´m considering tasmota with mqtt or replacing them :frowning:

If Phantom presses are picked up by node red filter them out. In the trigger node where the i3 is selected click all boxes to ignore all state changes other than on and off.

1 Like