Matter - EVerest Bridge
=======================
October 2026 (c) ADECTIO Ltd.

This release was built from https://github.com/adectio/connectedhomeip-everest/releases/tag/v1.1.0-everest-2026.02.1

Binaries are build for linux-arm64

Commands used to build (see documentation in PPT):
==================================================
./scripts/build/build_examples.py --target linux-arm64-evse-clang build

# Strip binaries to reduce size
llvm-strip out/linux-arm64-evse-clang/chip-evse-app


Installation
============
1. scp the chip-evse-app into /home/root
2. scp the chip-evse-app.service into /etc/systemd/system/

3. Enable the service:
systemctl daemon-reload 
systemctl enable chip-evse-app

4. Start the service:
systemctl start chip-evse-app

5. Check the status:
systemctl status chip-evse-app

6. View logs:
# View recent logs (last 50 lines)
journalctl -u chip-evse-app -n 50

# Follow logs in real-time (like tail -f)
journalctl -u chip-evse-app -f

# View logs from the last hour with timestamps
journalctl -u chip-evse-app --since '1 hour ago' -o short-full

# View all logs including errors
journalctl -u chip-evse-app --no-pager


NOTE:
====
This may require additional config in Everest config.yaml to support Fault handling and 'external limits'
correctly (see Release notes below).



Release notes:
==============
This release includes several bugfixes and improvements in the underlying Matter EVSE example code, along with
improved EVerest integration:

PR1: #1
=======
Restores the Enabled / Disabled status from the KVS store (if Matter was previously enabled then it loads the values from Non-volatile storage). By default it initialises the EVSE to be enabled indefinitely to avoid consumer friction needing to manually enable it from a 3rd party app.

PR2: #2
=======
This PR adds new functionality (some of which needs to be pushed back upstream to connectedhomeip):

- UserMaximumChargeLimit is never initialised with CircuitCapacity (as per spec). This was not persisted before (now it is).
- Disable command should be rejected if Diagnostics are active
- Commanded MaximumChargeCurrent / MaximumDischargeCurrent & MinimumChargeCurrent are not persisted
- When sending Disable() during a Fault, the state was not waiting for Fault to clear (DisabledError->Disabled once fault clears).
- EnableCharging & EnableDischarging commands should be rejected if a Fault exists per spec.
- State is only updated when no fault exists. After fault clears the HW state needs to be updated in case it has changed (user has unplugged the vehicle etc).
- SupplyState is saved if a fault is triggered, it is restored back to that if Fault clears (except if a Disable command is received).

EVerest specific changes:

If the MaximumChargeCurrent is adjusted (e.g. by UserMaximumChargeCurrent write) then it causes MaximumChargeCurrent to be sent to external_energy_limits_consumer topic

NOTE:
At startup, Everest only sends hw_capabilities once so there is a potential issue that the Matter Bridge starting up after Everest will cause the ability to get CircuitCapacity to fail. Instead the startup procedure sends an empty ExternalLimit which results in a publish from Everest with the constraints from Matter removed. This allows Matter to learn the effective CircuitCapacity to allow Matter to obtain this instead of using hw_capabilities.

Fault Mapping - subscribes to ErrorsRaised / ErrorsCleared maps these error codes onto Matter's error codes.

CableAssemblyLimit: In Everest this is only sent for non-tethered cables (ac_pp_ampacity), for tethered cables we assume CircuitCapacity value instead.

Add the following module ids to your chip-evse-app command line:

 ./chip-evse-app --KVS evse.bin
--everest-error-history-module-id error_history_1
--everest-error-origin-module-id evse_manager_1
--everest-external-energy-limits-module-id matter_external_limits


Ensure your EVerest config.yaml contains:

  error_history_1:
    module: error_history_consumer_API
    config_module:
      cfg_communication_check_to_s: 0
      cfg_heartbeat_interval_ms: 1000
    connections:
      error_history:
        - module_id: error_history
          implementation_id: error_history

To support Matter applying external current limits add this to your EVerest config.yaml

  matter_external_limits:
     module: external_energy_limits_consumer_API
     config_module:
       cfg_communication_check_to_s: 0
       cfg_heartbeat_interval_ms: 40000
     connections:
       energy_node:
         - module_id: evse_manager_1_api_sink
           implementation_id: external_limits

Full Changelog: 
https://github.com/adectio/connectedhomeip-everest/commits/v1.1.0-everest-2026.02.1