Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Device Tester (EEBUS)

This app is a simple EEBUS device tester written in Go using the eebus-go library. It can be used to test EEBUS implementations by simulating a device that connects to a EEBUS device:

  • Starts a local EEBUS service and connects to a remote device using SHIP and SPINE
  • Serves a web UI (showing logs, sent/received SPINE messages, usecases and discovered entities. Additionally it shows the values provided under these usecases.
  • Provides basic REST APIs to trigger write operations (e.g. LPC limits). Not all write operations are Supported

Supported Usecases

Several usecases are supported under various actors. The listed write operations are supported as of yet:

  • Actor: Energy Guard (EG

    • Limitation of Power Consumption (LPC)

      • Write Consumption Limit
      • Write Failsafe
    • Limitation of Power Production (LPP)

      • Write Consumption Limit
      • Write Failsafe
  • Actor: Energy Manager (CEM)

    • Coordinated EV Charging (CEVC)

    • EV Commissioning And Configuration (EVCC)

    • EV Charging Electricity Measurement (EVCEM)

    • EVSE Commissioning And Configuration (EVSEC)

    • Overload Protection by EV Charging Current Curtailment (OPEV)

      • Write Load Control Limit
  • Actor: Monitoring Appliance (MA)

    • Monitoring of PowerConsumption (MPC)

      • Not yet implemented

The usecase EV Charging Summary (EVCS) is planned to be supported once it becomes available.

Quick build

# from project root
go build 

Run

# Build
go build

# Optional: configure device identity in `config.json` (defaults used if missing)
# Example (start with defaults):
./device-tester

# Example with explicit port and certificate files:
./device-tester -p 4815 -c cert.pem -k key.pem

Web UI

Certificates

If -c and -k are provided they are used. Otherwise the program looks for cert.pem/key.pem next to the executable and uses them if present. If no certificate/key are available the program creates self-signed files on first run using the deviceInfo.identifier value from config.json as certificate CN, or a default identifier if not set.

Device identity config (example config.json snippet):

{
  "deviceInfo": {
    "vendor": "DemoVendor",
    "brand": "DemoBrand",
    "deviceName": "Device-Tester",
    "identifier": "Demo-HEMS-123"
  }
}

Notes

Based on the eebus-go controlbox example.

Additionally as I have never written GO before and have little experience in webdev, a sizeable portion has been written by coding agents.

About

Test if a EEBUS device handles various Usecases correctly.

Resources

Stars

Watchers

Forks

Contributors

Languages