diy solar

diy solar

DIY solar divert to EVSE

fafrd

Solar Wizard
Joined
Aug 11, 2020
Messages
4,188
I’m looking for ways to build a Solar Divert to EVSE, meaning I want to communicate to an EVSE what charge power to use and when to begin and end charging.

There are several Smart Chargers out there offering this feature, such as the Emporia Smart Charger: https://uploads-ssl.webflow.com/5fff2b7694451e66ba2f5a3d/62992a4164395847d4b83206_EV Charger Technical Specs.pdf

But everyone of these I have found is using a proprietary protocol to control the charger.

Are there any EV chargers out there supporting an open protocol through a standard such as Modbus to program charge power, start of session and termination of session?

I know I can control a relay to begin and end charging, so the control I’m looking for is within reach at a fixed (preconfigured) charge power, but I’m hoping there an EVSE out there such as OpenEVSE that makes remote programming of charge power through an open protocol easy.
 
Last edited:
Are there any EV chargers out there supporting an open protocol through a standard such as Modbus to program charge power, start of session and termination of session?
I have Rainforest EMU-2 Energy Monitoring Unit that is paired with my smart meter via zigbee.
I use a python program to read the usage data in almost real time eg:

$raven
{"is_connected": true, "link_strength": 100, "channel": 11, "description": "Successfully Joined", "extpanid": 2112161847904819, "shortaddr": "0x081d", "status": "Connected"}
{"raw_summation_delivered": 77546621, "raw_summation_received": 71279524, "summation_delivered": 77546.621, "summation_received": 71279.524, "multiplier": 1, "divisor": 1000, "timstamp": "2022-12-30T04:57:31Z"}
[ those are my smart meter readings : from grid & to grid
Then I see the actual power usage]

{"demand": 1.427, "raw_demand": 1427, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:58:53Z"}
{"demand": 1.431, "raw_demand": 1431, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:59:01Z"}
{"demand": 1.419, "raw_demand": 1419, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:59:09Z"}
{"demand": 1.425, "raw_demand": 1425, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:59:18Z"}
In 8-9 second intervals I get the info how much power is going to<->from the grid.

I am using openevse with wifi.
Minimum of the J1772 standard at 240 volt = 6 amps so 1440 watts.
When the program sees > 1440 watts going to the grid I write a URL to the openevse: $FE (== function enable)
With "$SC 6 N" is set it to 6 amps (N = don't write setting to NVRAM/Flash)
From then on I divide the extra amount of power that goes to the grid /240 volt , take the integer, subtract 1 amp to have a little buffer and set the charge current again.
Once the current calculates below 6 I send a "$FS" (function stop) and EV stops charging.
Since then people have added a python library to talk to the openevse directly via usb converter or wifi directly instead of URL.

Another way is to do it the official way of openevse with energy monitor and MQTT
I never got around to that process ;-)
 
I have Rainforest EMU-2 Energy Monitoring Unit that is paired with my smart meter via zigbee.
I use a python program to read the usage data in almost real time eg:

$raven
{"is_connected": true, "link_strength": 100, "channel": 11, "description": "Successfully Joined", "extpanid": 2112161847904819, "shortaddr": "0x081d", "status": "Connected"}
{"raw_summation_delivered": 77546621, "raw_summation_received": 71279524, "summation_delivered": 77546.621, "summation_received": 71279.524, "multiplier": 1, "divisor": 1000, "timstamp": "2022-12-30T04:57:31Z"}
[ those are my smart meter readings : from grid & to grid
Then I see the actual power usage]

{"demand": 1.427, "raw_demand": 1427, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:58:53Z"}
{"demand": 1.431, "raw_demand": 1431, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:59:01Z"}
{"demand": 1.419, "raw_demand": 1419, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:59:09Z"}
{"demand": 1.425, "raw_demand": 1425, "multiplier": 1, "divisor": 1000, "timestamp": "2022-12-30T04:59:18Z"}
In 8-9 second intervals I get the info how much power is going to<->from the grid.

I am using openevse with wifi.
Minimum of the J1772 standard at 240 volt = 6 amps so 1440 watts.
When the program sees > 1440 watts going to the grid I write a URL to the openevse: $FE (== function enable)
With "$SC 6 N" is set it to 6 amps (N = don't write setting to NVRAM/Flash)
From then on I divide the extra amount of power that goes to the grid /240 volt , take the integer, subtract 1 amp to have a little buffer and set the charge current again.
Once the current calculates below 6 I send a "$FS" (function stop) and EV stops charging.
Since then people have added a python library to talk to the openevse directly via usb converter or wifi directly instead of URL.

Another way is to do it the official way of openevse with energy monitor and MQTT
I never got around to that process ;-)
This is exactly the sort of input I was hoping for.

Are you saying with OpenEVSE WiFi, changing charge power is a simple as writing a specific URL?

I’m putting together a PLC-based Energy Meter / Controller, so I know exactly when I want to start charging and what charge power I want to use (as well as when I want to increase/decrease charge power).

It’s how to use that information to issue commands to the EVSE from the PLC that has me stumped.

You’re making me think that capability is within reach, thanks.

Do you have a link to the place you got this idea?
 
Are you saying with OpenEVSE WiFi, changing charge power is a simple as writing a specific URL?

Yes!
This is in the web interface setting it to 6 amps in a browser:
Screenshot from 2022-12-30 16-43-58.png
the url in my browser shows "http://huzzah6/r?rapi=$SC+6+N"

I wrote a simple bash script so I can disable charging:

$ cat /usr/local/bin/evd
#!/bin/bash
echo "Charger disabled"
wget http://huzzah6/r\?rapi=\$FS -O /dev/null

I can use that in crontabs to disable charging when I want.
Obviously I have an "eve" (ev-enable) as well ;-)





I’m putting together a PLC-based Energy Meter / Controller, so I know exactly when I want to start charging and what charge power I want to use (as well as when I want to increase/decrease charge power).

It’s how to use that information to issue commands to the EVSE from the PLC that has me stumped.

You’re making me think that capability is within reach, thanks.

Do you have a link to the place you got this idea?

 
What kind of charger? For the type2 there are some options, although i'm not sure if they are available for the US market as well.

Chargers like eg the MyEnergi Zappi allow you to use any excess solar. It just monitors the grid and if there is more solar than used (thus feed-in to the grid) it ramps-up the car charger to use the solar for charging the car (and ramps down if there is more local demand and/or less sun)


Off course you can build something yourself as well, the charge rate of the car is done by a PWM signal. The duty cycle determines the charge rate the car uses, so by adjusting that you can adjust the charge rate of the car.
OpenEVSE would be a nice start, but you can build it from scratch as well, plenty of resources available using ESP or Arduino's for this purposes.
 
I considered the open-evse, or making something even more DIY to create the SAE J1772 PWM signal. But the Emporia EVSE was less expensive, and while still requiring use of the cloud, there's an open source PyEmVue python library that can control the charger. For a standard sort of electrical system, especially grid-tied, the Emporia excess solar feature works fine. The way my mostly off-grid system is set up, that doesn't work so well, my main system control on the Raspberry Pi controls the EVSE along with other opportunity loads. https://github.com/magico13/PyEmVue
 
I considered the open-evse, or making something even more DIY to create the SAE J1772 PWM signal. But the Emporia EVSE was less expensive, and while still requiring use of the cloud, there's an open source PyEmVue python library that can control the charger. For a standard sort of electrical system, especially grid-tied, the Emporia excess solar feature works fine. The way my mostly off-grid system is set up, that doesn't work so well, my main system control on the Raspberry Pi controls the EVSE along with other opportunity loads. https://github.com/magico13/PyEmVue
How much cheaper is Emporia vs OpenEVSE? OpenEVSE has an official no-cloud required control interface vs the unofficial cloud-required control interface for Emporia.
 
How much cheaper is Emporia vs OpenEVSE? OpenEVSE has an official no-cloud required control interface vs the unofficial cloud-required control interface for Emporia.
They're both $399 of you assemble your own OpenEVSE. The pre assembled one is $459.

The OpenEVSE is all local and they just updated the display on the unit to a color 3.5"
 
They're both $399 of you assemble your own OpenEVSE. The pre assembled one is $459.

The OpenEVSE is all local and they just updated the display on the unit to a color 3.5"
The new LCD looks good. The assembly is pretty easy especially for experienced DIY. The officially supported local control interface is much less brittle than a reverse engineered interface without official support for any long term system.
 
The new LCD looks good. The assembly is pretty easy especially for experienced DIY. The officially supported local control interface is much less brittle than a reverse engineered interface without official support for any long term system.
My 8 year old was very excited to get to build it with my help. Then quite annoyed when the entire process only took like 20 minutes.
 
Last edited:
How much cheaper is Emporia vs OpenEVSE? OpenEVSE has an official no-cloud required control interface vs the unofficial cloud-required control interface for Emporia.
Emporia had been less expensive for me. It was only $400, but since it's UL and EnergyStar rated, my utility has a $500 rebate. I agree, reverse engineered control of the Emporia, still relying on their cloud that they could always decide to block, is brittle. To do the excess solar with their control, requires the Vue energy monitor also which is about $170? or more with more current transformers.
 
Back
Top