enbility / eebus-go

EEBUS protocol implementation in go
https://enbility.net
MIT License
52 stars 14 forks source link
charging-stations eebus electric-vehicles emobility energy-management energy-management-systems

eebus-go

Build Status GoDoc Coverage Status Go report CodeFactor

This library provides a foundation for implementing EEBUS use cases in go. It uses the SHIP implementation ship-go and the SPINE implementation spine-go. Both repositories started as part of this repository, before they were moved into their own separate repositories and go packages.

Basic understanding of the EEBUS concepts SHIP and SPINE to use this library is required. Please check the corresponding specifications on the EEBUS downloads website.

Introduction

The supported functionality contains:

Packages

Usage

The included small demo applications do not implement any usecases and thus will end the connection once it reached exchanging usecase information.

Services with implemented use cases will be implemented in different repositories and are also early work in progress:

HEMS

First Run

go run cmd/hems/main.go 4715

4715 is the example server port that this process should use

The certificate and key and the local SKI will be generated and printed. You should then save the certificate and the key to a file.

General Usage

Usage: go run cmd/hems/main.go <serverport> <remoteski> <certfile> <keyfile>

EVSE

First Run

go run cmd/hems/main.go 4715

4715 is the example server port that this process should use

The certificate and key and the local SKI will be generated and printed. You should then save the certificate and the key to a file.

General Usage

Usage: go run cmd/evse/main.go <serverport> <remoteski> <certfile> <keyfile>

Explanation

The remoteski is from the eebus service to connect to. If no certfile or keyfile are provided, they are generated and printed in the console so they can be saved in a file and later used again. The local SKI is also printed.

SHIP implementation notes

This approach has been tested with:

Interfaces

Verbose logging

Use SetLogger on Service to set the logger which needs to conform to the logging.Logging interface of ship-go.

Example:

configuration = service.NewConfiguration(...)
h.myService = service.NewEEBUSService(configuration, h)
h.myService.SetLogging(h)