Simple EVSE


Wolfgang Fahl

Installation[edit]

Prerequisites[edit]

sudo apt-get install qt4-dev-tools

If you have no superuser rights prepend sudo before the commands below or type

sudo -s

before you start

Debug tools[edit]

sudo apt-get install x11-apps

qmodbus installations[edit]

cd /usr/local/src
git clone https://github.com/ed-chemnitz/qmodbus/
qmake
make

Start[edit]

ssh -Y <computer with QModBus>
cd /usr/local/scr/qmodbus
./QModBus&

Example result[edit]

Registers2017-07-18.png

EVSE Software[edit]

To get this software simply contact us via http://web.bitplan.com/kontakt/

Usage[edit]

java -jar simpleevse.jar Usage
SimpleEvSe: 0.0.1

  usage: java SimpleEvSe
 -a (--readall)    : read all
                     read values of all registers
 -d (--debug)      : debug
                     create additional debug output if this switch is used
 -g (--gui)        : graphical user interface
                     show the graphical user interface
 -h (--help)       : help
                     show this usage
 -j (--jmod2)      : jmod2
                     use jmod2 communication library
 -l (--list)       : listserial
                     list the available serial ports
 -p (--port) WERT  : serialPort
                     the serial Port to use
 -r (--read) WERT  : read
                     read value for the given register
 -s (--server)     : web server
                     start the webserver
 -t (--timeOut) N  : timeOut
                     the serial Port timeout in msecs to apply
 -v (--version)    : showVersion
                     show current version if this switch is used
 -vb (--verbose)   : verbose
                     show descriptions and numbers
 -w (--write) WERT : write
                     write value to the given register

Check serial devices[edit]

java -jar simpleevse.jar  --list
available serial devices are:
	ttyUSB1
	ttyUSB0
	ttyAMA0

read all registers[edit]

java -jar simpleevse.jar  --port ttyUSB0 --readall
SetChargeCurrent=  8
ChargeCurrent=  8
VehicleState=  3
MaximumCurrent= 20
StopCharging=  0
FirmwareRevision=  5
DefaultCurrent= 32
ModbusActivate=  1
LowestANCurrent=  0
DigitalOrAnalog=  1
SaveValuesOnPowerDown=  0
StopLoadViaButton=  0
Reserved2006=  0
PP-Recognition=  0
Current1=64262
Current2=  0
Current3=  0
Current4=  0
Current5=  0
Current6=  0
Current7=  0
Current8=  0

same but verbose

java -jar simpleevse.jar  --port ttyUSB0 --readall --verbose
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).
1001 (       ChargeCurrent)=  8 
			Aktueller Ladestrom
			Zeigt den über das CP-Signal kommunizierte Strom an.
			Dieser Wert entspricht dem eingestellten Ladestrom in Register 1000, 
			kann jedoch nie den Wert aus Register 1003 überschreiten.
			Wird der analoge Eingang AN benutzt, kann der dort eingestellte Ladestrom über dieses Register abgerufen werden.
1002 (        VehicleState)=  3 
			Fahrzeugstatus
			1: kein Fahrzeug angeschlossen, EVSE bereit 2: Fahrzeug angeschlossen
			3: Laden gestartet
			4: Laden mit Ventilation gestartet
1003 (      MaximumCurrent)= 20 
			Maximaler Strom
			Zeigt den maximalen Strom an, der durch den PP-Widerstand bzw. 
			dem angeschlossenen Ladekabel begrenzt wird (6A, 13A, 20A, 32A, 63A, 80A), oder über das Register 2007 eingestellt wurde.
1004 (        StopCharging)=  0 
			Laden beenden
			1: Laden sofort beenden 0: default/start charging
1005 (    FirmwareRevision)=  5 
			Firmware Revision
2000 (      DefaultCurrent)= 32 
			Default Ladestrom
			Der Ladestrom, der beim Einschalten der EVSE anliegen soll.
			Manuelles Einstellen nur dann sinnvoll, wenn das Abspeichern des zuletzt eingestellten Ladestroms deaktiviert wird (Register 2004).
2001 (      ModbusActivate)=  1 
			Modbus aktivieren
			Hier kann der Modbus aktiviert und deaktiviert werden.
			Bei deaktiviertem Modbus kann Pin 4 und Pin 5 des 5-poligen PROG-Anschlusses verwendet werden, um den maximalen Strom manuell über Widerstände einzustellen.
			0: Analog-Eingang über Pin 4 / Pin 5 aktiv
			1: Modbus aktiv (Analog-Eingang über Pin 4 / Pin 5 deaktiviert)
			Achtung: Die Benutzung des analogen Eingangs an Pin 4/Pin 5 ist nicht möglich, wenn das BT-Modul gesteckt ist. Dieses Register bitte nur auf 0 setzen, wenn das BT-Modul nicht angeschlossen ist, da es ansonsten zu Fehlfunktionen der EVSE kommen kann.
2002 (     LowestANCurrent)=  0 
			Kleinster einstellbarer Ladestrom über AN-Eingang
			Wird der AN-Eingang (0-5V) zur Stromeinstellung benutzt (Register 2003), so kann der minimale Strom über dieses Register gewählt werden (6A bis max. Strom), der über den AN-Eingang minimal eingestellt werden kann.
			Wird der Wert 0 gesetzt, stoppt das Laden (Schütz öffnet) bei einem über den AN-Eingang eingestellten Strom kleiner 6A .
2003 (     DigitalOrAnalog)=  1 
			Digitale oder analoge Stromeinstellung
			0: analoge Stromeinstellung über AN-Eingang (0-5V), das Register 1000 wird ausgeblendet.
			Digitale Stromeinstellung über Taster am AN-Eingang auf GND:
			1: jedes Aufblinken der LED eine Stromänderung um 1A, gestartet von 0A
			2: jedes Aufblinken der LED eine Stromänderung um 2A, gestartet von 0A
			3: jedes Aufblinken der LED eine Stromänderung um 3A, gestartet von 0A
			......
			10: jedes Aufblinken der LED eine Stromänderung um 10A, gestartet von 0A 11: feste Werte, die über die Register 2010 bis 2017 eingestellt werden können
			1x Aufleuchten = Stromwert aus Register 2010 2x Aufleuchten = Stromwert aus Register 2011
2004 (SaveValuesOnPowerDown)=  0 
			Stromwerte bei Stromausfall abspeichern oder zurücksetzen auf Default-Wert
			0: Stromwerte werden nicht gespeichert (default)
			1: Stromwerte werden gespeichert (in Register 2000)
2005 (   StopLoadViaButton)=  0 
			Laden über Taster unterbrechen
			0: Laden kann nicht über Taster unterbrochen werden
			1: Laden kann durch Taster (> 1 Sekunde halten) unterbrochen werden und kann erst wieder durch Abstecken und wieder Einstecken des Ladesteckers aktiviert werden.
			Bootloader aktivieren
			33000: Bootloader aktiv, LED leuchtet dauerhaft, bis Update durchgeführt wurde
2006 (        Reserved2006)=  0 
			reserviert, wird vorerst nicht bedient
2007 (      PP-Recognition)=  0 
			PP Erkennung
			0: PP-Erkennung über PP-Pin ist aktiv
			Wert > 0: Anstelle des über den PP-Widerstand begrenzten Ladestrom, kann über diesen Wert ein fester maximaler Ladestrom eingestellt werden. Der Widerstand m PP-Pin wird nicht berücksichtigt.
2010 (            Current1)=64262 
			Stromwert 1 (default 6A)
2011 (            Current2)=  0 
			Stromwert 2 (default 10A)
2012 (            Current3)=  0 
			Stromwert 3 (default 16A)
2013 (            Current4)=  0 
			Stromwert 4 (default 25A)
2014 (            Current5)=  0 
			Stromwert 5 (default 6A)
2015 (            Current6)=  0 
			Stromwert 6 (default 10A)
2016 (            Current7)=  0 
			Stromwert 7 (default 16A)
2017 (            Current8)=  0 
			Stromwert 8 (default 25A)

read a single register[edit]

java -jar simpleevse.jar  --port ttyUSB0 --read SetChargeCurrent
SetChargeCurrent=  8

same but verbose

java -jar simpleevse.jar  --port ttyUSB0 --read SetChargeCurrent --verbose
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).

same but verbose and with debug information

java -jar simpleevse.jar  --port ttyUSB0 --read SetChargeCurrent --verbose --debug
SimpleEvSe: 0.0.1

INFO: Frame sent: 010303E8000645B8
INFO: Frame recv: 01030C0008000800030014000000051DD0
INFO: Frame sent: 010307D000084481
INFO: Frame recv: 01031000200001000000010000000000000000CB50
INFO: Frame sent: 010307DA00086483
INFO: Frame recv: 010310FB0600000000000000000000000000006128
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).

write a single register[edit]

java -jar simpleevse.jar  --write SetChargeCurrent=8 --port ttyUSB0
SetChargeCurrent=  8

same but verbose

java -jar simpleevse.jar  --write SetChargeCurrent=8 --port ttyUSB0 --verbose
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).

start a local graphical user interface[edit]

java -jar simpleevse.jar  --port ttyUSB0 --gui
to edit a value click the corresponding cell in the value column and press enter

start a web server[edit]

java -jar simpleevse.ja --port ttyUSB0 --server --debug
SimpleEvSe: 0.0.1

Jul 29, 2017 6:40:46 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFORMATION: Scanning for root resource and provider classes in the packages:
  com.bitplan.simpleevse.resources
  com.bitplan.rest.providers
Jul 29, 2017 6:40:54 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFORMATION: Root resource classes found:
  class com.bitplan.simpleevse.resources.SimpleEvseResource
Jul 29, 2017 6:40:54 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFORMATION: Provider classes found:
  class com.bitplan.rest.providers.JsonProvider
Jul 29, 2017 6:40:55 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFORMATION: Initiating Jersey application, version 'Jersey: 1.19.3 10/24/2016 03:43 PM'
Jul 29, 2017 6:40:57 PM com.bitplan.rest.RestServerImpl addHttpHandler
INFORMATION: adding classpath httphandler /static/->/
Jul 29, 2017 6:40:57 PM org.glassfish.grizzly.http.server.NetworkListener start
INFORMATION: Started listener bound to [0.0.0.0:8102]
Jul 29, 2017 6:40:57 PM org.glassfish.grizzly.http.server.HttpServer start
INFORMATION: [HttpServer] Started.
Jul 29, 2017 6:40:57 PM com.bitplan.rest.RestServerImpl startWebServer
INFORMATION: starting server for URL: http://0.0.0.0:8102

Now you can use your browser or curl to issue restful commands

Valid commands are e.g.:

Usage[edit]

java -jar simpleevse.jar Usage
SimpleEvSe: 0.0.1

  usage: java SimpleEvSe
 -a (--readall)    : read all
                     read values of all registers
 -d (--debug)      : debug
                     create additional debug output if this switch is used
 -g (--gui)        : graphical user interface
                     show the graphical user interface
 -h (--help)       : help
                     show this usage
 -j (--jmod2)      : jmod2
                     use jmod2 communication library
 -l (--list)       : listserial
                     list the available serial ports
 -p (--port) WERT  : serialPort
                     the serial Port to use
 -r (--read) WERT  : read
                     read value for the given register
 -s (--server)     : web server
                     start the webserver
 -t (--timeOut) N  : timeOut
                     the serial Port timeout in msecs to apply
 -v (--version)    : showVersion
                     show current version if this switch is used
 -vb (--verbose)   : verbose
                     show descriptions and numbers
 -w (--write) WERT : write
                     write value to the given register

Check serial devices[edit]

java -jar simpleevse.jar  --list
available serial devices are:
	ttyUSB1
	ttyUSB0
	ttyAMA0

read all registers[edit]

java -jar simpleevse.jar  --port ttyUSB0 --readall
SetChargeCurrent=  8
ChargeCurrent=  8
VehicleState=  3
MaximumCurrent= 20
StopCharging=  0
FirmwareRevision=  5
DefaultCurrent= 32
ModbusActivate=  1
LowestANCurrent=  0
DigitalOrAnalog=  1
SaveValuesOnPowerDown=  0
StopLoadViaButton=  0
Reserved2006=  0
PP-Recognition=  0
Current1=64262
Current2=  0
Current3=  0
Current4=  0
Current5=  0
Current6=  0
Current7=  0
Current8=  0

same but verbose

java -jar simpleevse.jar  --port ttyUSB0 --readall --verbose
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).
1001 (       ChargeCurrent)=  8 
			Aktueller Ladestrom
			Zeigt den über das CP-Signal kommunizierte Strom an.
			Dieser Wert entspricht dem eingestellten Ladestrom in Register 1000, 
			kann jedoch nie den Wert aus Register 1003 überschreiten.
			Wird der analoge Eingang AN benutzt, kann der dort eingestellte Ladestrom über dieses Register abgerufen werden.
1002 (        VehicleState)=  3 
			Fahrzeugstatus
			1: kein Fahrzeug angeschlossen, EVSE bereit 2: Fahrzeug angeschlossen
			3: Laden gestartet
			4: Laden mit Ventilation gestartet
1003 (      MaximumCurrent)= 20 
			Maximaler Strom
			Zeigt den maximalen Strom an, der durch den PP-Widerstand bzw. 
			dem angeschlossenen Ladekabel begrenzt wird (6A, 13A, 20A, 32A, 63A, 80A), oder über das Register 2007 eingestellt wurde.
1004 (        StopCharging)=  0 
			Laden beenden
			1: Laden sofort beenden 0: default/start charging
1005 (    FirmwareRevision)=  5 
			Firmware Revision
2000 (      DefaultCurrent)= 32 
			Default Ladestrom
			Der Ladestrom, der beim Einschalten der EVSE anliegen soll.
			Manuelles Einstellen nur dann sinnvoll, wenn das Abspeichern des zuletzt eingestellten Ladestroms deaktiviert wird (Register 2004).
2001 (      ModbusActivate)=  1 
			Modbus aktivieren
			Hier kann der Modbus aktiviert und deaktiviert werden.
			Bei deaktiviertem Modbus kann Pin 4 und Pin 5 des 5-poligen PROG-Anschlusses verwendet werden, um den maximalen Strom manuell über Widerstände einzustellen.
			0: Analog-Eingang über Pin 4 / Pin 5 aktiv
			1: Modbus aktiv (Analog-Eingang über Pin 4 / Pin 5 deaktiviert)
			Achtung: Die Benutzung des analogen Eingangs an Pin 4/Pin 5 ist nicht möglich, wenn das BT-Modul gesteckt ist. Dieses Register bitte nur auf 0 setzen, wenn das BT-Modul nicht angeschlossen ist, da es ansonsten zu Fehlfunktionen der EVSE kommen kann.
2002 (     LowestANCurrent)=  0 
			Kleinster einstellbarer Ladestrom über AN-Eingang
			Wird der AN-Eingang (0-5V) zur Stromeinstellung benutzt (Register 2003), so kann der minimale Strom über dieses Register gewählt werden (6A bis max. Strom), der über den AN-Eingang minimal eingestellt werden kann.
			Wird der Wert 0 gesetzt, stoppt das Laden (Schütz öffnet) bei einem über den AN-Eingang eingestellten Strom kleiner 6A .
2003 (     DigitalOrAnalog)=  1 
			Digitale oder analoge Stromeinstellung
			0: analoge Stromeinstellung über AN-Eingang (0-5V), das Register 1000 wird ausgeblendet.
			Digitale Stromeinstellung über Taster am AN-Eingang auf GND:
			1: jedes Aufblinken der LED eine Stromänderung um 1A, gestartet von 0A
			2: jedes Aufblinken der LED eine Stromänderung um 2A, gestartet von 0A
			3: jedes Aufblinken der LED eine Stromänderung um 3A, gestartet von 0A
			......
			10: jedes Aufblinken der LED eine Stromänderung um 10A, gestartet von 0A 11: feste Werte, die über die Register 2010 bis 2017 eingestellt werden können
			1x Aufleuchten = Stromwert aus Register 2010 2x Aufleuchten = Stromwert aus Register 2011
2004 (SaveValuesOnPowerDown)=  0 
			Stromwerte bei Stromausfall abspeichern oder zurücksetzen auf Default-Wert
			0: Stromwerte werden nicht gespeichert (default)
			1: Stromwerte werden gespeichert (in Register 2000)
2005 (   StopLoadViaButton)=  0 
			Laden über Taster unterbrechen
			0: Laden kann nicht über Taster unterbrochen werden
			1: Laden kann durch Taster (> 1 Sekunde halten) unterbrochen werden und kann erst wieder durch Abstecken und wieder Einstecken des Ladesteckers aktiviert werden.
			Bootloader aktivieren
			33000: Bootloader aktiv, LED leuchtet dauerhaft, bis Update durchgeführt wurde
2006 (        Reserved2006)=  0 
			reserviert, wird vorerst nicht bedient
2007 (      PP-Recognition)=  0 
			PP Erkennung
			0: PP-Erkennung über PP-Pin ist aktiv
			Wert > 0: Anstelle des über den PP-Widerstand begrenzten Ladestrom, kann über diesen Wert ein fester maximaler Ladestrom eingestellt werden. Der Widerstand m PP-Pin wird nicht berücksichtigt.
2010 (            Current1)=64262 
			Stromwert 1 (default 6A)
2011 (            Current2)=  0 
			Stromwert 2 (default 10A)
2012 (            Current3)=  0 
			Stromwert 3 (default 16A)
2013 (            Current4)=  0 
			Stromwert 4 (default 25A)
2014 (            Current5)=  0 
			Stromwert 5 (default 6A)
2015 (            Current6)=  0 
			Stromwert 6 (default 10A)
2016 (            Current7)=  0 
			Stromwert 7 (default 16A)
2017 (            Current8)=  0 
			Stromwert 8 (default 25A)

read a single register[edit]

java -jar simpleevse.jar  --port ttyUSB0 --read SetChargeCurrent
SetChargeCurrent=  8

same but verbose

java -jar simpleevse.jar  --port ttyUSB0 --read SetChargeCurrent --verbose
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).

same but verbose and with debug information

java -jar simpleevse.jar  --port ttyUSB0 --read SetChargeCurrent --verbose --debug
SimpleEvSe: 0.0.1

INFO: Frame sent: 010303E8000645B8
INFO: Frame recv: 01030C0008000800030014000000051DD0
INFO: Frame sent: 010307D000084481
INFO: Frame recv: 01031000200001000000010000000000000000CB50
INFO: Frame sent: 010307DA00086483
INFO: Frame recv: 010310FB0600000000000000000000000000006128
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).

write a single register[edit]

java -jar simpleevse.jar  --write SetChargeCurrent=8 --port ttyUSB0
SetChargeCurrent=  8

same but verbose

java -jar simpleevse.jar  --write SetChargeCurrent=8 --port ttyUSB0 --verbose
1000 (    SetChargeCurrent)=  8 
			Ladestrom einstellen
			Über dieses Register können Sie den gewünschten Ladestrom einstellen. (6-80A).

start a local graphical user interface[edit]

java -jar simpleevse.jar  --port ttyUSB0 --gui
to edit a value click the corresponding cell in the value column and press enter

start a web server[edit]

java -jar simpleevse.ja --port ttyUSB0 --server --debug
SimpleEvSe: 0.0.1

Jul 29, 2017 6:40:46 PM com.sun.jersey.api.core.PackagesResourceConfig init
INFORMATION: Scanning for root resource and provider classes in the packages:
  com.bitplan.simpleevse.resources
  com.bitplan.rest.providers
Jul 29, 2017 6:40:54 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFORMATION: Root resource classes found:
  class com.bitplan.simpleevse.resources.SimpleEvseResource
Jul 29, 2017 6:40:54 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFORMATION: Provider classes found:
  class com.bitplan.rest.providers.JsonProvider
Jul 29, 2017 6:40:55 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFORMATION: Initiating Jersey application, version 'Jersey: 1.19.3 10/24/2016 03:43 PM'
Jul 29, 2017 6:40:57 PM com.bitplan.rest.RestServerImpl addHttpHandler
INFORMATION: adding classpath httphandler /static/->/
Jul 29, 2017 6:40:57 PM org.glassfish.grizzly.http.server.NetworkListener start
INFORMATION: Started listener bound to [0.0.0.0:8102]
Jul 29, 2017 6:40:57 PM org.glassfish.grizzly.http.server.HttpServer start
INFORMATION: [HttpServer] Started.
Jul 29, 2017 6:40:57 PM com.bitplan.rest.RestServerImpl startWebServer
INFORMATION: starting server for URL: http://0.0.0.0:8102

Now you can use your browser or curl to issue restful commands

Valid commands are e.g.:

🖨 🚪