Skip to main content

Register Table

Below is the register table for Modbus TCP for the "WARP Charger" setting.

Input Registers can only be read and provide information about the state of the charger. Certain registers are only available if the specified Feature is available. For example, the information about charging power, energy, etc. is only available if the charger has a Meter: A WARP3 Charger Pro (version with energy meter) provides these values, a WARP3 Charger Smart (version without energy meter) does not.

Which features the charger offers can be read via Discrete Inputs. Control of the charger is possible via the Holding Registers and Coils.

Input Registers (Function codes: Read: 4)

Register AddressNameTypeRequired FeatureDescription
0Register table versionuint32---Current version: 4
2Firmware version majoruint32---For example 2 for firmware 2.4.0+66558ade
4Firmware version minoruint32---For example 4 for firmware 2.4.0+66558ade
6Firmware version patchuint32---For example 0 for firmware 2.4.0+66558ade
8Firmware timestampuint32---Unix timestamp of the time when the firmware was built. For example 0x66558ADE for firmware 2.4.0+66558ade (1716882142 in decimal), corresponding to May 28 2024 07:42:22 UTC.
10Charger IDuint32---Decoded form of the base58 UID used for the default hostname, SSID, etc. For example 185460 for X8A.
12Uptime (s)uint32---Time in seconds since the boot-up of the charger firmware.
1000IEC-61851 stateuint32evse
  • 0: A
  • 1: B
  • 2: C
  • 3: D
  • 4: E/F
1002Charge stateuint32evse
  • 0: Disconnected
  • 1: Waiting for release
  • 2: Ready
  • 3: Charging
  • 4: Error
1004Current useruint32evseID of the user who started a charge. 0 if the charge is not assigned to a user. 0xFFFFFFFF if no charge is running.
1006Start timestamp (min)uint32evseA Unix timestamp in minutes indicating the start time of the current charge. 0 if there was no time sync available.
1008Charging duration (s)uint32evseDuration of the current charge in seconds. Available even without time synchronization.
1010Allowed charging currentuint32evseMaximum allowed current that a vehicle is allowed to draw. Minimum of all active charging slots.
1012 to 1050Charging slots (mA)uint32 (20x)evseValue of all charging slots in milliampere. 0xFFFFFFFF if a slot is not active. 0 if a slot blocks. Else between 6000 (6 A) and 32000 (32 A).
1100"Button pressed" timestampuint32evseTimestamp of the last button press. 0 if the button was not pressed since the EVSE boot-up. To act on a button press, read this value periodically. Every time this value changes, the button was pressed at least once.
1102"Button released" timestampuint32evseTimestamp of the last button release. 0 if the button was not released since the EVSE boot-up. To act on a button release, read this value periodically. Every time this value changes, the button was released at least once.
2000Meter typeuint32meter
  • 0: No energy meter available
  • 1: Eastron SDM72 (WARP1 only)
  • 2: Eastron SDM630
  • 3: Eastron SDM72 V2
  • 4: Eastron SDM72CTM
  • 5: Eastron SDM630MCT V2
  • 6: Eltako DSZ15DZMOD
  • 7: YTL DEM4A
  • 8: Lovato DMED341MID7ER
  • 9: Eltako DSZ16DZE
  • 10: Iskra WM3M4C
2002Power (W)float32meterThe current charging power in watts.
2004Absolute energy (kWh)float32meterThe energy charged since manufacturing of the energy meter.
2006Relative energy (kWh)float32meterThe energy charged since the last reset (see holding register 2000).
2008Energy this chargefloat32meterThe energy charged since the start of the current charge.
2100 to 2268Additional meter valuesfloat32 (85x)all_valuesSee API documentation
3100Connected phasesuint32phase_switchThe number of phases connected to the vehicle (1 or 3).
3102Phase switch stateuint32phase_switch

Current state of the phase switch control:

  • 0: Ready to switch phases.
  • 1: Phase switch disabled in settings.
  • 2: Phase switch enabled, but currently not available.
  • 3: Currently switching phases. Commands will be ignored.
4000 to 4009ID of the last NFC taguint8 (20x)nfcID of the last seen NFC tag as ASCII coded hex string.
4010Age of the last NFC taguint32nfcTime in milliseconds since the last NFC tag was seen. An age less than 1000 ms usually indicates that the tag is currently being held to the charger.
4012 to 4013Type of the last NFC taguint8 (4x)nfc

Type of the last seen NFC tag as ASCII-encoded hex string.

  • "0000": Mifare Classic
  • "0001": NFC Forum Type 1
  • "0002": NFC Forum Type 2
  • "0003": NFC Forum Type 3
  • "0004": NFC Forum Type 4
  • "0005": NFC Forum Type 5

Holding Registers (Function codes: Read: 3, Write: 16)

Register AddressNameTypeRequired FeatureDescription
0Rebootuint32---Reboots the charger (in other words the ESP Brick) to for example apply configuration changes. Password: 0x012EB007
1000Charge releaseuint32evseDeprecated. Use coil 1000 instead! 0 to block charging; a value other than 0 to allow charging.
1002Allowed current (mA)uint32evse0 mA or 6000 mA to 32000 mA. Other charging slots can further decrease the allowed current.
1004Front LED blink patternuint32evse

Controls the LED in the charger's front button. Blink pattern and duration must be written with a single Modbus command! To also set the color (WARP3 only), registers 1004 up to and including 1013 must be written with a single command. The setting "Status LED control" must be enabled to be able to control the LED.

  • 0xFFFFFFFF: EVSE controls LED
  • 0: LED off
  • 1 to 254: LED dimmed
  • 255: LED on
  • 1001: known NFC tag seen
  • 1002: unknown NFC tag seen
  • 1003: NFC tag required
  • 2001 to 2010: Error blink 1 to 10 times
1006Front LED blink durationuint32evseThe duration in milliseconds for which the blink pattern set in register 1004 shall be shown. At most 65536 ms are supported.
1008Front LED blink hueuint32evseHue of the color (in the HSV color space) that the blink pattern set in register 1004 should be shown in. Only values between 0 and 359 (°) are allowed. The color can only be set for a WARP3 charger. WARP and WARP2 Charger use a blue LED.
1010Front LED blink saturationuint32evseSaturation of the color (in the HSV color space) that the blink pattern set in register 1004 should be shown in. Only values between 0 and 255 are allowed. The color can only be set for a WARP3 charger. WARP and WARP2 Charger use a blue LED.
1012Front LED blink valueuint32evseValue of the color (in the HSV color space) that the blink pattern set in register 1004 should be shown in. Only values between 0 and 255 are allowed. The color can only be set for a WARP3 charger. WARP and WARP2 Charger use a blue LED.
2000Reset relative energyuint32meterResets the relative energy value (input register 2006). Password: 0x3E12E5E7
3100Trigger phase switchuint32phase_switch1 for single-phase charging. 3 for three-phase charging.
4000 to 4009ID of the NFC tag to injectuint8 (20x)nfc

By writing the registers 4000 up to and including 4013 a NFC tag can be injected (as if using the API nfc/inject_tag):

  • Register 4000 to 4009: The tag's ID as ASCI-encoded hex string.
  • Register 4010 and 4011:

    • "0001": The injected tag can only start a charge (as if using the API nfc/inject_tag_start)
    • "0002": The injected tag can only stop a charge (as if using the API nfc/inject_tag_stop)
    • all other values: The injected tag can start and stop a charge (as if using the API nfc/inject_tag)
  • Register 4012 and 4013: The tag's type as ASCI-encoded hex string:

    • "0000": Mifare Classic
    • "0001": NFC Forum Type 1
    • "0002": NFC Forum Type 2
    • "0003": NFC Forum Type 3
    • "0004": NFC Forum Type 4
    • "0005": NFC Forum Type 5

Writing registers 4012 and 4013 starts the tag injection. Holding Registers 4000 to 4013 will be cleared afterwards! The data format of holding registers 4000 to 4013 is identical to the one of input registers 4000 to 4013 (that contain the last seen NFC tag). A physically existing tag can later be (re-)injected by presenting it to the charger and copying the values read from input registers 4000 to 4013 into holding registers 4000 to 4013.

4010 to 4011Allowed action of the NFC tag to injectuint8 (4x)nfcSee description of holding registers 4000 to 4009.
4012 to 4013Type of the NFC tag to injectuint8 (4x)nfcSee description of holding registers 4000 to 4009.

Discrete Inputs (Function codes: Read: 2)

Register AddressNameTypeRequired FeatureDescription
0Feature "evse" availablebool---A charge controller is available. This feature should be available on all chargers provided the hardware is working correctly.
1Feature "meter" availablebool---An energy meter and hardware to read it via RS485 is available. This feature will bet set if an energy meter has been read successfully at least once via Modbus.
2Feature "phases" availablebool---The detected energy meter supports phase-wise measurements.
3Feature "all_values" availablebool---The detected energy meter supports more measurements.
4Feature "phase_switch" availablebool---Hardware and configuration support switching between single- and three-phase charging.
5Feature "nfc" availablebool---A NFC Bricklet is connected and active.
6Feature "evse_sd_input" availablebool---The charge controller has a shutdown input.
7Feature "evse_gp_input" availablebool---The charge controller has a general purpose input.
8Feature "evse_gp_output" availablebool---The charge controller has a general purpose output.
1100State of the shutdown inputboolevse_sd_input0 - closed, 1 - open
1101State of the general purpose inputboolevse_gp_input0 - closed, 1 - open
1102Front button stateboolevse0 - not pressed, 1 - pressed
2100Phase L1 connectedboolphases
2101Phase L2 connectedboolphases
2102Phase L3 connectedboolphases
2103Phase L1 activeboolphases
2104Phase L2 activeboolphases
2105Phase L3 activeboolphases

Coils (Function codes: Read: 1, Single write: 5, Multiple write: 15)

Register AddressNameTypeRequired FeatureDescription
1000Charge releaseboolevsefalse or 0 to block charging. true or 1 to allow charging. Identical to holding register 1000.
1001Manual charge releaseboolevsefalse or 0 to block charging. true or 1 to allow charging. Sets the same charge release that is used via the web interface, the evse/[start/stop]_charging API or (depending on the button configuration) the button.
1100Sets the state of the general purpose outputboolevse_gp_output0 - connected to ground, 1 - high impedance