Powerpal smart energy monitor

PowerPal have now announced they’re discontinuing the Powerpal Pro device, which could upload live data to Powerpal Cloud. So I found this and set it up. I could get esphome to talk to my Powerpal okay, but I’m confused if Cloud upload is still a supported feature, or not?

I get compile errors if I try and include http_request_id: powerpal_cloud_uploader in the configuration.

Yeha

INFO ESPHome 2024.6.3
INFO Reading configuration /config/esphome/esp32-node-server.yaml...
INFO Detected timezone 'Australia/Sydney'
Failed config

http_request: [source /config/esphome/esp32-node-server.yaml:68]
  
  ESPHome supports certificate verification only via ESP-IDF. Set 'verify_ssl: false' to skip certificate validation and allow less secure HTTPS connections.
  id: powerpal_cloud_uploader

does anyone have a guide on how to do this on latest esphome?

I put this in and it compiles. Early assessment is that it is giving HomeAssistant the values now which is nice but I am not getting the Cloud updates happening so the Powerpal app does not see the details.

I’m using the Powerpal Pro which is soon to be discontinued so I am keen to get Cloud updates working.

http_request:
  id: powerpal_cloud_uploader
  verify_ssl: false
1 Like

ok fyi for anyone

powerpal_apikey: IKh1imbjrandom
powerpal_device_id: 000aabbcc
are not required , you can comment them out

that worked to compile, thank you

@somegen @skreza @muneeb1990
Hi just as FYI, I had my meter replaced recently. Was talking to sparky.
He said the 2 different meter types they use in Vic pulse at 800 and 1000.
Most are 800.

@pencilhead Did he say if there was a way to tell?

I Just set mine up, and I went a different way.
My PowerPal battery died I logged a support request and they sent a new one.

So I cut the lead off and old one and stuck it right to an ESP32 Mini with ESP home. I just went black wire to GND and Red to GPIO4.
The lead was long enough to reach a window to the wire gets inside the house with the ESP connected to USB power from the wall.

Added the Pulse_counter code and bam it works.
No need to think about the battery again or any Bluetooth reception issues etc.

sensor:
# Electricity meter as a pulse counter
  - platform: pulse_counter
    name: "Electricity"
    pin:
      number: GPIO4
      inverted: true
      mode:
        input: true
        pullup: true
    unit_of_measurement: "kW"
    accuracy_decimals: 3
    filters:
      # Filter outliers
      - median:
          window_size: 3
          send_every: 1
          send_first_at: 1
      # Convert pulses/min to kW with 1000 pulse/kWh
      - multiply: 0.06
    total:
      name: "Energy meter kWh"
      unit_of_measurement: "kWh"
      accuracy_decimals: 3
      filters:
        - multiply: 0.001   

3 Likes

No, but he did say sprint210 model was 800.

So I’ve been using Powerpal pro integrating with Home Assistant for a while now. With Pro shutting down, I’ve been following this discussing using ESPHome with interest, but it all seems a bit overwhelming.

Does anyone have a guide / instructions on getting set up with ESPHome in place of PowerPal Pro?

I will need to check mine out.

My numbers are looking ok but based on 1000 per kW

@CRCinAU 's code worked for me.
but I had to comment out

powerpal_apikey: xxx
powerpal_device_id: xxx

and add verify_ssl: false

eg
powerpal_apikey: IKh1imbjrandom
powerpal_device_id: 000aabbcc
are not required , you can comment them out

Anyone else getting the Powerpal Pro unable to connect (confirmed in the app on phone)? Since 11:21 yesterday for me. Finally turned off the beta service?

yep I got an email from them last week saying the beta was over and they were shutting it down shortly. my readings have been flat the last 24 hrs or thereabouts.

if the pppro uses an esp32 do you think it could be repurposed with this?

2 Likes

Would love the answer to this

I got this setup last week on esphome 2024.6.4 and had to make a few changes to the yaml to get everything working. Also if you are setting up a new powerpal for the first time, I wasn’t getting any readings at all, until I initially paired with the app on my phone, and then closed the app. Data started flowing immediately afterwards via the esp.

  name: powerpal-gateway
  friendly_name: Powerpal Gateway #THE FRIENDLY NAME OF YOUR ESP Device
  on_boot:
    then:
      - lambda: |-
           id(powerpal_ble_sensor)->daily_pulses_ = id(powerpal_daily_pulses_backup);

esp32:
  board: esp32dev
  framework:
    type: arduino

external_components:
  - source:
     type: git
     url: https://github.com/muneeb1990/esphome
     ref: powerpal_ble
    components: [ powerpal_ble ]

time:
  - platform: homeassistant
    id: homeassistant_time

ble_client:
  - mac_address: # Replace with your powerpal mac id 00:00:00:00:00:00 
    id: powerpal

button:
  - platform: restart
    name: "Restart"
    icon: "mdi:restart"

globals:
  - id: powerpal_daily_pulses_backup
    type: int
    restore_value: true

# http_request:
#   id: powerpal_cloud_uploader

sensor:
  - platform: powerpal_ble
    id: powerpal_ble_sensor
    ble_client_id: powerpal
    power:
      name: "Powerpal Power"
    daily_energy:
      name: "Powerpal Daily Energy"
    daily_pulses:
      name: "Powerpal Daily Pulses"
    energy:
      name: "Powerpal Total Energy"
    battery_level:
      name: "Powerpal Battery"
    watt_hours:
       name: "Powerpal Watt Hours_json"
    cost:
       name: "Powerpal Cost_json"
    timestamp:
       name: "Powerpal Timestamp_json"
    pulses:
       name: "Powerpal Pulses_json"
    pairing_code: # Replace with 6 digit pairing code 000000
    notification_interval: 1
    pulses_per_kwh: 1000
    # cost_per_kwh: 0.20
    time_id: homeassistant_time
    #powerpal_apikey:
    # powerpal_device_id: 

  - platform: homeassistant
    id: ha_daily_pulses
    entity_id: sensor.powerpal_daily_pulses
    on_value:
     then:
       - globals.set:
          id: powerpal_daily_pulses_backup
          value: !lambda 'return int(x);'

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: # Replace with HA api encryption code " "

ota:
  platform: esphome
  password: #Replace with OTA password if using OTA " " 

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Powerpal Fallback Hotspot"
    password: #Replace with fallback password " "

preferences:
  flash_write_interval: 10min
1 Like

Did you try it with the API key to upload to Powerpal’s service? It would be nice (but not essential) to continue having their app for visualising usage.
I could not get the Uploader to work so have commented out the code like you show above.

I haven’t tried but I can have an attempt this weekend and let you know how I go.

1 Like

I would like to get more granular data than once every minute but it only accepts round integers.
The PowerPal Pro returned readings only every minute also as it is a limitation by the Powerpal itself.

When there is 5 minute pricing available, every second counts. :slight_smile: :moneybag:

from what I understand, the 5 minute pricing is only indicative of what the whole 30 minute block will cost. it fluctuates the whole time up until the price is locked in at the end of the block, and that pricing is applied to the last 30 minutes worth of usage retrospectively.