- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
75 lines
2.6 KiB
ReStructuredText
75 lines
2.6 KiB
ReStructuredText
.. _everest_modules_handwritten_CarloGavazzi_EM580:
|
|
|
|
.. *******************
|
|
.. Carlo Gavazzi EM580
|
|
.. *******************
|
|
|
|
Module implementing the Carlo Gavazzi EM580 power meter driver adapter via Modbus RTU (through SerialCommHub).
|
|
This module also supports models without OCMF/Eichrecht support (e.g. EM300 series).
|
|
|
|
Description
|
|
===========
|
|
|
|
The module consists of a single ``main`` implementation that serves the ``powermeter`` interface. Modbus access is done
|
|
via the required ``serial_communication_hub`` interface.
|
|
|
|
Features
|
|
========
|
|
|
|
- Live meter reads and ``powermeter`` publishing (interval configurable)
|
|
- Resilient Modbus transport with retries and protocol-compliant write chunking
|
|
|
|
If supported by meter:
|
|
- OCMF/Eichrecht transaction start/stop logic
|
|
- Public key reading and publishing (hex)
|
|
|
|
Module Configuration
|
|
====================
|
|
|
|
The module configuration parameters are defined in ``manifest.yaml``. A complete example configuration can be found at
|
|
``config/bringup/config-bringup-CGEM580.yaml``.
|
|
|
|
Transaction flow (OCMF)
|
|
=======================
|
|
|
|
Start transaction
|
|
-----------------
|
|
|
|
At transaction start the module:
|
|
|
|
1. Ensures OCMF state is ``NOT_READY``
|
|
2. Writes OCMF identification data, EVSE ID and tariff text (TT) (0-terminated, used bytes only)
|
|
3. Writes session modality
|
|
4. Sends the start command (``'B'``)
|
|
|
|
Stop transaction
|
|
----------------
|
|
|
|
At transaction stop the module:
|
|
|
|
1. Sends the end command (``'E'``) for the tracked transaction
|
|
2. Waits for OCMF state ``READY``
|
|
3. Reads the OCMF file (size + content)
|
|
4. Confirms the file read by setting state back to ``NOT_READY``
|
|
|
|
Notes / Limitations
|
|
===================
|
|
|
|
- Modbus ``Write Multiple Registers`` requests are chunked to max 123 registers per request.
|
|
- TT is a ``CHAR[252]`` field (126 words); overlong strings are warned and truncated.
|
|
|
|
Device identification code (register ``300012`` / ``000Bh``)
|
|
----------------------------------------------------------
|
|
At startup the driver reads the Carlo Gavazzi **Controls identification code** from Modbus register ``300012``
|
|
(``000Bh``) to decide whether OCMF transactions are exposed.
|
|
|
|
The following identification codes are **explicitly supported** as **EM300/ET300 series** (live metering only;
|
|
``start_transaction`` / ``stop_transaction`` return ``NOT_SUPPORTED``): **331**, **332**, **335**, **336**, **340**,
|
|
**341**, **345**, **346**, **355**.
|
|
|
|
Any **other** identification code is treated as an OCMF-capable device (e.g. EM580 class): the full transaction flow
|
|
applies. If a new meter without OCMF uses a code not listed above, the driver should be updated to recognise it;
|
|
otherwise it may incorrectly attempt the OCMF path.
|
|
|
|
|