fix: fix CS configuration hash calculation
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 27 May 2023 12:22:59 +0000 (14:22 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 27 May 2023 12:22:59 +0000 (14:22 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
.vscode/settings.json
README.md
src/charging-station/AutomaticTransactionGenerator.ts
src/charging-station/ChargingStation.ts
src/types/ChargingStationTemplate.ts

index 1f23ab8a2b10fd06fd56f22b8ad760348c4119fd..2925ce9071ac7e73f4a42491f98e05d11bc28d51 100644 (file)
@@ -35,6 +35,7 @@
     "poolifier",
     "preinstall",
     "Recurrency",
+    "RFID",
     "robohydra",
     "shutdowning",
     "sonarlint",
index a3f0e4e76a568e1cc063a1ea8096baab535b7568..46c8038f9759286680ea97298a194819ce01ec7d 100644 (file)
--- a/README.md
+++ b/README.md
@@ -131,62 +131,63 @@ But the modifications to test have to be done to the files in the build target d
 
 **src/assets/station-templates/\<name\>.json**:
 
-| Key                                | Value(s)      | Default Value                                                                                                                       | Value type                                                                                                                                                               | Description                                                                                                                                                                                                                         |
-| ---------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| supervisionUrls                    |               | []                                                                                                                                  | string \| string[]                                                                                                                                                       | string or array of connection URIs to OCPP-J servers                                                                                                                                                                                |
-| supervisionUser                    |               | undefined                                                                                                                           | string                                                                                                                                                                   | basic HTTP authentication user to OCPP-J server                                                                                                                                                                                     |
-| supervisionPassword                |               | undefined                                                                                                                           | string                                                                                                                                                                   | basic HTTP authentication password to OCPP-J server                                                                                                                                                                                 |
-| supervisionUrlOcppConfiguration    | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | allow supervision URL configuration via a vendor OCPP parameter key                                                                                                                                                                 |
-| supervisionUrlOcppKey              |               | 'ConnectionUrl'                                                                                                                     | string                                                                                                                                                                   | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL                                                                                                                                       |
-| ocppVersion                        | 1.6/2.0/2.0.1 | 1.6                                                                                                                                 | string                                                                                                                                                                   | OCPP version                                                                                                                                                                                                                        |
-| ocppProtocol                       | json          | json                                                                                                                                | string                                                                                                                                                                   | OCPP protocol                                                                                                                                                                                                                       |
-| ocppStrictCompliance               | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | strict adherence to the OCPP version and protocol specifications                                                                                                                                                                    |
-| ocppPersistentConfiguration        | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable persistent OCPP parameters storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in [dist/assets/configurations](dist/assets/configurations)                        |
-| stationInfoPersistentConfiguration | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable persistent station information and specifications storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in [dist/assets/configurations](dist/assets/configurations) |
-| wsOptions                          |               | {}                                                                                                                                  | ClientOptions & ClientRequestArgs                                                                                                                                        | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection                                                                                                            |
-| idTagsFile                         |               | undefined                                                                                                                           | string                                                                                                                                                                   | RFID tags list file relative to src/assets path                                                                                                                                                                                     |
-| baseName                           |               | undefined                                                                                                                           | string                                                                                                                                                                   | base name to build charging stations id                                                                                                                                                                                             |
-| nameSuffix                         |               | undefined                                                                                                                           | string                                                                                                                                                                   | name suffix to build charging stations id                                                                                                                                                                                           |
-| fixedName                          | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | use the baseName as the charging stations unique name                                                                                                                                                                               |
-| chargePointModel                   |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations model                                                                                                                                                                                                             |
-| chargePointVendor                  |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations vendor                                                                                                                                                                                                            |
-| chargePointSerialNumberPrefix      |               | undefined                                                                                                                           | string                                                                                                                                                                   | charge point serial number prefix                                                                                                                                                                                                   |
-| chargeBoxSerialNumberPrefix        |               | undefined                                                                                                                           | string                                                                                                                                                                   | charge box serial number prefix (deprecated in OCPP 1.6)                                                                                                                                                                            |
-| firmwareVersionPattern             |               | Semantic versionning regular expression: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string | string                                                                                                                                                                   | charging stations firmware version pattern                                                                                                                                                                                          |
-| firmwareVersion                    |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations firmware version                                                                                                                                                                                                  |
-| power                              |               |                                                                                                                                     | float \| float[]                                                                                                                                                         | charging stations maximum power value(s)                                                                                                                                                                                            |
-| powerSharedByConnectors            | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | charging stations power shared by its connectors                                                                                                                                                                                    |
-| powerUnit                          | W/kW          | W                                                                                                                                   | string                                                                                                                                                                   | charging stations power unit                                                                                                                                                                                                        |
-| currentOutType                     | AC/DC         | AC                                                                                                                                  | string                                                                                                                                                                   | charging stations current out type                                                                                                                                                                                                  |
-| voltageOut                         |               | AC:230/DC:400                                                                                                                       | integer                                                                                                                                                                  | charging stations voltage out                                                                                                                                                                                                       |
-| numberOfPhases                     | 0/1/3         | AC:3/DC:0                                                                                                                           | integer                                                                                                                                                                  | charging stations number of phase(s)                                                                                                                                                                                                |
-| numberOfConnectors                 |               |                                                                                                                                     | integer \| integer[]                                                                                                                                                     | charging stations number of connector(s)                                                                                                                                                                                            |
-| useConnectorId0                    | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | use connector id 0 definition from the charging station configuration template                                                                                                                                                      |
-| randomConnectors                   | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | randomize runtime connector id affectation from the connector id definition in charging station configuration template                                                                                                              |
-| resetTime                          |               | 60                                                                                                                                  | integer                                                                                                                                                                  | seconds to wait before the charging stations come back at reset                                                                                                                                                                     |
-| autoRegister                       | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | set charging stations as registered at boot notification for testing purpose                                                                                                                                                        |
-| autoReconnectMaxRetries            |               | -1 (unlimited)                                                                                                                      | integer                                                                                                                                                                  | connection retries to the OCPP-J server                                                                                                                                                                                             |
-| reconnectExponentialDelay          | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | connection delay retry to the OCPP-J server                                                                                                                                                                                         |
-| registrationMaxRetries             |               | -1 (unlimited)                                                                                                                      | integer                                                                                                                                                                  | charging stations boot notification retries                                                                                                                                                                                         |
-| amperageLimitationOcppKey          |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations OCPP parameter key used to set the amperage limit, per phase for each connector on AC and global for DC                                                                                                           |
-| amperageLimitationUnit             | A/cA/dA/mA    | A                                                                                                                                   | string                                                                                                                                                                   | charging stations amperage limit unit                                                                                                                                                                                               |
-| enableStatistics                   | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | enable charging stations statistics                                                                                                                                                                                                 |
-| mustAuthorizeAtRemoteStart         | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled                                                                                                                                         |
-| payloadSchemaValidation            | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | validate OCPP commands PDU against [OCA](https://www.openchargealliance.org/) JSON schemas                                                                                                                                          |
-| beginEndMeterValues                | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | enable Transaction.{Begin,End} MeterValues                                                                                                                                                                                          |
-| outOfOrderEndMeterValues           | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter)                                                                                               |
-| meteringPerTransaction             | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable metering history on a per transaction basis                                                                                                                                                                                  |
-| transactionDataMeterValues         | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | enable transaction data MeterValues at stop transaction                                                                                                                                                                             |
-| mainVoltageMeterValues             | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | include charging stations main voltage MeterValues on three phased charging stations                                                                                                                                                |
-| phaseLineToLineVoltageMeterValues  | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | include charging stations line to line voltage MeterValues on three phased charging stations                                                                                                                                        |
-| customValueLimitationMeterValues   | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable limitation on custom fluctuated value in MeterValues                                                                                                                                                                         |
-| firmwareUpgrade                    |               | {<br />"versionUpgrade": {<br />"step": 1<br />},<br />"reset": true<br />}                                                         | {<br />versionUpgrade: {<br />patternGroup: number;<br />step: number;<br />};<br />reset: boolean;<br />failureStatus: 'DownloadFailed' \| 'InstallationFailed';<br />} | Configuration section for simulating firmware upgrade support.                                                                                                                                                                      |
-| commandsSupport                    |               | {<br />"incomingCommands": {},<br />"outgoingCommands": {}<br />}                                                                   | {<br /> incomingCommands: Record<IncomingRequestCommand, boolean>;<br />outgoingCommands?: Record<RequestCommand, boolean>;<br />}                                       | Configuration section for OCPP commands support. Empty section or subsections means all implemented OCPP commands are supported                                                                                                     |
-| messageTriggerSupport              |               | {}                                                                                                                                  | Record<MessageTrigger, boolean>                                                                                                                                          | Configuration section for OCPP commands trigger support. Empty section means all implemented OCPP trigger commands are supported                                                                                                    |
-| Configuration                      |               |                                                                                                                                     | ChargingStationOcppConfiguration                                                                                                                                         | charging stations OCPP parameters configuration section                                                                                                                                                                             |
-| AutomaticTransactionGenerator      |               |                                                                                                                                     | AutomaticTransactionGeneratorConfiguration                                                                                                                               | charging stations ATG configuration section                                                                                                                                                                                         |
-| Connectors                         |               |                                                                                                                                     | Record<string, ConnectorStatus>                                                                                                                                          | charging stations connectors configuration section                                                                                                                                                                                  |
-| Evses                              |               |                                                                                                                                     | Record<string, EvseTemplate>                                                                                                                                             | charging stations EVSEs configuration section                                                                                                                                                                                       |
+| Key                                                  | Value(s)      | Default Value                                                                                                                       | Value type                                                                                                                                                               | Description                                                                                                                                                                                                                         |
+| ---------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| supervisionUrls                                      |               | []                                                                                                                                  | string \| string[]                                                                                                                                                       | string or array of connection URIs to OCPP-J servers                                                                                                                                                                                |
+| supervisionUser                                      |               | undefined                                                                                                                           | string                                                                                                                                                                   | basic HTTP authentication user to OCPP-J server                                                                                                                                                                                     |
+| supervisionPassword                                  |               | undefined                                                                                                                           | string                                                                                                                                                                   | basic HTTP authentication password to OCPP-J server                                                                                                                                                                                 |
+| supervisionUrlOcppConfiguration                      | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | allow supervision URL configuration via a vendor OCPP parameter key                                                                                                                                                                 |
+| supervisionUrlOcppKey                                |               | 'ConnectionUrl'                                                                                                                     | string                                                                                                                                                                   | the vendor string that will be used as a vendor OCPP parameter key to set the supervision URL                                                                                                                                       |
+| ocppVersion                                          | 1.6/2.0/2.0.1 | 1.6                                                                                                                                 | string                                                                                                                                                                   | OCPP version                                                                                                                                                                                                                        |
+| ocppProtocol                                         | json          | json                                                                                                                                | string                                                                                                                                                                   | OCPP protocol                                                                                                                                                                                                                       |
+| ocppStrictCompliance                                 | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | strict adherence to the OCPP version and protocol specifications                                                                                                                                                                    |
+| ocppPersistentConfiguration                          | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable persistent OCPP parameters storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in [dist/assets/configurations](dist/assets/configurations)                        |
+| stationInfoPersistentConfiguration                   | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable persistent station information and specifications storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in [dist/assets/configurations](dist/assets/configurations) |
+| automaticTransactionGeneratorPersistentConfiguration | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable persistent automatic transaction generator storage by charging stations 'hashId'. The persistency is ensured by the charging stations configuration files in [dist/assets/configurations](dist/assets/configurations)        |
+| wsOptions                                            |               | {}                                                                                                                                  | ClientOptions & ClientRequestArgs                                                                                                                                        | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection                                                                                                            |
+| idTagsFile                                           |               | undefined                                                                                                                           | string                                                                                                                                                                   | RFID tags list file relative to src/assets path                                                                                                                                                                                     |
+| baseName                                             |               | undefined                                                                                                                           | string                                                                                                                                                                   | base name to build charging stations id                                                                                                                                                                                             |
+| nameSuffix                                           |               | undefined                                                                                                                           | string                                                                                                                                                                   | name suffix to build charging stations id                                                                                                                                                                                           |
+| fixedName                                            | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | use the baseName as the charging stations unique name                                                                                                                                                                               |
+| chargePointModel                                     |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations model                                                                                                                                                                                                             |
+| chargePointVendor                                    |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations vendor                                                                                                                                                                                                            |
+| chargePointSerialNumberPrefix                        |               | undefined                                                                                                                           | string                                                                                                                                                                   | charge point serial number prefix                                                                                                                                                                                                   |
+| chargeBoxSerialNumberPrefix                          |               | undefined                                                                                                                           | string                                                                                                                                                                   | charge box serial number prefix (deprecated in OCPP 1.6)                                                                                                                                                                            |
+| firmwareVersionPattern                               |               | Semantic versionning regular expression: https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string | string                                                                                                                                                                   | charging stations firmware version pattern                                                                                                                                                                                          |
+| firmwareVersion                                      |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations firmware version                                                                                                                                                                                                  |
+| power                                                |               |                                                                                                                                     | float \| float[]                                                                                                                                                         | charging stations maximum power value(s)                                                                                                                                                                                            |
+| powerSharedByConnectors                              | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | charging stations power shared by its connectors                                                                                                                                                                                    |
+| powerUnit                                            | W/kW          | W                                                                                                                                   | string                                                                                                                                                                   | charging stations power unit                                                                                                                                                                                                        |
+| currentOutType                                       | AC/DC         | AC                                                                                                                                  | string                                                                                                                                                                   | charging stations current out type                                                                                                                                                                                                  |
+| voltageOut                                           |               | AC:230/DC:400                                                                                                                       | integer                                                                                                                                                                  | charging stations voltage out                                                                                                                                                                                                       |
+| numberOfPhases                                       | 0/1/3         | AC:3/DC:0                                                                                                                           | integer                                                                                                                                                                  | charging stations number of phase(s)                                                                                                                                                                                                |
+| numberOfConnectors                                   |               |                                                                                                                                     | integer \| integer[]                                                                                                                                                     | charging stations number of connector(s)                                                                                                                                                                                            |
+| useConnectorId0                                      | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | use connector id 0 definition from the charging station configuration template                                                                                                                                                      |
+| randomConnectors                                     | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | randomize runtime connector id affectation from the connector id definition in charging station configuration template                                                                                                              |
+| resetTime                                            |               | 60                                                                                                                                  | integer                                                                                                                                                                  | seconds to wait before the charging stations come back at reset                                                                                                                                                                     |
+| autoRegister                                         | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | set charging stations as registered at boot notification for testing purpose                                                                                                                                                        |
+| autoReconnectMaxRetries                              |               | -1 (unlimited)                                                                                                                      | integer                                                                                                                                                                  | connection retries to the OCPP-J server                                                                                                                                                                                             |
+| reconnectExponentialDelay                            | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | connection delay retry to the OCPP-J server                                                                                                                                                                                         |
+| registrationMaxRetries                               |               | -1 (unlimited)                                                                                                                      | integer                                                                                                                                                                  | charging stations boot notification retries                                                                                                                                                                                         |
+| amperageLimitationOcppKey                            |               | undefined                                                                                                                           | string                                                                                                                                                                   | charging stations OCPP parameter key used to set the amperage limit, per phase for each connector on AC and global for DC                                                                                                           |
+| amperageLimitationUnit                               | A/cA/dA/mA    | A                                                                                                                                   | string                                                                                                                                                                   | charging stations amperage limit unit                                                                                                                                                                                               |
+| enableStatistics                                     | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | enable charging stations statistics                                                                                                                                                                                                 |
+| mustAuthorizeAtRemoteStart                           | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | always send authorize at remote start transaction when AuthorizeRemoteTxRequests is enabled                                                                                                                                         |
+| payloadSchemaValidation                              | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | validate OCPP commands PDU against [OCA](https://www.openchargealliance.org/) JSON schemas                                                                                                                                          |
+| beginEndMeterValues                                  | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | enable Transaction.{Begin,End} MeterValues                                                                                                                                                                                          |
+| outOfOrderEndMeterValues                             | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | send Transaction.End MeterValues out of order. Need to relax OCPP specifications strict compliance ('ocppStrictCompliance' parameter)                                                                                               |
+| meteringPerTransaction                               | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable metering history on a per transaction basis                                                                                                                                                                                  |
+| transactionDataMeterValues                           | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | enable transaction data MeterValues at stop transaction                                                                                                                                                                             |
+| mainVoltageMeterValues                               | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | include charging stations main voltage MeterValues on three phased charging stations                                                                                                                                                |
+| phaseLineToLineVoltageMeterValues                    | true/false    | false                                                                                                                               | boolean                                                                                                                                                                  | include charging stations line to line voltage MeterValues on three phased charging stations                                                                                                                                        |
+| customValueLimitationMeterValues                     | true/false    | true                                                                                                                                | boolean                                                                                                                                                                  | enable limitation on custom fluctuated value in MeterValues                                                                                                                                                                         |
+| firmwareUpgrade                                      |               | {<br />"versionUpgrade": {<br />"step": 1<br />},<br />"reset": true<br />}                                                         | {<br />versionUpgrade: {<br />patternGroup: number;<br />step: number;<br />};<br />reset: boolean;<br />failureStatus: 'DownloadFailed' \| 'InstallationFailed';<br />} | Configuration section for simulating firmware upgrade support.                                                                                                                                                                      |
+| commandsSupport                                      |               | {<br />"incomingCommands": {},<br />"outgoingCommands": {}<br />}                                                                   | {<br /> incomingCommands: Record<IncomingRequestCommand, boolean>;<br />outgoingCommands?: Record<RequestCommand, boolean>;<br />}                                       | Configuration section for OCPP commands support. Empty section or subsections means all implemented OCPP commands are supported                                                                                                     |
+| messageTriggerSupport                                |               | {}                                                                                                                                  | Record<MessageTrigger, boolean>                                                                                                                                          | Configuration section for OCPP commands trigger support. Empty section means all implemented OCPP trigger commands are supported                                                                                                    |
+| Configuration                                        |               |                                                                                                                                     | ChargingStationOcppConfiguration                                                                                                                                         | charging stations OCPP parameters configuration section                                                                                                                                                                             |
+| AutomaticTransactionGenerator                        |               |                                                                                                                                     | AutomaticTransactionGeneratorConfiguration                                                                                                                               | charging stations ATG configuration section                                                                                                                                                                                         |
+| Connectors                                           |               |                                                                                                                                     | Record<string, ConnectorStatus>                                                                                                                                          | charging stations connectors configuration section                                                                                                                                                                                  |
+| Evses                                                |               |                                                                                                                                     | Record<string, EvseTemplate>                                                                                                                                             | charging stations EVSEs configuration section                                                                                                                                                                                       |
 
 #### Configuration section syntax example
 
index c5076adce7ca9a24f7c25ea50a45a1c916a355cf..b87eaab3d3b87d33cbd7b05dbcae028b9e01fb14 100644 (file)
@@ -316,45 +316,44 @@ export class AutomaticTransactionGenerator extends AsyncResource {
       for (const [evseId, evseStatus] of this.chargingStation.evses) {
         if (evseId > 0) {
           for (const connectorId of evseStatus.connectors.keys()) {
-            this.connectorsStatus.set(connectorId, {
-              start: false,
-              authorizeRequests: 0,
-              acceptedAuthorizeRequests: 0,
-              rejectedAuthorizeRequests: 0,
-              startTransactionRequests: 0,
-              acceptedStartTransactionRequests: 0,
-              rejectedStartTransactionRequests: 0,
-              stopTransactionRequests: 0,
-              acceptedStopTransactionRequests: 0,
-              rejectedStopTransactionRequests: 0,
-              skippedConsecutiveTransactions: 0,
-              skippedTransactions: 0,
-            });
+            this.connectorsStatus.set(connectorId, this.getConnectorStatus(connectorId));
           }
         }
       }
     } else {
       for (const connectorId of this.chargingStation.connectors.keys()) {
         if (connectorId > 0) {
-          this.connectorsStatus.set(connectorId, {
-            start: false,
-            authorizeRequests: 0,
-            acceptedAuthorizeRequests: 0,
-            rejectedAuthorizeRequests: 0,
-            startTransactionRequests: 0,
-            acceptedStartTransactionRequests: 0,
-            rejectedStartTransactionRequests: 0,
-            stopTransactionRequests: 0,
-            acceptedStopTransactionRequests: 0,
-            rejectedStopTransactionRequests: 0,
-            skippedConsecutiveTransactions: 0,
-            skippedTransactions: 0,
-          });
+          this.connectorsStatus.set(connectorId, this.getConnectorStatus(connectorId));
         }
       }
     }
   }
 
+  private getConnectorStatus(connectorId: number): Status {
+    const connectorStatus =
+      this.chargingStation.getAutomaticTransactionGeneratorStatuses()[connectorId];
+    delete connectorStatus?.startDate;
+    delete connectorStatus?.lastRunDate;
+    delete connectorStatus?.stopDate;
+    delete connectorStatus?.stoppedDate;
+    return (
+      connectorStatus ?? {
+        start: false,
+        authorizeRequests: 0,
+        acceptedAuthorizeRequests: 0,
+        rejectedAuthorizeRequests: 0,
+        startTransactionRequests: 0,
+        acceptedStartTransactionRequests: 0,
+        rejectedStartTransactionRequests: 0,
+        stopTransactionRequests: 0,
+        acceptedStopTransactionRequests: 0,
+        rejectedStopTransactionRequests: 0,
+        skippedConsecutiveTransactions: 0,
+        skippedTransactions: 0,
+      }
+    );
+  }
+
   private async startTransaction(
     connectorId: number
   ): Promise<StartTransactionResponse | undefined> {
index 54af77fc0351bb3d918536c046ecab95c080594b..414a48c520e08cae18bcffba836d20b504a62516 100644 (file)
@@ -69,6 +69,7 @@ import {
   RequestCommand,
   type Response,
   StandardParametersKey,
+  type Status,
   type StatusNotificationRequest,
   type StatusNotificationResponse,
   StopTransactionReason,
@@ -823,7 +824,10 @@ export class ChargingStation {
       | undefined;
     const automaticTransactionGeneratorConfigurationFromFile =
       this.getConfigurationFromFile()?.automaticTransactionGenerator;
-    if (automaticTransactionGeneratorConfigurationFromFile) {
+    if (
+      this.getAutomaticTransactionGeneratorPersistentConfiguration() &&
+      automaticTransactionGeneratorConfigurationFromFile
+    ) {
       automaticTransactionGeneratorConfiguration =
         automaticTransactionGeneratorConfigurationFromFile;
     } else {
@@ -836,6 +840,10 @@ export class ChargingStation {
     };
   }
 
+  public getAutomaticTransactionGeneratorStatuses(): Status[] | undefined {
+    return this.getConfigurationFromFile()?.automaticTransactionGeneratorStatuses;
+  }
+
   public startAutomaticTransactionGenerator(connectorIds?: number[]): void {
     this.automaticTransactionGenerator = AutomaticTransactionGenerator.getInstance(this);
     if (Utils.isNotEmptyArray(connectorIds)) {
@@ -1068,6 +1076,10 @@ export class ChargingStation {
     return this.stationInfo?.stationInfoPersistentConfiguration ?? true;
   }
 
+  private getAutomaticTransactionGeneratorPersistentConfiguration(): boolean {
+    return this.stationInfo?.automaticTransactionGeneratorPersistentConfiguration ?? true;
+  }
+
   private handleUnsupportedVersion(version: OCPPVersion) {
     const errorMsg = `Unsupported protocol version '${version}' configured in template file ${this.templateFile}`;
     logger.error(`${this.logPrefix()} ${errorMsg}`);
@@ -1082,10 +1094,10 @@ export class ChargingStation {
       `${ChargingStationUtils.getHashId(this.index, stationTemplate)}.json`
     );
     const chargingStationConfiguration = this.getConfigurationFromFile();
-    const featureFlag = false;
+    // FIXME: template changes to evses or connectors are not taken into account
     if (
-      featureFlag &&
-      (chargingStationConfiguration?.connectorsStatus || chargingStationConfiguration?.evsesStatus)
+      chargingStationConfiguration?.connectorsStatus ||
+      chargingStationConfiguration?.evsesStatus
     ) {
       this.initializeConnectorsOrEvsesFromFile(chargingStationConfiguration);
     } else {
@@ -1540,7 +1552,9 @@ export class ChargingStation {
   }
 
   private saveChargingStationAutomaticTransactionGeneratorConfiguration(): void {
-    this.saveConfiguration();
+    if (this.getAutomaticTransactionGeneratorPersistentConfiguration()) {
+      this.saveConfiguration();
+    }
   }
 
   private saveConnectorsStatus() {
@@ -1561,24 +1575,44 @@ export class ChargingStation {
           Utils.cloneObject<ChargingStationConfiguration>(this.getConfigurationFromFile()) ?? {};
         if (this.getStationInfoPersistentConfiguration() && this.stationInfo) {
           configurationData.stationInfo = this.stationInfo;
+        } else {
+          delete configurationData.stationInfo;
         }
         if (this.getOcppPersistentConfiguration() && this.ocppConfiguration?.configurationKey) {
           configurationData.configurationKey = this.ocppConfiguration.configurationKey;
+        } else {
+          delete configurationData.configurationKey;
         }
         configurationData = merge<ChargingStationConfiguration>(
           configurationData,
           buildChargingStationAutomaticTransactionGeneratorConfiguration(this)
         );
+        if (
+          !this.getAutomaticTransactionGeneratorPersistentConfiguration() ||
+          !this.getAutomaticTransactionGeneratorConfiguration()
+        ) {
+          delete configurationData.automaticTransactionGenerator;
+        }
         if (this.connectors.size > 0) {
           configurationData.connectorsStatus = buildConnectorsStatus(this);
+        } else {
+          delete configurationData.connectorsStatus;
         }
         if (this.evses.size > 0) {
           configurationData.evsesStatus = buildEvsesStatus(this);
+        } else {
+          delete configurationData.evsesStatus;
         }
         delete configurationData.configurationHash;
         const configurationHash = crypto
           .createHash(Constants.DEFAULT_HASH_ALGORITHM)
-          .update(JSON.stringify(configurationData))
+          .update(
+            JSON.stringify({
+              stationInfo: configurationData.stationInfo,
+              configurationKey: configurationData.configurationKey,
+              automaticTransactionGenerator: configurationData.automaticTransactionGenerator,
+            } as ChargingStationConfiguration)
+          )
           .digest('hex');
         if (this.configurationFileHash !== configurationHash) {
           AsyncLock.acquire(AsyncLockType.configuration)
index e3594d02200701ce1502659300e265a8d07278fc..0ba1899b285bb339ab43fe90cd9245be9b84a5db 100644 (file)
@@ -67,6 +67,7 @@ export type ChargingStationTemplate = {
   ocppStrictCompliance?: boolean;
   ocppPersistentConfiguration?: boolean;
   stationInfoPersistentConfiguration?: boolean;
+  automaticTransactionGeneratorPersistentConfiguration?: boolean;
   wsOptions?: WsOptions;
   idTagsFile?: string;
   baseName: string;