You can find more details on the official website
- CentralSystemService.wsdl generated scala beans
- ChargePointService.wsdl generated scala beans
- CentralSystemClient for both 1.2 and 1.5 versions
- Helper methods to work with ocpp
- OCPP 1.2
- OCPP 1.5
- Spray based service to handle OCPP requests
- Functionality to parse and create OCPP JSON messages
- A high-level interface for an OCPP 1.5-JSON client
- Add this repository to your pom.xml:
<repository>
<id>thenewmotion</id>
<name>The New Motion Repository</name>
<url>http://nexus.thenewmotion.com/content/repositories/releases-public</url>
</repository>
- Add dependency to your pom.xml:
OCPP 1.2
<dependency>
<groupId>com.thenewmotion.chargenetwork</groupId>
<artifactId>ocpp-1.2_2.10</artifactId>
<version>4.0</version>
</dependency>
OCPP 1.5
<dependency>
<groupId>com.thenewmotion.chargenetwork</groupId>
<artifactId>ocpp-1.5_2.10</artifactId>
<version>4.0</version>
</dependency>
Spray OCPP
<dependency>
<groupId>com.thenewmotion.chargenetwork</groupId>
<artifactId>ocpp-spray_2.10</artifactId>
<version>4.0</version>
</dependency>
OCPP 1.5-JSON
<dependency>
<groupId>com.thenewmotion.chargenetwork</groupId>
<artifactId>ocpp-json_2.10</artifactId>
<version>4.0</version>
There is an example OCPP 1.5-JSON client application in ocpp-json/src/test/scala/com/thenewmotion/example, reproduced here for your convenience:
package com.thenewmotion.example
import java.net.URI
import com.typesafe.scalalogging.slf4j.Logging
import com.thenewmotion.ocpp.messages._
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
import com.thenewmotion.ocpp.json.{OcppError, PayloadErrorCode, OcppException, OcppJsonClient}
object JsonClientTestApp extends App {
val connection = new OcppJsonClient("Test Charger", new URI("http://localhost:8080/ocppws")) with Logging {
def onRequest(req: ChargePointReq): Future[ChargePointRes] = Future {
req match {
case GetLocalListVersionReq =>
GetLocalListVersionRes(AuthListNotSupported)
case _ =>
throw OcppException(PayloadErrorCode.NotSupported, "Demo app doesn't support that")
}
}
def onError(err: OcppError) = logger.warn(s"OCPP error: ${err.error} ${err.description}")
def onDisconnect = logger.warn("WebSocket disconnect")
}
connection.send(BootNotificationReq(
chargePointVendor = "The New Motion",
chargePointModel = "Lolo 47.6",
chargePointSerialNumber = Some("123456"),
chargeBoxSerialNumber = None,
firmwareVersion = None,
iccid = None,
imsi = None,
meterType = None,
meterSerialNumber = None))
Thread.sleep(7000)
connection.close()
}
Most of the example messages in the ocpp-json unit tests were taken from GIR ocppjs