Pod Point EV Charger Integration

I was just on a call with PodPoint support and they remotely changed my charge rate of my PodPoint. They said they may include the feature in the app in the future but I would need to call up to get the charge rate changed.

Iā€™ve just done a HACS upgrade and Iā€™ve now got a problem as the integration failed to log into my account.

Update - Thereā€™s a note about resetting your password on the Github notes - Seems to have fixed the integration.

I had to power cycle the pod point unit itself to even allow the app to manually start a charge - Iā€™ll verify that the integration can do itā€™s stuff and report back if thereā€™s a problem.

Hi Stephen,
Pod Point made a change to their authorisation system, you may find you are also unable to log into the mobile app. Please reset your password in the pod point app or website and try again.

To be clear, this is not a plugin issue but to do with PodPoint

2 Likes

Thanks.

I read that note on GitHub and did exactly that - Worked a treat. I also like the support in the app for Manual/Override mode as well. Although Iā€™ll stick with the original method of switching the charger on & off, at least for the time being.

This integration, coupled with using Octopus Agile half hourly rates is probably going to end up saving me several hundred quid a year.

Thanks for your work.

1 Like

Morning @mattrayner,

Iā€™ve noticed that recently, the ā€œcurrent energyā€ measurement is doing some strange things: on a 7kW charge it will start off with the correct upward gradient but switch to a shallower gradient as if measuring a lower power during the charge. Example plot below: current energy on top, house power on the bottom showing a four-hour 7kW charge (with peaks for other stuff):

The final figure at the top of the plot is much lower than actually delivered, as calculated by %age increase of my carā€™s SoC. In this case, the sensor says 13kWh for a 40% point SoC increase on my 62kWh MG4.

Is this something you have any influence over, or is this as received via the API?

Hi Troon, unfortunately, this is pulled directly from the APIs so I have no control over it :frowning:

Whenever the update happens (every 5 minutes by default) I get the current charge value from the API and Home Assistant plots it on the graph

1 Like

I suspected as much. Thanks.

Bit of a weird one - but maybe I just donā€™t know enough!

When I put the Cable Status entity on an entity card the state shows as ā€˜Unpluggedā€™, same on a picture element card - all good.
image

But when I put it on a custom:button-card it returns ā€˜offā€™. Hereā€™s the yaml

type: custom:button-card
entity: binary_sensor.psl_197775_cable_status
show_name: true
show_icon: true
show_state: true
name: Podpoint
icon: mdi:ev-plug-type2
action: none

image

Anyone know why? (before I try and template a solution)

Thanks

Hi @steve_jo, its a binary sensor so its either on or off, the ā€˜unpluggedā€™ treatment is because the ā€˜typeā€™ is cable, once you are showing just the value its either on or off. You can add some logic here by making the state a template with something like

if state(binary_sensor.psl_197775_cable_status, 'on') then 'Connected' else 'Unplugged'
1 Like

Thanks for speedy reply.

Yes the template works fine

type: custom:button-card
entity: binary_sensor.psl_197775_cable_status
show_name: true
show_icon: true
show_label: true
name: Podpoint
icon: mdi:ev-plug-type2
action: none
label: |
  [[[ 
    if (states['binary_sensor.psl_197775_cable_status'].state == 'on') 
    return 'Connected'; 
  return 'Unplugged';
 ]]]

I donā€™t understand the difference in behaviour when putting the same entity on different cards. I didnā€™t know I was only showing the value on the button card but something more on the entity card when the yaml looks similar.

I guess from what you are saying there is extra logic in some cards that takes the type of the sensor into consideration and modifies what it displays accordingly. That logic isnā€™t there on the custom:button-card for whatever reason.

So much to learn!

Thanks again

Hi All,

Iā€™m trying to use Mattā€™s awesome integration to charge my car when the next rate on Octopus Agile drops below a variable I input (rate_to_charge) with a 27 minute delay.

Iā€™m new to Home Assistant and my coding is beyond rusty so I just started with an Automation from the pod point device. The YAML looks as below. I donā€™t know what I should be putting in the value template.

Cheers,

1 Like

Got this far, the condition comes out as true if I check the template but the Trigger isnā€™t firing despite the conditions being met (Next Rate was 0 or negative earlier today) and using the visual editor.

description: ""
trigger:
  - type: monetary
    platform: device
    device_id: my_device_id
    entity_id: my_entity_id
    domain: sensor
    below: 0.3
condition:
  - condition: template
    value_template: >-
      {% if
      states('sensor.octopus_energy_electricity_myaccount_mympannumber_next_rate')
      < states('input_number.rate_to_charge') %}
        True
      {% else %}
        False
      {% endif %}
action:
  - delay:
      hours: 0
      minutes: 27
      seconds: 0
      milliseconds: 0
  - service: pod_point.charge_now
    data:
      hours: 4
      minutes: 0
      seconds: 0
      config_entry_id: my_config_entry_id
mode: single```

Hi @mattrayner, thanks for this great integration. Can I just check 2 things;

  1. I need a schedule set to use the Allow Charging switch
  2. What is expected behaviour if charging is allowed and I send another allow charging command?

Hi @willenic, hopefully this helps:

  1. I need a schedule set to use the Allow Charging switch

Yes and no, so there are now two ways to enable charging (thanks PodPoint), option 1 is to use a schedule (or not, as the case may be). When you use the switch in the integration to ā€˜Allow chargingā€™ this does on of two things. If you switch it ON (so to allow charging) it actually disables all your schedules, allowing for charging at any time. If you switch it OFF (to disable charging) it creates a schedule for every day from 12:00 - 12:01 (which is effectively impossible as it takes ~5 mins for your pod to actually begin charging once it enters a schedule time).

The second way you can enable charging is that you could set your charging mode to manual. This turns off all the ā€˜smartsā€™, schedules etc and just turns it into a ā€˜plug in and it chargesā€™ device. Bare in mind that with schedules and all charger related settings PodPoint quote a t ~5 minute timeframe before they will start/stop charging (this is mostly because the device polls the cloud at an interval)

  1. What is expected behaviour if charging is allowed and I send another allow charging command?

Nothing changes, the integration effectively re-sends the ā€˜disable all schedulesā€™ message to PosPoint, which wouldnā€™t change anything on your pod. If you are spamming PodPoint though, they could disable your account, so try not to do that

1 Like

Thanks, thats great. Thats everything I need.

Iā€™m going to user repeating timed triggers and a template to evaluate conditions of the next rate vs an input variable with a delay to then Allow charging.

Iā€™ve sorted turning it on, now I just need to create the opposite to turn off, or work out how to use else if in the condition to trigger a different action to turn Allow charging off.

If you are spamming PodPoint though, they could disable your account, so try not to do that

Iā€™ll amend the template to check the status of Allow charging and only execute the action if a change is required.

Hey @mattrayner

Iā€™m close with my automation but think I need help with handling negative values

{% elif states('switch.psl_ref_charging_allowed') == 'on' 
and states('sensor.octopus_energy_electricity_ref_next_rate') 
> states('input_number.rate_to_charge') %}

This condition is being evaluated as true when the next_rate is -0.021 and the input_number is -0.01. It looks like the magnitude is being considered not the value.

No, the string ā€œ-0.021ā€ is being compared with the string ā€œ-0.01ā€. States are always strings: if you want to do numerical operations, you need to convert them first.

{% elif states('switch.psl_ref_charging_allowed') == 'on'  and
        states('sensor.octopus_energy_electricity_ref_next_rate')|float(0) >
        states('input_number.rate_to_charge')|float(0) %}
1 Like

Thanks @Troon

This integration is great, thanks for making/maintaining it!

Do you know if it is possible to work out if the charger is powered off? Occasionally the circuit trips and weā€™re left without charge so it would be awesome if there was a way to set up an alert around this! Iā€™ve manually turned off the charger as a test and it looks like itā€™s getting readings still in HA

Also wondering if an alternative solution would be around pinging periodically to identify when it drops off the wifi.

Hi Mike,
Thatā€™s an interesting question, as the data is fed from the PodPoint APIs itā€™s not directly possible to tell if the Pod is powered. However (and Iā€™m assuming here as it is not documented anywhere on the Pod Point side) I would assume that if the cloud does not hear from your pod then it will mark that podā€™s status as ā€˜Unavailableā€™.

I personally have a text message alert setup for my pod status becoming ā€˜Unavailableā€™, for my use case occasionally the pod will not charge as the cable isnā€™t inserted correctly into the pod itself. This makes the pod go ā€˜redā€™ and ā€˜Unavailableā€™.

This might work for you too?

Regarding the Wi-Fi, Iā€™ve never looked into how often it phones home, but PodPoint say a delay of 5 minutes from changing a setting to it being respected by the Pod is expected, so 5 minutes feels fair. Perhaps disconnected from the Wi-Fi for 15 minutes is a good starting point there?