SteVe
Provides basic functions for the administration of charge points, user data and RFID cards for user authentication and was tested successfully in operation.
https://github.com/steve-community/steve
Category: Consumption
Sub Category: Mobility and Transportation
Keywords
chargingstation emobility java mobility ocpp smarthome steve
Keywords from Contributors
measuring observation archive transformations compose reporter annotation optimize generation tagging
Last synced: about 19 hours ago
JSON representation
Repository metadata
SteVe - OCPP server implementation in Java
- Host: GitHub
- URL: https://github.com/steve-community/steve
- Owner: steve-community
- License: gpl-3.0
- Created: 2013-09-05T12:31:46.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2025-10-25T18:02:02.000Z (2 months ago)
- Last Synced: 2025-10-28T20:39:28.782Z (about 2 months ago)
- Topics: chargingstation, emobility, java, mobility, ocpp, smarthome, steve
- Language: Java
- Homepage:
- Size: 9.9 MB
- Stars: 935
- Watchers: 58
- Forks: 441
- Open Issues: 98
- Releases: 44
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE-HEADER.txt
README.md

Introduction
SteVe started its life at the RWTH Aachen University in 2013.
The name is derived from Steckdosenverwaltung in German (in English: socket administration).
The aim of SteVe is to support the deployment and popularity of electric mobility, so it is easy to install and to use.
It provides basic functions for the administration of charge points, user data, and RFID cards for user authentication and was tested successfully in operation.
SteVe is considered as an open platform to implement, test and evaluate novel ideas for electric mobility, like authentication protocols, reservation mechanisms for charge points, and business models for electric mobility.
The project is distributed under GPL and is free to use.
If you are going to deploy it we are happy to see the logo on a charge point.
Relation to Powerfill
Powerfill is a SaaS company to expand beyond the basics of SteVe: While SteVe covers the basics of OCPP functionality in a DIY sense, Powerfill offers more and enterprise features with ease of use. See the announcement and sign up for early access.
Charge Point Support
Electric charge points using the following OCPP versions are supported:
- OCPP1.2S
- OCPP1.2J
- OCPP1.5S
- OCPP1.5J
- OCPP1.6S
- OCPP1.6J
⚠️ Currently, Steve doesn't support the OCPP-1.6 security whitepaper yet (see #100) and anyone can send events to a public steve instance once the chargebox id is known.
Please, don't expose a Steve instance without knowing that risk.
For Charging Station compatibility please check:
https://github.com/steve-community/steve/wiki/Charging-Station-Compatibility
System Requirements
SteVe requires
- JDK 21 or newer
- Maven
- MySQL or MariaDB. You should use one of these supported versions.
to build and run.
SteVe is designed to run standalone, a java servlet container / web server (e.g. Apache Tomcat), is not required.
Configuration and Installation
-
Database preparation:
Important: Make sure that the time zone of the MySQL server is the same as the time zone of SteVe. Since
UTCis strongly recommended by OCPP, it is the default in SteVe and you should set it in MySQL, accordingly.Make sure MySQL is reachable via TCP (e.g., remove
skip-networkingfrommy.cnf).
The following MySQL statements can be used as database initialization (adjust database name and credentials according to your setup).CREATE DATABASE stevedb CHARACTER SET utf8 COLLATE utf8_unicode_ci; CREATE USER 'steve'@'localhost' IDENTIFIED BY 'changeme'; GRANT ALL PRIVILEGES ON stevedb.* TO 'steve'@'localhost'; -
Download and extract tarball:
You can download and extract the SteVe releases using the following commands (replace X.X.X with the desired version number):
wget https://github.com/steve-community/steve/archive/steve-X.X.X.tar.gz tar xzvf steve-X.X.X.tar.gz cd steve-X.X.X -
Configure SteVe before building:
The basic configuration is defined in application-prod.properties:
- You must change database configuration
- You must change the host to the correct IP address of your server
- You must change web interface credentials
- You can access the application via HTTPS, by enabling it and setting the keystore properties
For advanced configuration please see the Configuration wiki
-
Build SteVe:
To compile SteVe simply use Maven. A runnable
warfile containing the application and configuration will be created in the subdirectorysteve/target.# ./mvnw package -
Run SteVe:
To start the application run (please do not run SteVe as root):
# java -jar target/steve.war
Docker
If you prefer to build and start this project via docker (you can skip the steps 1, 4 and 5 from above), this can be done as follows: docker compose up -d
Because the docker compose file is written to build the project for you, you still have to change the project configuration settings from step 3.
Instead of changing the application-prod.properties, you have to change the application-docker.properties. There you have to change all configurations which are described in step 3.
The database password for the user "steve" has to be the same as you have configured it in the docker compose file.
With the default docker compose configuration, the web interface will be accessible at: http://localhost:8180
Kubernetes
First build your image, and push it to a registry your K8S cluster can access. Make sure the build args in the docker build command are set with the same database configuration that the main deployment will use.
docker build --build-arg DB_HOST= --build-arg DB_PORT= --build-arg DB_USERNAME= --build-arg DB_PASSWORD= --build-arg DB_DATABASE= -f k8s/docker/Dockerfile -t <IMAGE_NAME> .
docker push <IMAGE_NAME>
Then go to k8s/yaml/Deployment.yaml and change ### YOUR BUILT IMAGE HERE ### to your image tag, and fill in the environment variables with the same database connection that you used at build time.
After this, create the namespace using kubectl create ns steve and apply your yaml with kubectl apply -f k8s/yaml/Deployment.yaml followed by kubectl apply -f k8s/yaml/Service.yaml
To access this publicaly, you'll also have to setup an ingress using something like nginx or traefik.
Ubuntu
You'll find a tutorial how to prepare Ubuntu for SteVe here: https://github.com/steve-community/steve/wiki/Prepare-Ubuntu-VM-for-SteVe
AWS
You'll find a tutorial how to setup SteVe in AWS using Lightsail here: https://github.com/steve-community/steve/wiki/Create-SteVe-Instance-in-AWS-Lightsail
First Steps
After SteVe has successfully started, you can access the web interface using the configured credentials under:
http://<your-server-ip>:<port>/steve/manager
Add a charge point
-
In order for SteVe to accept messages from a charge point, the charge point must first be registered. To add a charge point to SteVe select Data Management >> Charge Points >> Add. Enter the ChargeBox ID configured in the charge point and confirm.
-
The charge points must be configured to communicate with following addresses. Depending on the OCPP version of the charge point, SteVe will automatically route messages to the version-specific implementation.
- SOAP:
http://<your-server-ip>:<port>/steve/services/CentralSystemService - WebSocket/JSON:
ws://<your-server-ip>:<port>/steve/websocket/CentralSystemService
- SOAP:
As soon as a heartbeat is received, you should see the status of the charge point in the SteVe Dashboard.
Have fun!
Screenshots
- Home
- Connector Status
- Data Management - Charge Points
- Data Management - Users
- Data Management - OCPP Tags
- Data Management - Reservations
- Data Management - Transactions
- Operations - OCPP v1.2
- Operations - OCPP v1.5
- Settings
GDPR
If you are in the EU and offer vehicle charging to other people using SteVe, keep in mind that you have to comply to the General Data Protection Regulation (GDPR) as SteVe processes charging transactions, which can be considered personal data.
Are you having issues?
See the FAQ
Acknowledgments
goekay thanks to
- JetBrains who support this project by providing a free All Products Pack license, and
- ej-technologies GmbH who support this project by providing a free license for their Java profiler.
Owner metadata
- Name: SteVe Community
- Login: steve-community
- Email:
- Kind: organization
- Description:
- Website:
- Location: Germany
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/112710077?v=4
- Repositories: 3
- Last ynced at: 2024-03-27T11:16:48.880Z
- Profile URL: https://github.com/steve-community
GitHub Events
Total
- Fork event: 57
- Create event: 161
- Commit comment event: 1
- Release event: 2
- Issues event: 64
- Watch event: 135
- Delete event: 161
- Issue comment event: 200
- Push event: 242
- Gollum event: 8
- Pull request review comment event: 26
- Pull request review event: 27
- Pull request event: 331
Last Year
- Fork event: 52
- Create event: 155
- Commit comment event: 1
- Release event: 2
- Issues event: 62
- Watch event: 128
- Delete event: 145
- Issue comment event: 190
- Push event: 227
- Pull request review event: 24
- Pull request review comment event: 25
- Pull request event: 303
- Gollum event: 8
Committers metadata
Last synced: about 2 months ago
Total Commits: 2,020
Total Committers: 37
Avg Commits per committer: 54.595
Development Distribution Score (DDS): 0.451
Commits in past year: 255
Committers in past year: 5
Avg Commits per committer in past year: 51.0
Development Distribution Score (DDS) in past year: 0.459
| Name | Commits | |
|---|---|---|
| Sevket Goekay | g****y@d****e | 1108 |
| dependabot[bot] | 4****] | 532 |
| dependabot-preview[bot] | 2****] | 169 |
| Christian Samsel | c****l@g****e | 59 |
| Julien Herr | j****r@b****r | 29 |
| fnkbsi | 1****i | 23 |
| Andreas Heuvels | a****s@r****e | 13 |
| fnkbsi | 11 | |
| fnkbsi | T****r@F****e | 11 |
| David Rerimassie | d****l@g****m | 8 |
| fnkbsi | f****i@n****m | 6 |
| Michael Heimpold | m****i@h****e | 6 |
| Ling Li | l****i@i****k | 5 |
| Sevket Gökay | s****y@m****m | 4 |
| Stefan Wahren | s****n@i****m | 4 |
| Dakai Wei | d****i@s****t | 4 |
| Sylwester Lachiewicz | s****z@g****m | 3 |
| Christian Meusel | c****l@p****e | 2 |
| Yvan Janssens | y****j@c****t | 2 |
| caspar | c****i@c****z | 2 |
| Byungjun Woo | b****n@g****e | 2 |
| fnkbsi | f****i@f****m | 2 |
| redhell | a****n@b****z | 1 |
| chuck-h | c****r@g****m | 1 |
| João Pires | j****1@o****m | 1 |
| Gregor Schatz | g****z@h****e | 1 |
| Kowsz | K****z@g****m | 1 |
| Kyle Abramowitz | k****z@m****m | 1 |
| bastian | b****r@t****e | 1 |
| Fabian Ohler | f****1@r****e | 1 |
| and 7 more... | ||
Committer domains:
- rwth-aachen.de: 2
- dbis.rwth-aachen.de: 1
- gmxpro.de: 1
- bornerecharge.fr: 1
- fmen023.fkfs.de: 1
- noreply.github.com: 1
- heimpold.de: 1
- intellicharge.co.uk: 1
- mrge.com: 1
- i2se.com: 1
- shizenenergy.net: 1
- posteo.de: 1
- cyber.gent: 1
- cblok.biz: 1
- garage51.de: 1
- fnkbsi.noreply.github.com: 1
- bublitz.biz: 1
- hardy-barth.de: 1
- github.com: 1
- momentumdynamics.com: 1
- t-online.de: 1
- parall.ax: 1
- sinabe.ch: 1
- linked-planet.com: 1
Issue and Pull Request metadata
Last synced: about 2 months ago
Total issues: 666
Total pull requests: 1,422
Average time to close issues: 3 months
Average time to close pull requests: 12 days
Total issue authors: 341
Total pull request authors: 43
Average comments per issue: 3.72
Average comments per pull request: 0.57
Merged pull request: 995
Bot issues: 2
Bot pull requests: 1,164
Past year issues: 35
Past year pull requests: 300
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 5 days
Past year issue authors: 20
Past year pull request authors: 6
Past year average comments per issue: 1.29
Past year average comments per pull request: 0.28
Past year merged pull request: 184
Past year bot issues: 0
Past year bot pull requests: 233
Top Issue Authors
- goekay (46)
- lategoodbye (20)
- rdc-Green (18)
- goRaspy (15)
- juherr (12)
- GRangaRao (11)
- Tano-Coppoletta (10)
- eviontech (9)
- TechOverflow (9)
- andle (9)
- 01mk027 (8)
- chuck-h (7)
- DeltaVetal26 (6)
- rishabhmehandru (6)
- barsnick (5)
Top Pull Request Authors
- dependabot[bot] (979)
- dependabot-preview[bot] (185)
- goekay (119)
- juherr (33)
- fnkbsi (19)
- JavaIsJavaScript (10)
- csamsel (6)
- mhei (6)
- slachiewicz (5)
- fmandache (4)
- domonkosbodnar-parkl (4)
- dakai-wei-of-shizen (4)
- mahmudarslan (4)
- MingShyanWei (4)
- friedkiwi (3)
Top Issue Labels
- helpdesk (94)
- question (56)
- feature request (46)
- bug (24)
- enhancement (9)
- duplicate (8)
- discussion (3)
- invalid (2)
- wontfix (2)
- dependencies (2)
- java (2)
Top Pull Request Labels
- dependencies (1,164)
- java (577)
- github_actions (5)
Dependencies
- org.jetbrains:annotations 23.0.0 compile
- org.apache.logging.log4j:log4j-bom 2.18.0 import
- org.springframework:spring-framework-bom 5.3.21 import
- org.projectlombok:lombok 1.18.24 provided
- com.fasterxml.jackson.core:jackson-annotations 2.13.3
- com.fasterxml.jackson.core:jackson-databind 2.13.3
- com.fasterxml.jackson.module:jackson-module-jaxb-annotations 2.13.3
- com.github.RWTH-i5-IDSG:ocpp-jaxb 0.0.1
- com.github.goekay:CompositeJKS 2.0
- com.github.zafarkhaja:java-semver 0.9.0
- com.google.guava:guava 31.1-jre
- com.lmax:disruptor 3.4.4
- com.neovisionaries:nv-i18n 1.29
- com.sun.mail:jakarta.mail 2.0.1
- com.zaxxer:HikariCP 5.0.1
- joda-time:joda-time 2.10.14
- mysql:mysql-connector-java 8.0.29
- org.apache.cxf:cxf-rt-features-logging 3.5.3
- org.apache.cxf:cxf-rt-frontend-jaxws 3.5.3
- org.apache.cxf:cxf-rt-transports-http 3.5.3
- org.apache.cxf:cxf-rt-transports-http-hc 3.5.3
- org.apache.logging.log4j:log4j-api
- org.apache.logging.log4j:log4j-core
- org.apache.logging.log4j:log4j-slf4j-impl
- org.apache.logging.log4j:log4j-web
- org.eclipse.jetty.websocket:websocket-jetty-server 10.0.11
- org.eclipse.jetty:apache-jsp 10.0.11
- org.eclipse.jetty:apache-jstl 10.0.11
- org.eclipse.jetty:jetty-annotations 10.0.11
- org.eclipse.jetty:jetty-rewrite 10.0.11
- org.eclipse.jetty:jetty-server 10.0.11
- org.eclipse.jetty:jetty-webapp 10.0.11
- org.hibernate.validator:hibernate-validator 6.1.7.Final
- org.jooq:jooq 3.16.7
- org.slf4j:jcl-over-slf4j 1.7.36
- org.slf4j:slf4j-api 1.7.36
- org.springframework.security:spring-security-config 5.7.2
- org.springframework.security:spring-security-web 5.7.2
- org.springframework:spring-webmvc
- org.springframework:spring-websocket
- org.eclipse.jetty.websocket:websocket-jetty-client 10.0.11 test
- org.junit.jupiter:junit-jupiter-engine 5.8.2 test
- org.junit.jupiter:junit-jupiter-params 5.8.2 test
- org.springframework:spring-test test
- actions/checkout v2 composite
- actions/setup-java v2 composite
- ${{matrix.db}} * docker
- actions/checkout v2 composite
- actions/checkout v3 composite
- actions/setup-java v2 composite
- actions/setup-java v3 composite
- nikitasavinov/checkstyle-action master composite
- pmd/pmd-github-action v1 composite
- maven 3.6.1-jdk-11 build
- mariadb 10.4
- maven 3.6.1-jdk-11 build
Score: 10.551140381763863