# Log File Reference

This document describes the entries that appear in the wallbox log file and explains what each one means.

## Log Format

Each line begins with a timestamp followed by the message:

```
2024-03-15T14:32:07.412 LM startup 2.1.0
```

The short prefix at the start of the message (e.g. `LM`, `LB`, `E`, `CR`) identifies the subsystem that produced it. See the sections below for a full list.

## Verbosity Levels

The amount of detail logged depends on the configured verbosity level per subsystem:

| Level | What is logged |
|---|---|
| 0 | Nothing |
| 1 | Errors only |
| 2 | Errors and warnings |
| 3 | Errors, warnings, and informational messages |
| 4 | Everything including raw data (very verbose) |

The level is configured separately for each subsystem (load manager, Modbus, OCPP, etc.) in the system settings.

Each entry in the tables below has a **Level** column:

| Level label | Verbosity needed | Meaning |
|---|---|---|
| Error | ≥ 1 | A problem that needs attention |
| Warning | ≥ 2 | Something notable, may need attention |
| Info | ≥ 3 | Normal operational status |
| Verbose | ≥ 4 | Detailed data, mainly for diagnostics |
| Always | Any | Logged regardless of verbosity setting |

---

## System (`SYS`)

Entries about startup, configuration, and system-level events.

| Level | Entry | Meaning |
|---|---|---|
| Always | `LM startup <version>` | The load manager started. Shows the firmware version. |
| Always | `LM shutdown` | The load manager is shutting down. |
| Always | `LM devices: <n>` | The number of configured devices (EVSEs, meters). |
| Always | `LM failed to read config <filename>` | A configuration file could not be read. Check the file exists and is valid JSON. |
| Always | `LM add_meter_def <filename> -> success` | A meter definition file was loaded successfully. |
| Error | `LM add_meter_def <filename> -> parser error` | A meter definition file contains invalid JSON. |
| Warning | `LM add_meter_def <filename> -> missing name` | A meter definition file is missing the required `name` field. |
| Always | `LM add_rule_set <filename> -> success` | A charging rule set was loaded successfully. |
| Error | `LM add_rule_set <filename> -> parser error` | A rule set file contains invalid JSON. |
| Always | `LM global params EN/DIS <max_current>` | Global load management is enabled or disabled. Shows the configured maximum current. |
| Error | `LM global params, config error` | The global parameters section of the configuration is invalid. |
| Info | `LM error: <message>` | A load manager error occurred. |
| Info | `SYS temp logging on/off` | Temporary verbose logging was turned on or off (useful for short-term diagnostics). When turned on, the full current configuration is dumped to the log. |
| Info | `SYS temp continue logging after restart` | Temporary logging was configured to persist across a restart. |
| Always | `SYS Key signature invalid` | The license key signature does not match — the key may be corrupted or tampered with. |
| Always | `SYS Key limited to s/n <x>, but this is <y>` | The license key is locked to a different device serial number. |
| Always | `SYS Key <x> not valid` | The license key is not valid for this device. |
| Always | `SYS Key has no "serial" field` | The license key is missing the serial number field. |
| Always | `SYS Key has no "name" field` | The license key is missing the name field. |
| Error | `SYS no hardware id found` | The hardware identifier could not be read; the license cannot be validated. |
| Error | `SYS hardware id mismatch <exe>: <actual> != <expected>` | The running executable does not match this hardware. |
| Always | `SYS No additional licenses found, EVSEs: <n>` | No add-on licenses found; running with the base license. Shows the number of permitted EVSEs. |
| Always | `SYS Licensed for <n> EVSEs -> <max> [s/n <serial>]` | A license was applied. Shows the number of EVSEs permitted under this license. |
| Always | `SYS Setting cloud cm password [s/n <serial>]` | The license is setting the cloud charging manager password. |
| Always | `SYS current limit set to <limit> mA [s/n <serial>]` | The license is setting a current limit. |
| Always | `SYS DC sensor enabled/disabled [s/n <serial>]` | The DC sensor feature was enabled or disabled by the license. |
| Always | `SYS PP connected enabled/disabled [s/n <serial>]` | The proximity pilot feature was enabled or disabled by the license. |
| Always | `SYS Plug Lock enabled/disabled [s/n <serial>]` | The plug lock feature was enabled or disabled by the license. |
| Always | `SYS Product ID <id> [s/n <serial>]` | The product ID was set by the license. |
| Always | `SYS Solarpack set to <n> [s/n <serial>]` | The solar pack feature was configured by the license. |
| Always | `sw_check, dev turned off <id>` | Device `<id>` was turned off by a software interlock check. |
| Info | `OCPP client settings changed, restarting devices` | OCPP configuration changed; devices are being restarted to apply the new settings. |

---

## EVSE — Charging Point Control (`E`)

Entries about individual charging points (EVSEs): current settings, state changes, and energy tracking.

| Level | Entry | Meaning |
|---|---|---|
| Info | `E set_cur <id> <current> en= ps= el=` | The target charging current for EVSE `<id>` was set. `en` = enabled, `ps` = paused, `el` = actual electrical current. |
| Info | `E set_a <id> <current>` | The charging current was applied to the hardware. |
| Info | `E phases <id> <phases>/<predicted_phases>` | The number of active charging phases and the predicted phases for EVSE `<id>`. |
| Warning | `E upd-en <id> <enabled> <paused>` | The enabled/paused state of EVSE `<id>` was updated. |
| Warning | `E pause <id> <paused>` | EVSE `<id>` was paused or unpaused. |
| Warning | `E ovr <id> <value>` | A manual override was applied to EVSE `<id>`. |
| Info | `E <id> raw CP <state>` | Raw control pilot signal reading from EVSE `<id>`. The control pilot communicates the vehicle connection and charging state. |
| Info | `E OVC <id> <overcurrent>` | EVSE `<id>` reported an overcurrent condition. |
| Warning | `LB E unpause <id>` | The load balancer unpaused EVSE `<id>` (sufficient power is now available). |
| Info | `E req <id> <request>` / `E res <id> <response>` | HTTP request/response to a networked EVSE (charging manager EVSE type). |
| Info | `E <id> wb_ctl_raw <value>` | Raw wallbox control register value from an E3DC EVSE. |
| Info | `E slim <id> <current> <is_surplus>` | Solar slim mode: the EVSE current was reduced to stay within surplus power. |
| Warning | `E plug-in <id> <total_energy> <phases> <offset>` | A vehicle was plugged in to EVSE `<id>`. Records the meter reading at plug-in time and number of phases. |
| Warning | `E plug-out <id> <total_energy>` | The vehicle was unplugged from EVSE `<id>`. Records the final meter reading. |
| Always | `E <id> charging` | EVSE `<id>` started delivering power to the vehicle. |
| Always | `E <id> not charging` | EVSE `<id>` stopped delivering power (vehicle full, paused, or disconnected). |
| Always | `E error <id> <state>` | A hardware fault was detected on EVSE `<id>`. |
| Always | `E no_error <id> <state>` | A previously reported hardware fault on EVSE `<id>` has cleared. |
| Info | `E <id> WKU` | EVSE `<id>` woke up from sleep mode. |
| Info | `E <id> ovr / RFID <tag> cleared due to inactivity` | An override or RFID session was automatically cleared because the EVSE was inactive for too long. |
| Warning | `E <id> paused <pause_time>/<min_pause_time>` | EVSE `<id>` was paused; shows how long it has been paused and the minimum required pause duration. |
| Info | `disabling evse <id>` | EVSE `<id>` is being disabled. |
| Warning | `<id> set total energy to <value> denied (total_energy = <current>)` | A meter energy value was rejected because it is lower than the previously recorded value — possible meter error. |
| Warning | `<id> set transaction start energy to <value> denied (total_energy = <current>)` | The transaction start energy value was rejected as invalid. |
| Warning | `<id> error getting used energy in transaction: current value <n> is less than start value <n>` | Cannot calculate session energy — the meter counter decreased during the session. |
| Warning | `LB E pause, low pwr/ovr <id>` | EVSE `<id>` was paused because both available power is low and an overdraft override is active. |
| Info | `LB CHP <id> <limit>/<current>` | A per-EVSE charging plan limit was applied to EVSE `<id>`. |
| Warning | `LB E mx < mn: <id>` | Configuration error on EVSE `<id>`: the configured maximum current is lower than the minimum current. |

---

## Transaction Archive (`TA`)

Entries about the recording of completed charging sessions. Each session is saved as a billing record.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `TA save <record>` | A session record is being saved to storage. |
| Warning | `TA <id> begin: surplus=<0/1> start=<energy>Wh` | A charging session started on EVSE `<id>`. Records whether solar surplus mode is active and the meter reading at session start. |
| Warning | `TA <id> end: budget=<n> csv=<data>` | A session ended normally. The billing record was saved. |
| Warning | `TA <id> end: delayed (waiting for signed data)` | The session ended but saving is deferred — waiting for the calibration-law meter signature to arrive. |
| Warning | `TA <id> end: delayed (waiting for total energy to become valid)` | The session ended but saving is deferred — the meter energy reading is not yet valid. |
| Warning | `TA <id> delayed: all values ok` | All required values are now available; the previously deferred session record is being saved. |
| Warning | `TA <id> delayed: timeout` | The deferred session record timed out waiting for missing data and was saved without it. |
| Warning | `TA <id> delayed: device is gone` | The EVSE disconnected before the deferred record could be completed. |
| Warning | `TA <id> surplus <old>-><new>` | The solar surplus mode changed during a session (e.g. cloud cover interrupted surplus charging). |

---

## Load Balancing (`LB`)

Entries about how power is distributed across charging points. The load balancer runs continuously and adjusts charging currents to stay within the configured limits.

| Level | Entry | Meaning |
|---|---|---|
| Info | `LB M <type> <id> <role> <power> <evse_id>` | Meter reading used in the current balancing calculation. |
| Info | `LB E <type> <id> <phases> <power> <state> <pause_reason>` | EVSE state snapshot used in the current balancing calculation. |
| Info | `LB Ms <group> <total/consumed/produced/evse power>` | Power summary per group: total, consumed, produced (solar), and EVSE load. |
| Info | `LB MS <group> <grid/solar/power breakdown>` | Detailed power breakdown per group (grid draw, solar feed-in, etc.). |
| Info | `LB set_cur <id> <current> <phases> <phase currents>` | The load balancer set the current for EVSE `<id>`. |
| Warning | `LB E pause, low pwr <id>` | EVSE `<id>` was paused because available power dropped below the minimum charging threshold. |
| Warning | `LB E pause, rule <id>` | EVSE `<id>` was paused because a charging rule requested it. |
| Warning | `LB pause/no pwr <id>` | EVSE `<id>` was paused because there is no power available. |
| Always | `LM overdraft <max_current>` | The total current draw exceeded the configured maximum. This is always logged. |
| Warning | `LB OVR set <current>` | An overdraft override was set — temporarily allowing higher current. |
| Info | `LB OVR active <current> <end> <seconds>` | An overdraft override is currently active. Shows the current allowed, end time, and remaining seconds. |
| Warning | `LB OVR reset` | The overdraft override was cleared. |
| Info | `LB PH imb <imbalance> <index> <per-phase values>` | A phase imbalance was detected. Shows the degree of imbalance and which phase is responsible. |
| Info | `LB PH red <type> <id> <phases> <reduction>` | The charging current on EVSE `<id>` was reduced to correct a phase imbalance. |
| Warning | `LB PH ps <type> <id> <phases>` | Phase switching was applied to EVSE `<id>` to correct an imbalance. |
| Warning | `LB PH imb max tries` | Phase imbalance correction reached the maximum number of attempts without resolving the imbalance. |
| Info | `LB SL SC <current>` | Solar surplus charging current calculated. |
| Info | `LB SL SSC <current>` | Smoothed solar surplus charging current. |
| Warning | `LB max_cur too small: <id>` | The maximum current configured for EVSE `<id>` is too small to allow charging. |
| Info | `LB EOV <id> <state> <set> <actual> <diff>` | EVSE `<id>` is drawing more current than commanded. Shows set vs. actual current and the difference. |
| Info | `LB CHPG <limit>/<evse_current>` | Charging plan global limit applied. |
| Info | `LB CHPC/CHPD <meter_id> <limit>/<charge_current>` | Charging plan limit applied based on a specific meter reading. |
| Info | `LB AO <power>` | Available output power for this balancing cycle. |
| Warning | `LB pause/evse_min <id>` | EVSE `<id>` was paused because the available power is below the EVSE's configured minimum charging current. |
| Info | `LB add_spcur <current>` | Solar surplus current was added to the available charging budget. |
| Info | `LB add_cur <phase> <current>` | Per-phase available current for balancing. |
| Info | `LB SPS1-2 / SPS1-3 <id>` | EVSE `<id>` switched from single-phase to two- or three-phase charging to make better use of available power. |
| Info | `LB SPN1-2 / SPN1-3 <id>` | EVSE `<id>` phase switch attempted but not completed (negative result). |
| Info | `LB SPS3-1 / SPN3-1 <id>` | EVSE `<id>` switched (or attempted to switch) from three-phase to single-phase charging. |
| Warning | `LB SP1 <id>` / `LB SP3 <id>` | Phase switching on EVSE `<id>` could not be completed — shows target phase count. |

---

## Charging Rules (`CR`)

Entries about rule evaluation. Charging rules determine when and at what current each EVSE may charge, based on time, solar surplus, electricity price, or other conditions.

| Level | Entry | Meaning |
|---|---|---|
| Info | `CR rset: <name>` | The named rule set is being evaluated. |
| Info | `CR call <rule_count> <available> <phase> <min> <solar> <is_surplus>` | A rule set evaluation started. Shows how many rules are in the set and the current conditions. |
| Info | `CR time rule found` | A time-based rule matched the current time and will be applied. |
| Info | `CR solar rule found` | A solar surplus rule matched and will be applied. |
| Info | `CR price val rule found` | A price-value rule matched (based on the current electricity price). |
| Info | `CR price lev rule found` | A price-level rule matched (based on the price tier, e.g. cheap/expensive). |
| Info | `CR input rule found` | A digital input rule matched (based on the state of an external input). |
| Info | `CR expr rule found` | An expression-based rule matched. |
| Info | `CR cexpr rule found` | A combined-expression rule matched. |
| Info | `CR evse <id> <current>` | The rule evaluation result for EVSE `<id>`: the current the rule allows. |
| Info | `CR rfid <rfid> <current>` | The rule evaluation result for a specific RFID tag. |
| Info | `-> CR current <current>` | The final current decided by the charging rules for this round. |
| Info | `-> CR gm avail <bool> <clock> <next_update> <next_try>` | Grid mix data availability status. Indicates whether CO₂ intensity data is available for green charging rules. |
| Warning | `-> CR gm upd connect/get error` | Could not connect to or retrieve grid mix (CO₂ intensity) data. |
| Warning | `-> CR gm upd <time> <avail> <ts>` | Grid mix data was successfully updated. |
| Warning | `-> CR gm next try <time>` | Next scheduled retry for grid mix data. |
| Warning | `-> CR gm upd no parent` | Grid mix update skipped — no parent load group is configured. |
| Warning | `-> CR gm upd no load/ren/solar <load> <ren>` | Grid mix data is missing required fields (load, renewable, or solar). |
| Warning | `IN <input_id> not found` | A digital input referenced in a rule does not exist — check the rule configuration. |
| Info | `CR eval <size> <dev_id> <pidx> <start_val> <flags>` | Per-EVSE rule evaluation summary. |
| Info | `U=<remaining>` | Remaining usage duration for a time-limited rule. |

When rule tracing is active (verbosity ≥ 3), additional detail lines appear:

| Level | Entry | Meaning |
|---|---|---|
| Info | `TR <start>/<duration>` | Time range condition being evaluated. |
| Info | `SP <power>` | Solar power value used in evaluation. |
| Info | `PR <current> <expression>` | Electricity price condition. |
| Info | `PL <level> <expression>` | Electricity price level condition. |
| Info | `IN <input_id>/<value>` | Digital input state condition. |
| Info | `GD/GF/SC <value>` | Grid demand / grid feed-in / solar current value. |
| Info | `GM <start> <started>` | Grid mix (CO₂ intensity) condition. |
| Info | `EX <value>` | Custom expression result. |
| Info | `AL` / `NV` | Rule condition is "always" / "never". |
| Info | `CR <rule_id>/<index> <condition>/<result>: <action>` | Detailed trace of one rule: its condition result, overall result, and what action it prescribes. |

---

## Battery Rules (`BR`)

Entries about battery charging/discharging control and relay switching.

| Level | Entry | Meaning |
|---|---|---|
| Always | `BR cha <current>` | Battery charging at the specified current. |
| Always | `BR cha off` | Battery charging is disabled. |
| Always | `BR discha <current>` | Battery discharging at the specified current. |
| Always | `BR discha off` | Battery discharging is disabled. |
| Always | `BR bat_mode <mode>` | The battery operating mode was changed. |
| Always | `BR rel <relay_id> <state>` | A relay was switched on or off. |

---

## RFID & Users (`RFID`)

Entries about RFID tag scans, user matching, and charging budgets.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `RFID add_rfid <tag> <device_id>` | An RFID tag was scanned on device `<device_id>`. |
| Warning | `RFID add_rfid ... -> matched` | The scanned tag matched a known user; charging will be authorized. |
| Warning | `RFID add_rfid ... -> stored` | The scanned tag was not yet known and has been saved as a new entry. |
| Warning | `RFID add_rfid ... -> updated` | The scanned tag was already known; its record was updated. |
| Warning | `RFID add_rfid ... -> invalid` | The scanned tag is invalid and was rejected. |
| Warning | `RFID add_rfid ... -> ignored` | The tag scan was ignored (e.g. the same tag was scanned twice in quick succession). |
| Warning | `RFID add_rfid ... -> user change, no rfid action allowed` | A user change was detected but RFID actions are not permitted in the current state. |
| Warning | `RFID matched <tag> <device_id> EVSE: <evse_id>` | The scanned tag was matched to a user, and charging was authorized on EVSE `<evse_id>`. |
| Warning | `RFID exc <tag> <has_user> <has_rfid>` | RFID tag exclusion check — shows whether the tag has an associated user and whether RFID is enabled. |
| Warning | `RFID bdg_rst <id> <rule_id>` | The charging budget for this tag/rule combination was reset. |
| Warning | `RFID bdg_rstu <id>` | The charging budget for this user was reset. |
| Warning | `RFID added <tag> to user <name>` | The scanned tag was added to an existing user account. |
| Warning | `RFID do_exec <tag> <device_id> <user_id> <is_new_user>` | RFID authorization is being executed for the matched user. |
| Warning | `RFID upd_am <tag> <amount> <used>` | The charging budget for this tag was updated. Shows total budget and amount used. |
| Warning | `RFID busg <is_time> <amount> <used> <total_energy> <start_energy> <duration>` | Budget usage recorded at end of session. `is_time` indicates whether the budget is time-based; shows energy consumed and session duration. |
| Warning | `RFID bdg/exp <tag> <value>` | Budget or expiry limit for this tag. |
| Warning | `RFID override <tag> <value>` | A current override was set via RFID. |
| Warning | `RFID ov_current <tag> <current>` | Override current value set by RFID. |
| Warning | `RFID ov_phases <tag> <phases>` | Override phase count set by RFID. |

---

## Cloud Connection

Entries about the connection to the remote cloud server (for remote monitoring and control).

| Level | Entry | Meaning |
|---|---|---|
| Info | `<prefix> started, host: <host>:<port>, ID: <id>` | A cloud connection was established. |
| Info | `<prefix> stopped` | The cloud connection was closed. |
| Warning | `error connecting to server` | Could not reach the cloud server. Check network connectivity. |
| Warning | `error requesting from server; reconnecting` | The connection to the cloud server dropped and a reconnect is being attempted. |
| Warning | `request timed out on server` | A request to the cloud server timed out. |
| Warning | `admin password too short` | The admin password does not meet the minimum length requirement. |
| Warning | `admin password must not be default password` | The default admin password has not been changed. This is a security warning. |
| Warning | `<prefix> peer address <ip> has been banned` | The IP address was banned due to too many failed authentication attempts. |
| Warning | `<prefix> peer address unknown` | An incoming connection has no identifiable peer address. |
| Warning | `<prefix> <id> limit exceeded` | A request rate limit was exceeded for this connection. |
| Info | `<prefix> <id> requests per hour: <n>, bytes per hour: <n>` | Rate statistics for this connection. |
| Info | `<prefix> <method> <target> request from <address>` | An incoming HTTP request was received on the cloud endpoint. |
| Info | `<prefix> <id> cm unauthorized id` | The charging manager connection used an unrecognized ID. |
| Info | `<prefix> <id> cm not connected` | A request arrived for a charging manager that is not currently connected. |
| Info | `<prefix> <id> id unknown` | The connection ID is not known to the cloud server. |
| Info | `<prefix> <id> cm authorized` | A charging manager successfully authenticated. |
| Info | `<prefix> <id> app authorized with user id <user>` | A mobile app authenticated with user credentials. |
| Info | `<prefix> <id> app authorized with admin password` | A mobile app authenticated with the admin password. |
| Warning | `<prefix> <id> connect with user id <user> failed` / `connect with admin password failed` | Authentication attempt failed. |
| Info | `<prefix> <id> no cm connected to handle app request` | A mobile app request arrived but no charging manager is connected to fulfill it. |
| Info | `<prefix> <id> app request <req_id> waiting for cm response` / `timed out` / `found` / `finished` | Lifecycle of a proxied request between a mobile app and the charging manager. |
| Info | `<prefix> <id> got id from session cookie` | The connection was identified via a session cookie rather than fresh authentication. |

---

## OCPP — Open Charge Point Protocol

Entries about OCPP communication between the wallbox and a charging management backend (CSMS).

| Level | Entry | Meaning |
|---|---|---|
| Info | `trying to reconnect` | The OCPP connection to the backend dropped and a reconnect is in progress. |
| Info | `WebSocket handshake successful. Protocol is '<protocol>'` | The OCPP WebSocket connection was established. |
| Info | `Closing connection to <id>` | The OCPP connection to a specific backend was closed. |
| Error | `error parsing JSON message` | An OCPP message from the backend could not be parsed. |
| Warning | `Syntax error in request from CP to CS: <message>` | Malformed OCPP message. |
| Error | `transaction queue full` | The OCPP transaction queue is full — new transactions cannot be queued. |
| Info | `Authorizing client <id>` | An RFID tag authorization request is being sent to the OCPP backend. |
| Info | `authorized locally` | Authorization was granted using a locally cached whitelist (backend not reachable or offline authorization enabled). |
| Error | `start_transaction '<tag>' failed: <reason>` | Starting a transaction via OCPP failed. |
| Verbose | OCPP action messages (e.g. `BootNotification`, `Heartbeat`, `StatusNotification`, `StartTransaction`, etc.) | All OCPP protocol messages are logged at verbosity level 4. |
| Warning | `OCPP SRV <address> StartTransaction meter start <n> too low; total energy <n>` | The meter value at session start is suspiciously low compared to the known total energy — possible meter or communication problem. |
| Warning | `OCPP SRV <address> StopTransaction meter stop <n> too low; total energy <n>` | The meter value at session end is suspiciously low. |
| Warning | `OCPP SRV disable <address>: remote stop failed` | A remote stop command from the backend failed on this charge point. |
| Warning | `OCPP SRV disable <address>: timed out waiting for transaction to end` | The charge point did not end its transaction within the expected time after a remote stop. |
| Info | `OCPP SRV disable <address>: transaction ended` | The transaction ended successfully after a remote stop command. |
| Info | `OCPP SRV resume transaction: car is gone` | A transaction resume was attempted but the vehicle was already disconnected. |
| Info | `OCPP SRV resume transaction: transaction stopped` / `timed out waiting for transaction to stop` | Transaction resume handling: the transaction stopped (or timed out) before resume could complete. |
| Info | `OCPP SRV <address> set charging cur(<n>)` | The OCPP server set the charging current on this charge point. |
| Info | `OCPP SRV <address> enable charging (<bool>)` | The OCPP server enabled or disabled charging on this charge point. |
| Error | `OCPP SRV Com-Error at request to <id>` | A communication error occurred during an OCPP request. |
| Error | `OCPP SRV Com-Error: lost connection to <address>` | The OCPP connection to a charge point was lost. |
| Error | `OCPP SRV Com-Error: no first contact from <address>` | A charge point connected but never sent its first OCPP message (e.g. BootNotification). |
| Warning | `OCPP SRV Security Event: <type>, Time: <timestamp>` | A security event was reported by the charge point (OCPP 2.0). |
| Info | `OCPP CLT request from <id> - <message>` | An OCPP client-mode request (charge point acting as client to an upstream CSMS). |
| Info | `OCPP CLT response to <id> - <message>` | An OCPP client-mode response. |
| Warning | `LM CPO <func> <dev_id>` | A CPO (Charge Point Operator) proxy operation was executed. |
| Error | `unauthorized connection attempt from <id>` | A charge point tried to connect to the OCPP server without valid credentials. |
| Error | `rejecting incoming connection for <id> from <host>, due to existing connection from <host>` | A duplicate OCPP connection was rejected — this charge point ID is already connected from a different address. |
| Warning | `peer address of incoming connection for <id> unknown; closing existing connection to <host>` | New connection for an already-connected charge point; old connection closed. |
| Warning | `Websocket request to <id>: ID has been removed from clients` | An OCPP WebSocket request arrived for a charge point that has been removed from the configuration. |
| Warning | `Websocket request to <id> with message ID <n> timed out` | An OCPP message was not acknowledged within the timeout period. |

---

## MQTT

Entries about the MQTT broker connection (for home automation integration).

| Level | Entry | Meaning |
|---|---|---|
| Warning | `MQ connect <broker> <state> <result>` | Connection attempt to the MQTT broker. Shows the broker address and whether it succeeded. |
| Info | `MQ connect2 <seconds>` | Next MQTT reconnect attempt scheduled in `<seconds>` seconds. |
| Error | `MQ con error <socket> <error>` | MQTT connection error. |
| Error | `MQ con err, illegal address [<address>]` | The configured MQTT broker address is invalid. |
| Warning | `MQ disconnect <socket> <address>` | MQTT connection was disconnected. |
| Warning | `MQ redirect <address> [<new_address>]` | The MQTT broker redirected the connection to a different address. |
| Error | `MQ snd error <socket> <error>` | Failed to send an MQTT message. |
| Verbose | `MQ rcv <socket> <hex>` | Raw data received from the broker (verbosity level 4). |
| Warning | `MQ rec_packet <socket> <type> <flags>` | An MQTT packet was received and parsed. |
| Warning | `MQ s_connect <socket> <address>` | An MQTT client connected to the server. |
| Warning | `MQ s_sub <socket> <topic>` / `MQ s_unsub <socket> <topic>` | A topic was subscribed to or unsubscribed from. |
| Warning | `MQ add_sub <socket> <topic>` | A subscription was added. |
| Warning | `MQ s_ping <socket>` | An MQTT ping was sent to keep the connection alive. |
| Warning | `MQ s_disconnect <socket> <reason>` | An MQTT disconnect was sent or received. |
| Error | `MQ rcv unknown packet type <socket> <type>` | An unrecognized MQTT packet type was received. |
| Error | `MQ rcv rsn error <socket> <reason> <error>` | A reason-code error was received in an MQTT packet. |
| Error | `MQ rcv pfmt error <socket>` | A received MQTT packet has a malformed format. |

---

## Modbus (`MB`)

Entries about Modbus communication (used for energy meters and some EVSEs).

**Modbus RTU (serial Modbus):**

| Level | Entry | Meaning |
|---|---|---|
| Warning | `MB <slave_id>/<function>/<address> send error` | Failed to send a Modbus RTU request. |
| Info | `MB <slave_id>/<function>/<address> rcv timeout` | No response received within the timeout period. |
| Info | `MB <slave_id>/<function>/<address> rcv err` | Error receiving the Modbus RTU response. |
| Info | `MB <slave_id>/<function>/<address> buf ovr` | Receive buffer overflow. |
| Info | `MB <slave_id>/<function>/<address> modbus crc error` | The received response has an invalid CRC — data corruption on the bus. |
| Warning | `MB <slave_id>/<function>/<address> failed after <n> retries` | All retry attempts for this Modbus request failed. |

**Modbus TCP:**

| Level | Entry | Meaning |
|---|---|---|
| Info | `MB con <socket> <destination>` | A Modbus TCP connection was opened. |
| Info | `MB con share <socket> <destination>` | An existing Modbus TCP connection is being reused. |
| Warning | `MB con error <error>` | Failed to open a Modbus TCP connection. |
| Info | `MB dis <socket>` | A Modbus TCP connection was closed. |
| Info | `MB snd <socket> <hex>` | Data was sent over Modbus TCP (verbosity level 4, shown as hex). |
| Warning | `MB snd error <destination> <error>` | Failed to send data over Modbus TCP. |
| Info | `MB rcv <socket> <hex>` | Data was received over Modbus TCP (verbosity level 4, shown as hex). |
| Warning | `MB rcv error/timeout <destination>` | Receive error or timeout on Modbus TCP. |

---

## Serial Port (`SR`)

Entries about serial port communication (used for meters connected via RS-485 or similar).

| Level | Entry | Meaning |
|---|---|---|
| Info | `SR opn <fd> <address>` | A serial port was opened. |
| Info | `SR cls <fd>` | A serial port was closed. |
| Info | `SR set <fd> <settings>` | Serial port settings (baud rate, parity, etc.) were applied. |
| Info | `SR <fd> <port> S=<bytes> <hex>` | Data was sent on the serial port (shown as hex). |
| Info | `SR <fd> <port> R=<bytes> <hex>` | Data was received on the serial port (shown as hex). |
| Error | `SR <fd> R=<error>` | Error receiving data on the serial port. |
| Error | `SR <prefix> <fd> <last_error>` | A serial communication error. This entry is preserved in the ring buffer even if the buffer fills up (marked as important). |
| Info | `SR COMport meter: open <address>` | A meter on a serial port was opened. |
| Info | `SR COMport meter: stopped <address>` | A meter on a serial port was stopped. |

---

## HTTP API (`HA`)

Entries about requests to the wallbox web API.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `HA CP: <host>:<target>` | An incoming HTTP request was received. |
| Info | `HA ui <filename>` | A UI file was served. |
| Info | `-> <status>` | The HTTP response status code for the preceding request. |
| Warning | `HA not found: <target>` | The requested API endpoint does not exist (HTTP 404). |
| Warning | `HA upload <filename> <type>` | A file was uploaded to the device. |
| Error | `HA send file error <filename> <error>` | Failed to send a file in response to a request. |
| Warning | `HTTP PROXY failed to request <target>: <error>` | The internal HTTP proxy could not forward a request. |

---

## Price & Dynamic Tariffs

Entries about fetching electricity price data from external providers (Tibber, Ostrom, etc.).

| Level | Entry | Meaning |
|---|---|---|
| Always | `Error connecting to <provider> server at <host>` | Could not reach the price data server. Check network connectivity. |
| Always | `Error requesting <provider> URL at <uri>` | The HTTP request to fetch price data failed. |
| Always | `Error parsing data from <provider>` | The received price data could not be parsed. The provider may have changed its format. |
| Always | `Unauthorized requesting data from <provider>` | Authentication failed — check the API key or credentials. |
| Always | `Error requesting <provider> access token` | Could not obtain an OAuth access token from the provider. |

---

## Vehicle Integration

Entries about querying vehicle state of charge (SoC) from car cloud services (Tronity, Tibber vehicles).

| Level | Entry | Meaning |
|---|---|---|
| Warning | `Tronity client ID and client secret not specified` | Tronity vehicle integration is not configured. |
| Warning | `Failed to connect to Tronity host` | Could not reach the Tronity API server. |
| Warning | `Error <status> requesting Tronity access token from <host>` | The Tronity API rejected the access token request with an HTTP error. |
| Warning | `Error <status> calling Tronity API at <host><path>` | An API call to Tronity returned an HTTP error. |
| Warning | `Failed to request new access token` | OAuth token renewal failed for the vehicle API. |
| Verbose | `Tronity vehicles: ID=... VIN=... Manufacturer=...` | Vehicle discovered via Tronity (logged at verbosity level 4). |
| Verbose | `Vehicle "<name>" state: SoC=...` | Current vehicle state including state of charge (verbosity level 4). |
| Info | `Vehicle started charging` | The vehicle began a charging session (as reported by the car cloud). |
| Info | `Vehicle stopped charging` | The vehicle ended a charging session (as reported by the car cloud). |
| Warning | `Token missing to query vehicle data from Tibber` | The Tibber access token is missing — vehicle SoC cannot be read. |

---

## EASEE Charger

Entries specific to Easee EVSE devices connected via the Easee cloud API.

| Level | Entry | Meaning |
|---|---|---|
| Info | `EASEE credentials obtained/refreshed/cleared` | Authentication with the Easee API succeeded, was refreshed, or was removed. |
| Warning | `EASEE <id> <address> offline` | The Easee charger is not reachable. |
| Info | `EASEE <id> <address> chargerOpMode=<mode>` | The Easee charger's operating mode changed (e.g. disconnected, awaiting start, charging). |
| Info | `EASEE <id> <address> inCurrentT3/T4/T5=<c1> <c2> <c3>` | Phase currents reported by the Easee charger. |
| Info | `EASEE <id> <address> lifetimeEnergy=<energy>` | Lifetime energy counter from the Easee charger. |
| Info | `EASEE <id> <address> sessionEnergy=<energy>` | Energy delivered in the current session. |
| Warning | `EASEE request <path> failed: closing connection` | An Easee API request failed; the connection will be re-established. |

---

## Push Notifications (`SYS psh`)

Entries about push notifications sent to mobile devices.

| Level | Entry | Meaning |
|---|---|---|
| Info | `SYS psh connect to <host> failed` | Could not reach the push notification server. |
| Info | `SYS psh rnwbt <size> <expiry>` | The push notification bearer token was renewed. |
| Info | `SYS psh posted <status>` | A push notification was sent. Shows the HTTP response status. |
| Warning | `SYS psh post error <status>: <body>` | Sending a push notification failed. |

---

## ChargePoint EVSE

Entries for ChargePoint charging stations connected via the ChargePoint API.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `ChargePoint: <address>,<id>: <warning>` | A warning was received from the ChargePoint API for this station. |
| Info | `ChargePoint: getStations: <address>-<id>: <manufacturer>, <model>, <firmware>, <serial>` | Station information retrieved — manufacturer, model, firmware version, and serial number. |
| Info | `ChargePoint: station ID matching '<pattern>': <station_id>` | A station was matched using the configured ID pattern. |
| Info | `ChargePoint: getStationStatus: <address>-<id>: <status>` | Current status of the ChargePoint station. |
| Info | `ChargePoint: getLoad: <address>-<id>: Session <n>, User <id>, <kW>kW, Battery <pct>%` | Current charging session on the station: session number, user, power, and vehicle battery level. |
| Info | `ChargePoint: getChargingSessionData: <address>-<id>: Session <id>: <energy>kWh` | Energy delivered in a completed session. |
| Info | `ChargePoint: shedLoad: <address>: <kW>kW` | The load was shed (reduced) on this station. |
| Info | `ChargePoint: clearShedState: <address>` | The load shed state was cleared — normal charging resumed. |
| Warning | `ChargePoint: Per port shed not supported on station <address>. Using station shed instead.` | This station does not support per-port load shedding; the whole-station shed is used instead. |

---

## SMA EV Charger EVSE

Entries for SMA EV Charger devices connected via the SMA API.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `SMA token received` | Authentication with the SMA EV Charger succeeded. |
| Warning | `SMA failed to get token` | Authentication with the SMA EV Charger failed — check credentials. |
| Error | `SMA req error PUT/POST failed: <error>` | An API request to the SMA EV Charger failed. |
| Info | `SMA req: PUT/POST <url> -> <status>` | An API request was sent and a response received. |
| Warning | `SMA req: -> parser error for: <body>` | The response from the SMA EV Charger could not be parsed. |
| Info | `SMA model: <model>` | The SMA EV Charger model was identified. |
| Warning | `SMA get_params failed` | Could not read configuration parameters from the SMA EV Charger. |
| Verbose | `SMA getprm: <channel>` / `SMA getprmr: <values>` | Parameter read request and response (verbosity level 4). |
| Verbose | `SMA getval: <channel>` / `SMA getvalr: <values>` | Value read request and response (verbosity level 4). |

---

## KEBA EVSE

Entries for KEBA charging stations.

| Level | Entry | Meaning |
|---|---|---|
| Info | `KEBA cmd: <command>` | A command was sent to the KEBA charger. |
| Info | `KEBA rsp: <response>` | A response was received from the KEBA charger. |

---

## WARP EVSE

Entries for WARP charging stations.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `warp mc <mc> <min_cur> <max_cur> <ext_limit>` | A minimum-current conflict was detected on the WARP charger — the requested minimum current exceeds the available power budget. |
| Info | `Warp RFID <dev_id> <tag>` | An RFID tag was scanned on a WARP charger. |

---

## OCMF / Calibration-Law Signed Meter Values (`LM OCMF`)

Entries about OCMF (Open Charge Metering Format) — the signed meter records used for billing under calibration law. These only appear when a calibration-law compliant meter is connected.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `LM OCMF time sync error` | The meter's clock is not synchronized; the OCMF record was rejected. Accurate timestamps are required for legally compliant records. |
| Warning | `LM OCMF not accepted: [<data>]` | An OCMF record from the meter was rejected (invalid signature, clock error, or format problem). |
| Warning | `LM OCMF reset` | The OCMF sequence counter was reset. This happens when a new transaction starts. |
| Warning | `LM OCMF end prev. tx` | A previous transaction was closed in the OCMF record before the new one started. |

---

## Expression Meter & Variables (`LM CMV`, `LM MVAR`, `LM EVAR`, `LM EXP`)

Entries about computed values and expression-based meters. These appear when the charging manager evaluates formulas defined in the configuration.

| Level | Entry | Meaning |
|---|---|---|
| Info | `LM CMV <variable> <value>` | A charging manager variable was computed with the shown value. |
| Info | `LM MVAR <variable> <value>` | A meter variable was evaluated. |
| Info | `LM EVAR <variable> <value>` | An expression variable was evaluated. |
| Warning | `LM EXP unk ident <identifier>` | An expression references an unknown variable or identifier — check the expression configuration. |
| Warning | `LM EXP unk dev <identifier>` | An expression references a device that does not exist. |
| Warning | `LM EXP unk field <identifier>.<field>` | An expression references a field that does not exist on the named device. |
| Error | `LM meter_def, duplicate entry ignored: <name>` | A meter definition with this name already exists; the duplicate was ignored. |
| Error | `meter_udef <filename> <size> JSON error` | A user-defined meter file contains invalid JSON. |

---

## Configuration Migration

Entries that appear when the system upgrades a configuration file from an older format.

| Level | Entry | Meaning |
|---|---|---|
| Always | `SYS migrating configuration from <old_version> to <new_version>` | The configuration format was automatically upgraded after a firmware update. |
| Warning | `migration: attach meter <id> to <device>` | A meter was reassigned to a device as part of the migration. |
| Warning | `migration: added device <id> as <name>` | A new device entry was created automatically during migration. |

---

## Configuration Reset & Firmware Update

| Level | Entry | Meaning |
|---|---|---|
| Always | `resetting CM config` | The charging manager configuration was reset to factory defaults. |
| Always | `resetting full config` | A full factory reset was performed — all configuration was wiped. |
| Always | `LM update: <command> -> <result> <exit_code>` | A firmware or script update was executed. Shows the command and whether it succeeded. |
| Warning | `HA cnf: <param>=<value>` | A configuration parameter was changed via the HTTP API. |
| Warning | `HA mod user <id>` | A user account was modified. |
| Warning | `HA new user id <id>` | A new user account was created. |
| Warning | `HA def user, id <id>` | Default user settings were applied. |

---

## Grid Operator Integration

Entries about external current limits received from the grid operator (e.g. via the Elekey API or similar).

| Level | Entry | Meaning |
|---|---|---|
| Warning | `LB extovr <limit>` | An external charging limit was received from the grid operator and is now active. |

**Elekey API** (entries prefixed with the configured device name):

| Level | Entry | Meaning |
|---|---|---|
| Warning | `<prefix> loop start` / `<prefix> loop stopped` | The Elekey integration loop started or stopped. |
| Warning | `<prefix> con err` | Could not connect to the Elekey server. |
| Warning | `<prefix> auth post err <status>` | Authentication with the Elekey server failed. |
| Warning | `<prefix> auth post json err <body>` | The authentication response could not be parsed. |
| Warning | `<prefix> auth post json no token <body>` | The authentication response did not contain a token. |
| Warning | `<prefix> stat post err <status>` | Sending a status report to the Elekey server failed. |
| Warning | `<prefix> stat post resp unknown evse <d> <e>` | The Elekey server referenced an unknown EVSE in its response. |
| Warning | `<prefix> stat post unknown action <action>` | The Elekey server sent an action that is not recognized. |

---

## Modbus Proxy

Entries about the Modbus proxy server, which allows external tools to access Modbus devices through the wallbox.

| Level | Entry | Meaning |
|---|---|---|
| Info | `modbus_proxy_server: listen on <port>` | The Modbus proxy is listening for connections on the specified port. |
| Error | `modbus proxy failed to listen on <port>, conflicting device?` | The Modbus proxy could not bind to the port — another process or device may be using it. |
| Info | `modbus_proxy_server: shutdown` | The Modbus proxy server was shut down. |

---

## SOCKS Proxy

Entries about the built-in SOCKS5 proxy (used to tunnel connections through the wallbox).

| Level | Entry | Meaning |
|---|---|---|
| Info | `SOCKS client connected to proxy at <address>` | A SOCKS client connection to an upstream proxy was established. |
| Warning | `SOCKS client failed to connect to <address>` | Could not reach the upstream SOCKS proxy. |
| Info | `SOCKS client negotiated method SSL/no authentication` | The SOCKS5 handshake completed, showing the negotiated authentication method. |
| Warning | `SOCKS client authentication failed` | SOCKS5 authentication was rejected by the upstream proxy. |
| Info | `SOCKS client connect/bind request, server replied: <reason>` | The SOCKS server responded to a connection request. |
| Info | `SOCKS client connected to <address> via proxy` | A connection through the SOCKS proxy was fully established. |
| Info | `SOCKS server: listen/accept/connection` | SOCKS server lifecycle events (listening, accepting clients, handling connections). |
| Warning | `SOCKS server TLS handshake failed` | A TLS SOCKS connection failed during the handshake. |
| Info | `SOCKS server transferred <n> bytes from client to remote host` | Data forwarding statistics for a completed SOCKS session. |
| Error | `SOCKS cannot start listening server` | The SOCKS server could not be started. |

---

## SMTP (Email)

Entries about outgoing email (e.g. for notifications).

| Level | Entry | Meaning |
|---|---|---|
| Always | `Failed to connect to SMTP server at <host>` | Could not reach the configured mail server. Check the server address and network connectivity. |
| Always | `Error sending data to SMTP server` | Sending the email data to the server failed. |
| Always | `Error receiving data from SMTP server` | Did not receive the expected response from the mail server. |
| Always | `Unexpected response from SMTP server: <response>` | The mail server responded with an unexpected message — may indicate a protocol or configuration mismatch. |
| Always | `Invalid sender address <from> sending e-mail` | The configured sender address is invalid. |

---

## SLIP / TCP Bridge

Entries about the SLIP network interface and TCP-over-SLIP bridging (used on ESP32 for serial network connectivity).

| Level | Entry | Meaning |
|---|---|---|
| Warning | `Starting lwIP slipif, local interface IP is <ip>` | The SLIP network interface started. Shows the local IP address. |
| Warning | `Stopping lwIP slipif` | The SLIP interface was stopped. |
| Warning | `SLIP: DHCP server assigned IP to a station, IP is: <ip>` | A device connected via SLIP received an IP address from the built-in DHCP server. |
| Warning | `SLIP <socket> connected` / `SLIP <socket> close` | A SLIP connection was established or closed. |
| Warning | `SLIP <socket> connection failed` / `SLIP <socket> connect timed out` | A SLIP connection attempt failed or timed out. |
| Warning | `SLIP new listen socket <n>: listen_port <port>` | The SLIP listener started on the specified port. |
| Info | `TCP lwip <socket> closed by remote` | The remote side closed a TCP connection over the SLIP interface. |
| Info | `slip: yield write/read` | The SLIP interface is waiting for write or read availability. |
| Info | `slip: wait_for write/read <ms> ms` | The SLIP interface waited the given number of milliseconds for I/O. |

---

## SML Meter Details

Additional SML (Smart Meter Language) parser messages beyond what the meter produces:

| Level | Entry | Meaning |
|---|---|---|
| Warning | `SML parser: invalid CRC16 in message` | A received SML data frame has a bad checksum — data corruption or wiring problem. |
| Warning | `SML parser skipping unknown message body with id \x<hex>` | The SML parser received a message type it does not recognize; it was skipped. |
| Info | `SML transport: receiving version 1 SML file` | Standard SML format detected. |
| Warning | `SML transport: version 2 SML file (not supported)` | SML version 2 is not supported. The meter data cannot be read. |
| Warning | `SMLH E <error>` | Error reading SML data over HTTP (SML-over-HTTP meter). |
| Verbose | `SMLH D <hex>` | Raw SML data received via HTTP (verbosity level 4). |

---

## SMA Home Manager Meter

| Level | Entry | Meaning |
|---|---|---|
| Verbose | `SMA HM data <hex>` | Raw data received from an SMA Home Manager via multicast (verbosity level 4). |

---

## NFC / MiFare Config Patch (ESP32)

Entries about configuration updates delivered via NFC card on ESP32-based devices.

| Level | Entry | Meaning |
|---|---|---|
| Warning | `patching config with: <config>` | A configuration patch was read from an NFC card and is being applied. |
| Error | `patching config failed: invalid rfid` | The NFC card does not have a recognized RFID identifier. |
| Error | `patching config failed: invalid data` | The data on the NFC card could not be read. |
| Error | `patching config failed: invalid signature` | The NFC card data has an invalid signature — the card may be counterfeit or tampered with. |
| Error | `patching config failed: <error>` | Applying the config patch from the NFC card failed for another reason. |

---

## Signed Data Files

Entries about errors writing tamper-evident signed data files (used for calibration-law compliance).

| Level | Entry | Meaning |
|---|---|---|
| Error | `Error writing file <filename>` | A signed data file could not be written — check disk space and permissions. |
| Error | `Error removing file <filename>` | A signed data file could not be deleted. |

---

## Network Sockets (`SOCKET`)

Low-level TCP/TLS socket events. These appear at high verbosity and are mainly useful for diagnosing network connectivity problems.

| Level | Entry | Meaning |
|---|---|---|
| Always | `SOCKET <n> created` | A new socket was created. |
| Always | `SOCKET <n> connected` / `connected after wait` | A TCP connection was established. |
| Warning | `SOCKET <n> connect timed out` | A connection attempt did not complete within the timeout. |
| Warning | `SOCKET <n> failed to connect: <error>` | The connection attempt failed with the given error. |
| Warning | `SOCKET <n> TLS CLIENT/SERVER handshake failed (code -0x<hex>)` | A TLS encryption handshake failed. The hex code identifies the TLS error. |
| Always | `SOCKET <n> handshake successful, using <cipher>` | A TLS connection was established. Shows the negotiated cipher suite. |
| Always | `SOCKET <n> listening on port <port>` | The socket is accepting incoming connections on the given port. |
| Always | `SOCKET <n> accepted connection on socket <n>` | An incoming connection was accepted. |
| Always | `SOCKET <n> received <n> bytes` | Data was received on the socket. |
| Warning | `SOCKET <n> receive timed out` | No data arrived within the expected time. |
| Warning | `SOCKET <n> receive closed by peer` | The remote side closed the connection. |
| Warning | `SOCKET <n> receive: <error>` | A receive error occurred. |
| Always | `SOCKET <n> sent <n> bytes` | Data was sent on the socket. |
| Warning | `SOCKET <n> send error <error>` / `send timed out` | Sending data failed or timed out. |
| Always | `SOCKET <n> closed` | The socket was closed. |
| Warning | `SOCKET <n> failed to enable keep alive` | TCP keep-alive could not be enabled on this socket. |
| Warning | `SOCKET error creating IPv4/IPv6 TCP/UDP socket: <error>` | The operating system could not create a socket — may indicate resource exhaustion. |
| Warning | `SOCKET <n> failed to set SO_REUSEADDR option: <error>` | Could not set socket option — the port may not be reusable immediately after a restart. |
| Warning | `SOCKET <n> detected TLS client HELLO` | A TLS handshake initiation was detected on an incoming connection. |
| Warning | `SOCKET getaddrinfo_a timeout` | A DNS lookup timed out. |

---

## HTTP Infrastructure

Low-level HTTP client and server events. These appear alongside higher-level subsystem messages (cloud, OCPP, price data, etc.) and provide detail on the underlying connection.

| Level | Entry | Meaning |
|---|---|---|
| Info | `[<n>] connected to <address>` | The HTTP client connected to the server. |
| Info | `[<n>] connected to <address> via SOCKS proxy <proxy>` | The HTTP client connected through a SOCKS proxy. |
| Info | `[<n>] reconnected to server` | The HTTP client re-established a dropped connection. |
| Info | `[<n>] sent message` | An HTTP request was sent. |
| Always | `[<n>] socket is no longer connected` | The underlying connection was lost before the response arrived. |
| Info | `[<n>] timed out waiting for request` | The HTTP server did not receive a request within the timeout period; the connection was closed. |
| Warning | `[<n>] handler failed to process request` | The HTTP server encountered an error processing the incoming request. |
| Info | `[<n>] sending HTTP/HTTPS response` | The HTTP server is sending a response. |
| Warning | `[<n>] failed to send HTTP/HTTPS response` / `failed to send HTTP/HTTPS response body` | The HTTP server could not deliver its response — the client may have disconnected. |
| Warning | `[<n>] invalid HTTP chunk received` | A chunked transfer encoding frame was malformed. |
| Warning | `unexpected large message content (<n> bytes)` | An HTTP message body exceeds the configured size limit and was rejected. |
| Info | `Stopping TCP Server` | The internal HTTP/TCP server was shut down. |

---

## SOAP / OCPP 1.5

Entries for OCPP 1.5 connections that use SOAP over HTTP (rather than WebSocket). These appear under the same OCPP verbosity level.

| Level | Entry | Meaning |
|---|---|---|
| Info | `Posting <message> SOAP request` | An OCPP 1.5 SOAP request is being sent to the backend. |
| Info | `SOAP confirmation received` | The backend acknowledged the SOAP request. |
| Info | `SOAP request received` | An OCPP 1.5 SOAP request was received from the backend. |
| Warning | `HTTP response code <n> received. Expecting SOAP Fault response.` | The HTTP response indicates an error; the body should contain a SOAP Fault. |
| Info | `sending SOAP Fault: <message>` | An error response is being sent back to the OCPP 1.5 backend. |
| Info | `sending SOAP response` | A normal SOAP response is being sent to the backend. |

---

## Win32 Firewall (Windows only)

These entries only appear when the wallbox software runs on Windows.

| Level | Entry | Meaning |
|---|---|---|
| Always | `Win32 Firewall init failed` | The Windows Firewall API could not be initialized. |
| Always | `Win32 Firewall enabled` | The Windows Firewall rule for the wallbox was successfully added. |
| Always | `Win32 Firewall, add app failed` | Could not add a Windows Firewall exception for the wallbox — it may be blocked by group policy. |
| Always | `Win32 Firewall, remove app failed` | Could not remove the Windows Firewall exception on shutdown. |

---

## Errors to Watch For

These entries indicate problems that typically require attention:

| Level | Entry | What to do |
|---|---|---|
| Always | `LM failed to read config <filename>` | Check the configuration file for syntax errors. |
| Error | `LM add_meter_def / add_rule_set -> parser error` | Check the named file for JSON errors. |
| Always | `LM overdraft <current>` | The total current draw exceeded the limit. Check meter wiring and phase assignments. |
| Always | `SYS Key signature invalid` / `Key not valid` | Contact support — the license key is not working. |
| Warning | `admin password must not be default password` | Change the admin password immediately for security. |
| Info | `MB ... crc error` | Electrical noise or wiring problem on the Modbus bus. |
| Warning | `MB ... failed after <n> retries` | A Modbus device is not responding. Check cabling and device address settings. |
| Error | `SR ... <error>` (serial error) | Serial communication failure. Check RS-485 wiring. |
| Warning | `error connecting to server` (cloud) | No internet connection, or the cloud service is unavailable. |
| Warning | `LB PH imb max tries` | Phase imbalance could not be corrected automatically. Check meter phase assignment. |
| Info | `LB EOV <id> ...` | An EVSE is drawing more current than commanded. May indicate a hardware fault. |
| Always | `cft_assertion failed` | An internal error occurred. Note the file and line number and contact support. |
