[Resolvido!] Migração Sonoff POW de Tasmota para ESPHOME

Estou fazendo a migração dos meus sonoffs de Tasmota para ESPHOME, mas estou encontrando dificuldade em ter os mesmos sensores no Sonoff POW R1

Estou com dificuldade para configurar o “Consumo Energético de Ontem” no ESPHOME

Alguem sabe como fazer?

Sensores no Tasmota
Tasmota Exemplo

Meu Código no ESPHOME

substitutions:
  hostname: "Impressora3D"
  ssid_ap: "HA_POW_01"
  versao: "1.0"

esphome:
  name: sonoff_pow_01
  platform: ESP8266
  board: esp01_1m
  board_flash_mode: dout

time:
  - platform: homeassistant
    id: homeassistant_time
  - platform: homeassistant
    on_time:
# Write Energy Yesterday sensor value
      - seconds: 0
        minutes: 59
        hours: 23
        then:
           - sensor.template.publish:
               id: template_yesterday
               state: !lambda return id(power_Wattage).state ;


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pass

  ap:
    ssid: "$ssid_ap"  
    password: !secret AP_mode_pass

captive_portal:

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API//
api:
  password: !secret api_pass

ota:
  password: !secret ota_pass

uart:
  rx_pin: RX
  baud_rate: 4800

text_sensor:
  - platform: version
    name: "$hostname ESPHome Version $versao"


binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
      inverted: True
    name: "$hostname Button"
    on_press:
      - switch.toggle: fakebutton
  - platform: template
    name: "$hostname Running"
    filters:
      - delayed_off: 15s
    lambda: |-
      if (isnan(id(power_Wattage).state)) {
        return {};
      } else if (id(power_Wattage).state > 4) {
        // Running
        return true;
      } else {
        // Not running
        return false;
      }

switch:
  - platform: template
    name: "$hostname Relay"
    optimistic: true
    id: fakebutton
    turn_on_action:
    - switch.turn_on: relay
    - light.turn_on: led
    turn_off_action:
    - switch.turn_off: relay
    - light.turn_off: led
  - platform: gpio
    id: relay
    pin: GPIO12

output:
  - platform: esp8266_pwm
    id: pow_blue_led
    pin:
      number: GPIO15
      inverted: True

light:
  - platform: monochromatic
    name: "$hostname Blue LED"
    output: pow_blue_led
    id: led

sensor:
  - platform: hlw8012
    sel_pin:
      number: GPIO5
      inverted: True
    cf_pin: GPIO14
    cf1_pin: GPIO13
    # current_resistor: ${current_res}
    # voltage_divider: ${voltage_div}
    current:
      name: "$hostname Amperage"
      unit_of_measurement: A
    voltage:
      name: "$hostname Voltage"
      unit_of_measurement: V
    power:
      name: "$hostname Wattage"
      unit_of_measurement: W
      id: "power_Wattage"
    change_mode_every: 8
    update_interval: 10s
  - platform: total_daily_energy
    name: "$hostname Total Daily Energy"
    power_id: "power_Wattage"
    filters:
        # Multiplication factor from W to kW is 0.001
        - multiply: 0.001
    unit_of_measurement: kWh  
      
# Extra sensor to keep track of plug uptime
  - platform: uptime
    name: $hostname Uptime Sensor

  - platform: wifi_signal
    name: "$hostname Sinal"
    update_interval: 60s    

  - platform: template
    name: "$hostname Total Yesterday Energy"
    id: template_yesterday
    accuracy_decimals: 3
    unit_of_measurement: kWh
    filters:
      - multiply: 0.001

Tentei tambem fazer pelo HA mas não consegui:

  total_consumo_ontem_impressora3d:   
    friendly_name: "Impressora3d Consumo Ontem"
    icon_template: mdi:counter
    unit_of_measurement: 'kWh'
    value_template: "{{ ( float(states.sensor.impressora3d_total_daily_energy.attributes.last_period) ) | round(0) }}"
1 Like

No código do ESPHome você está setando como gasto do dia anterior o valor do consumo instantâneo das 23h59 e não do uso total do dia.

Se resto o código parece ok.

Deu certo! Obrigado alexandrepossebom!!!

Estava utilizando o sensor errado, também tirei o " - multiply: 0.001" do sensor ‘Total Yesterday Energy’

Segue o código final:

substitutions:
  hostname: "Impressora3D"
  ssid_ap: "HA_POW_01"
  versao: "1.0"

esphome:
  name: sonoff_pow_01
  platform: ESP8266
  board: esp01_1m
  board_flash_mode: dout

time:
  - platform: homeassistant
    id: homeassistant_time
  - platform: homeassistant
    on_time:
      - seconds: 50
        minutes: 59
        hours: 23
        then:
           - sensor.template.publish:
               id: template_yesterday
               state: !lambda return id(total_daily).state ;


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pass

  ap:
    ssid: "$ssid_ap"  
    password: !secret AP_mode_pass

captive_portal:

logger:
  baud_rate: 0

api:
  password: !secret api_pass

ota:
  password: !secret ota_pass

uart:
  rx_pin: RX
  baud_rate: 4800

text_sensor:
  - platform: version
    name: "$hostname ESPHome Version $versao"

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
      inverted: True
    name: "$hostname Button"
    on_press:
      - switch.toggle: fakebutton
  - platform: template
    name: "$hostname Running"
    filters:
      - delayed_off: 15s
    lambda: |-
      if (isnan(id(power_Wattage).state)) {
        return {};
      } else if (id(power_Wattage).state > 4) {
        // Running
        return true;
      } else {
        // Not running
        return false;
      }

switch:
  - platform: template
    name: "$hostname Relay"
    optimistic: true
    id: fakebutton
    turn_on_action:
    - switch.turn_on: relay
    - light.turn_on: led
    turn_off_action:
    - switch.turn_off: relay
    - light.turn_off: led
  - platform: gpio
    id: relay
    pin: GPIO12

output:
  - platform: esp8266_pwm
    id: pow_blue_led
    pin:
      number: GPIO15
      inverted: True

light:
  - platform: monochromatic
    name: "$hostname Blue LED"
    output: pow_blue_led
    id: led

sensor:
  - platform: hlw8012
    sel_pin:
      number: GPIO5
      inverted: True
    cf_pin: GPIO14
    cf1_pin: GPIO13
    current:
      name: "$hostname Amperage"
      unit_of_measurement: A
    voltage:
      name: "$hostname Voltage"
      unit_of_measurement: V
    power:
      name: "$hostname Wattage"
      unit_of_measurement: W
      id: "power_Wattage"
    change_mode_every: 8
    update_interval: 10s

  - platform: total_daily_energy
    id: total_daily
    name: "$hostname Total Daily Energy"
    power_id: "power_Wattage"
    filters:
        # Multiplication factor from W to kW is 0.001
        - multiply: 0.001
    unit_of_measurement: kWh  
      
  - platform: uptime
    name: $hostname Uptime Sensor

  - platform: wifi_signal
    name: "$hostname Sinal"
    update_interval: 60s    

  - platform: template
    name: "$hostname Total Yesterday Energy"
    id: template_yesterday
    accuracy_decimals: 3
    unit_of_measurement: kWh
1 Like

bom dia, teve que mudar o firmware do sonoff ?

Olá, boa tarde!! Sabe dizer se essa configuração pode ser usada no sonoff pow R2?

Sim, eu já tinha modificado do firmware original do sonoff para o Tasmota e depois mudei do tasmota para o ESPHOME

Funciona sim, só precisa ter cuidado que o sensor do R2 é diferente do R1.

POW R1 - platform: hlw8012
POW R2 - platform: cse7766

Exemplo:

2 Likes

Parabéns Gustavo! Artigo muito bom! Migrei meu Sonoff Pow R2 de Tasmota para ESPHome usando este código e funcionou!

Qual a vantagem desta migração para o ESPHome?

Quando mudou paa tesmota ou esphome os dados ficam salvos em que servidor, caso eu queira criar um histórico ou relatorio, onde busco esses dados ?

O Tasmota e o Esphome são firmwares que ao invés de enviar os dados para o servidor da empresa, enviam para um servidor particular que você indica utilizando o protocolo MQTT, portanto a gestão da informação fica para o seu servidor particular, existe um servidor open source chamado HomeAssistant que é o foco principal desse fórum, nele você consegue fazer relatórios e buscar histórico.

Para entrar nesse mundo de HA o bom é que não precisa de muita coisa, dá para fazer muita coisa com um raspberry com SD que é relativamente barato, ou um pc/notebook antigo.

Se quiser saber mais informações indico entrar no discord associado a esse fórum, pode tirar as suas dúvidas mais rápido. http://habr.ml/

eu acho a maior vantagem do esphome que não preciso mim preocupar com mqtt que pessoalmente nunca gostei muito. esphome e Ha são conetados diretamente com api e se entendem sem precisar prestar atenção nos payloads. Além disso, tasmota faz tudo, mas quando quer pessoalizar um pouco, começa a conhecer centenas de SetOption blabla que tem alto potencial de confusão ou esquecer que colocou uma opção que nunca usa. Para mim, onde posso uso esphome, mas cada um é cada um.