scribble

OCPP Work Diary

About Incharge Email GitHub

23 Jul 2014
Backend System von OCPP für Ladestation

Grundlage

Aktueller Stand in EU

Driven by international incentives to reduce greenhouse gas emissions, interest in Electric Vehicle (EV) technology is growing rapidly throughout the world. To achieve the EU 20-20-20 targets, EVs will be massively rolled out across Europe Existing electricity networks are constrained by how much additional capacity they can provide for the high integration of EV recharging systems; taking into account additional emerging requirements for instance: the electrification of residential heating and the increase in distributed renewable generation. Such changes can be offset by a move towards a smarter network.[1]

Important Elements:[1]

  • Battery Technology
  • Electric Vehicle Supply Equipment (EVSE)
  • Information and Communication Technology (ICT)

giving support to their management, operation and maintenance.[4]

  • Energy Management Systems

Important Roles:[4]

  • EV
  • EVSE(EV Supply Equipment)
  • EVSP(EV Service Provider)

Papers:

1. AC Recharging Infrastructure for EVs and Future Smart Grid

2. Integrating EVs into the Smart-Grid

3. A back-end system for an autonomous parking and charging system for electric vehicles

4. A communication system from EV to EV Service Provider based on OCPP over a wireless network

5. An ICT solution for integration of Electric Vehicles in grid balancing services

Wiki links:

Interoperability

Charge Station

Articles and examples:

The Ultimate Guide to Electric Car Charging Networks

SKY Network

EU 20-20-20:

Die Notwendigkeit einer Steigerung der Energieeffizienz ist Teil des „20-20-20-Ziels“ für das Jahr 2020, das eine Senkung des Primärenergieverbrauchs der Union und der Treibhausgasemissionen um jeweils 20% sowie eine Anhebung des Anteils der erneuerbaren Energiequellen auf 20 % umfasst.

Energy Efficiency

Klima und Umwelt

PEV Sales by Quarter

source: Plug-in Electric Vehicles Where Are We And What’s Next

Difference between AC Charging and DC Charging

Difference

OCPP: Open Charge Point Protocol

OCPP is short for Open Charge Point Protocol, a popular language used for communications between

Developed by: E-Laad Foundation

charging station hardware made by - ABB, Aeroviron- ment, Bosch, DBT, Eaton, Fuji, Schneider, Siemens, etc.

and the managing network systems - like ChargePoint, ECOtality, eVgo, Greenlots, OpConnect, SemaConnect, etc.

Useful links:

Wiki Open Charge Point Protocol

OCPP Description:

OCPP 1.5 description

OCPP Specification: OCPP 1.5 specification

WSDL files of OCPP:

OCPP Central System service description

OCPP Central System service description

Controversy:

In the US, however, OCPP hasn’t quite swept across the charging industry as it has elsewhere, and much of the EVSE that has been deployed was designed prior to OCPP being widely adopted.

The US OCPP controversy mainly stems from the fact that two companies (ECOtality and ChargePoint) have been the largest recipients of the government grants that kick-started the industry, and they don’t exclusively use OCPP. In many cases those networks use proprietary communication protocols that are unique to each com- pany. The gist of the gripe is that tax money was spent to give these companies a stranglehold on these publicly- funded installs - “vendor lock-in,” as some call it.

Difference between OCPP and Collaboratev

OCPP

  • Provides a standard path from EVSE to EVSP
  • Enables EVSE owner to change networks without replacing hardware
  • Prevents EVSE being stranded by a network provider going out of business
  • Doesn’t address roaming across networks or common user credentials

Network Clearing House like Collaboratev or Hubject

  • Allows consumers to roam across networks (note that the consumer may have to pay a roaming charge)
  • All networks must participate to enable seamless roaming for consumers
  • Needs to provide a common user credential to fully address roaming
  • There is a cost for this service – someone must pay
  • EVSE can still use a proprietary backhaul and participate
  • Doesn’t prevent stranded EVSE if a network provide fails

Charge Magazine OCPP

Plug-in Electric Vehicles Where Are We And What’s Next

SOAP

SOAP, originally defined as Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of web services in computer networks. It relies on XML Information Set for its message format, and usually relies on other application layer protocols, most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP), for message negotiation and transmission.

Structure

Example message:

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Header>
  </soap:Header>
  <soap:Body>
    <m:GetStockPrice xmlns:m="http://www.example.org/stock">
      <m:StockName>IBM</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>

Communication:

image

Useful links:

Wiki SOAP

WSDL

The Web Services Description Language (WSDL pronounced “wiz'-dul”) is an XML-based interface definition language that is used for describing the functionality offered by a web service. The acronym is also used for any specific WSDL description of a web service (also referred to as a WSDL file), which provides a machine-readable description of how the service can be called, what parameters it expects, and what data structures it returns. It thus serves a purpose that corresponds roughly to that of a method signature in a programming language.

Useful links:

Wiki WSDL

Web Service

A software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards.

Web Service

Useful links: Wiki Web Service

Wiki UDDI

w3schools UDDI

Discussions of SOAP, JSON, REST, WSDL, XML

Useful links:

JSON, REST, SOAP, WSDL, and SOA: How do they all link together

Describe REST Web services with WSDL 2.0

Web Services Explained

WSDL for SOAP and WSDL for REST and REST based on JSON

Frontend and Backend

Frontend:

  • Ember.js

Backend:

  • Node.js
  • Ruby on Rails

Useful links:

Ember Cli with Rails Part 1

Research of OCPP Backend

Simulator

ocppjs - An experimental OCPP Simulator

The simulator can send JSON request with JSON-schema.

Principle of JSON-schema

json-schema.org

Communication with POSTMAN

POSTMAN

soapUI

SoapUI - The Home of Functional Testing

Communication with AJAX

http://powerful-dusk-5787.herokuapp.com/

node-soap

Github: node-soap

I have written a test demo using node-soap. Fetch the coad on my Github.

  • server.js

    var http = require('http');
    var soap = require('soap');
    var ocppCentralSystemService = {
    CentralSystemService: {
    CentralSystemServiceSoap12: {
      Heartbeat: function(args) {
                                    console.log("/Heartbeat");
                                    var dateTime = new Date();
                                    console.log(dateTime.toString());
         return { currentTime: dateTime.toString() };
      },
            Authorize: function(args) {
                                         console.log("/Authorize");
                                         return { idTagInfo: {} };
            }
    }
    }
    }
    var xml = require('fs').readFileSync('ocppcentralsystemservice1.5_final.wsdl', 'utf8'),
      server = http.createServer(function(request,response) {
          response.end("404: Not Found: "+request.url)
      });
    server.listen(9000);
    soap.listen(server, '/', ocppCentralSystemService, xml);

  • client.js

    var soap = require('soap');
    var url = 'http://localhost:9000/?wsdl';
    var args = {};
    var soapHeader = '<tns:chargeBoxIdentity soap:mustUnderstand="true">' +
                    'boxid' +
                  '</tns:chargeBoxIdentity>' +
                  '<wsa5:To soap:mustUnderstand="true">' +
                    'http://localhost:9000' +
                  '</wsa5:To>' +
                  '<wsa5:Action soap:mustUnderstand="true">' +
                    '/Heartbeat' +
                  '</wsa5:Action>';
    soap.createClient(url, {endpoint:'http://localhost:9000/'}, function(err, client) {
    if (err) throw err;
    console.log(client.describe().CentralSystemService.CentralSystemServiceSoap12.Authorize);
        client.addSoapHeader(soapHeader);
    client.Heartbeat(args, function(err, result) {
      if (err) throw err;
        console.log(result);
      });
    client.Authorize({idTag: ''}, function(err, result) {
      if (err) throw err;
        console.log(result);
      });
    });

Test with Postman

Send SOAP request to node soap through POSTMAN to this demo server and get the identical respond back √

Ember.js

JQuery Knob in Ember Component

Code School



Til next time,
Yuanchen Zhang at 14:49

scribble

About Incharge Email GitHub