ESPHOME et Sonoff pow elite 20a

Bonjour
j’ai trouver quelqu’un qui a réussi a faire un code spécifique pour le Sonoff pow elite 16A.

Mais pour avoir essayé sur un Sonoff POW ELITE 20A je n’ai pas la commande du relais.
il est toujours collé
et regardant sur tasmota je suis tombé sur cela pour le 20 A

image

et cela pour le 16 A
image

le relais est connecté sur la version 16 A sur le GPIO 13
par contre pour la version 20 A
je ne comprends pas du tout la logique…
GPIO2 relay_B 2
et GPIO4 relais _B 1
Y a t’il quelqu’un qui a réussi a faire un firmware dédié au sonoff pow elite 20 A

Merci d’avance pour votre retour

Salut

tu as deux GPIO peut être tout simplement parce qu’il y a 2 relais.

dans un premier temps tu peux tester en remplacant ton GPIO13 par GPIO04 et voir ce qu’il se passe. Puis refaire la même manipulation en remplaçant le GPIO13 par GPIO02.

Quand a l’utilité du 2eme relais, j’ai pas trouvé d’info

A+ Fred

Merci pour ton retour
Mais je n’ai identifié qu’un seul relais
Je vais essayer je vous tiendrai au courant

Bonjour

petit retour sur la « BETE »
ce modele la est equipé d’un relais BISTABLE. d’ou dans la definition de tasmota de deux relais
j’ai trouvé sur elektor un script ESPHOME avec justement un relais bistable mais je n’ai pas le moment de modifier ce script pour l’adapter au sonoff.
pour l’usage que j’en ai je vais pour le moment rester sous tasmota
ça fonctionne tres bien comme cela

Bonjour a tous

j’ai trouvé grâce a ce site

ça peux potentiellement servir.

Hello à tous

Effectivement c’est un relais bistable !
La config sur ESPHome-Devices ne fonctionne pas :frowning:
Après avoir un peu tâtonné, voici ma config qui fonctionne :

sensor:
  - platform: cse7766
    update_interval: 2s
    current:
      name: $friendly_name Current
      id: a_sensor
    voltage:
      name: $friendly_name Voltage
      id: v_sensor
    power:
      name: $friendly_name Power
      id: w_sensor
      on_value_range:
        - above: 4.0
          then:
            - light.turn_on: switch_led
        - below: 3.0
          then:
            - light.turn_off: switch_led
    energy:
      name: $friendly_name Energy
      id: wh_sensor

  - platform: total_daily_energy
    name: $friendly_name Total Daily Energy
    power_id: w_sensor

  - platform: wifi_signal
    name: $friendly_name Wifi RSSI
    update_interval: 60s

  - platform: uptime
    id: uptime_sensor
    internal: True
    on_raw_value:
      then:
        - text_sensor.template.publish:
            id: uptime_human
            state: !lambda |-
              int seconds = round(id(uptime_sensor).raw_state);
              int days = seconds / (24 * 3600);
              seconds = seconds % (24 * 3600);
              int hours = seconds / 3600;
              seconds = seconds % 3600;
              int minutes = seconds /  60;
              seconds = seconds % 60;
              return (
                (days ? to_string(days) + "d " : "") +
                (hours ? to_string(hours) + "h " : "") +
                (minutes ? to_string(minutes) + "m " : "") +
                (to_string(seconds) + "s")
              ).c_str();

  - platform: template
    name: $friendly_name ESP32 Internal Temp
    device_class: temperature
    unit_of_measurement: °C
    id: esp32_temp
    lambda: return temperatureRead();

  - platform: template
    name: $friendly_name Power Factor
    device_class: power_factor
    id: power_factor
    lambda: return id(w_sensor).state / id(v_sensor).state / id(a_sensor).state;

  - platform: esp32_hall
    name: $friendly_name ESP32 Hall Sensor
    update_interval: 60s

binary_sensor:
  - platform: gpio
    pin: GPIO00
    id: reset
    internal: true
    filters:
      - invert:
      - delayed_off: 10ms
    on_click:
      - max_length: 350ms # short press to toggle the relay
        then:
          switch.toggle: relay_1
      - min_length: 360ms # long press to cycle display info
        max_length: 3s
        then:
          - if:
              condition:
                binary_sensor.is_on: page
              then:
                binary_sensor.template.publish:
                  id: page
                  state: OFF
              else:
                binary_sensor.template.publish:
                  id: page
                  state: ON
  - platform: template # this is a fake sensor to tell the screen which info to show on display
    id: page
    publish_initial_state: true
    internal: true

display:
  platform: tm1621
  id: tm1621_display
  cs_pin: GPIO25
  data_pin: GPIO14
  read_pin: GPIO26
  write_pin: GPIO27
  lambda: |-
    if (id(page).state) {
      it.display_voltage(true);
      it.display_kwh(false);
      it.printf(0, "%.1f", id(v_sensor).state);
      it.printf(1, "%.1f", id(a_sensor).state);
    } else {  
      it.display_voltage(false);
      it.display_kwh(true);
      it.printf(0, "%.1f", id(wh_sensor).state);
      it.printf(1, "%.1f", id(w_sensor).state);
    }

output:
  - platform: ledc
    id: led
    pin:
      number: GPIO18
      inverted: True

switch:
  - platform: template
    name: $friendly_name
    optimistic: true
    id: relay_1
    #lambda: |-
    #  if (isnan(id(w_sensor).state)) {
    #    return {};
    #  } else if (id(w_sensor).state > 4) {
    #    // Running
    #    return true;
    #  } else {
    #    // Not running
    #    return false;
    #  }
    turn_off_action:
      - switch.turn_on: relay_off
    turn_on_action:
      - switch.turn_on: relay_on
  - platform: gpio
    restore_mode: ALWAYS_OFF
    internal: true
    id: relay_off
    pin: GPIO04
    on_turn_on:
      - delay: 500ms
      - switch.turn_off: relay_off  #bi-stable relay so no need to keep on.
      - light.turn_off: switch_led
    interlock: [relay_on]
  - platform: gpio
    restore_mode: ALWAYS_OFF
    internal: true
    id: relay_on
    pin: GPIO02
    on_turn_on:
      - delay: 500ms
      - switch.turn_off: relay_on  #bi-stable relay so no need to keep on.
      - light.turn_on: switch_led
    interlock: [relay_off]
  - platform: restart
    name: $friendly_name Restart

text_sensor:
  - platform: template
    name: $friendly_name Uptime
    id: uptime_human
    icon: mdi:clock-start
  - platform: wifi_info
    ip_address:
      name: $friendly_name IP
    ssid:
      name: $friendly_name SSID
    bssid:
      name: $friendly_name BSSID

light:
  - platform: monochromatic
    id: switch_led
    output: led
    internal: True
  - platform: status_led
    id: wifi_status_led
    internal: True
    pin:
      number: GPIO05
      inverted: True

interval:
  - interval: 30s
    then:
      if:
        condition:
          wifi.connected:
        then:
          - light.turn_on: wifi_status_led
        else:
          - light.turn_off: wifi_status_led