Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter

- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
This commit is contained in:
Eric F
2026-06-08 00:38:27 -04:00
parent 468cfeaa50
commit d398a6ced2
7326 changed files with 1177561 additions and 7 deletions

View File

@@ -0,0 +1,63 @@
function(collect_migration_files)
set(options "")
set(oneValueArgs LOCATION INSTALL_DESTINATION)
set(multiValueArgs "")
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT ARG_LOCATION)
message(FATAL_ERROR "No LOCATION provided, can't parse files")
endif()
if(NOT ${ARG_LOCATION} MATCHES "/$")
set(ARG_LOCATION "${ARG_LOCATION}/")
endif()
message("Parsing migration files in folder: ${ARG_LOCATION}")
file(GLOB MIGRATION_FILE_LIST RELATIVE ${ARG_LOCATION} "${ARG_LOCATION}*.sql") # ARG_LOCATION already contains the slash
list(SORT MIGRATION_FILE_LIST)
# The first file should always start with 1_up so make use of that fact.
# Next we always check the next number "down" and then "up" which come in order since we sorted alphabetically
set(CURRENT_MIGRATION_FILE_ID 1)
set(NEXT_MIGRATION_FILE_TYPE "up")
foreach(MIGRATION_FILE ${MIGRATION_FILE_LIST})
string(REGEX MATCH "^([0-9]+)_(up|down)(|-.+)\.sql$" MIGRATION_FILE_MATCHED ${MIGRATION_FILE})
if (MIGRATION_FILE_MATCHED STREQUAL "")
message(FATAL_ERROR "Migration filename does not match specification: " ${MIGRATION_FILE})
endif()
string(CONCAT NEXT_ID "^" ${CURRENT_MIGRATION_FILE_ID} "_")
if(NOT ${MIGRATION_FILE_MATCHED} MATCHES ${NEXT_ID})
message(FATAL_ERROR "Skipped migration file ID, expected " ${CURRENT_MIGRATION_FILE_ID} "_*.sql, but got " ${MIGRATION_FILE_MATCHED})
endif()
string(APPEND NEXT_ID ${NEXT_MIGRATION_FILE_TYPE})
if(NOT ${MIGRATION_FILE_MATCHED} MATCHES ${NEXT_ID})
message(FATAL_ERROR "Missing " ${NEXT_MIGRATION_FILE_TYPE} " migration file: " ${MIGRATION_FILE_MATCHED})
endif()
if(NEXT_MIGRATION_FILE_TYPE STREQUAL "up")
math(EXPR CURRENT_MIGRATION_FILE_ID "${CURRENT_MIGRATION_FILE_ID}+1")
set(NEXT_MIGRATION_FILE_TYPE "down")
elseif(NEXT_MIGRATION_FILE_TYPE STREQUAL "down")
set(NEXT_MIGRATION_FILE_TYPE "up")
endif()
endforeach()
if (NEXT_MIGRATION_FILE_TYPE STREQUAL "up")
message(FATAL_ERROR "Down migration file " ${CURRENT_MIGRATION_FILE_ID} "_*.sql is missing up migration file")
endif()
# Since we always add on the up file we need to subtract one here
math(EXPR CURRENT_MIGRATION_FILE_ID "${CURRENT_MIGRATION_FILE_ID}-1")
list(TRANSFORM MIGRATION_FILE_LIST PREPEND ${ARG_LOCATION})
if(ARG_INSTALL_DESTINATION)
install(FILES ${MIGRATION_FILE_LIST} DESTINATION ${ARG_INSTALL_DESTINATION})
endif()
set(TARGET_MIGRATION_FILE_VERSION ${CURRENT_MIGRATION_FILE_ID} PARENT_SCOPE)
set(MIGRATION_FILE_LIST ${MIGRATION_FILE_LIST} PARENT_SCOPE)
endfunction()

View File

@@ -0,0 +1,96 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for Connector",
"type": "object",
"name": "Connector",
"evse_id": 1,
"connector_id": 1,
"properties": {
"ConnectorAvailabilityState": {
"variable_name": "AvailabilityState",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "Available,Occupied,Reserved,Unavailable,Faulted"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "This variable reports current availability state for the Connector. Optional, because already reported in StatusNotification.",
"type": "string",
"default": "Available"
},
"ConnectorAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "Component exists",
"type": "boolean",
"default": false
},
"ChargeProtocol": {
"variable_name": "ChargeProtocol",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "The Charging Control Protocol applicable to a Connector. CHAdeMO: CHAdeMO protocol, ISO15118: ISO15118 V2G protocol (wired or wireless) as used with CCS, CPPWM: IEC61851-1 / SAE J1772 protocol (ELV DC & PWM signalling via Control Pilot wire), Uncontrolled: No charging power management applies (e.g. Schuko socket), Undetermined: Yet to be determined (e.g. before plugged in), Unknown: Not determinable, NOTE: ChargeProtocol is distinct from and orthogonal to connectorType.",
"type": "string"
},
"ConnectorType": {
"variable_name": "ConnectorType",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "sType2"
}
],
"description": "A value of ConnectorEnumType (See part 2) plus additionally: cGBT, cChaoJi, OppCharge. Specific type of connector, including sub-variant information. Note: Distinct and orthogonal to Charging Protocol, Power Type, Phases.",
"type": "string",
"default": ""
},
"ConnectorSupplyPhases": {
"variable_name": "SupplyPhases",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 3
}
],
"description": "Number of alternating current phases connected/available.",
"type": "integer",
"default": "0"
}
},
"required": [
"ConnectorAvailable",
"ConnectorSupplyPhases",
"ConnectorType"
]
}

View File

@@ -0,0 +1,96 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for Connector",
"type": "object",
"name": "Connector",
"evse_id": 2,
"connector_id": 1,
"properties": {
"ConnectorAvailabilityState": {
"variable_name": "AvailabilityState",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "Available,Occupied,Reserved,Unavailable,Faulted"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "This variable reports current availability state for the Connector. Optional, because already reported in StatusNotification.",
"type": "string",
"default": "Available"
},
"ConnectorAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "Component exists",
"type": "boolean",
"default": false
},
"ChargeProtocol": {
"variable_name": "ChargeProtocol",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "The Charging Control Protocol applicable to a Connector. CHAdeMO: CHAdeMO protocol, ISO15118: ISO15118 V2G protocol (wired or wireless) as used with CCS, CPPWM: IEC61851-1 / SAE J1772 protocol (ELV DC & PWM signalling via Control Pilot wire), Uncontrolled: No charging power management applies (e.g. Schuko socket), Undetermined: Yet to be determined (e.g. before plugged in), Unknown: Not determinable, NOTE: ChargeProtocol is distinct from and orthogonal to connectorType.",
"type": "string"
},
"ConnectorType": {
"variable_name": "ConnectorType",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "sType2"
}
],
"description": "A value of ConnectorEnumType (See part 2) plus additionally: cGBT, cChaoJi, OppCharge. Specific type of connector, including sub-variant information. Note: Distinct and orthogonal to Charging Protocol, Power Type, Phases.",
"type": "string",
"default": ""
},
"ConnectorSupplyPhases": {
"variable_name": "SupplyPhases",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 3
}
],
"description": "Number of alternating current phases connected/available.",
"type": "integer",
"default": "0"
}
},
"required": [
"ConnectorAvailable",
"ConnectorSupplyPhases",
"ConnectorType"
]
}

View File

@@ -0,0 +1,150 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for EVSE",
"type": "object",
"name": "EVSE",
"evse_id": 1,
"properties": {
"EVSEAllowReset": {
"variable_name": "AllowReset",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Can be used to announce that an EVSE can be reset individually",
"type": "boolean"
},
"EVSEAvailabilityState": {
"variable_name": "AvailabilityState",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "Available,Occupied,Reserved,Unavailable,Faulted"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "This variable reports current availability state for the EVSE",
"type": "string",
"default": "Unavailable"
},
"EVSEAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "Component exists",
"type": "boolean",
"default": false
},
"EvseId": {
"variable_name": "EvseId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "The name of the EVSE in the string format as required by ISO 15118 and IEC 63119-2.",
"type": "string"
},
"EVSEPower": {
"variable_name": "Power",
"characteristics": {
"unit": "W",
"maxLimit": 22000,
"supportsMonitoring": true,
"dataType": "decimal"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
},
{
"type": "MaxSet",
"mutability": "ReadOnly"
}
],
"description": " kW,The variableCharacteristic maxLimit, that holds the maximum power that this EVSE can provide, is required. The Actual value of the instantaneous (real) power is desired, but not required.",
"type": "number",
"default": "0"
},
"EVSESupplyPhases": {
"variable_name": "SupplyPhases",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 3
}
],
"description": "Number of alternating current phases connected/available.",
"type": "integer",
"default": "0"
},
"ISO15118EvseId": {
"variable_name": "ISO15118EvseId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"minLimit": 7,
"maxLimit": 37
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "The name of the EVSE in the string format as required by ISO 15118 and IEC 63119-2. Example: \"DE*ICE*E*1234567890*1\"",
"type": "string"
},
"DCInputPhaseControl": {
"variable_name": "DCInputPhaseControl",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": false
}
],
"description": "When DCInputPhaseControl is true, then the values of numberPhases and PhaseToUse in a ChargingSchedulePeriodType will select the input phases from the grid to be used by the DC EVSE.",
"type": "boolean"
}
},
"required": [
"EVSEAvailabilityState",
"EVSEAvailable",
"EVSEPower",
"EVSESupplyPhases"
]
}

View File

@@ -0,0 +1,150 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for EVSE",
"type": "object",
"name": "EVSE",
"evse_id": 2,
"properties": {
"EVSEAllowReset": {
"variable_name": "AllowReset",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Can be used to announce that an EVSE can be reset individually",
"type": "boolean"
},
"EVSEAvailabilityState": {
"variable_name": "AvailabilityState",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "Available,Occupied,Reserved,Unavailable,Faulted"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "This variable reports current availability state for the EVSE",
"type": "string",
"default": "Unavailable"
},
"EVSEAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "Component exists",
"type": "boolean",
"default": false
},
"EvseId": {
"variable_name": "EvseId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "The name of the EVSE in the string format as required by ISO 15118 and IEC 63119-2.",
"type": "string"
},
"EVSEPower": {
"variable_name": "Power",
"characteristics": {
"unit": "W",
"maxLimit": 22000,
"supportsMonitoring": true,
"dataType": "decimal"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
},
{
"type": "MaxSet",
"mutability": "ReadOnly"
}
],
"description": " kW,The variableCharacteristic maxLimit, that holds the maximum power that this EVSE can provide, is required. The Actual value of the instantaneous (real) power is desired, but not required.",
"type": "number",
"default": "0"
},
"EVSESupplyPhases": {
"variable_name": "SupplyPhases",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 3
}
],
"description": "Number of alternating current phases connected/available.",
"type": "integer",
"default": "0"
},
"ISO15118EvseId": {
"variable_name": "ISO15118EvseId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"minLimit": 7,
"maxLimit": 37
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "The name of the EVSE in the string format as required by ISO 15118 and IEC 63119-2. Example: \"DE*ICE*E*1234567890*1\"",
"type": "string"
},
"DCInputPhaseControl": {
"variable_name": "DCInputPhaseControl",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": false
}
],
"description": "When DCInputPhaseControl is true, then the values of numberPhases and PhaseToUse in a ChargingSchedulePeriodType will select the input phases from the grid to be used by the DC EVSE.",
"type": "boolean"
}
},
"required": [
"EVSEAvailabilityState",
"EVSEAvailable",
"EVSEPower",
"EVSESupplyPhases"
]
}

View File

@@ -0,0 +1,150 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for AlignedDataCtrlr",
"name": "AlignedDataCtrlr",
"type": "object",
"properties": {
"AlignedDataCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"default": true,
"type": "boolean"
},
"AlignedDataCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "If this variable reports a value of true, Clock-Aligned Data is supported.",
"default": true,
"type": "boolean"
},
"AlignedDataInterval": {
"variable_name": "Interval",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 900
}
],
"description": "Size (in seconds) of the clock-aligned data interval, intended to be transmitted in the MeterValuesRequest message.",
"default": "900",
"type": "integer"
},
"AlignedDataMeasurands": {
"variable_name": "Measurands",
"characteristics": {
"valuesList": "Current.Export,Current.Import,Current.Offered,Energy.Active.Export.Register,Energy.Active.Import.Register,Energy.Reactive.Export.Register,Energy.Reactive.Import.Register,Energy.Active.Export.Interval,Energy.Active.Import.Interval,Energy.Reactive.Export.Interval,Energy.Reactive.Import.Interval,Frequency,Power.Active.Export,Power.Active.Import,Power.Factor,Power.Offered,Power.Reactive.Export,Power.Reactive.Import,Voltage",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Energy.Active.Import.Register,Voltage,Frequency"
}
],
"description": "Clock-aligned measurand(s) to be included in MeterValuesRequest, every AlignedDataInterval seconds.",
"default": "Energy.Active.Import.Register,Voltage",
"type": "string"
},
"AlignedDataSendDuringIdle": {
"variable_name": "SendDuringIdle",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
}
],
"description": "If set to true, the Charging Station SHALL NOT send clock aligned meter values when a transaction is ongoing.",
"type": "boolean"
},
"AlignedDataSignReadings": {
"variable_name": "SignReadings",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "If set to true, the Charging Station SHALL include signed meter values in the SampledValueType in the MeterValuesRequest to the CSMS.",
"default": false,
"type": "boolean"
},
"AlignedDataTxEndedInterval": {
"variable_name": "TxEndedInterval",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 60
}
],
"description": "Size (in seconds) of the clock-aligned data interval, intended to be transmitted in the TransactionEventRequest (eventType = Ended) message.",
"default": "60",
"type": "integer"
},
"AlignedDataTxEndedMeasurands": {
"variable_name": "TxEndedMeasurands",
"characteristics": {
"valuesList": "Current.Export,Current.Import,Current.Offered,Energy.Active.Export.Register,Energy.Active.Import.Register,Energy.Reactive.Export.Register,Energy.Reactive.Import.Register,Energy.Active.Export.Interval,Energy.Active.Import.Interval,Energy.Reactive.Export.Interval,Energy.Reactive.Import.Interval,Frequency,Power.Active.Export,Power.Active.Import,Power.Factor,Power.Offered,Power.Reactive.Export,Power.Reactive.Import,Voltage",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Energy.Active.Import.Register,Voltage"
}
],
"description": "Clock-aligned measurands to be included in the meterValues element of TransactionEventRequest (eventType = Ended), every SampledDataTxEndedInterval seconds from the start of the transaction.",
"default": "Energy.Active.Import.Register",
"type": "string"
}
},
"required": [
"AlignedDataInterval",
"AlignedDataMeasurands",
"AlignedDataTxEndedInterval",
"AlignedDataTxEndedMeasurands"
]
}

View File

@@ -0,0 +1,105 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for AuthCacheCtrlr",
"name": "AuthCacheCtrlr",
"type": "object",
"properties": {
"AuthCacheCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "Authorization caching is available, but not necessarily enabled.",
"default": true,
"type": "boolean"
},
"AuthCacheCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "If set to true, Authorization caching is enabled.",
"default": true,
"type": "boolean"
},
"AuthCacheLifeTime": {
"variable_name": "LifeTime",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Indicates how long it takes until a token expires in the authorization cache since it is last used",
"type": "integer"
},
"AuthCachePolicy": {
"variable_name": "Policy",
"characteristics": {
"valuesList": "LRU,LFU,FIFO,CUSTOM",
"supportsMonitoring": true,
"dataType": "OptionList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Cache Entry Replacement Policy: least recently used, least frequently used, first in first out, other custom mechanism.",
"type": "string"
},
"AuthCacheStorage": {
"variable_name": "Storage",
"characteristics": {
"unit": "B",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Indicates the number of bytes currently used by the Authorization Cache. MaxLimit indicates the maximum number of bytes that can be used by the Authorization Cache.",
"type": "integer"
},
"AuthCacheDisablePostAuthorize": {
"variable_name": "DisablePostAuthorize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "When set to true this variable disables the behavior to request authorization for an idToken that is stored in the cache with a status other than Accepted, as stated in C10.FR.03 and C12.FR.05.",
"type": "boolean"
}
},
"required": []
}

View File

@@ -0,0 +1,142 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for AuthCtrlr",
"name": "AuthCtrlr",
"type": "object",
"properties": {
"AuthCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"default": true,
"type": "boolean"
},
"AdditionalInfoItemsPerMessage": {
"variable_name": "AdditionalInfoItemsPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Maximum number of AdditionalInfo items that can be sent in one message.",
"type": "integer"
},
"AuthorizeRemoteStart": {
"variable_name": "AuthorizeRemoteStart",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "Whether a remote request to start a transaction in the form of RequestStartTransactionRequest message should be authorized beforehand like a local action to start a transaction.",
"default": true,
"type": "boolean"
},
"LocalAuthorizeOffline": {
"variable_name": "LocalAuthorizeOffline",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "Whether the Charging Station, when Offline, will start a transaction for locally-authorized identifiers,",
"default": true,
"type": "boolean"
},
"LocalPreAuthorize": {
"variable_name": "LocalPreAuthorize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "Whether the Charging Station, when online, will start a transaction for locally-authorized identifiers without waiting for or requesting an AuthorizeResponse from the CSMS.",
"default": true,
"type": "boolean"
},
"MasterPassGroupId": {
"variable_name": "MasterPassGroupId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "123"
}
],
"description": "IdTokens that have this id as groupId belong to the Master Pass Group. Meaning they can stop any ongoing transaction, but cannot start transactions.",
"type": "string"
},
"OfflineTxForUnknownIdEnabled": {
"variable_name": "OfflineTxForUnknownIdEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Support for unknown offline transactions.",
"default": true,
"type": "boolean"
},
"DisableRemoteAuthorization": {
"variable_name": "DisableRemoteAuthorization",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "When set to true this instructs the Charging Station to not issue any AuthorizationRequests, but only use Authorization Cache and Local Authorization List to determine validity of idTokens.",
"type": "boolean"
}
},
"required": [
"AuthorizeRemoteStart",
"LocalAuthorizeOffline",
"LocalPreAuthorize"
]
}

View File

@@ -0,0 +1,138 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for ChargingStation",
"type": "object",
"name": "ChargingStation",
"properties": {
"AllowNewSessionsPendingFirmwareUpdate": {
"variable_name": "AllowNewSessionsPendingFirmwareUpdate",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"instance": "BytesPerMessage",
"description": "Indicates whether new sessions can be started on EVSEs, while Charging Station is waiting for all EVSEs to become Available in order to start a pending firmware update",
"type": "boolean"
},
"ChargingStationAvailabilityState": {
"variable_name": "AvailabilityState",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "Available,Occupied,Reserved,Unavailable,Faulted"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "This variable reports current availability state for the ChargingStation",
"type": "string",
"default": "Available"
},
"ChargingStationPhaseRotation": {
"variable_name": "PhaseRotation",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "RST"
}
],
"description": "This variable describes the phase rotation of a Component relative to its parent Component, using a three letter string consisting of the letters: R, S, T and x.",
"type": "string"
},
"ChargingStationAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "Component exists",
"type": "boolean"
},
"ChargingStationModel": {
"variable_name": "Model",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "Charging station model as reported in BootNotification.",
"type": "string"
},
"ChargingStationSupplyPhases": {
"variable_name": "SupplyPhases",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 3
}
],
"description": "Number of alternating current phases connected/available.",
"type": "integer"
},
"ChargingStationVendorName": {
"variable_name": "VendorName",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "Charging station vendor name as reported in BootNotification.",
"type": "string"
},
"ChargingStationProblem": {
"variable_name": "Problem",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
}
],
"description": "Some problem/fault exists",
"type": "boolean"
}
},
"required": [
"ChargingStationAvailabilityState",
"ChargingStationAvailable",
"ChargingStationSupplyPhases"
]
}

View File

@@ -0,0 +1,42 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for Charging Status Indicator",
"type": "object",
"name": "ChargingStatusIndicator",
"properties": {
"ChargingStatusIndicatorActive": {
"variable_name": "Active",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
}
],
"description": "Lighted",
"type": "boolean"
},
"ChargingStatusIndicatorColor": {
"variable_name": "Color",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "FFFF00"
}
],
"description": "Displayed color",
"type": "string"
}
},
"required": [
]
}

View File

@@ -0,0 +1,167 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for ClockCtrlr",
"name": "ClockCtrlr",
"type": "object",
"properties": {
"ClockCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"type": "boolean"
},
"ClockCtrlrDateTime": {
"variable_name": "DateTime",
"characteristics": {
"supportsMonitoring": true,
"dataType": "dateTime"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": ""
}
],
"description": "Contains the current date and time,",
"type": "string"
},
"NextTimeOffsetTransitionDateTime": {
"variable_name": "NextTimeOffsetTransitionDateTime",
"characteristics": {
"supportsMonitoring": true,
"dataType": "dateTime"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Date time of the next time offset transition.",
"type": "string"
},
"NtpServerUri": {
"variable_name": "NtpServerUri",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "This contains the address of the NTP server.",
"type": "string"
},
"NtpSource": {
"variable_name": "NtpSource",
"characteristics": {
"valuesList": "DHCP,manual",
"supportsMonitoring": true,
"dataType": "OptionList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "When an NTP client is implemented, this variable can be used to configure the client",
"type": "string"
},
"TimeAdjustmentReportingThreshold": {
"variable_name": "TimeAdjustmentReportingThreshold",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "If set, then time adjustments with an absolute value in seconds larger than this need to be reported as a security event SettingSystemTime",
"type": "integer"
},
"TimeOffset": {
"variable_name": "TimeOffset",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "A Time Offset with respect to Coordinated Universal Time (aka UTC or Greenwich Mean Time) in the form of an [RFC3339] time (zone) offset suffix, including the mandatory \u201c+\u201d or \u201c-\u201c prefix.",
"type": "string"
},
"TimeOffsetNextTransition": {
"variable_name": "TimeOffset",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"instance": "NextTransition",
"description": "Next local time offset in the format: \"+01:00\", \"-02:00\" etc. New offset that will be set on the next time offset transition as configured via 'NextTimeOffsetTransitionDateTime'. This can be used to manually configure the offset for the start or end of the daylight saving time period.",
"type": "string"
},
"TimeSource": {
"variable_name": "TimeSource",
"characteristics": {
"valuesList": "Heartbeat,NTP,GPS,RealTimeClock,MobileNetwork,RadioTimeTransmitter",
"supportsMonitoring": true,
"dataType": "SequenceList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Heartbeat"
}
],
"description": "Via this variable, the Charging Station provides the CSMS with the option to configure multiple clock sources",
"type": "string"
},
"TimeZone": {
"variable_name": "TimeZone",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Configured current local time zone in the format: \"Europe/Oslo\", \"Asia/Singapore\" etc. For display purposes.",
"type": "string"
}
},
"required": [
"ClockCtrlrDateTime",
"TimeSource"
]
}

View File

@@ -0,0 +1,70 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for CustomizationCtrlr",
"name": "CustomizationCtrlr",
"type": "object",
"properties": {
"": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"type": "boolean"
},
"CustomImplementationEnabled": {
"variable_name": "CustomImplementationEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Custom implementation <vendorId> has been enabled.",
"type": "boolean"
},
"CustomImplementationCaliforniaPricingEnabled": {
"variable_name": "CustomImplementationEnabled",
"instance": "org.openchargealliance.costmsg",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Custom implementation org.openchargealliance.costmsg (California Pricing) has been enabled.",
"type": "boolean"
},
"CustomImplementationMultiLanguageEnabled": {
"variable_name": "CustomImplementationEnabled",
"instance": "org.openchargealliance.multilanguage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Custom implementation org.openchargealliance.multilanguage has been enabled.",
"type": "boolean"
}
},
"required": []
}

View File

@@ -0,0 +1,180 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for DeviceDataCtrlr",
"name": "DeviceDataCtrlr",
"type": "object",
"properties": {
"DeviceDataCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"type": "boolean"
},
"BytesPerMessageGetReport": {
"variable_name": "BytesPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 2048
}
],
"instance": "GetReport",
"description": "Maximum number of bytes in a message related to instance name: GetReport, GetVariables, SetVariables",
"type": "integer"
},
"BytesPerMessageGetVariables": {
"variable_name": "BytesPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 2048
}
],
"instance": "GetVariables",
"description": "Maximum number of bytes in a message related to instance name: GetReport, GetVariables, SetVariables",
"type": "integer"
},
"BytesPerMessageSetVariables": {
"variable_name": "BytesPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 2048
}
],
"instance": "SetVariables",
"description": "Maximum number of bytes in a message related to instance name: GetReport, GetVariables, SetVariables",
"type": "integer"
},
"ConfigurationValueSize": {
"variable_name": "ConfigurationValueSize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "The limit to the following fields: SetVariableData.attributeValue and VariableCharacteristics.valueList. The max size of these values will always remain equal.",
"type": "integer"
},
"ItemsPerMessageGetReport": {
"variable_name": "ItemsPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 100
}
],
"instance": "GetReport",
"description": "Maximum number of ComponentVariable entries in message related to the instance name: GetReport, GetVariables, SetVariables",
"type": "integer"
},
"ItemsPerMessageGetVariables": {
"variable_name": "ItemsPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 100
}
],
"instance": "GetVariables",
"description": "Maximum number of ComponentVariable entries in message related to the instance name: GetReport, GetVariables, SetVariables",
"type": "integer"
},
"ItemsPerMessageSetVariables": {
"variable_name": "ItemsPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 100
}
],
"instance": "SetVariables",
"description": "Maximum number of ComponentVariable entries in message related to the instance name: GetReport, GetVariables, SetVariables",
"type": "integer"
},
"ReportingValueSize": {
"variable_name": "ReportingValueSize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 2500
}
],
"description": "The limit to the following fields: GetVariableResult.attributeValue, VariableAttribute.value and EventData.actualValue. The max size of these values will always remain equal.",
"type": "integer"
},
"ValueSize": {
"variable_name": "ValueSize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"mutability": "ReadOnly",
"type": "Actual",
"value": 2500
}
],
"description": "Can be used to limit the following fields: SetVariableData.attributeValue, GetVariableResult.attributeValue, VariableAttribute.value, VariableCharacteristics.valueList and EventData.actualValue.",
"type": "integer"
}
},
"required": [
"BytesPerMessageGetReport",
"BytesPerMessageGetVariables",
"BytesPerMessageSetVariables",
"ItemsPerMessageGetReport",
"ItemsPerMessageGetVariables",
"ItemsPerMessageSetVariables"
]
}

View File

@@ -0,0 +1,156 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for DisplayMessageCtrlr",
"name": "DisplayMessageCtrlr",
"type": "object",
"properties": {
"DisplayMessageCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether display messages are supported.",
"type": "boolean"
},
"NumberOfDisplayMessages": {
"variable_name": "DisplayMessages",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 42
}
],
"description": "Amount of different messages that are currently configured in this Charging Station, via SetDisplayMessageRequest",
"type": "integer"
},
"DisplayMessageCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "Whether display messages are enabled.",
"type": "boolean"
},
"PersonalMessageSize": {
"variable_name": "PersonalMessageSize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "Max size (in characters) of the personal message element of the IdTokenInfo data (0 specifies no personal data may be stored).",
"type": "integer"
},
"DisplayMessageSupportedFormats": {
"variable_name": "SupportedFormats",
"characteristics": {
"valuesList": "ASCII,HTML,URI,UTF8",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "UTF8,ASCII,URI"
}
],
"description": "List of message formats supported by this Charging Station.",
"type": "string"
},
"DisplayMessageSupportedPriorities": {
"variable_name": "SupportedPriorities",
"characteristics": {
"valuesList": "AlwaysFront,InFront,NormalCycle",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "NormalCycle"
}
],
"description": "List of the priorities supported by this Charging Station.",
"type": "string"
},
"DisplayMessageSupportedStates": {
"variable_name": "SupportedStates",
"characteristics": {
"valuesList": "Charging,Faulted,Idle,Unavailable",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "List of the priorities supported by this Charging Station.",
"type": "string",
"default": "Charging,Faulted,Idle,Unavailable"
},
"QRCodeDisplayCapable": {
"variable_name": "QRCodeDisplayCapable",
"characteristics": {
"dataType": "boolean",
"supportsMonitoring": true
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether the station can display QR codes or not.",
"type": "boolean"
},
"DisplayMessageLanguage": {
"variable_name": "Language",
"characteristics": {
"valuesList": "en_US,de,nl",
"supportsMonitoring": true,
"dataType": "OptionList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Default language of the charging station. Note: set all supported languages by this charging station in 'valuesList' of this Variable.",
"type": "string"
}
},
"required": [
"DisplayMessageSupportedFormats",
"DisplayMessageSupportedPriorities",
"NumberOfDisplayMessages"
]
}

View File

@@ -0,0 +1,208 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for ISO15118Ctrlr",
"name": "ISO15118Ctrlr",
"type": "object",
"properties": {
"ISO15118CtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"type": "boolean"
},
"ISO15118CtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"type": "boolean"
},
"CentralContractValidationAllowed": {
"variable_name": "CentralContractValidationAllowed",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "If this variable exists and has the value true, then Charging Station can provide a contract certificate that it cannot validate, to the CSMS for validation as part of the AuthorizeRequest.",
"type": "boolean"
},
"ContractValidationOffline": {
"variable_name": "ContractValidationOffline",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "If this variable is true, then Charging Station will try to validate a contract certificate when it is offline",
"type": "boolean"
},
"SeccId": {
"variable_name": "SeccId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "The ID of the SECC in string format as defined by ISO15118.",
"type": "string"
},
"MaxScheduleEntries": {
"variable_name": "MaxScheduleEntries",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "Maximum number of allowed schedule periods.",
"type": "integer"
},
"RequestedEnergyTransferMode": {
"variable_name": "RequestedEnergyTransferMode",
"characteristics": {
"valuesList": "DC,AC_single_phase,AC_two_phase,AC_three_phase",
"supportsMonitoring": true,
"dataType": "OptionList"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "The requested energy transfer mode.",
"type": "string"
},
"RequestMeteringReceipt": {
"variable_name": "RequestMeteringReceipt",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "If true, then Charging Station shall request a metering receipt from EV.",
"type": "boolean"
},
"ISO15118CtrlrCountryName": {
"variable_name": "CountryName",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "The countryName of the SECC in the ISO 3166-1 format. It is used as the countryName (C) of the SECC leaf certificate. Example: \"DE\"",
"type": "string"
},
"ISO15118CtrlrOrganizationName": {
"variable_name": "OrganizationName",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "The organizationName of the CSO operating the charging station. It is used as the organizationName (O) of the SECC leaf certificate. Example: \"John Doe Charging Services Ltd\" Note: This value will usually be identical to SecurityCtrlr.OrganizationName, but it does not have to be.",
"type": "string"
},
"PnCEnabled": {
"variable_name": "PnCEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "If this variable is true, then ISO 15118 plug and charge as described by use case C07 - Authorization using Contract Certificates is enabled. If this variable is false, then ISO 15118 plug and charge as described by use case C07 - Authorization using Contract Certificates is disabled.",
"type": "boolean"
},
"V2GCertificateInstallationEnabled": {
"variable_name": "V2GCertificateInstallationEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "If this variable is true, then ISO 15118 V2G Charging Station certificate installation as described by use case A02 - Update Charging Station Certificate by request of CSMS and A03 - Update Charging Station Certificate initiated by the Charging Station is enabled. If this variable is false, then ISO 15118 V2G Charging Station certificate installation as described by use case A02 - Update Charging Station Certificate by request of CSMS and A03 - Update Charging Station Certificate initiated by the Charging Station is disabled.",
"type": "boolean"
},
"ContractCertificateInstallationEnabled": {
"variable_name": "ContractCertificateInstallationEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "If this variable is true, then ISO 15118 contract certificate installation/update as described by use case M01 - Certificate installation EV and M02 - Certificate Update EV is enabled. If this variable is false, then ISO 15118 contract certificate installation/update as described by use case M01 - Certificate installation EV and M02 - Certificate Update EV is disabled.",
"type": "boolean"
}
},
"required": [
"ContractValidationOffline"
]
}

View File

@@ -0,0 +1,887 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for InternalCtrlr",
"name": "InternalCtrlr",
"type": "object",
"properties": {
"InternalCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"default": true,
"type": "boolean"
},
"ChargePointId": {
"variable_name": "ChargePointId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "cp001"
}
],
"minLength": 1,
"type": "string"
},
"NetworkConnectionProfiles": {
"variable_name": "NetworkConnectionProfiles",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "[{\"configurationSlot\": 1, \"connectionData\": {\"messageTimeout\": 30, \"ocppCsmsUrl\": \"ws://localhost:9000\", \"ocppInterface\": \"Wired0\", \"ocppTransport\": \"JSON\", \"ocppVersion\": \"OCPP20\", \"securityProfile\": 1}}]"
}
],
"description": "List of NetworkConnectionProfiles that define the functional and technical parameters of a communication link. Must be a (JSON) string with the format of SetNetworkProfileRequest",
"default": "[{\\\"configurationSlot\\\": 1, \\\"connectionData\\\": {\\\"messageTimeout\\\": 30, \\\"ocppCsmsUrl\\\": \\\"ws://localhost:9000/cp001\\\", \\\"ocppInterface\\\": \\\"Wired0\\\", \\\"ocppTransport\\\": \\\"JSON\\\", \\\"ocppVersion\\\": \\\"OCPP20\\\", \\\"securityProfile\\\": 1}}]\n",
"type": "string"
},
"ChargeBoxSerialNumber": {
"variable_name": "ChargeBoxSerialNumber",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "012345678"
}
],
"minLength": 1,
"maxLength": 25,
"type": "string"
},
"ChargePointModel": {
"variable_name": "ChargePointModel",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "EVerestModel"
}
],
"minLength": 1,
"maxLength": 20,
"type": "string"
},
"ChargePointSerialNumber": {
"variable_name": "ChargePointSerialNumber",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"minLength": 1,
"maxLength": 25,
"type": "string"
},
"ChargePointVendor": {
"variable_name": "ChargePointVendor",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "EVerestVendor"
}
],
"minLength": 1,
"maxLength": 20,
"type": "string"
},
"FirmwareVersion": {
"variable_name": "FirmwareVersion",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "1.0"
}
],
"minLength": 1,
"maxLength": 50,
"type": "string"
},
"ICCID": {
"variable_name": "ICCID",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"minLength": 1,
"maxLength": 20,
"type": "string"
},
"IMSI": {
"variable_name": "IMSI",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"minLength": 1,
"maxLength": 20,
"type": "string"
},
"MeterSerialNumber": {
"variable_name": "MeterSerialNumber",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"minLength": 1,
"maxLength": 25,
"type": "string"
},
"MeterType": {
"variable_name": "MeterType",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"minLength": 1,
"maxLength": 25,
"type": "string"
},
"SupportedCiphers12": {
"variable_name": "SupportedCiphers12",
"characteristics": {
"valuesList": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-GCM-SHA384",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-GCM-SHA384"
}
],
"default": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-GCM-SHA384",
"minLength": 0,
"type": "string"
},
"SupportedCiphers13": {
"variable_name": "SupportedCiphers13",
"characteristics": {
"valuesList": "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256"
}
],
"default": "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256",
"minLength": 0,
"type": "string"
},
"AuthorizeConnectorZeroOnConnectorOne": {
"variable_name": "AuthorizeConnectorZeroOnConnectorOne",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": true,
"type": "boolean"
},
"LogMessages": {
"variable_name": "LogMessages",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": true,
"type": "boolean"
},
"LogMessagesRaw": {
"variable_name": "LogMessagesRaw",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "If messages are additionally supposed to be logged without parsing them first. This can be useful to log and debug messages that violate the schema.",
"default": false,
"type": "boolean"
},
"LogMessagesFormat": {
"variable_name": "LogMessagesFormat",
"characteristics": {
"valuesList": "log,html,console,console_detailed,callback,security",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "log,html,security"
}
],
"description": "Supported log formats are console, log, html, console_detailed, callback and security. \"security\" logs security events into a seperate logfile",
"default": "log,html,security",
"type": "string"
},
"LogRotation": {
"variable_name": "LogRotation",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Enable log rotation",
"default": false,
"type": "boolean"
},
"LogRotationDateSuffix": {
"variable_name": "LogRotationDateSuffix",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Use a datetime suffix in log rotation files instead of the traditional .0, .1",
"default": false,
"type": "boolean"
},
"LogRotationMaximumFileSize": {
"variable_name": "LogRotationMaximumFileSize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Maximum file size in bytes for the log file after which it will be rotated. Setting this to 0 disables log rotation.",
"default": 0,
"type": "integer"
},
"LogRotationMaximumFileCount": {
"variable_name": "LogRotationMaximumFileCount",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Maximum amount of files before rotated logs will be deleted. Setting this to 0 disables log rotation.",
"default": 0,
"type": "integer"
},
"SupportedChargingProfilePurposeTypes": {
"variable_name": "SupportedChargingProfilePurposeTypes",
"characteristics": {
"valuesList": "ChargePointMaxProfile,TxDefaultProfile,TxProfile",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": "ChargePointMaxProfile,TxDefaultProfile,TxProfile",
"type": "string"
},
"MaxCompositeScheduleDuration": {
"variable_name": "MaxCompositeScheduleDuration",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": "31536000",
"type": "integer"
},
"NumberOfConnectors": {
"variable_name": "NumberOfConnectors",
"characteristics": {
"minLimit": 1,
"maxLimit": 128,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 1
}
],
"minimum": 1,
"maximum": 128,
"default": "1",
"type": "integer"
},
"UseSslDefaultVerifyPaths": {
"variable_name": "UseSslDefaultVerifyPaths",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Use default verify paths for validating CSMS server certificate",
"default": true,
"type": "boolean"
},
"VerifyCsmsCommonName": {
"variable_name": "VerifyCsmsCommonName",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": true,
"type": "boolean"
},
"UseTPM": {
"description": "Indicates if TPM is used to generate and retrieve private keys for the CSMS leaf certificate",
"variable_name": "UseTPM",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": false,
"type": "boolean"
},
"UseTPMSeccLeafCertificate": {
"description": "Indicates if TPM is used to generate and retrieve private keys for the SECC leaf certificate",
"variable_name": "UseTPMSeccLeafCertificate",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": false,
"type": "boolean"
},
"VerifyCsmsAllowWildcards": {
"variable_name": "VerifyCsmsAllowWildcards",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"default": false,
"type": "boolean"
},
"IFace": {
"variable_name": "IFace",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": "",
"type": "string"
},
"EnableTLSKeylog": {
"variable_name": "EnableTLSKeylog",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"default": false,
"type": "boolean"
},
"TLSKeylogFile": {
"variable_name": "TLSKeylogFile",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": "/tmp/ocpp_tlskey.log",
"type": "string"
},
"OcspRequestInterval": {
"variable_name": "OcspRequestInterval",
"characteristics": {
"minLimit": 86400,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Interval in seconds used to request OCSP revocation status information on the CSO Sub-CA certificates",
"minimum": 86400,
"default": "604800",
"type": "integer"
},
"WebsocketPingPayload": {
"variable_name": "WebsocketPingPayload",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": "hello there",
"type": "string"
},
"WebsocketPongTimeout": {
"variable_name": "WebsocketPongTimeout",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"default": "5",
"type": "integer"
},
"MonitorsProcessingInterval": {
"variable_name": "MonitorsProcessingInterval",
"characteristics": {
"supportsMonitoring": false,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Defines the interval at which the periodic monitors will be processed, in seconds",
"default": "1",
"type": "integer"
},
"MaxCustomerInformationDataLength": {
"variable_name": "MaxCustomerInformationDataLength",
"characteristics": {
"minLimit": 512,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Maximum number of characters of Customer Information data",
"minimum": 512,
"default": "51200",
"type": "integer"
},
"V2GCertificateExpireCheckInitialDelaySeconds": {
"variable_name": "V2GCertificateExpireCheckInitialDelaySeconds",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Seconds to wait after boot notification to first check the V2G leaf certificate for expiration and potential renewal",
"default": "60",
"type": "integer"
},
"V2GCertificateExpireCheckIntervalSeconds": {
"variable_name": "V2GCertificateExpireCheckIntervalSeconds",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Seconds between two checks for V2G leaf certificate expiration and potential renewal",
"default": "43200",
"type": "integer"
},
"ClientCertificateExpireCheckInitialDelaySeconds": {
"variable_name": "ClientCertificateExpireCheckInitialDelaySeconds",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Seconds to wait after boot notification to first check the client certificate for expiration and potential renewal",
"default": "60",
"type": "integer"
},
"ClientCertificateExpireCheckIntervalSeconds": {
"variable_name": "ClientCertificateExpireCheckIntervalSeconds",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Seconds between two checks for client certificate expiration and potential renewal",
"default": "43200",
"type": "integer"
},
"UpdateCertificateSymlinks": {
"variable_name": "UpdateCertificateSymlinks",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": false
}
],
"default": false,
"type": "boolean"
},
"MessageQueueSizeThreshold": {
"variable_name": "MessageQueueSizeThreshold",
"characteristics": {
"minLimit": 1,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Threshold for the size of in-memory message queues used to buffer messages (and store e.g. while offline). If threshold is exceeded, messages will be dropped according to OCPP specification to avoid memory issues.",
"minimum": 1,
"type": "integer"
},
"MaxMessageSize": {
"variable_name": "MaxMessageSize",
"characteristics": {
"minLimit": 1,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Maximum size in bytes for messages sent to the CSMS via websocket. If a message exceeds this size and is eligible to be split into multiple messages, it will be split. Otherwise, this value is ignored.",
"minimum": 1,
"default": "32000",
"type": "integer"
},
"SupportedCriteria": {
"variable_name": "SupportedCriteria",
"characteristics": {
"supportsMonitoring": true,
"dataType": "MemberList",
"valuesList": "Enabled,Active,Problem,Available"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Enabled,Active,Available,Problem"
}
],
"description": "List of criteria supported for a get custom report. Enabled,Active,Problem,Available",
"default": "Enabled,Active,Problem,Available",
"type": "string"
},
"RoundClockAlignedTimestamps": {
"variable_name": "RoundClockAlignedTimestamps",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": false
}
],
"description": "If enabled the metervalues configured with the AlignedDataCtrlr will be rounded to the exact time intervals",
"default": false,
"type": "boolean"
},
"ResumeTransactionsOnBoot": {
"variable_name": "ResumeTransactionsOnBoot",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "If enabled the transactions that were active before shutdown will be resumed, if possible",
"default": false,
"type": "boolean"
},
"NetworkConfigTimeout": {
"variable_name": "NetworkConfigTimeout",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"minLimit": 1
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Timeout value in seconds to wait for a response from a network configuration request",
"minimum": 1,
"default": "60",
"type": "integer"
},
"AllowCSMSRootCertInstallWithUnsecureConnection": {
"variable_name": "AllowCSMSRootCertInstallWithUnsecureConnection",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "The flag that indicates if installation of CSMSRootCertificate is allowed when security profile is 1.",
"default": true,
"type": "boolean"
},
"AllowMFRootCertInstallWithUnsecureConnection": {
"variable_name": "AllowMFRootCertInstallWithUnsecureConnection",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "The flag that indicates if installation of ManufacturerRootCertificate is allowed when security profile is 1.",
"default": true,
"type": "boolean"
},
"AllowSecurityLevelZeroConnections": {
"variable_name": "AllowSecurityLevelZeroConnections",
"characteristics": {
"supportsMonitoring": false,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "If enabled we allow connections using security level 0. This does pose a security risk and is not allowed according to the OCPP spec",
"default": false,
"type": "boolean"
},
"SupportedOcppVersions": {
"variable_name": "SupportedOcppVersions",
"characteristics": {
"supportsMonitoring": true,
"dataType": "SequenceList",
"valuesList": "ocpp2.0.1,ocpp2.1"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "ocpp2.1,ocpp2.0.1"
}
],
"description": "List of supported OCPP versions in order of preference",
"default": "ocpp2.1,ocpp2.0.1",
"type": "string"
}
},
"required": [
"ChargeBoxSerialNumber",
"ChargePointId",
"ChargePointModel",
"ChargePointVendor",
"FirmwareVersion",
"LogMessagesFormat",
"NetworkConnectionProfiles",
"NumberOfConnectors",
"SupportedCiphers12",
"SupportedCiphers13",
"SupportedOcppVersions"
]
}

View File

@@ -0,0 +1,125 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for LocalAuthListCtrlr",
"name": "LocalAuthListCtrlr",
"type": "object",
"properties": {
"LocalAuthListCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Local Authorization List is available.",
"default": true,
"type": "boolean"
},
"BytesPerMessageSendLocalList": {
"variable_name": "BytesPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 4096
}
],
"description": "Maximum number of bytes in a SendLocalList message.",
"type": "integer"
},
"LocalAuthListCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "If this variable exists and reports a value of true, Local Authorization List is enabled.",
"default": true,
"type": "boolean"
},
"LocalAuthListCtrlrEntries": {
"variable_name": "Entries",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 0
}
],
"description": "Amount of IdTokens currently in the Local Authorization List",
"type": "integer"
},
"ItemsPerMessageSendLocalList": {
"variable_name": "ItemsPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 250
}
],
"description": "Maximum number of records in SendLocalList",
"type": "integer"
},
"LocalAuthListCtrlrStorage": {
"variable_name": "Storage",
"characteristics": {
"unit": "B",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Indicates the number of bytes currently used by the Local Authorization List. MaxLimit indicates the maximum number of bytes that can be used by the Local Authorization List.",
"type": "integer"
},
"LocalAuthListCtrlrDisablePostAuthorize": {
"variable_name": "DisablePostAuthorize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "When set to true this variable disables the behavior to request authorization for an idToken that is stored in the local authorization list with a status other than Accepted, as stated in C14.FR.03.",
"type": "boolean"
}
},
"required": [
"BytesPerMessageSendLocalList",
"ItemsPerMessageSendLocalList",
"LocalAuthListCtrlrEntries"
]
}

View File

@@ -0,0 +1,159 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for MonitoringCtrlr",
"name": "MonitoringCtrlr",
"type": "object",
"properties": {
"MonitoringCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
}
],
"description": "Whether monitoring is enabled.",
"default": false,
"type": "boolean"
},
"MonitoringCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether monitoring is available,",
"type": "boolean",
"default": true
},
"ActiveMonitoringBase": {
"variable_name": "ActiveMonitoringBase",
"characteristics": {
"valuesList": "All,FactoryDefault,HardWiredOnly",
"supportsMonitoring": true,
"dataType": "OptionList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Shows the currently used MonitoringBase. Valid values according MonitoringBaseEnumType: All, FactoryDefault, HardwiredOnly.",
"type": "string"
},
"ActiveMonitoringLevel": {
"variable_name": "ActiveMonitoringLevel",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Shows the currently used MonitoringLevel. Valid values are severity levels of SetMonitoringLevelRequest: 0-9.",
"type": "integer",
"default": 9
},
"OfflineQueuingSeverity": {
"variable_name": "OfflineQueuingSeverity",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "When set and the Charging Station is offline, the Charging Station shall queue any notifyEventRequest messages triggered by a monitor with a severity number equal to or lower than the severity configured here.",
"type": "integer",
"default": 9
},
"BytesPerMessageClearVariableMonitoring": {
"variable_name": "BytesPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"instance": "ClearVariableMonitoring",
"description": "Maximum number of bytes in a ClearVariableMonitoring message.",
"type": "integer"
},
"BytesPerMessageSetVariableMonitoring": {
"variable_name": "BytesPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 4000
}
],
"instance": "SetVariableMonitoring",
"description": "Maximum number of bytes in a SetVariableMonitoring message,",
"type": "integer"
},
"ItemsPerMessageClearVariableMonitoring": {
"variable_name": "ItemsPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"instance": "ClearVariableMonitoring",
"description": "Maximum number of IDs in a ClearVariableMonitoringRequest.",
"type": "integer"
},
"ItemsPerMessageSetVariableMonitoring": {
"variable_name": "ItemsPerMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 250
}
],
"instance": "SetVariableMonitoring",
"description": "Maximum number of setMonitoringData elements that can be sent in one setVariableMonitoringRequest message.",
"type": "integer"
}
},
"required": [
"BytesPerMessageSetVariableMonitoring",
"ItemsPerMessageSetVariableMonitoring"
]
}

View File

@@ -0,0 +1,459 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for NetworkConfiguration slot 1 (bootstrap profile; ships with sane defaults so factory image can attempt initial connect; subsequent slots have no defaults and require explicit operator/CSMS configuration)",
"type": "object",
"name": "NetworkConfiguration",
"instance": "1",
"properties": {
"OcppCsmsUrl": {
"variable_name": "OcppCsmsUrl",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 2000
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP CSMS URL",
"type": "string",
"default": ""
},
"SecurityProfile": {
"variable_name": "SecurityProfile",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"minLimit": 0,
"maxLimit": 3
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Security profile for this configuration slot",
"type": "integer",
"default": 1
},
"OcppInterface": {
"variable_name": "OcppInterface",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "Wired0,Wired1,Wired2,Wired3,Wireless0,Wireless1,Wireless2,Wireless3,Any"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP interface",
"type": "string",
"default": "Wired0"
},
"OcppTransport": {
"variable_name": "OcppTransport",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "JSON,SOAP"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP transport protocol",
"type": "string",
"default": "JSON"
},
"MessageTimeout": {
"variable_name": "MessageTimeout",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"minLimit": 1
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Message timeout in seconds",
"type": "integer",
"default": 30
},
"Identity": {
"variable_name": "Identity",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 48
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Per-slot identity override",
"type": "string",
"default": ""
},
"BasicAuthPassword": {
"variable_name": "BasicAuthPassword",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"minLimit": 16,
"maxLimit": 64
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "Per-slot basic auth password",
"type": "string"
},
"ApnEnabled": {
"variable_name": "ApnEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "APN enabled",
"type": "boolean",
"default": false
},
"VpnEnabled": {
"variable_name": "VpnEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "VPN enabled",
"type": "boolean",
"default": false
},
"Apn": {
"variable_name": "Apn",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 2000
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "APN access point name",
"type": "string"
},
"ApnUserName": {
"variable_name": "ApnUserName",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "APN user name",
"type": "string"
},
"ApnPassword": {
"variable_name": "ApnPassword",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 64
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "APN password",
"type": "string"
},
"SimPin": {
"variable_name": "SimPin",
"characteristics": {
"supportsMonitoring": false,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "SIM PIN",
"type": "integer"
},
"PreferredNetwork": {
"variable_name": "PreferredNetwork",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 6
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Preferred network MCC+MNC",
"type": "string"
},
"UseOnlyPreferredNetwork": {
"variable_name": "UseOnlyPreferredNetwork",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Use only preferred network",
"type": "boolean",
"default": false
},
"ApnAuthentication": {
"variable_name": "ApnAuthentication",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "CHAP,NONE,PAP,AUTO"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "APN authentication method",
"type": "string",
"default": "AUTO"
},
"VpnServer": {
"variable_name": "VpnServer",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 2000
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN server",
"type": "string"
},
"VpnUser": {
"variable_name": "VpnUser",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN user",
"type": "string"
},
"VpnPassword": {
"variable_name": "VpnPassword",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 64
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "VPN password",
"type": "string"
},
"VpnKey": {
"variable_name": "VpnKey",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 255
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "VPN key",
"type": "string"
},
"VpnType": {
"variable_name": "VpnType",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "IKEv2,IPSec,L2TP,PPTP"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN type",
"type": "string"
},
"VpnGroup": {
"variable_name": "VpnGroup",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN group",
"type": "string"
},
"OcppVersion": {
"variable_name": "OcppVersion",
"characteristics": {
"supportsMonitoring": false,
"dataType": "OptionList",
"valuesList": "OCPP20,OCPP201,OCPP21"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP version used for this connection",
"type": "string"
},
"CsmsRootCertificateHashAlgorithm": {
"variable_name": "CsmsRootCertificateHashAlgorithm",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Hash algorithm of the CSMS root certificate",
"type": "string"
},
"CsmsRootCertificateIssuerKeyHash": {
"variable_name": "CsmsRootCertificateIssuerKeyHash",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 128
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Issuer key hash of the CSMS root certificate",
"type": "string"
},
"CsmsRootCertificateIssuerNameHash": {
"variable_name": "CsmsRootCertificateIssuerNameHash",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 128
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Issuer name hash of the CSMS root certificate",
"type": "string"
},
"CsmsRootCertificateSerialNumber": {
"variable_name": "CsmsRootCertificateSerialNumber",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 40
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Serial number of the CSMS root certificate",
"type": "string"
}
},
"required": [
"OcppCsmsUrl",
"SecurityProfile",
"OcppInterface",
"OcppTransport",
"MessageTimeout",
"Identity",
"VpnEnabled",
"ApnEnabled"
]
}

View File

@@ -0,0 +1,454 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for NetworkConfiguration slot 2 (operator-configured; no defaults — explicit configuration required before this slot becomes usable, see NetworkConfiguration_1 for the bootstrap-defaults rationale)",
"type": "object",
"name": "NetworkConfiguration",
"instance": "2",
"properties": {
"OcppCsmsUrl": {
"variable_name": "OcppCsmsUrl",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 2000
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP CSMS URL",
"type": "string"
},
"SecurityProfile": {
"variable_name": "SecurityProfile",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"minLimit": 0,
"maxLimit": 3
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Security profile for this configuration slot",
"type": "integer"
},
"OcppInterface": {
"variable_name": "OcppInterface",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "Wired0,Wired1,Wired2,Wired3,Wireless0,Wireless1,Wireless2,Wireless3,Any"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP interface",
"type": "string"
},
"OcppTransport": {
"variable_name": "OcppTransport",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "JSON,SOAP"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP transport protocol",
"type": "string"
},
"MessageTimeout": {
"variable_name": "MessageTimeout",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"minLimit": 1
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Message timeout in seconds",
"type": "integer"
},
"Identity": {
"variable_name": "Identity",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 48
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Per-slot identity override",
"type": "string",
"default": ""
},
"BasicAuthPassword": {
"variable_name": "BasicAuthPassword",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"minLimit": 16,
"maxLimit": 64
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "Per-slot basic auth password",
"type": "string"
},
"ApnEnabled": {
"variable_name": "ApnEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "APN enabled",
"type": "boolean",
"default": false
},
"VpnEnabled": {
"variable_name": "VpnEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "VPN enabled",
"type": "boolean",
"default": false
},
"Apn": {
"variable_name": "Apn",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 2000
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "APN access point name",
"type": "string"
},
"ApnUserName": {
"variable_name": "ApnUserName",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "APN user name",
"type": "string"
},
"ApnPassword": {
"variable_name": "ApnPassword",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 64
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "APN password",
"type": "string"
},
"SimPin": {
"variable_name": "SimPin",
"characteristics": {
"supportsMonitoring": false,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "SIM PIN",
"type": "integer"
},
"PreferredNetwork": {
"variable_name": "PreferredNetwork",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 6
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Preferred network MCC+MNC",
"type": "string"
},
"UseOnlyPreferredNetwork": {
"variable_name": "UseOnlyPreferredNetwork",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Use only preferred network",
"type": "boolean",
"default": false
},
"ApnAuthentication": {
"variable_name": "ApnAuthentication",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "CHAP,NONE,PAP,AUTO"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "APN authentication method",
"type": "string",
"default": "AUTO"
},
"VpnServer": {
"variable_name": "VpnServer",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 2000
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN server",
"type": "string"
},
"VpnUser": {
"variable_name": "VpnUser",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN user",
"type": "string"
},
"VpnPassword": {
"variable_name": "VpnPassword",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 64
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "VPN password",
"type": "string"
},
"VpnKey": {
"variable_name": "VpnKey",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 255
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "VPN key",
"type": "string"
},
"VpnType": {
"variable_name": "VpnType",
"characteristics": {
"supportsMonitoring": true,
"dataType": "OptionList",
"valuesList": "IKEv2,IPSec,L2TP,PPTP"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN type",
"type": "string"
},
"VpnGroup": {
"variable_name": "VpnGroup",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "VPN group",
"type": "string"
},
"OcppVersion": {
"variable_name": "OcppVersion",
"characteristics": {
"supportsMonitoring": false,
"dataType": "OptionList",
"valuesList": "OCPP20,OCPP201,OCPP21"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "OCPP version used for this connection",
"type": "string"
},
"CsmsRootCertificateHashAlgorithm": {
"variable_name": "CsmsRootCertificateHashAlgorithm",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 50
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Hash algorithm of the CSMS root certificate",
"type": "string"
},
"CsmsRootCertificateIssuerKeyHash": {
"variable_name": "CsmsRootCertificateIssuerKeyHash",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 128
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Issuer key hash of the CSMS root certificate",
"type": "string"
},
"CsmsRootCertificateIssuerNameHash": {
"variable_name": "CsmsRootCertificateIssuerNameHash",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 128
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Issuer name hash of the CSMS root certificate",
"type": "string"
},
"CsmsRootCertificateSerialNumber": {
"variable_name": "CsmsRootCertificateSerialNumber",
"characteristics": {
"supportsMonitoring": false,
"dataType": "string",
"maxLimit": 40
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Serial number of the CSMS root certificate",
"type": "string"
}
},
"required": [
"OcppCsmsUrl",
"SecurityProfile",
"OcppInterface",
"OcppTransport",
"MessageTimeout",
"Identity",
"VpnEnabled",
"ApnEnabled"
]
}

View File

@@ -0,0 +1,491 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for OCPP16LegacyCtrlr - OCPP 1.6 configuration keys that don't exist or map as variables in OCPP 2.x",
"name": "OCPP16LegacyCtrlr",
"type": "object",
"properties": {
"CentralSystemURI": {
"variable_name": "CentralSystemURI",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "URL endpoint of the central system",
"type": "string",
"minLength": 1
},
"BlinkRepeat": {
"variable_name": "BlinkRepeat",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Number of times to blink the connector indicator",
"type": "integer",
"minimum": 0
},
"ConnectorPhaseRotationMaxLength": {
"variable_name": "ConnectorPhaseRotationMaxLength",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Maximum length of the ConnectorPhaseRotation configuration key",
"type": "integer",
"minimum": 0
},
"GetConfigurationMaxKeys": {
"variable_name": "GetConfigurationMaxKeys",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 256
}
],
"description": "Maximum number of configuration keys that can be requested in a GetConfiguration request",
"type": "integer",
"minimum": 0
},
"LightIntensity": {
"variable_name": "LightIntensity",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"unit": "Percent"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Light intensity for connector indicators",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"MinimumStatusDuration": {
"variable_name": "MinimumStatusDuration",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"unit": "s"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Minimum duration in seconds that a status must persist before a StatusNotification is sent",
"type": "integer",
"minimum": 0
},
"StopTransactionOnEVSideDisconnect": {
"variable_name": "StopTransactionOnEVSideDisconnect",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether to stop transaction when cable is unplugged on EV side",
"type": "boolean"
},
"SupportedFeatureProfiles": {
"variable_name": "SupportedFeatureProfiles",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Comma-separated list of supported OCPP feature profiles",
"type": "string"
},
"SupportedFeatureProfilesMaxLength": {
"variable_name": "SupportedFeatureProfilesMaxLength",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Maximum length of the SupportedFeatureProfiles configuration key",
"type": "integer",
"minimum": 0
},
"UnlockConnectorOnEVSideDisconnect": {
"variable_name": "UnlockConnectorOnEVSideDisconnect",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Whether to unlock connector when cable is unplugged on EV side",
"type": "boolean"
},
"ReserveConnectorZeroSupported": {
"variable_name": "ReserveConnectorZeroSupported",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether reserving connector 0 is supported",
"type": "boolean"
},
"HostName": {
"variable_name": "HostName",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Host name of the charge point",
"type": "string",
"minLength": 1
},
"AllowChargingProfileWithoutStartSchedule": {
"variable_name": "AllowChargingProfileWithoutStartSchedule",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Whether to accept charging profiles without startSchedule field",
"type": "boolean"
},
"WaitForStopTransactionsOnResetTimeout": {
"variable_name": "WaitForStopTransactionsOnResetTimeout",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"unit": "s"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Timeout in seconds to wait for StopTransaction.conf messages before executing reset",
"type": "integer",
"minimum": 0,
"default": 60
},
"StopTransactionIfUnlockNotSupported": {
"variable_name": "StopTransactionIfUnlockNotSupported",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Whether to stop transaction on Unlock request if unlocking is not supported",
"type": "boolean",
"default": false
},
"MeterPublicKeys": {
"variable_name": "MeterPublicKeys",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Comma-separated list of public keys for signed meter values, one per connector",
"type": "string"
},
"DisableSecurityEventNotifications": {
"variable_name": "DisableSecurityEventNotifications",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "When set to true, no SecurityEventNotification messages will be sent",
"type": "boolean",
"default": false
},
"ISO15118CertificateManagementEnabled": {
"variable_name": "ISO15118CertificateManagementEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Whether ISO 15118 certificate management via DataTransfer is supported",
"type": "boolean",
"default": false
},
"CustomDisplayCostAndPrice": {
"variable_name": "CustomDisplayCostAndPrice",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether California Pricing Requirements are supported",
"type": "boolean"
},
"DefaultPrice": {
"variable_name": "DefaultPrice",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Default pricing information as JSON object",
"type": "string",
"minLength": 1
},
"DefaultPriceText": {
"variable_name": "DefaultPriceText",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Multi-language pricing information as JSON object",
"type": "string",
"minLength": 1
},
"CustomIdleFeeAfterStop": {
"variable_name": "CustomIdleFeeAfterStop",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Whether idle fee calculation after transaction stop is supported",
"type": "boolean"
},
"SupportedLanguages": {
"variable_name": "SupportedLanguages",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Comma-separated list of supported language codes per RFC5646",
"type": "string",
"minLength": 1
},
"CustomMultiLanguageMessages": {
"variable_name": "CustomMultiLanguageMessages",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether multi-language support for tariffs is available",
"type": "boolean"
},
"Language": {
"variable_name": "Language",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Default language code for the station UI",
"type": "string",
"minLength": 1
},
"WaitForSetUserPriceTimeout": {
"variable_name": "WaitForSetUserPriceTimeout",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"unit": "ms"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Timeout in milliseconds to wait for SetUserPrice after authorization",
"type": "integer",
"minimum": 0,
"maximum": 30000
},
"NumberOfConnectors": {
"variable_name": "NumberOfConnectors",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Number of connectors of the charging station",
"type": "integer",
"minimum": 1
},
"AuthorizationKey": {
"variable_name": "AuthorizationKey",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly"
}
],
"description": "The OCPP 1.6 authorization key (BasicAuth password) used for the CSMS connection",
"type": "string"
},
"SecurityProfile": {
"variable_name": "SecurityProfile",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "The OCPP 1.6 security profile used for the CSMS connection",
"type": "integer",
"minimum": 0,
"maximum": 3
},
"ExampleConfigurationKey": {
"variable_name": "ExampleConfigurationKey",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Test-only OCPP 1.6 custom key mapped",
"type": "string"
}
},
"required": [
"GetConfigurationMaxKeys",
"NumberOfConnectors",
"UnlockConnectorOnEVSideDisconnect"
]
}

View File

@@ -0,0 +1,364 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for OCPPCommCtrlr",
"name": "OCPPCommCtrlr",
"type": "object",
"properties": {
"OCPPCommCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"type": "boolean"
},
"ActiveNetworkProfile": {
"variable_name": "ActiveNetworkProfile",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Indicates the configuration profile the station uses at that moment to connect to the network.",
"default": 1,
"type": "integer"
},
"FileTransferProtocols": {
"variable_name": "FileTransferProtocols",
"characteristics": {
"valuesList": "FTP,FTPS,HTTP,HTTPS,SFTP",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "FTP"
}
],
"description": "List of supported file transfer protocols",
"type": "string"
},
"HeartbeatInterval": {
"variable_name": "HeartbeatInterval",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Interval of inactivity (no OCPP exchanges) with CSMS after which the Charging Station should send HeartbeatRequest.",
"default": "1800",
"type": "integer"
},
"MessageTimeout": {
"variable_name": "MessageTimeout",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 60
}
],
"instance": "Default",
"description": "MessageTimeout(Default) specifies after which time a message times out. It is configured in the network connection profile.",
"default": "60",
"type": "integer"
},
"MessageAttemptInterval": {
"variable_name": "MessageAttemptInterval",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer",
"unit": "s"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 10
}
],
"instance": "TransactionEvent",
"description": "MessageAttemptInterval(TransactionEvent) specifies long the Charging Station should wait before resubmitting a TransactionEventRequest message that the CSMS failed to process.",
"default": "10",
"type": "integer"
},
"MessageAttempts": {
"variable_name": "MessageAttempts",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 5
}
],
"instance": "TransactionEvent",
"description": "MessageAttempts(TransactionEvent) specifies how often the Charging Station should try to submit a TransactionEventRequest message when the CSMS fails to process it.",
"default": "5",
"type": "integer"
},
"NetworkConfigurationPriority": {
"variable_name": "NetworkConfigurationPriority",
"characteristics": {
"valuesList": "1,2",
"supportsMonitoring": true,
"dataType": "SequenceList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 1
}
],
"description": "A comma separated ordered list of the priority of the possible Network Connection Profiles.",
"default": "1",
"type": "string"
},
"NetworkProfileConnectionAttempts": {
"variable_name": "NetworkProfileConnectionAttempts",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 3
}
],
"description": "Specifies the number of connection attempts the Charging Station executes before switching to a different profile.",
"default": "3",
"type": "integer"
},
"OfflineThreshold": {
"variable_name": "OfflineThreshold",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer",
"minLimit": 0
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 60
}
],
"description": "When the offline period of a Charging Station exceeds the OfflineThreshold it is recommended to send a StatusNotificationRequest for all its Connectors.",
"default": "60",
"type": "integer"
},
"PublicKeyWithSignedMeterValue": {
"variable_name": "PublicKeyWithSignedMeterValue",
"characteristics": {
"valuesList": "Never,OncePerTransaction,EveryMeterValue",
"supportsMonitoring": true,
"dataType": "OptionList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "This Configuration Variable can be used to configure whether a public key needs to be sent with a signed meter value. Note, that the field is required, so it needs to be present as an empty string when the public key is not sent.",
"type": "string"
},
"QueueAllMessages": {
"variable_name": "QueueAllMessages",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "When this variable is set to true, the Charging Station will queue all message until they are delivered to the CSMS.",
"type": "boolean"
},
"MessageTypesDiscardForQueueing": {
"variable_name": "MessageTypesDiscardForQueueing",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": ""
}
],
"description": "Comma seperated list of message types that shall not be queued (when offline) even in case QueueAllMessages is true. If QueueAllMessages is false, the configuration of this paramater has no effect.",
"type": "string"
},
"ResetRetries": {
"variable_name": "ResetRetries",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 3
}
],
"description": "Number of times to retry a reset of the Charging Station when a reset was unsuccessful",
"default": "3",
"type": "integer"
},
"RetryBackOffRandomRange": {
"variable_name": "RetryBackOffRandomRange",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 2
}
],
"description": "When the Charging Station is reconnecting, after a connection loss, it will use this variable as the maximum value for the random part of the back-off time",
"default": "2",
"type": "integer"
},
"RetryBackOffRepeatTimes": {
"variable_name": "RetryBackOffRepeatTimes",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 2
}
],
"description": "When the Charging Station is reconnecting, after a connection loss, it will use this variable for the amount of times it will double the previous back-off time.",
"default": "2",
"type": "integer"
},
"RetryBackOffWaitMinimum": {
"variable_name": "RetryBackOffWaitMinimum",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 1
}
],
"description": "When the Charging Station is reconnecting, after a connection loss, it will use this variable as the minimum back-off time, the first time it tries to reconnect.",
"default": "1",
"type": "integer"
},
"UnlockOnEVSideDisconnect": {
"variable_name": "UnlockOnEVSideDisconnect",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "When set to true, the Charging Station SHALL unlock the cable on the Charging Station side when the cable is unplugged at the EV. For an EVSE with only fixed cables, the mutability SHALL be ReadOnly and the actual value SHALL be false. For a charging station with fixed cables and sockets, the variable is only applicable to the sockets.",
"default": true,
"type": "boolean"
},
"WebSocketPingInterval": {
"variable_name": "WebSocketPingInterval",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 10
}
],
"description": "0 disables client side websocket Ping/Pong. In this case there is either no ping/pong or the server initiates the ping and client responds with Pong. Positive values are interpreted as number of seconds between pings. Negative values are not allowed.",
"default": "30",
"type": "integer"
},
"FieldLength": {
"variable_name": "FieldLength",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"instance": "Get15118EVCertificateResponse.exiResponse",
"description": "This variable is used to report the length of <field> in <message> when it is larger than the length that is defined in the standard OCPP message schema.",
"type": "integer"
}
},
"required": [
"FileTransferProtocols",
"MessageAttemptInterval",
"MessageAttempts",
"MessageTimeout",
"NetworkConfigurationPriority",
"NetworkProfileConnectionAttempts",
"OfflineThreshold",
"ResetRetries",
"RetryBackOffRandomRange",
"RetryBackOffRepeatTimes",
"RetryBackOffWaitMinimum",
"UnlockOnEVSideDisconnect",
"WebSocketPingInterval"
]
}

View File

@@ -0,0 +1,57 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for ReservationCtrlr",
"name": "ReservationCtrlr",
"type": "object",
"properties": {
"ReservationCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Whether reservation is supported.",
"default": true,
"type": "boolean"
},
"ReservationCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Whether reservation is enabled.",
"default": true,
"type": "boolean"
},
"ReservationCtrlrNonEvseSpecific": {
"variable_name": "NonEvseSpecific",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "If this configuration variable is present and set to true: Charging Station supports Reservation where EVSE id is not specified.",
"type": "boolean"
}
},
"required": []
}

View File

@@ -0,0 +1,168 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for SampledDataCtrlr",
"name": "SampledDataCtrlr",
"type": "object",
"properties": {
"SampledDataCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "If this variable reports a value of true, Sampled Data is supported",
"default": true,
"type": "boolean"
},
"SampledDataCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "If this variable reports a value of true, Sampled Data is enabled.",
"default": true,
"type": "boolean"
},
"SampledDataSignReadings": {
"variable_name": "SignReadings",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "If set to true, the Charging Station SHALL include signed meter values in the TransactionEventRequest to the CSMS",
"type": "boolean"
},
"SampledDataTxEndedInterval": {
"variable_name": "TxEndedInterval",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 60
}
],
"description": "Interval between sampling of metering (or other) data, intended to be transmitted in the TransactionEventRequest (eventType = Ended) message.",
"default": "60",
"type": "integer"
},
"SampledDataTxEndedMeasurands": {
"variable_name": "TxEndedMeasurands",
"characteristics": {
"valuesList": "Current.Export,Current.Import,Current.Offered,Energy.Active.Export.Register,Energy.Active.Import.Register,Energy.Reactive.Export.Register,Energy.Reactive.Import.Register,Energy.Active.Export.Interval,Energy.Active.Import.Interval,Energy.Reactive.Export.Interval,Energy.Reactive.Import.Interval,Frequency,Power.Active.Export,Power.Active.Import,Power.Factor,Power.Offered,Power.Reactive.Export,Power.Reactive.Import,Voltage",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Energy.Active.Import.Register,Current.Import"
}
],
"description": "Sampled measurands to be included in the meterValues element of TransactionEventRequest (eventType = Ended), every SampledDataTxEndedInterval seconds from the start of the transaction.",
"default": "Energy.Active.Import.Register,Current.Import",
"type": "string"
},
"SampledDataTxStartedMeasurands": {
"variable_name": "TxStartedMeasurands",
"characteristics": {
"valuesList": "Current.Export,Current.Import,Current.Offered,Energy.Active.Export.Register,Energy.Active.Import.Register,Energy.Reactive.Export.Register,Energy.Reactive.Import.Register,Energy.Active.Export.Interval,Energy.Active.Import.Interval,Energy.Reactive.Export.Interval,Energy.Reactive.Import.Interval,Frequency,Power.Active.Export,Power.Active.Import,Power.Factor,Power.Offered,Power.Reactive.Export,Power.Reactive.Import,Voltage",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Energy.Active.Import.Register,Current.Import"
}
],
"description": "Sampled measurand(s) to be taken at the start of any transaction to be included in the meterValues field of the first TransactionEventRequest message send at the start of a transaction (eventType = Started)",
"default": "Energy.Active.Import.Register,Current.Import",
"type": "string"
},
"SampledDataTxUpdatedInterval": {
"variable_name": "TxUpdatedInterval",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 120
}
],
"description": "Interval between sampling of metering (or other) data, intended to be transmitted via TransactionEventRequest (eventType = Updated) messages",
"default": "120",
"type": "integer"
},
"SampledDataTxUpdatedMeasurands": {
"variable_name": "TxUpdatedMeasurands",
"characteristics": {
"valuesList": "Current.Export,Current.Import,Current.Offered,Energy.Active.Export.Register,Energy.Active.Import.Register,Energy.Reactive.Export.Register,Energy.Reactive.Import.Register,Energy.Active.Export.Interval,Energy.Active.Import.Interval,Energy.Reactive.Export.Interval,Energy.Reactive.Import.Interval,Frequency,Power.Active.Export,Power.Active.Import,Power.Factor,Power.Offered,Power.Reactive.Export,Power.Reactive.Import,Voltage,SoC",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Energy.Active.Import.Register,Current.Import,Voltage,Power.Active.Import,Power.Reactive.Import,Frequency,SoC"
}
],
"description": "Sampled measurands to be included in the meterValues element of TransactionEventRequest (eventType = Ended)",
"default": "Energy.Active.Import.Register,Current.Import,Voltage,Power.Active.Import,Power.Reactive.Import,Frequency",
"type": "string"
},
"RegisterValuesWithoutPhases": {
"variable_name": "RegisterValuesWithoutPhases",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "If this variable reports a value of true, then meter values of measurand Energy.Active.Import.Register will only report the total energy over all phases without reporting the individual phase values. If this variable is absent or false, then the value for each phase is reported, possibly also with a total value (depending on the meter).",
"type": "boolean"
}
},
"required": [
"SampledDataTxEndedInterval",
"SampledDataTxEndedMeasurands",
"SampledDataTxStartedMeasurands",
"SampledDataTxUpdatedInterval",
"SampledDataTxUpdatedMeasurands"
]
}

View File

@@ -0,0 +1,188 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for SecurityCtrlr",
"name": "SecurityCtrlr",
"type": "object",
"properties": {
"SecurityCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
}
],
"default": true,
"type": "boolean"
},
"AdditionalRootCertificateCheck": {
"variable_name": "AdditionalRootCertificateCheck",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Required for all security profiles except profile 1.",
"default": false,
"type": "boolean"
},
"BasicAuthPassword": {
"variable_name": "BasicAuthPassword",
"characteristics": {
"minLimit": 16,
"maxLimit": 40,
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "WriteOnly",
"value": "DEADBEEFDEADBEEF"
}
],
"description": "The basic authentication password is used for HTTP Basic Authentication.",
"minimum": 16,
"maximum": 40,
"default": "DEADBEEFDEADBEEF",
"type": "string"
},
"CertificateEntries": {
"variable_name": "CertificateEntries",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 100
}
],
"description": "Amount of Certificates currently installed on the Charging Station",
"type": "integer"
},
"CertSigningRepeatTimes": {
"variable_name": "CertSigningRepeatTimes",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 2
}
],
"description": "Number of times to resend a SignCertificateRequest when CSMS does nor return a signed certificate.",
"default": "3",
"type": "integer"
},
"CertSigningWaitMinimum": {
"variable_name": "CertSigningWaitMinimum",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 30
}
],
"description": "Seconds to wait before generating another CSR in case CSMS does not return a signed certificate.",
"default": "30",
"type": "integer"
},
"SecurityCtrlrIdentity": {
"variable_name": "Identity",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "cp001"
}
],
"description": "The Charging Station identity.",
"default": "cp001",
"type": "string"
},
"MaxCertificateChainSize": {
"variable_name": "MaxCertificateChainSize",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "Limit of the size of the 'certificateChain' field from the CertificateSignedRequest",
"type": "integer"
},
"OrganizationName": {
"variable_name": "OrganizationName",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "Pionix"
}
],
"description": "The organization name of the CSO or an organization trusted by the CSO. This organization name is used to specify the subject field in the client certificate.",
"default": "Pionix",
"type": "string"
},
"SecurityProfile": {
"variable_name": "SecurityProfile",
"characteristics": {
"minLimit": 1,
"maxLimit": 3,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 1
}
],
"description": "The security profile used by the Charging Station.",
"minimum": 1,
"maximum": 3,
"default": "1",
"type": "integer"
}
},
"required": [
"CertificateEntries",
"OrganizationName",
"SecurityCtrlrIdentity",
"SecurityProfile"
]
}

View File

@@ -0,0 +1,463 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for SmartChargingCtrlr",
"name": "SmartChargingCtrlr",
"type": "object",
"properties": {
"ACPhaseSwitchingSupported": {
"variable_name": "ACPhaseSwitchingSupported",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "This variable can be used to indicate an on-load/in-transaction capability. If defined and true, this EVSE supports the selection of which phase to use for 1 phase AC charging.",
"type": "boolean"
},
"SmartChargingCtrlrAvailable": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "Whether smart charging is supported.",
"type": "boolean"
},
"SmartChargingCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "Whether smart charging is enabled.",
"type": "boolean"
},
"EntriesChargingProfiles": {
"variable_name": "Entries",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 0
}
],
"instance": "ChargingProfiles",
"description": "Entries(ChargingProfiles) is the amount of Charging profiles currently installed on the Charging Station",
"type": "integer"
},
"ExternalControlSignalsEnabled": {
"variable_name": "ExternalControlSignalsEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Indicates whether a Charging Station should respond to external control signals that influence charging.",
"type": "boolean"
},
"LimitChangeSignificance": {
"variable_name": "LimitChangeSignificance",
"characteristics": {
"unit": "Percent",
"supportsMonitoring": true,
"dataType": "decimal"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 42
}
],
"description": "If at the Charging Station side a change in the limit in a ChargingProfile is lower than this percentage, the Charging Station MAY skip sending a NotifyChargingLimitRequest or a TransactionEventRequest message to the CSMS.",
"type": "number"
},
"NotifyChargingLimitWithSchedules": {
"variable_name": "NotifyChargingLimitWithSchedules",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Indicates if the Charging Station should include the externally set charging limit/schedule in the message when it sends a NotifyChargingLimitRequest message.",
"type": "boolean"
},
"PeriodsPerSchedule": {
"variable_name": "PeriodsPerSchedule",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 42
}
],
"description": "Maximum number of periods that may be defined per ChargingSchedule.",
"type": "integer"
},
"Phases3to1": {
"variable_name": "Phases3to1",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"description": "If defined and true, this Charging Station supports switching from 3 to 1 phase during a transaction",
"type": "boolean"
},
"ChargingProfileMaxStackLevel": {
"variable_name": "ProfileStackLevel",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": 42
}
],
"description": "Maximum acceptable value for stackLevel in a ChargingProfile. Since the lowest stackLevel is 0, this means that if SmartChargingCtrlr.ProfileStackLevel = 1, there can be at most 2 valid charging profiles per Charging Profile Purpose per EVSE.",
"type": "integer"
},
"ChargingScheduleChargingRateUnit": {
"variable_name": "RateUnit",
"characteristics": {
"valuesList": "A,W",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "A,W"
}
],
"description": "A list of supported quantities for use in a ChargingSchedule. Allowed values: 'A' and 'W\ufffd",
"type": "string"
},
"CompositeScheduleDefaultLimitAmps": {
"variable_name": "CompositeScheduleDefaultLimitAmps",
"characteristics": {
"unit": "A",
"minLimit": 0,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 48
}
],
"type": "integer",
"description": "Default amps limit applied when composite schedule is calculated and no limit was provided by the CSMS"
},
"CompositeScheduleDefaultLimitWatts": {
"variable_name": "CompositeScheduleDefaultLimitWatts",
"characteristics": {
"unit": "W",
"minLimit": 0,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 33120
}
],
"type": "integer",
"description": "Default watts limit applied when composite schedule is calculated and no limit was provided by the CSMS"
},
"CompositeScheduleDefaultNumberPhases": {
"variable_name": "CompositeScheduleDefaultNumberPhases",
"characteristics": {
"unit": "W",
"minLimit": 1,
"maxLimit": 3,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 3
}
],
"type": "integer",
"description": "Default number of phases applied when composite schedule is calculated and no limit was provided by the CSMS"
},
"SupplyVoltage": {
"variable_name": "SupplyVoltage",
"characteristics": {
"unit": "V",
"minLimit": 0,
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 230
}
],
"type": "integer",
"description": "Supply voltage of the grid. This value is only used in case a conversion between smart charging amp and watt limits is required"
},
"IgnoredProfilePurposesOffline": {
"variable_name": "IgnoredProfilePurposesOffline",
"characteristics": {
"valuesList": "ChargingStationMaxProfile,TxDefaultProfile,TxProfile",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": ""
}
],
"description": "Allows configuration of comma seperated list of ChargingProfilePurposes that are ignored in the composite schedule caluclation when offline.",
"type": "string"
},
"ChargingProfilePersistenceTxProfile": {
"variable_name": "ChargingProfilePersistence",
"instance": "TxProfile",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "true"
}
],
"description": "If defined and true, Charging profile with chargingProfilePurpose TxProfile is stored in the database (which is the current behaviour, so don't change this)",
"type": "boolean"
},
"ChargingProfilePersistenceChargingStationExternalConstraints": {
"variable_name": "ChargingProfilePersistence",
"instance": "ChargingStationExternalConstraints",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "true"
}
],
"description": "If defined and true, Charging profile with chargingProfilePurpose ChargingStationExternalConstraints is stored in the database (which is the current behaviour, so don't change this)",
"type": "boolean"
},
"ChargingProfilePersistenceLocalGeneration": {
"variable_name": "ChargingProfilePersistence",
"instance": "LocalGeneration",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "true"
}
],
"description": "If defined and true, Charging profile with chargingProfilePurpose LocalGeneration is stored in the database (which is the current behaviour, so don't change this)",
"type": "boolean"
},
"ChargingProfileUpdateRateLimit": {
"variable_name": "UpdateRateLimit",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"type": "integer",
"description": "This configuration key limits how often a persistent charging profile can be updated. It is the minimum duration in seconds between updates of charging profiles of the same chargingProfilePurpose. A Charging Station may reject SetChargingProfileRequests that occur too frequently."
},
"MaxExternalConstraintsId": {
"variable_name": "MaxExternalConstraintsId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"type": "integer",
"description": "Defines the highest value that a charging profile id of a ChargingStationExternalConstraints profile in the Charging Station can have. CSMS will use charging profile ids above this value to avoid conflicts with ChargingStationExternalConstraints profiles created by the Charging Station."
},
"SupportedAdditionalPurposes": {
"variable_name": "SupportedAdditionalPurposes",
"characteristics": {
"valuesList": "PriorityCharging,LocalGeneration",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": ""
}
],
"description": "This configuration variable lists the additional ChargingProfilePurposeEnumType, that have been introduced in OCPP 2.1, that are supported by the Charging Station. When this variable is absent or an empty list, then the purposes PriorityCharging and LocalGeneration are not supported.",
"type": "string"
},
"SupportsDynamicProfiles": {
"variable_name": "SupportsFeature",
"instance": "DynamicProfiles",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "false"
}
],
"description": "When this variable has value True, then the Charging Station supports charging profiles of ChargingProfileKindEnumType Dynamic. This implies that the fields dynUpdateInterval and dynUpdateTime in ChargingProfileType are supported. When this variable is absent or false, dynamic charging profiles are not supported.",
"type": "boolean"
},
"SupportsUseLocalTime": {
"variable_name": "SupportsFeature",
"instance": "UseLocalTime",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "false"
}
],
"description": "When this variable has value True, then the Charging Station supports the field useLocalTime in ChargingScheduleType. If useLocalTime = true in a charging schedule, then the startSchedule is treated as unqualified local time of the Charging Station. When this variable is absent or false, the useLocalTime is not supported.",
"type": "boolean"
},
"SupportsRandomizedDelay": {
"variable_name": "SupportsFeature",
"instance": "RandomizedDelay",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "false"
}
],
"description": "When this variable has value True, then the Charging Station supports the field randomizedDelay in ChargingScheduleType, which will delay the start of each charging schedule period by a random number between 0 and randomizedDelay. When this variable is absent or false, then randomizedDelay is not supported.",
"type": "boolean"
},
"SupportsLimitAtSoC": {
"variable_name": "SupportsFeature",
"instance": "LimitAtSoC",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "false"
}
],
"description": "When this variable has value True, then the Charging Station supports the field limitAtSoC in ChargingScheduleType, which will cap the limit or setpoint in the ChargingSchedulePeriodType by the value of limitAtSoC.limit. When this variable is absent or false, then limitAtSoC is not supported.",
"type": "boolean"
},
"SupportsEvseSleep": {
"variable_name": "SupportsFeature",
"instance": "EvseSleep",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": "false"
}
],
"description": "When reported as true the Charging Station supports the evseSleep flag in a ChargingSchedulePeriodType, which requests the EVSE electronics to go to sleep during operationMode = 'Idle'. When absent or false this option is not supported.",
"type": "boolean"
}
},
"required": [
"ChargingProfileMaxStackLevel",
"ChargingScheduleChargingRateUnit",
"EntriesChargingProfiles",
"LimitChangeSignificance",
"PeriodsPerSchedule"
]
}

View File

@@ -0,0 +1,273 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for TariffCostCtrlr",
"name": "TariffCostCtrlr",
"type": "object",
"properties": {
"TariffCostCtrlrAvailableTariff": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"instance": "Tariff",
"description": "Instance Tariff: Whether tariffs are supported.",
"type": "boolean"
},
"TariffCostCtrlrAvailableCost": {
"variable_name": "Available",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly"
}
],
"instance": "Cost",
"description": "Instance Cost: Wheter costs are supported.",
"type": "boolean"
},
"TariffCostCtrlrCurrency": {
"variable_name": "Currency",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 3
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "EUR"
}
],
"description": "Currency used by this Charging Station in a ISO 4217 [ISO4217] formatted currency code.",
"type": "string"
},
"TariffCostCtrlrEnabledTariff": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"instance": "Tariff",
"description": "Instance Tariff: Whether tariffs are enabled.",
"type": "boolean"
},
"TariffCostCtrlrEnabledCost": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
}
],
"instance": "Cost",
"description": "Instance Cost: Whether costs are enabled.",
"type": "boolean"
},
"OfflineTariffFallbackMessage": {
"variable_name": "OfflineTariffFallbackMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 255
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": ""
}
],
"description": "Message (and/or tariff information) to be shown to an EV Driver when the Charging Station is offline and there is no driver specific tariff information available.",
"type": "string"
},
"TariffFallbackMessage": {
"variable_name": "TariffFallbackMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 255
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": ""
}
],
"description": "Message (and/or tariff information) to be shown to an EV Driver when there is no driver specific tariff information available.",
"type": "string"
},
"TotalCostFallbackMessage": {
"variable_name": "TotalCostFallbackMessage",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string",
"maxLimit": 255
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": ""
}
],
"description": "Message to be shown to an EV Driver when the Charging Station cannot retrieve the cost for a transaction at the end of the transaction.",
"type": "string"
},
"OfflineChargingPricekWhPrice": {
"variable_name": "OfflineChargingPrice",
"instance": "kWhPrice",
"characteristics": {
"supportsMonitoring": true,
"dataType": "decimal"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Charging kWh price in the default currency when charging station is offline.",
"type": "number"
},
"OfflineChargingPriceHourPrice": {
"variable_name": "OfflineChargingPrice",
"instance": "hourPrice",
"characteristics": {
"supportsMonitoring": true,
"dataType": "decimal"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Charging kWh price in the default currency when charging station is offline.",
"type": "number"
},
"TariffFallbackMessageDe": {
"variable_name": "TariffFallbackMessage",
"instance": "de",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Message (and/or tariff information) to be shown to an EV Driver when there is no driver specific tariff information available.",
"type": "string"
},
"TariffFallbackMessageNl": {
"variable_name": "TariffFallbackMessage",
"instance": "nl",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Message (and/or tariff information) to be shown to an EV Driver when there is no driver specific tariff information available.",
"type": "string"
},
"TariffFallbackMessageEn": {
"variable_name": "TariffFallbackMessage",
"instance": "en-US",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Message (and / or tariff information) to be shown to an EV Driver when there is no driver specific tariff information available.",
"type": "string"
},
"OfflineTariffFallbackMessageEn": {
"variable_name": "OfflineTariffFallbackMessage",
"instance": "en",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Message (and/or tariff information) to be shown to an EV Driver when Charging Station is offline. Note: Add a OfflineTariffFallbackMessage with correct instance for every supported language!!",
"type": "string"
},
"TotalCostFallbackMessageEn": {
"variable_name": "TotalCostFallbackMessage",
"instance": "en-US",
"characteristics": {
"supportsMonitoring": true,
"dataType": "string"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Message to be shown to an EV Driver when the Charging Station cannot retrieve the cost for a transaction at the end of the transaction. Note: Add a TotalCostFallbackMessage with correct instance for every supported language!!",
"type": "string"
},
"NumberOfDecimalsForCostValues": {
"variable_name": "NumberOfDecimalsForCostValues",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Number of decimals for the cost values. Value will be ",
"type": "integer"
}
},
"required": [
"TariffCostCtrlrCurrency",
"TariffFallbackMessage",
"TotalCostFallbackMessage"
]
}

View File

@@ -0,0 +1,165 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for TxCtrlr",
"name": "TxCtrlr",
"type": "object",
"properties": {
"TxCtrlrEnabled": {
"variable_name": "Enabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": false
}
],
"default": true,
"type": "boolean"
},
"ChargingTime": {
"variable_name": "ChargingTime",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "decimal"
},
"attributes": [
{
"type": "Actual"
}
],
"description": "Time from earliest to latest substantive energy transfer",
"type": "number"
},
"EVConnectionTimeOut": {
"variable_name": "EVConnectionTimeOut",
"characteristics": {
"unit": "s",
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": 120
}
],
"description": "Interval from between \"starting\" of a transaction until incipient transaction is automatically canceled, due to failure of EV driver to (correctly) insert the charging cable connector(s) into the appropriate socket(s).",
"default": "120",
"type": "integer"
},
"MaxEnergyOnInvalidId": {
"variable_name": "MaxEnergyOnInvalidId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "integer"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Maximum amount of energy in Wh delivered when an identifier is deauthorized by the CSMS after start of a transaction.",
"default": "1000",
"type": "integer"
},
"StopTxOnEVSideDisconnect": {
"variable_name": "StopTxOnEVSideDisconnect",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadOnly",
"value": true
}
],
"description": "When set to true, the Charging Station SHALL deauthorize the transaction when the cable is unplugged from the EV.",
"default": true,
"type": "boolean"
},
"StopTxOnInvalidId": {
"variable_name": "StopTxOnInvalidId",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": true
}
],
"description": "Whether the Charging Station will deauthorize an ongoing transaction when it receives a non- Accepted authorization status in TransactionEventResponse for this transaction.",
"default": true,
"type": "boolean"
},
"TxBeforeAcceptedEnabled": {
"variable_name": "TxBeforeAcceptedEnabled",
"characteristics": {
"supportsMonitoring": true,
"dataType": "boolean"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite"
}
],
"description": "Allow charging before having received a BootNotificationResponse with RegistrationStatus: Accepted.",
"type": "boolean"
},
"TxStartPoint": {
"variable_name": "TxStartPoint",
"characteristics": {
"valuesList": "EVConnected,Authorized,PowerPathClosed,EnergyTransfer,DataSigned",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "PowerPathClosed"
}
],
"description": "Defines when the Charging Station starts a new transaction",
"default": "PowerPathClosed",
"type": "string"
},
"TxStopPoint": {
"variable_name": "TxStopPoint",
"characteristics": {
"valuesList": "EVConnected,Authorized,PowerPathClosed,EnergyTransfer",
"supportsMonitoring": true,
"dataType": "MemberList"
},
"attributes": [
{
"type": "Actual",
"mutability": "ReadWrite",
"value": "EVConnected,Authorized"
}
],
"description": "Defines when the Charging Station ends a transaction",
"default": "EVConnected,Authorized",
"type": "string"
}
},
"required": [
"EVConnectionTimeOut",
"StopTxOnEVSideDisconnect",
"StopTxOnInvalidId",
"TxStartPoint",
"TxStopPoint"
]
}

View File

@@ -0,0 +1,162 @@
PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS MUTABILITY (ID INT PRIMARY KEY, MUTABILITY TEXT);
CREATE TABLE IF NOT EXISTS DATATYPE (ID INT PRIMARY KEY, DATATYPE TEXT);
CREATE TABLE IF NOT EXISTS MONITOR (ID INTEGER PRIMARY KEY, "TYPE" TEXT);
CREATE TABLE IF NOT EXISTS MONITOR_CONFIG_TYPE (ID INTEGER PRIMARY KEY, "TYPE" TEXT);
CREATE TABLE IF NOT EXISTS SEVERITY(ID INTEGER PRIMARY KEY, SEVERITY TEXT);
CREATE TABLE IF NOT EXISTS VARIABLE_ATTRIBUTE_TYPE (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
"TYPE" TEXT
);
CREATE TABLE IF NOT EXISTS COMPONENT (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT,
INSTANCE TEXT,
EVSE_ID INTEGER,
CONNECTOR_ID INTEGER
);
CREATE TABLE IF NOT EXISTS VARIABLE_ATTRIBUTE (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
VARIABLE_ID INTEGER NOT NULL,
MUTABILITY_ID INTEGER,
PERSISTENT INTEGER,
CONSTANT INTEGER,
TYPE_ID INTEGER,
VALUE_SOURCE TEXT,
"VALUE" TEXT,
FOREIGN KEY (VARIABLE_ID) REFERENCES VARIABLE (ID) ON DELETE CASCADE,
FOREIGN KEY (TYPE_ID) REFERENCES VARIABLE_ATTRIBUTE_TYPE (ID) ON DELETE RESTRICT,
FOREIGN KEY (MUTABILITY_ID) REFERENCES MUTABILITY (ID) ON DELETE RESTRICT
);
CREATE TABLE IF NOT EXISTS VARIABLE_CHARACTERISTICS (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
DATATYPE_ID INTEGER NOT NULL,
VARIABLE_ID INTEGER NOT NULL,
MAX_LIMIT REAL,
MIN_LIMIT REAL,
SUPPORTS_MONITORING INTEGER,
UNIT TEXT,
VALUES_LIST TEXT,
FOREIGN KEY (DATATYPE_ID) REFERENCES DATATYPE (ID) ON DELETE RESTRICT
FOREIGN KEY (VARIABLE_ID) REFERENCES VARIABLE (ID) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS VARIABLE_MONITORING (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
VARIABLE_ID INTEGER NOT NULL,
SEVERITY INTEGER,
"TRANSACTION" INTEGER,
TYPE_ID INTEGER NOT NULL,
CONFIG_TYPE_ID INTEGER,
"VALUE" DECIMAL,
REFERENCE_VALUE TEXT,
FOREIGN KEY (VARIABLE_ID) REFERENCES VARIABLE (ID) ON DELETE CASCADE,
FOREIGN KEY (TYPE_ID) REFERENCES MONITOR (ID) ON DELETE RESTRICT,
FOREIGN KEY (CONFIG_TYPE_ID) REFERENCES MONITOR_CONFIG_TYPE(ID) ON DELETE RESTRICT
);
CREATE TABLE IF NOT EXISTS VARIABLE (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT,
INSTANCE TEXT,
COMPONENT_ID INTEGER NOT NULL,
REQUIRED INTEGER DEFAULT FALSE,
FOREIGN KEY (COMPONENT_ID) REFERENCES COMPONENT (ID) ON DELETE CASCADE
);
INSERT
OR REPLACE INTO MUTABILITY
VALUES (0, "ReadOnly");
INSERT
OR REPLACE INTO MUTABILITY
VALUES (1, "WriteOnly");
INSERT
OR REPLACE INTO MUTABILITY
VALUES (2, "ReadWrite");
INSERT
OR REPLACE INTO DATATYPE
VALUES (0, "string");
INSERT
OR REPLACE INTO DATATYPE
VALUES (1, "decimal");
INSERT
OR REPLACE INTO DATATYPE
VALUES (2, "integer");
INSERT
OR REPLACE INTO DATATYPE
VALUES (3, "dateTime");
INSERT
OR REPLACE INTO DATATYPE
VALUES (4, "boolean");
INSERT
OR REPLACE INTO DATATYPE
VALUES (5, "OptionList");
INSERT
OR REPLACE INTO DATATYPE
VALUES (6, "SequenceList");
INSERT
OR REPLACE INTO DATATYPE
VALUES (7, "MemberList");
INSERT
OR REPLACE INTO MONITOR
VALUES (0, "UpperThreshold");
INSERT
OR REPLACE INTO MONITOR
VALUES (1, "LowerThreshold");
INSERT
OR REPLACE INTO MONITOR
VALUES (2, "Delta");
INSERT
OR REPLACE INTO MONITOR
VALUES (3, "Periodic");
INSERT
OR REPLACE INTO MONITOR
VALUES (4, "PeriodicClockAligned");
INSERT
OR REPLACE INTO MONITOR_CONFIG_TYPE
VALUES (0, "HardWiredMonitor");
INSERT
OR REPLACE INTO MONITOR_CONFIG_TYPE
VALUES (1, "PreconfiguredMonitor");
INSERT
OR REPLACE INTO MONITOR_CONFIG_TYPE
VALUES (2, "CustomMonitor");
INSERT
OR REPLACE INTO SEVERITY
VALUES (0, "Danger");
INSERT
OR REPLACE INTO SEVERITY
VALUES (1, "HardwareFailure");
INSERT
OR REPLACE INTO SEVERITY
VALUES (2, "SystemFailure");
INSERT
OR REPLACE INTO SEVERITY
VALUES (3, "Critical");
INSERT
OR REPLACE INTO SEVERITY
VALUES (4, "Error");
INSERT
OR REPLACE INTO SEVERITY
VALUES (5, "Alert");
INSERT
OR REPLACE INTO SEVERITY
VALUES (6, "Warning");
INSERT
OR REPLACE INTO SEVERITY
VALUES (7, "Notice");
INSERT
OR REPLACE INTO SEVERITY
VALUES (8, "Informational");
INSERT
OR REPLACE INTO SEVERITY
VALUES (9, "Debug");
INSERT
OR REPLACE INTO VARIABLE_ATTRIBUTE_TYPE
VALUES (0, "Actual");
INSERT
OR REPLACE INTO VARIABLE_ATTRIBUTE_TYPE
VALUES (1, "Target");
INSERT
OR REPLACE INTO VARIABLE_ATTRIBUTE_TYPE
VALUES (2, "MinSet");
INSERT
OR REPLACE INTO VARIABLE_ATTRIBUTE_TYPE
VALUES (3, "MaxSet");

View File

@@ -0,0 +1,2 @@
ALTER TABLE VARIABLE
DROP COLUMN SOURCE;

View File

@@ -0,0 +1,2 @@
ALTER TABLE VARIABLE
ADD COLUMN SOURCE TEXT;

View File

@@ -0,0 +1,2 @@
ALTER TABLE VARIABLE
ADD REQUIRED INTEGER DEFAULT FALSE;

View File

@@ -0,0 +1,2 @@
ALTER TABLE VARIABLE
DROP COLUMN REQUIRED;

View File

@@ -0,0 +1,18 @@
# for documentation on this file format see:
# https://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/detailed/utilities.html#log.detailed.utilities.setup.filter_formatter
[Core]
DisableLogging=false
Filter="%Severity% >= INFO"
[Sinks.Console]
Destination=Console
# Filter="%Target% contains \"MySink1\""
Format="%TimeStamp% \033[1;32m%Process%\033[0m [\033[1;32m%ProcessID%\033[0m] [%Severity%] {\033[1;34m%ThreadID%\033[0m} \033[1;36m%function%\033[0m \033[1;30m%file%:\033[0m\033[1;32m%line%\033[0m: %Message%"
Asynchronous=false
AutoFlush=true
SeverityStringColorDebug="\033[1;30m"
SeverityStringColorInfo="\033[1;37m"
SeverityStringColorWarning="\033[1;33m"
SeverityStringColorError="\033[1;31m"
SeverityStringColorCritical="\033[1;35m"

View File

@@ -0,0 +1,58 @@
set(OCPP1_6_PROFILE_SCHEMAS_DIR "profile_schemas/")
set(USER_CONFIG_FILE "user_config/user_config.json")
set(CERTS_DIR "../certs/")
# find all migration files, store only the filenames by showing relative to the folder
set(MIGRATION_FILES_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/core_migrations")
include(../CollectMigrationFiles.cmake)
collect_migration_files(
LOCATION ${MIGRATION_FILES_LOCATION}
INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP/core_migrations
)
set(OCPP1_6_CONFIG_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PARENT_SCOPE)
set(MIGRATION_FILE_VERSION_V16 ${TARGET_MIGRATION_FILE_VERSION} PARENT_SCOPE)
set(MIGRATION_FILES_SOURCE_DIR_V16 ${MIGRATION_FILES_LOCATION} PARENT_SCOPE)
list(APPEND OCPP1_6_PROFILE_SCHEMAS
Config.json
Core.json
FirmwareManagement.json
Internal.json
LocalAuthListManagement.json
Reservation.json
SmartCharging.json
Security.json
PnC.json
CostAndPrice.json
)
list(TRANSFORM OCPP1_6_PROFILE_SCHEMAS
PREPEND ${OCPP1_6_PROFILE_SCHEMAS_DIR})
install(
FILES ${OCPP1_6_PROFILE_SCHEMAS}
DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP/profile_schemas
)
list(APPEND CONFIGS
config.json
config-docker.json
config-full.json
config-docker-tls.json
../logging.ini
)
install(
FILES ${CONFIGS}
DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP
)
if(EXISTS ${USER_CONFIG_FILE})
install(
FILES ${USER_CONFIG_FILE}
DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP)
endif()

View File

@@ -0,0 +1,58 @@
{
"Internal": {
"ChargePointId": "cp001",
"CentralSystemURI": "127.0.0.1:8443/steve/websocket/CentralSystemService/",
"ChargeBoxSerialNumber": "cp001",
"ChargePointModel": "Yeti",
"ChargePointVendor": "Pionix",
"FirmwareVersion": "0.1"
},
"Core": {
"AuthorizeRemoteTxRequests": false,
"ClockAlignedDataInterval": 900,
"ConnectionTimeOut": 10,
"ConnectorPhaseRotation": "0.RST,1.RST",
"GetConfigurationMaxKeys": 100,
"HeartbeatInterval": 86400,
"LocalAuthorizeOffline": false,
"LocalPreAuthorize": false,
"MeterValuesAlignedData": "Energy.Active.Import.Register",
"MeterValuesSampledData": "Energy.Active.Import.Register",
"MeterValueSampleInterval": 0,
"NumberOfConnectors": 1,
"ResetRetries": 1,
"StopTransactionOnInvalidId": true,
"StopTxnAlignedData": "Energy.Active.Import.Register",
"StopTxnSampledData": "Energy.Active.Import.Register",
"SupportedFeatureProfiles": "Core,FirmwareManagement,Reservation,RemoteTrigger,LocalAuthListManagement,SmartCharging",
"TransactionMessageAttempts": 1,
"TransactionMessageRetryInterval": 10,
"UnlockConnectorOnEVSideDisconnect": true
},
"FirmwareManagement": {
"SupportedFileTransferProtocols": "FTP"
},
"Security": {
"AuthorizationKey": "AABBCCDDEEFFGGHH",
"SecurityProfile": 2
},
"LocalAuthListManagement": {
"LocalAuthListEnabled": true,
"LocalAuthListMaxLength": 42,
"SendLocalListMaxLength": 42
},
"SmartCharging": {
"ChargeProfileMaxStackLevel": 42,
"ChargingScheduleAllowedChargingRateUnit": "Current",
"ChargingScheduleMaxPeriods": 42,
"MaxChargingProfilesInstalled": 42
},
"PnC": {
"ISO15118CertificateManagementEnabled": true,
"ISO15118PnCEnabled": true,
"ContractValidationOffline": true
},
"Custom": {
"ExampleConfigurationKey": "example"
}
}

View File

@@ -0,0 +1,66 @@
{
"Internal": {
"ChargePointId": "cp001",
"CentralSystemURI": "127.0.0.1:8180/steve/websocket/CentralSystemService/",
"ChargeBoxSerialNumber": "cp001",
"ChargePointModel": "Yeti",
"ChargePointVendor": "Pionix",
"FirmwareVersion": "0.1",
"AllowChargingProfileWithoutStartSchedule": true,
"UseTPM" : false,
"LogMessagesFormat": ["html","security"]
},
"Core": {
"AuthorizeRemoteTxRequests": false,
"ClockAlignedDataInterval": 900,
"ConnectionTimeOut": 30,
"ConnectorPhaseRotation": "0.RST,1.RST",
"GetConfigurationMaxKeys": 100,
"HeartbeatInterval": 86400,
"LocalAuthorizeOffline": false,
"LocalPreAuthorize": false,
"MeterValuesAlignedData": "Energy.Active.Import.Register",
"MeterValuesSampledData": "Energy.Active.Import.Register,SoC",
"MeterValueSampleInterval": 60,
"NumberOfConnectors": 1,
"ResetRetries": 1,
"StopTransactionOnInvalidId": true,
"StopTxnAlignedData": "Energy.Active.Import.Register",
"StopTxnSampledData": "Energy.Active.Import.Register",
"SupportedFeatureProfiles": "Core,FirmwareManagement,RemoteTrigger,Reservation,LocalAuthListManagement,SmartCharging",
"TransactionMessageAttempts": 1,
"TransactionMessageRetryInterval": 10,
"UnlockConnectorOnEVSideDisconnect": true,
"WebSocketPingInterval": 10
},
"FirmwareManagement": {
"SupportedFileTransferProtocols": "FTP"
},
"Security": {
"CpoName": "Pionix",
"AuthorizationKey": "AABBCCDDEEFFGGHH",
"SecurityProfile": 1
},
"LocalAuthListManagement": {
"LocalAuthListEnabled": true,
"LocalAuthListMaxLength": 42,
"SendLocalListMaxLength": 42
},
"SmartCharging": {
"ChargeProfileMaxStackLevel": 42,
"ChargingScheduleAllowedChargingRateUnit": "Current,Power",
"ChargingScheduleMaxPeriods": 42,
"MaxChargingProfilesInstalled": 42
},
"PnC": {
"ISO15118CertificateManagementEnabled": true,
"ISO15118PnCEnabled": true,
"ContractValidationOffline": true
},
"CostAndPrice": {
"CustomDisplayCostAndPrice": false
},
"Custom": {
"ExampleConfigurationKey": "example"
}
}

View File

@@ -0,0 +1,180 @@
{
"Internal": {
"ChargePointId": "cp001",
"CentralSystemURI": "127.0.0.1:8180/steve/websocket/CentralSystemService/",
"ChargeBoxSerialNumber": "cp001",
"ChargePointModel": "Yeti",
"ChargePointSerialNumber": "cp001",
"ChargePointVendor": "Pionix",
"FirmwareVersion": "0.1",
"ICCID": "891004234814455936F",
"IMSI": "262 01 9876543210",
"MeterSerialNumber": "123-456-789",
"MeterType": "AC",
"SupportedCiphers12": [
"ECDHE-ECDSA-AES128-GCM-SHA256",
"ECDHE-ECDSA-AES256-GCM-SHA384",
"AES128-GCM-SHA256",
"AES256-GCM-SHA384"
],
"SupportedCiphers13": [
"TLS_AES_256_GCM_SHA384",
"TLS_AES_128_GCM_SHA256"
],
"UseTPM": false,
"RetryBackoffRandomRange": 10,
"RetryBackoffRepeatTimes": 3,
"RetryBackoffWaitMinimum": 3,
"AuthorizeConnectorZeroOnConnectorOne": true,
"LogMessages": true,
"LogMessagesFormat": [
"log",
"html",
"session_logging",
"security"
],
"LogRotation": false,
"LogRotationDateSuffix": false,
"LogRotationMaximumFileSize": 0,
"LogRotationMaximumFileCount": 0,
"SupportedChargingProfilePurposeTypes": [
"ChargePointMaxProfile",
"TxDefaultProfile",
"TxProfile"
],
"MaxCompositeScheduleDuration": 31536000,
"WebsocketPingPayload": "Hello from EVerest!",
"WebsocketPongTimeout": 5,
"UseSslDefaultVerifyPaths": true,
"VerifyCsmsCommonName": true,
"VerifyCsmsAllowWildcards": true,
"OcspRequestInterval": 604800,
"SeccLeafSubjectCommonName": "DEPNX100001",
"SeccLeafSubjectCountry": "DE",
"SeccLeafSubjectOrganization": "Pionix",
"ConnectorEvseIds": "DE*PNX*100001,DE*PNX*100002",
"AllowChargingProfileWithoutStartSchedule": false,
"WaitForStopTransactionsOnResetTimeout": 60,
"QueueAllMessages": true,
"MessageTypesDiscardForQueueing": "Heartbeat",
"MessageQueueSizeThreshold": 5000,
"SupportedMeasurands": "Energy.Active.Import.Register,Energy.Active.Export.Register,Power.Active.Import,Voltage,Current.Import,Frequency,Current.Offered,Power.Offered,SoC",
"MaxMessageSize": 65000,
"TLSKeylogFile": "/tmp/ocpp_tls_keylog.txt",
"EnableTLSKeylog": false
},
"Core": {
"AllowOfflineTxForUnknownId": true,
"AuthorizationCacheEnabled": true,
"AuthorizeRemoteTxRequests": true,
"BlinkRepeat": 0,
"ClockAlignedDataInterval": 900,
"ConnectionTimeOut": 120,
"ConnectorPhaseRotation": "RST0.RST,1.RST,2.RTS",
"ConnectorPhaseRotationMaxLength": 100,
"GetConfigurationMaxKeys": 1024,
"HeartbeatInterval": 900,
"LightIntensity": 0,
"LocalAuthorizeOffline": true,
"LocalPreAuthorize": true,
"MaxEnergyOnInvalidId": 500,
"MeterValuesAlignedData": "Energy.Active.Import.Register",
"MeterValuesAlignedDataMaxLength": 1024,
"MeterValuesSampledData": "Energy.Active.Import.Register",
"MeterValuesSampledDataMaxLength": 1024,
"MeterValueSampleInterval": 300,
"MinimumStatusDuration": 1,
"NumberOfConnectors": 2,
"ResetRetries": 1,
"StopTransactionOnEVSideDisconnect": true,
"StopTransactionOnInvalidId": true,
"StopTxnAlignedData": "Energy.Active.Import.Register",
"StopTxnAlignedDataMaxLength": 1024,
"StopTxnSampledData": "Energy.Active.Import.Register",
"StopTxnSampledDataMaxLength": 1024,
"SupportedFeatureProfiles": "Core,FirmwareManagement,RemoteTrigger,Reservation,LocalAuthListManagement,SmartCharging",
"SupportedFeatureProfilesMaxLength": 1024,
"TransactionMessageAttempts": 1,
"TransactionMessageRetryInterval": 10,
"UnlockConnectorOnEVSideDisconnect": true,
"WebSocketPingInterval": 10
},
"LocalAuthListManagement": {
"LocalAuthListEnabled": true,
"LocalAuthListMaxLength": 1024,
"SendLocalListMaxLength": 1024
},
"SmartCharging": {
"ChargeProfileMaxStackLevel": 1000,
"ChargingScheduleAllowedChargingRateUnit": "Current,Power",
"ChargingScheduleMaxPeriods": 1000,
"ConnectorSwitch3to1PhaseSupported": true,
"MaxChargingProfilesInstalled": 1000
},
"FirmwareManagement": {
"SupportedFileTransferProtocols": "FTP"
},
"Reservation": {
"ReserveConnectorZeroSupported": false
},
"Security": {
"AdditionalRootCertificateCheck": false,
"AuthorizationKey": "DEADBEEFDEADBEEF",
"CertificateSignedMaxChainSize": 10000,
"CertificateStoreMaxLength": 1000,
"CpoName": "Pionix",
"SecurityProfile": 1,
"DisableSecurityEventNotifications": false
},
"PnC": {
"ISO15118CertificateManagementEnabled": true,
"ISO15118PnCEnabled": true,
"CentralContractValidationAllowed": true,
"CertSigningWaitMinimum": 30,
"CertSigningRepeatTimes": 2,
"ContractValidationOffline": true
},
"CostAndPrice": {
"CustomDisplayCostAndPrice": true,
"NumberOfDecimalsForCostValues": 4,
"DefaultPrice":
{
"priceText": "This is the price",
"priceTextOffline": "Show this price text when offline!",
"chargingPrice":
{
"kWhPrice": 3.14,
"hourPrice": 0.42
}
},
"DefaultPriceText":
{
"priceTexts":
[
{
"priceText": "This is the price",
"priceTextOffline": "Show this price text when offline!",
"language": "en"
},
{
"priceText": "Dit is de prijs",
"priceTextOffline": "Laat dit zien wanneer de charging station offline is!",
"language": "nl"
},
{
"priceText": "Dette er prisen",
"priceTextOffline": "Vis denne pristeksten når du er frakoblet",
"language": "nb_NO"
}
]
},
"TimeOffset": "02:00",
"NextTimeOffsetTransitionDateTime": "2024-01-01T00:00:00",
"TimeOffsetNextTransition": "01:00",
"CustomIdleFeeAfterStop": false,
"SupportedLanguages": "en, nl, de, nb_NO",
"CustomMultiLanguageMessages": true,
"Language": "en",
"WaitForSetUserPriceTimeout": 5000
}
}

View File

@@ -0,0 +1,59 @@
{
"Internal": {
"ChargePointId": "cp001",
"CentralSystemURI": "127.0.0.1:8180/steve/websocket/CentralSystemService/",
"ChargeBoxSerialNumber": "cp001",
"ChargePointModel": "Yeti",
"ChargePointVendor": "Pionix",
"FirmwareVersion": "0.1",
"LogMessagesFormat": []
},
"Core": {
"AuthorizeRemoteTxRequests": false,
"ClockAlignedDataInterval": 900,
"ConnectionTimeOut": 10,
"ConnectorPhaseRotation": "0.RST,1.RST",
"GetConfigurationMaxKeys": 100,
"HeartbeatInterval": 86400,
"LocalAuthorizeOffline": false,
"LocalPreAuthorize": false,
"MeterValuesAlignedData": "Energy.Active.Import.Register",
"MeterValuesSampledData": "Energy.Active.Import.Register",
"MeterValueSampleInterval": 0,
"NumberOfConnectors": 1,
"ResetRetries": 1,
"StopTransactionOnEVSideDisconnect": true,
"StopTransactionOnInvalidId": true,
"StopTxnAlignedData": "Energy.Active.Import.Register",
"StopTxnSampledData": "Energy.Active.Import.Register",
"SupportedFeatureProfiles": "Core,FirmwareManagement,RemoteTrigger,Reservation,LocalAuthListManagement,SmartCharging",
"TransactionMessageAttempts": 1,
"TransactionMessageRetryInterval": 10,
"UnlockConnectorOnEVSideDisconnect": true
},
"FirmwareManagement": {
"SupportedFileTransferProtocols": "FTP"
},
"LocalAuthListManagement": {
"LocalAuthListEnabled": true,
"LocalAuthListMaxLength": 42,
"SendLocalListMaxLength": 42
},
"SmartCharging": {
"ChargeProfileMaxStackLevel": 42,
"ChargingScheduleAllowedChargingRateUnit": "Current",
"ChargingScheduleMaxPeriods": 42,
"MaxChargingProfilesInstalled": 42
},
"Security": {
"SecurityProfile": 0
},
"PnC": {
"ISO15118CertificateManagementEnabled": true,
"ISO15118PnCEnabled": true,
"ContractValidationOffline": true
},
"CostAndPrice": {
"CustomDisplayCostAndPrice": false
}
}

View File

@@ -0,0 +1,61 @@
PRAGMA foreign_keys = ON;
CREATE TABLE CONNECTORS (
ID INT PRIMARY KEY NOT NULL,
AVAILABILITY TEXT
);
CREATE TABLE AUTH_CACHE (
ID_TAG TEXT PRIMARY KEY NOT NULL,
AUTH_STATUS TEXT NOT NULL,
EXPIRY_DATE TEXT,
PARENT_ID_TAG TEXT
);
CREATE TABLE AUTH_LIST_VERSION (
ID INT PRIMARY KEY NOT NULL,
VERSION INT
);
CREATE TABLE AUTH_LIST (
ID_TAG TEXT PRIMARY KEY NOT NULL,
AUTH_STATUS TEXT NOT NULL,
EXPIRY_DATE TEXT,
PARENT_ID_TAG TEXT
);
CREATE TABLE TRANSACTIONS (
ID INT PRIMARY KEY NOT NULL,
TRANSACTION_ID INT,
CONNECTOR INT NOT NULL,
ID_TAG_START TEXT NOT NULL,
TIME_START TEXT NOT NULL,
METER_START INT NOT NULL,
CSMS_ACK INT NOT NULL,
METER_LAST INT NOT NULL,
METER_LAST_TIME TEXT NOT NULL,
LAST_UPDATE TEXT NOT NULL,
RESERVATION_ID INT,
PARENT_ID_TAG TEXT,
ID_TAG_END TEXT,
TIME_END TEXT,
METER_STOP INT,
STOP_REASON TEXT,
FOREIGN KEY(CONNECTOR) REFERENCES CONNECTORS(ID)
);
INSERT
OR IGNORE INTO AUTH_LIST_VERSION (ID, VERSION)
VALUES (0, 0);
CREATE TABLE CHARGING_PROFILES (
ID INT PRIMARY KEY NOT NULL,
CONNECTOR_ID INT NOT NULL,
PROFILE TEXT NOT NULL
);
CREATE TABLE OCSP_REQUEST (
LAST_UPDATE TEXT PRIMARY KEY NOT NULL
);
CREATE TABLE TRANSACTION_QUEUE(
UNIQUE_ID TEXT PRIMARY KEY NOT NULL,
MESSAGE TEXT NOT NULL,
MESSAGE_TYPE TEXT NOT NULL,
MESSAGE_ATTEMPTS INT NOT NULL,
MESSAGE_TIMESTAMP TEXT NOT NULL
);

View File

@@ -0,0 +1,2 @@
ALTER TABLE TRANSACTIONS DROP COLUMN START_TRANSACTION_MESSAGE_ID;
ALTER TABLE TRANSACTIONS DROP COLUMN STOP_TRANSACTION_MESSAGE_ID;

View File

@@ -0,0 +1,3 @@
ALTER TABLE TRANSACTIONS ADD COLUMN START_TRANSACTION_MESSAGE_ID TEXT NOT NULL DEFAULT "";
ALTER TABLE TRANSACTIONS ADD COLUMN STOP_TRANSACTION_MESSAGE_ID TEXT;
UPDATE TRANSACTIONS SET CSMS_ACK = 1;

View File

@@ -0,0 +1 @@
DROP TABLE NORMAL_QUEUE;

View File

@@ -0,0 +1,7 @@
CREATE TABLE NORMAL_QUEUE(
UNIQUE_ID TEXT PRIMARY KEY NOT NULL,
MESSAGE TEXT NOT NULL,
MESSAGE_TYPE TEXT NOT NULL,
MESSAGE_ATTEMPTS INT NOT NULL,
MESSAGE_TIMESTAMP TEXT NOT NULL
);

View File

@@ -0,0 +1,3 @@
CREATE TABLE OCSP_REQUEST (
LAST_UPDATE TEXT PRIMARY KEY NOT NULL
);

View File

@@ -0,0 +1 @@
DROP TABLE OCSP_REQUEST;

View File

@@ -0,0 +1,49 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for OCPP 1.6 config",
"type": "object",
"required": [
"Internal",
"Core",
"Security"
],
"properties": {
"Internal": {
"type": "object",
"$ref": "Internal.json"
},
"Core": {
"type": "object",
"$ref": "Core.json"
},
"LocalAuthListManagement": {
"type": "object",
"$ref": "LocalAuthListManagement.json"
},
"SmartCharging": {
"type": "object",
"$ref": "SmartCharging.json"
},
"FirmwareManagement": {
"type": "object",
"$ref": "FirmwareManagement.json"
},
"Reservation": {
"type": "object",
"$ref": "Reservation.json"
},
"Security": {
"type": "object",
"$ref": "Security.json"
},
"PnC": {
"type": "object",
"$ref": "PnC.json"
},
"CostAndPrice": {
"type": "object",
"$ref": "CostAndPrice.json"
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,190 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for Core Profile config",
"type": "object",
"required": [
"AuthorizeRemoteTxRequests",
"ClockAlignedDataInterval",
"ConnectionTimeOut",
"ConnectorPhaseRotation",
"GetConfigurationMaxKeys",
"HeartbeatInterval",
"LocalAuthorizeOffline",
"LocalPreAuthorize",
"MeterValuesAlignedData",
"MeterValuesSampledData",
"MeterValueSampleInterval",
"NumberOfConnectors",
"ResetRetries",
"StopTransactionOnInvalidId",
"StopTxnAlignedData",
"StopTxnSampledData",
"SupportedFeatureProfiles",
"TransactionMessageAttempts",
"TransactionMessageRetryInterval",
"UnlockConnectorOnEVSideDisconnect"
],
"properties": {
"AllowOfflineTxForUnknownId": {
"type": "boolean",
"readOnly": false,
"description": "If this config entry exists the charge point supports Unknown Offline Auth. If it is set to true the feature is enabled"
},
"AuthorizationCacheEnabled": {
"type": "boolean",
"readOnly": false,
"description": "If this config entry exists the charge point supports an Auth Cache. If it is set to true the feature is enabled"
},
"AuthorizeRemoteTxRequests": {
"type": "boolean",
"readOnly": false,
"description": "Authorize a RemoteStartTransaction request like a local StartTransaction. Readonly setting is up to the implementation."
},
"BlinkRepeat": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"ClockAlignedDataInterval": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"ConnectionTimeOut": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"ConnectorPhaseRotation": {
"type": "string",
"readOnly": false
},
"ConnectorPhaseRotationMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"GetConfigurationMaxKeys": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"HeartbeatInterval": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"LightIntensity": {
"type": "integer",
"readOnly": false,
"minimum": 0,
"maximum": 100
},
"LocalAuthorizeOffline": {
"type": "boolean",
"readOnly": false
},
"LocalPreAuthorize": {
"type": "boolean",
"readOnly": false
},
"MaxEnergyOnInvalidId": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"MeterValuesAlignedData": {
"type": "string",
"readOnly": false
},
"MeterValuesAlignedDataMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"MeterValuesSampledData": {
"type": "string",
"readOnly": false
},
"MeterValuesSampledDataMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"MeterValueSampleInterval": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"MinimumStatusDuration": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"NumberOfConnectors": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"ResetRetries": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"StopTransactionOnEVSideDisconnect": {
"type": "boolean",
"readOnly": true
},
"StopTransactionOnInvalidId": {
"type": "boolean",
"readOnly": false
},
"StopTxnAlignedData": {
"type": "string",
"readOnly": false
},
"StopTxnAlignedDataMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"StopTxnSampledData": {
"type": "string",
"readOnly": false
},
"StopTxnSampledDataMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"SupportedFeatureProfiles": {
"type": "string",
"readOnly": true
},
"SupportedFeatureProfilesMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"TransactionMessageAttempts": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"TransactionMessageRetryInterval": {
"type": "integer",
"readOnly": false,
"minimum": 0
},
"UnlockConnectorOnEVSideDisconnect": {
"type": "boolean",
"readOnly": false
},
"WebSocketPingInterval": {
"type": "integer",
"readOnly": false,
"minimum": 0
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,141 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for cost and price config",
"type": "object",
"required": [
"CustomDisplayCostAndPrice"
],
"properties": {
"CustomDisplayCostAndPrice": {
"description": "Set to true if California Pricing Requirements is supported in this charging station.",
"type": "boolean",
"readOnly": true
},
"NumberOfDecimalsForCostValues": {
"description": "Number of decimals to use for cost / price calculations. Value is received as floating point, but is converted to an integer. This config will tell with how many decimals a number is sent.",
"type": "integer",
"readOnly": true
},
"DefaultPrice": {
"description": "Default pricing information to show to the user",
"type": "object",
"readOnly": false,
"minLength": 1,
"properties": {
"chargingPrice": {
"type": "object",
"description": "Structure with price components to use when starting a session while offline. Not needed if offline sessions are not allowed or not charged.",
"properties": {
"kWhPrice": {
"type": "number"
},
"hourPrice": {
"type": "number"
},
"flatFee": {
"type": "number"
}
}
},
"priceText": {
"description": "Text for display of price information",
"type": "string",
"minLength": 1
},
"priceTextOffline": {
"description": "Alternative text for display when charge point is offline",
"type": "string",
"minLength": 1
}
},
"required": [
"priceText"
]
},
"DefaultPriceText": {
"description": "Default pricing information in 'other than default' languages to show to the user.",
"type": "object",
"readOnly": false,
"minLength": 1,
"properties": {
"priceTexts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"priceText": {
"description": "Text for display of price information",
"type": "string",
"minLength": 1
},
"priceTextOffline": {
"description": "Alternative text for display when charge point is offline",
"type": "string",
"minLength": 1
},
"language": {
"description": "The language of the text, language code per RFC5646.",
"type": "string",
"minLength": 2
}
},
"required": [
"priceText",
"language"
]
}
}
}
},
"TimeOffset": {
"descrption": "Configured current local time offset in the format: '+01:00', '-02:00' etc. The time offset is for display purposes.",
"type": "string",
"readOnly": false,
"minLength": 1,
"maxLength": 10
},
"NextTimeOffsetTransitionDateTime": {
"description": "Date time of the next time offset transition. On this date time, the clock displayed to the EV driver will be given the new offset as configured via 'TimeOffsetNextTransition'. This can be used to manually configure the next start or end of a daylight saving time period.",
"type": "string",
"readOnly": false,
"minLength": 1,
"maxLength": 40
},
"TimeOffsetNextTransition": {
"description": "Next local time offset in the format: '+01:00', '-02:00' etc. New offset that will be set on the next time offset transition as configured via 'NextTimeOffsetTransitionDateTime'. This can be used to manually configure the offset for the start or end of the daylight saving time period",
"type": "string",
"readOnly": false,
"minLength": 1,
"maxLength": 40
},
"CustomIdleFeeAfterStop": {
"description": "A Central System normally ends a transaction upon receiving the StopTransaction.req message. If the customization to calculate an idle fee after a transaction has stopped (until connector is unplugged) has been implemented, then this must be reported in a boolean configuration key 'CustomIdleFeeAfterStop' that reports 'true' to the Central System, so that it knows, that it has to extend the transaction until receipt of the DataTransfer 'ConnectorUnplugged'.",
"type": "boolean",
"readOnly": false
},
"SupportedLanguages": {
"description": "Comma separated list of supported language codes, per RFC5646.",
"type": "string",
"readOnly": true,
"minLength": 1
},
"CustomMultiLanguageMessages": {
"description": "Set to true when the charge point provides multi language support for tariffs",
"type": "boolean",
"readOnly": true
},
"Language": {
"description": "Default language code for the stations UI. Can be changed by CSMS.",
"type": "string",
"readOnly": false,
"minLength": 1
},
"WaitForSetUserPriceTimeout": {
"description": "Timeout in milliseconds that the charge point will wait for a DataTransfer(SetUserPrice) after an Authorize.req if CustomDisplayCostAndPrice is true. If the timeout expires, the authorization response will be returned without a price",
"type": "integer",
"readOnly": false,
"minimum": 0,
"maximum": 30000
}
}
}

View File

@@ -0,0 +1,9 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for Custom configuration keys",
"$comment": "This is just an example schema and can be modified according to custom requirements",
"type": "object",
"required": [],
"properties": {}
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for Firmware Management Profile config",
"type": "object",
"required": [],
"properties": {
"SupportedFileTransferProtocols": {
"type": "string",
"readOnly": true
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,387 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for internal config",
"type": "object",
"required": [
"ChargePointId",
"CentralSystemURI",
"ChargeBoxSerialNumber",
"ChargePointModel",
"ChargePointVendor",
"FirmwareVersion"
],
"properties": {
"ChargePointId": {
"type": "string",
"readOnly": true,
"minLength": 1
},
"CentralSystemURI": {
"type": "string",
"readOnly": true,
"minLength": 1
},
"ChargeBoxSerialNumber": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 25
},
"ChargePointModel": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 20
},
"ChargePointSerialNumber": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 25
},
"ChargePointVendor": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 20
},
"FirmwareVersion": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 50
},
"ICCID": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 20
},
"HostName": {
"type": "string",
"readOnly": true,
"minLength": 1
},
"IFace": {
"type": "string",
"readOnly": true,
"minLength": 1
},
"IMSI": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 20
},
"MeterSerialNumber": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 25
},
"MeterType": {
"type": "string",
"readOnly": true,
"minLength": 1,
"maxLength": 25
},
"SupportedCiphers12": {
"type": "array",
"items": {
"type": "string"
},
"readOnly": true,
"default": [
"ECDHE-ECDSA-AES128-GCM-SHA256",
"ECDHE-ECDSA-AES256-GCM-SHA384",
"AES128-GCM-SHA256",
"AES256-GCM-SHA384"
]
},
"SupportedCiphers13": {
"type": "array",
"items": {
"type": "string"
},
"readOnly": true,
"default": [
"TLS_AES_256_GCM_SHA384",
"TLS_AES_128_GCM_SHA256"
]
},
"UseTPM": {
"$comment": "Indicates if TPM is used to generate and retrieve private keys for the CSMS leaf certificate",
"type": "boolean",
"readOnly": true,
"default": false
},
"UseTPMSeccLeafCertificate": {
"$comment": "Indicates if TPM is used to generate and retrieve private keys for the SECC leaf certificate",
"type": "boolean",
"readOnly": true,
"default": false
},
"RetryBackoffRandomRange": {
"$comment": "maximum value for the random part of the websocket reconnect back-off time",
"type": "integer",
"readOnly": false,
"default": 10
},
"RetryBackoffRepeatTimes": {
"$comment": "amount of times previous reconnect back-off time will be doubled",
"type": "integer",
"readOnly": false,
"default": 3
},
"RetryBackoffWaitMinimum": {
"$comment": "minimum back-off time of the first reconnect",
"type": "integer",
"readOnly": false,
"default": 3
},
"AuthorizeConnectorZeroOnConnectorOne": {
"$comment": "Automatically authorize id tags on connector 1 when there is only one connector",
"type": "boolean",
"readOnly": true,
"default": true
},
"LogMessages": {
"$comment": "Automatically log all sent and received messages to a temporary file at /tmp/libocpp_messages_<LIBOCPP_START_TIMESTAMP>.txt",
"type": "boolean",
"readOnly": true,
"default": true
},
"LogMessagesRaw": {
"$comment": "If messages are additionally supposed to be logged without parsing them first. This can be useful to log and debug messages that violate the schema.",
"type": "boolean",
"readOnly": true,
"default": false
},
"LogMessagesFormat": {
"$comment": "Supported log formats are console, log, html, console_detailed, session_logging, callback and security. \"security\" logs security events into a seperate logfile",
"type": "array",
"items": {
"type": "string"
},
"readOnly": true,
"default": [
"log",
"html",
"session_logging",
"security"
]
},
"LogRotation": {
"$comment": "Enable log rotation",
"type": "boolean",
"readOnly": true,
"default": false
},
"LogRotationDateSuffix": {
"$comment": "Use a datetime suffix in log rotation files instead of the traditional .0, .1",
"type": "boolean",
"readOnly": true,
"default": false
},
"LogRotationMaximumFileSize": {
"$comment": "Maximum file size in bytes for the log file after which it will be rotated. Setting this to 0 disables log rotation.",
"type": "integer",
"readOnly": true,
"default": 0,
"minimum": 0
},
"LogRotationMaximumFileCount": {
"$comment": "Maximum amount of files before rotated logs will be deleted. Setting this to 0 disables log rotation.",
"type": "integer",
"readOnly": true,
"default": 0,
"minimum": 0
},
"SupportedChargingProfilePurposeTypes": {
"$comment": "Indicates which ChargingProfilePurposeTypes are supported. SetChargingProfile.req for profiles not listed will be rejected.",
"type": "array",
"items": {
"type": "string"
},
"readOnly": true,
"default": [
"ChargePointMaxProfile",
"TxDefaultProfile",
"TxProfile"
]
},
"IgnoredProfilePurposesOffline": {
"$comment": "Allows configuration of comma seperated list of ChargingProfilePurposes that are ignored in the composite schedule caluclation when offline.",
"type": "string",
"readOnly": false
},
"MaxCompositeScheduleDuration": {
"$comment": "Maximum duration in seconds of GetCompositeSchedule.req. For GetCompositeSchedule.req with a greater duration the schedule for only the MaxCompositeScheduleDuration will be calculated",
"type": "integer",
"readOnly": true,
"default": 31536000
},
"CompositeScheduleDefaultLimitAmps": {
"description": "Default amps limit applied when composite schedule is calculated and no limit was provided by the CSMS",
"type": "number",
"readOnly": false,
"default": 48,
"minimum": 0
},
"CompositeScheduleDefaultLimitWatts": {
"description": "Default watts limit applied when composite schedule is calculated and no limit was provided by the CSMS",
"type": "number",
"readOnly": false,
"default": 33120,
"minimum": 0
},
"CompositeScheduleDefaultNumberPhases": {
"description": "Default number of phases applied when composite schedule is calculated and no limit was provided by the CSMS",
"type": "number",
"readOnly": false,
"default": 3,
"minimum": 1,
"maximum": 3
},
"SupplyVoltage": {
"description": "Supply voltage of the grid. This value is only used in case a conversion between smart charging amp and watt limits is required",
"type": "number",
"readOnly": false,
"default": 230,
"minimum": 0
},
"WebsocketPingPayload": {
"$comment": "The payload sent in a websocket ping.",
"type": "string",
"readOnly": true,
"default": "hello there"
},
"WebsocketPongTimeout": {
"$comment": "Maximum timeout for receiving a pong message in seconds",
"type": "integer",
"readOnly": true,
"default": 5
},
"UseSslDefaultVerifyPaths": {
"$comment": "Use default verify paths for validating CSMS server certificate",
"type": "boolean",
"readOnly": true,
"default": true
},
"VerifyCsmsCommonName": {
"$comment": "Verify that the CSMS certificates commonName matches the CSMS FQDN",
"type": "boolean",
"readOnly": true,
"default": true
},
"VerifyCsmsAllowWildcards": {
"$comment": "Allow wildcards when verifying the CSMS commonName",
"type": "boolean",
"readOnly": false,
"default": false
},
"OcspRequestInterval": {
"$comment": "Interval in seconds used to request OCSP revocation status information on the CSO Sub-CA certificates",
"type": "integer",
"readOnly": false,
"default": 604800,
"minimum": 86400
},
"SeccLeafSubjectCommonName": {
"$comment": "Common Name(s) of the SECC (EVSE) leaf certificate(s). The CN must be a SECCID. The field can contain optional multiple SECCIDs if necessary.",
"type": "string",
"readOnly": false,
"minLength": 7,
"maxLength": 64
},
"SeccLeafSubjectCountry": {
"$comment": "County of the SECC (EVSE) leaf certificate. Indicates in which country the CPO operates.",
"type": "string",
"readOnly": false,
"minLength": 2,
"maxLength": 2
},
"SeccLeafSubjectOrganization": {
"$comment": "Organization of the SECC (EVSE) leaf certificate. Indicates which CPO operates this EVSE. Example: Hubject GmbH",
"type": "string",
"readOnly": false,
"minLength": 0,
"maxLength": 64
},
"ConnectorEvseIds": {
"$comment": "Comma separated EVSEIDs for OCPP connectors starting with connector 1 in one string.",
"type": "string",
"readOnly": false,
"minLength": 7,
"maxLength": 1000
},
"AllowChargingProfileWithoutStartSchedule": {
"$comment": "OCPP1.6 specifies that for certain ChargingProfiles the startSchedule field needs to be set. This flag ignores this requirement and will accept those profiles without startSchedule, assuming startSchedule is now.",
"type": "boolean",
"readOnly": false
},
"WaitForStopTransactionsOnResetTimeout": {
"$comment": "Specifies the timeout that is used when transactions are stopped because of a Reset.req . If timeout exceeds, the reset callback is executed even if StopTransaction.conf messages not yet received for transactions that have been active.",
"type": "integer",
"readOnly": false,
"minimum": 0,
"default": 60
},
"QueueAllMessages": {
"$comment": "If set to true, also non-transactional messages are queued in memory in case they cannot be sent immediately.",
"type": "boolean",
"readOnly": true
},
"MessageTypesDiscardForQueueing": {
"$comment": "Comma seperated list of message types that shall not be queued (when offline) even in case QueueAllMessages is true. If QueueAllMessages is false, the configuration of this paramater has no effect.",
"type": "string",
"readOnly": true
},
"MessageQueueSizeThreshold": {
"$comment": "Threshold for the size of in-memory message queues used to buffer messages (and store e.g. while offline). If threshold is exceeded, messages will be dropped according to OCPP specification to avoid memory issues.",
"type": "integer",
"readOnly": true,
"minimum": 1
},
"SupportedMeasurands": {
"$comment": "Comma separated list of supported measurands of the powermeter",
"type": "string",
"readOnly": true,
"default": "Energy.Active.Import.Register,Energy.Active.Export.Register,Power.Active.Import,Voltage,Current.Import,Frequency,Current.Offered,Power.Offered,SoC,Temperature"
},
"MaxMessageSize": {
"$comment": "Maximum size in bytes for messages sent to the CSMS via websocket. If a message exceeds this size, data of the message may be dropped",
"type": "integer",
"readOnly": true,
"minimum": 32000,
"default": 65000
},
"TLSKeylogFile": {
"$comment": "The file to which the OCPP TLS keylog in SSLKEYLOGFILE format is written to.",
"type": "string",
"readOnly": true,
"default": "/tmp/ocpp_tls_keylog.txt"
},
"EnableTLSKeylog": {
"$comment": "If the TLS keylogging is enabled.",
"type": "boolean",
"readOnly": true,
"default": false
},
"StopTransactionIfUnlockNotSupported": {
"$comment": "If true, a transaction is stopped on an Unlock.req even if unlocking is not supported",
"type": "boolean",
"readOnly": false,
"default": false
},
"MeterPublicKeys": {
"$comment": "The public key of the meter in formatted according the Signed Meter Values Whitepaper of OCPP. The first element represents the public key for connector id 1, the second for connector id 2, and so on.",
"type": "array",
"readOnly": true,
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,27 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for Local Auth List Management Profile config",
"type": "object",
"required": [
"LocalAuthListEnabled",
"LocalAuthListMaxLength",
"SendLocalListMaxLength"
],
"properties": {
"LocalAuthListEnabled": {
"type": "boolean",
"readOnly": false
},
"LocalAuthListMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"SendLocalListMaxLength": {
"type": "integer",
"readOnly": true,
"minimum": 0
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,41 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for ISO15118 PnC extension",
"type": "object",
"required": ["ISO15118PnCEnabled", "ContractValidationOffline"],
"properties": {
"ISO15118CertificateManagementEnabled": {
"type": "boolean",
"description": "If this variable set to true, then the Charge Point supports ISO 15118 plug and charge messages via the DataTransfer mechanism as described in the application note. It also enables the mechanism to trigger SECC leaf certificate updates if the existing certificate is about to expire.",
"readOnly": false,
"default": false
},
"ISO15118PnCEnabled": {
"type": "boolean",
"description": "If this variable set to true, then the Charge Point supports ISO 15118 plug and charge authorization via contract certificates.",
"readOnly": false
},
"CentralContractValidationAllowed": {
"type": "boolean",
"description": "If this variable exists and has the value true, then the Charge Point can provide a contract certificate that it cannot validate to the Central System for validation as part of the Authorize.req.",
"readOnly": false
},
"CertSigningWaitMinimum": {
"type": "integer",
"description": "This configuration key defines how long the Charge Point has to wait (in seconds) before generating another CSR, in the case the Central System accepts the SignCertificate.req, but never returns the signed certificate back.",
"minimum": 0,
"readOnly": false
},
"CertSigningRepeatTimes": {
"type": "integer",
"description": "This configuration key can be used to configure the amount of times the Charge Point SHALL double the previous back-off time",
"minimum": 0,
"readOnly": false
},
"ContractValidationOffline": {
"type": "boolean",
"description": "If this variable is true, then the Charge Point will try to validate a contract certificate when it is offline.",
"readOnly": false
}
}
}

View File

@@ -0,0 +1,13 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for Reservation Profile config",
"type": "object",
"required": [],
"properties": {
"ReserveConnectorZeroSupported": {
"type": "boolean",
"readOnly": true
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,52 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for Security Profile config",
"type": "object",
"required": [
"SecurityProfile"
],
"properties": {
"AdditionalRootCertificateCheck": {
"type": "boolean",
"description": "When set to true, only one certificate (plus a temporarily fallback certificate) of certificateType CentralSystemRootCertificate is allowed to be installed at a time",
"readOnly": true
},
"AuthorizationKey": {
"type": "string",
"description": "The basic authentication password is used for HTTP Basic Authentication",
"minLength": 8,
"readOnly": false
},
"CertificateSignedMaxChainSize": {
"type": "integer",
"description": "This configuration key can be used to limit the size of the 'certificateChain' field from the CertificateSigned.req PDU.",
"maximum": 10000,
"readOnly": true
},
"CertificateStoreMaxLength": {
"type": "integer",
"description": "Maximum number of Root/CA certificates that can be installed in the Charge Point.",
"minimum": 0,
"readOnly": true
},
"CpoName": {
"type": "string",
"description": "This configuration key contains CPO name (or an organization trusted by the CPO) as used in the Charge Point Certificate.",
"readOnly": false
},
"SecurityProfile": {
"type": "integer",
"default": 0,
"minimum": 0,
"maximum": 3,
"description": "This configuration key is used to set the security profile used by the Charge Point",
"readOnly": false
},
"DisableSecurityEventNotifications": {
"type": "boolean",
"description": "When set to true, no SecurityEventNotification.req messages will be sent by the Charge Point",
"readOnly": false,
"default": false
}
}
}

View File

@@ -0,0 +1,40 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Json schema for Smart Charging Profile config",
"type": "object",
"required": [
"ChargeProfileMaxStackLevel",
"ChargingScheduleAllowedChargingRateUnit",
"ChargingScheduleMaxPeriods",
"MaxChargingProfilesInstalled"
],
"properties": {
"ChargeProfileMaxStackLevel": {
"type": "integer",
"readOnly": true,
"minimum": 0
},
"ChargingScheduleAllowedChargingRateUnit": {
"type": "string",
"readOnly": true,
"default": "Current,Power"
},
"ChargingScheduleMaxPeriods": {
"type": "integer",
"readOnly": true,
"minimum": 0,
"default": 1440
},
"ConnectorSwitch3to1PhaseSupported": {
"type": "boolean",
"readOnly": true
},
"MaxChargingProfilesInstalled": {
"type": "integer",
"readOnly": true,
"minimum": 0,
"default": 500
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,3 @@
*
!.gitignore
!README.md

View File

@@ -0,0 +1,184 @@
# OCPP 1.6 to OCPP 2.x mapping
This documents how OCPP 1.6 configuration keys map to the OCPP 2.x Device Model.
It is intended as a **human-readable reference** for integrators and maintainers.
The implementation in code (for example `known_keys` conversion logic and patching behaviour) remains authoritative.
## Core Profile
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 1 | `AllowOfflineTxForUnknownId` | VariableAttribute | `AuthCtrlr` | `OfflineTxForUnknownIdEnabled` | `Actual` |
| 2 | `AuthorizationCacheEnabled` | VariableAttribute | `AuthCacheCtrlr` | `Enabled` | `Actual` |
| 3 | `AuthorizeRemoteTxRequests` | VariableAttribute | `AuthCtrlr` | `AuthorizeRemoteStart` | `Actual` |
| 5 | `ClockAlignedDataInterval` | VariableAttribute | `AlignedDataCtrlr` | `Interval` | `Actual` |
| 6 | `ConnectionTimeOut` | VariableAttribute | `TxCtrlr` | `EVConnectionTimeOut` | `Actual` |
| 7 | `HeartbeatInterval` | VariableAttribute | `OCPPCommCtrlr` | `HeartbeatInterval` | `Actual` |
| 8 | `LocalAuthorizeOffline` | VariableAttribute | `AuthCtrlr` | `LocalAuthorizeOffline` | `Actual` |
| 9 | `LocalPreAuthorize` | VariableAttribute | `AuthCtrlr` | `LocalPreAuthorize` | `Actual` |
| 10 | `MaxEnergyOnInvalidId` | VariableAttribute | `TxCtrlr` | `MaxEnergyOnInvalidId` | `Actual` |
| 11 | `MeterValuesAlignedData` | VariableAttribute | `AlignedDataCtrlr` | `Measurands` | `Actual` |
| 12 | `MeterValuesAlignedDataMaxLength` | VariableCharacteristics | `AlignedDataCtrlr` | `Measurands` | `maxLimit` |
| 13 | `MeterValuesSampledData` | VariableAttribute | `SampledDataCtrlr` | `TxUpdatedMeasurands` | `Actual` |
| 14 | `MeterValuesSampledDataMaxLength` | VariableCharacteristics | `SampledDataCtrlr` | `TxUpdatedMeasurands` | `maxLimit` |
| 15 | `MeterValueSampleInterval` | VariableAttribute | `SampledDataCtrlr` | `TxUpdatedInterval` | `Actual` |
| 16 | `ResetRetries` | VariableAttribute | `OCPPCommCtrlr` | `ResetRetries` | `Actual` |
| 17 | `StopTransactionOnInvalidId` | VariableAttribute | `TxCtrlr` | `StopTxOnInvalidId` | `Actual` |
| 18 | `StopTxnAlignedData` | VariableAttribute | `AlignedDataCtrlr` | `TxEndedMeasurands` | `Actual` |
| 19 | `StopTxnAlignedDataMaxLength` | VariableCharacteristics | `AlignedDataCtrlr` | `TxEndedMeasurands` | `maxLimit` |
| 20 | `StopTxnSampledData` | VariableAttribute | `SampledDataCtrlr` | `TxEndedMeasurands` | `Actual` |
| 21 | `StopTxnSampledDataMaxLength` | VariableCharacteristics | `SampledDataCtrlr` | `TxEndedMeasurands` | `maxLimit` |
| 22 | `TransactionMessageAttempts` | VariableAttribute | `OCPPCommCtrlr` | `MessageAttempts` | `Actual` |
| 23 | `TransactionMessageRetryInterval` | VariableAttribute | `OCPPCommCtrlr` | `MessageAttemptInterval` | `Actual` |
| 24 | `WebSocketPingInterval` | VariableAttribute | `OCPPCommCtrlr` | `WebSocketPingInterval` | `Actual` |
| 25 | `LocalAuthListEnabled` | VariableAttribute | `LocalAuthListCtrlr` | `Enabled` | `Actual` |
| 26 | `ChargeProfileMaxStackLevel` | VariableAttribute | `SmartChargingCtrlr` | `ProfileStackLevel` | `Actual` |
| 27 | `ChargingScheduleAllowedChargingRateUnit` | VariableAttribute | `SmartChargingCtrlr` | `RateUnit` | `Actual` |
| 28 | `ChargingScheduleMaxPeriods` | VariableAttribute | `SmartChargingCtrlr` | `PeriodsPerSchedule` | `Actual` |
| 29 | `ConnectorSwitch3to1PhaseSupported` | VariableAttribute | `SmartChargingCtrlr` | `Phases3to1` | `Actual` |
| 30 | `SupportedFileTransferProtocols` | VariableAttribute | `OCPPCommCtrlr` | `FileTransferProtocols` | `Actual` |
## Internal Keys
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 31 | `ChargePointId` | VariableAttribute | `InternalCtrlr` | `ChargePointId` | `Actual` |
| 32 | `ChargeBoxSerialNumber` | VariableAttribute | `InternalCtrlr` | `ChargeBoxSerialNumber` | `Actual` |
| 33 | `ChargePointModel` | VariableAttribute | `InternalCtrlr` | `ChargePointModel` | `Actual` |
| 34 | `ChargePointSerialNumber` | VariableAttribute | `InternalCtrlr` | `ChargePointSerialNumber` | `Actual` |
| 35 | `ChargePointVendor` | VariableAttribute | `InternalCtrlr` | `ChargePointVendor` | `Actual` |
| 36 | `FirmwareVersion` | VariableAttribute | `InternalCtrlr` | `FirmwareVersion` | `Actual` |
| 37 | `ICCID` | VariableAttribute | `InternalCtrlr` | `ICCID` | `Actual` |
| 38 | `IFace` | VariableAttribute | `InternalCtrlr` | `IFace` | `Actual` |
| 39 | `IMSI` | VariableAttribute | `InternalCtrlr` | `IMSI` | `Actual` |
| 40 | `MeterSerialNumber` | VariableAttribute | `InternalCtrlr` | `MeterSerialNumber` | `Actual` |
| 41 | `MeterType` | VariableAttribute | `InternalCtrlr` | `MeterType` | `Actual` |
| 42 | `SupportedCiphers12` | VariableAttribute | `InternalCtrlr` | `SupportedCiphers12` | `Actual` |
| 43 | `SupportedCiphers13` | VariableAttribute | `InternalCtrlr` | `SupportedCiphers13` | `Actual` |
| 44 | `UseTPM` | VariableAttribute | `InternalCtrlr` | `UseTPM` | `Actual` |
| 45 | `UseTPMSeccLeafCertificate` | VariableAttribute | `InternalCtrlr` | `UseTPMSeccLeafCertificate` | `Actual` |
| 46 | `RetryBackoffRandomRange` | VariableAttribute | `OCPPCommCtrlr` | `RetryBackOffRandomRange` | `Actual` |
| 47 | `RetryBackoffRepeatTimes` | VariableAttribute | `OCPPCommCtrlr` | `RetryBackOffRepeatTimes` | `Actual` |
| 48 | `AuthorizeConnectorZeroOnConnectorOne` | VariableAttribute | `InternalCtrlr` | `AuthorizeConnectorZeroOnConnectorOne` | `Actual` |
| 49 | `LogMessages` | VariableAttribute | `InternalCtrlr` | `LogMessages` | `Actual` |
| 50 | `LogMessagesRaw` | VariableAttribute | `InternalCtrlr` | `LogMessagesRaw` | `Actual` |
| 51 | `LogMessagesFormat` | VariableAttribute | `InternalCtrlr` | `LogMessagesFormat` | `Actual` |
| 52 | `LogRotation` | VariableAttribute | `InternalCtrlr` | `LogRotation` | `Actual` |
| 53 | `LogRotationDateSuffix` | VariableAttribute | `InternalCtrlr` | `LogRotationDateSuffix` | `Actual` |
| 54 | `LogRotationMaximumFileSize` | VariableAttribute | `InternalCtrlr` | `LogRotationMaximumFileSize` | `Actual` |
| 55 | `LogRotationMaximumFileCount` | VariableAttribute | `InternalCtrlr` | `LogRotationMaximumFileCount` | `Actual` |
| 56 | `SupportedChargingProfilePurposeTypes` | VariableAttribute | `InternalCtrlr` | `SupportedChargingProfilePurposeTypes` | `Actual` |
| 57 | `IgnoredProfilePurposesOffline` | VariableAttribute | `SmartChargingCtrlr` | `IgnoredProfilePurposesOffline` | `Actual` |
| 58 | `MaxCompositeScheduleDuration` | VariableAttribute | `InternalCtrlr` | `MaxCompositeScheduleDuration` | `Actual` |
| 59 | `CompositeScheduleDefaultLimitAmps` | VariableAttribute | `SmartChargingCtrlr` | `CompositeScheduleDefaultLimitAmps` | `Actual` |
| 60 | `CompositeScheduleDefaultLimitWatts` | VariableAttribute | `SmartChargingCtrlr` | `CompositeScheduleDefaultLimitWatts` | `Actual` |
| 61 | `CompositeScheduleDefaultNumberPhases` | VariableAttribute | `SmartChargingCtrlr` | `CompositeScheduleDefaultNumberPhases` | `Actual` |
| 62 | `SupplyVoltage` | VariableAttribute | `SmartChargingCtrlr` | `SupplyVoltage` | `Actual` |
| 63 | `WebsocketPingPayload` | VariableAttribute | `InternalCtrlr` | `WebsocketPingPayload` | `Actual` |
| 64 | `WebsocketPongTimeout` | VariableAttribute | `InternalCtrlr` | `WebsocketPongTimeout` | `Actual` |
| 65 | `UseSslDefaultVerifyPaths` | VariableAttribute | `InternalCtrlr` | `UseSslDefaultVerifyPaths` | `Actual` |
| 66 | `VerifyCsmsCommonName` | VariableAttribute | `InternalCtrlr` | `VerifyCsmsCommonName` | `Actual` |
| 67 | `VerifyCsmsAllowWildcards` | VariableAttribute | `InternalCtrlr` | `VerifyCsmsAllowWildcards` | `Actual` |
| 68 | `OcspRequestInterval` | VariableAttribute | `InternalCtrlr` | `OcspRequestInterval` | `Actual` |
| 69 | `SeccLeafSubjectCommonName` | VariableAttribute | `ISO15118Ctrlr` | `SeccId` | `Actual` |
| 70 | `SeccLeafSubjectCountry` | VariableAttribute | `ISO15118Ctrlr` | `CountryName` | `Actual` |
| 71 | `SeccLeafSubjectOrganization` | VariableAttribute | `ISO15118Ctrlr` | `OrganizationName` | `Actual` |
| 72 | `QueueAllMessages` | VariableAttribute | `OCPPCommCtrlr` | `QueueAllMessages` | `Actual` |
| 73 | `MessageTypesDiscardForQueueing` | VariableAttribute | `OCPPCommCtrlr` | `MessageTypesDiscardForQueueing` | `Actual` |
| 74 | `MessageQueueSizeThreshold` | VariableAttribute | `InternalCtrlr` | `MessageQueueSizeThreshold` | `Actual` |
| 75 | `MaxMessageSize` | VariableAttribute | `InternalCtrlr` | `MaxMessageSize` | `Actual` |
| 76 | `TLSKeylogFile` | VariableAttribute | `InternalCtrlr` | `TLSKeylogFile` | `Actual` |
| 77 | `EnableTLSKeylog` | VariableAttribute | `InternalCtrlr` | `EnableTLSKeylog` | `Actual` |
| 78 | `NumberOfConnectors` | OCPP1.6-specific | `InternalCtrlr` | `NumberOfConnectors` | `Actual` |
| 79 | `RetryBackoffWaitMinimum` | VariableAttribute | `OCPPCommCtrlr` | `RetryBackOffWaitMinimum` | `Actual` |
## Local Auth List Management Profile
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 80 | `LocalAuthListMaxLength` | VariableCharacteristics | `LocalAuthListCtrlr` | `Entries` | `maxLimit` |
| 81 | `SendLocalListMaxLength` | VariableAttribute | `LocalAuthListCtrlr` | `ItemsPerMessage` | `maxLimit` |
## Smart Charging Profile
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 82 | `MaxChargingProfilesInstalled` | VariableCharacteristics | `SmartChargingCtrlr` | `Entries` | `maxLimit` |
## Security Profile
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 83 | `AdditionalRootCertificateCheck` | VariableAttribute | `SecurityCtrlr` | `AdditionalRootCertificateCheck` | `Actual` |
| 84 | `CertificateSignedMaxChainSize` | VariableAttribute | `SecurityCtrlr` | `MaxCertificateChainSize` | `Actual` |
| 85 | `CpoName` | VariableAttribute | `SecurityCtrlr` | `OrganizationName` | `Actual` |
| 86 | `CertSigningWaitMinimum` | VariableAttribute | `SecurityCtrlr` | `CertSigningWaitMinimum` | `Actual` |
| 87 | `CertSigningRepeatTimes` | VariableAttribute | `SecurityCtrlr` | `CertSigningRepeatTimes` | `Actual` |
| 88 | `CertificateStoreMaxLength` | VariableAttribute | `SecurityCtrlr` | `CertificateEntries` | `Actual` |
## PnC Profile
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 89 | `ISO15118PnCEnabled` | VariableAttribute | `ISO15118Ctrlr` | `PnCEnabled` | `Actual` |
| 90 | `CentralContractValidationAllowed` | VariableAttribute | `ISO15118Ctrlr` | `CentralContractValidationAllowed` | `Actual` |
| 91 | `ContractValidationOffline` | VariableAttribute | `ISO15118Ctrlr` | `ContractValidationOffline` | `Actual` |
## CostAndPrice Profile
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 92 | `NumberOfDecimalsForCostValues` | VariableAttribute | `TariffCostCtrlr` | `NumberOfDecimalsForCostValues` | `Actual` |
| 93 | `TimeOffset` | VariableAttribute | `ClockCtrlr` | `TimeOffset` | `Actual` |
| 94 | `NextTimeOffsetTransitionDateTime` | VariableAttribute | `ClockCtrlr` | `NextTimeOffsetTransitionDateTime` | `Actual` |
| 95 | `TimeOffsetNextTransition` | VariableAttribute | `ClockCtrlr` | `NextTransition` | `Actual` |
## Mavericks Section
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 96 | `BlinkRepeat` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `BlinkRepeat` | `Actual` |
| 97 | `ConnectorPhaseRotation` | VariableAttribute | `OCPP16LegacyCtrlr` | `PhaseRotation` | `Actual` |
| 98 | `ConnectorPhaseRotationMaxLength` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `ConnectorPhaseRotationMaxLength` | `Actual` |
| 99 | `GetConfigurationMaxKeys` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `GetConfigurationMaxKeys` | `Actual` |
| 100 | `LightIntensity` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `LightIntensity` | `Actual` |
| 101 | `MinimumStatusDuration` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `MinimumStatusDuration` | `Actual` |
| 102 | `StopTransactionOnEVSideDisconnect` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `StopTransactionOnEVSideDisconnect` | `Actual` |
| 103 | `SupportedFeatureProfiles` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `SupportedFeatureProfiles` | `Actual` |
| 104 | `SupportedFeatureProfilesMaxLength` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `SupportedFeatureProfilesMaxLength` | `Actual` |
| 105 | `UnlockConnectorOnEVSideDisconnect` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `UnlockConnectorOnEVSideDisconnect` | `Actual` |
| 106 | `ReserveConnectorZeroSupported` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `ReserveConnectorZeroSupported` | `Actual` |
| 107 | `HostName` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `HostName` | `Actual` |
| 108 | `AllowChargingProfileWithoutStartSchedule` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `AllowChargingProfileWithoutStartSchedule` | `Actual` |
| 109 | `WaitForStopTransactionsOnResetTimeout` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `WaitForStopTransactionsOnResetTimeout` | `Actual` |
| 110 | `StopTransactionIfUnlockNotSupported` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `StopTransactionIfUnlockNotSupported` | `Actual` |
| 111 | `MeterPublicKeys` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `MeterPublicKeys` | `Actual` |
| 112 | `DisableSecurityEventNotifications` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `DisableSecurityEventNotifications` | `Actual` |
| 113 | `ISO15118CertificateManagementEnabled` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `ISO15118CertificateManagementEnabled` | `Actual` |
| 114 | `CustomDisplayCostAndPrice` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `CustomDisplayCostAndPrice` | `Actual` |
| 115 | `DefaultPrice` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `DefaultPrice` | `Actual` |
| 116 | `DefaultPriceText` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `DefaultPriceText` | `Actual` |
| 117 | `CustomIdleFeeAfterStop` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `CustomIdleFeeAfterStop` | `Actual` |
| 118 | `SupportedLanguages` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `SupportedLanguages` | `Actual` |
| 119 | `CustomMultiLanguageMessages` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `CustomMultiLanguageMessages` | `Actual` |
| 120 | `Language` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `Language` | `Actual` |
| 121 | `WaitForSetUserPriceTimeout` | OCPP1.6-specific | `OCPP16LegacyCtrlr` | `WaitForSetUserPriceTimeout` | `Actual` |
## Mavericks Section
Direct mapping is not supported. An additional key is used instead.
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 122 | `AuthorizationKey` | VariableAttribute | `CustomLegacyController` | `AuthorizationKey` | `Actual` |
| 123 | `CentralSystemURI` | VariableAttribute | `CustomLegacyController` | `CentralSystemURI` | `Actual` |
| 124 | `SecurityProfile` | VariableAttribute | `CustomLegacyController` | `SecurityProfile` | `Actual` |
Special handling is required
| ID | OCPP1.6 key | Mapping type | Component | Variable | Target field |
| ---: | --- | --- | --- | --- | --- |
| 125 | `ConnectorEvseIds` | VariableAttribute | `*EVSE` | `EvseId` | `Actual` |
| 126 | `SupportedMeasurands` | VariableCharacteristics | `*` | `Measurands` | `valuesList` |

View File

@@ -0,0 +1,46 @@
# find all migration files, store only the filenames by showing relative to the folder
set(MIGRATION_FILES_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/core_migrations")
set(MIGRATION_FILES_DEVICE_MODEL_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/../common/device_model_migrations")
include(../CollectMigrationFiles.cmake)
collect_migration_files(
LOCATION ${MIGRATION_FILES_LOCATION}
INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP201/core_migrations
)
set(MIGRATION_FILE_VERSION_V2 ${TARGET_MIGRATION_FILE_VERSION} PARENT_SCOPE)
collect_migration_files(
LOCATION ${MIGRATION_FILES_DEVICE_MODEL_LOCATION}
INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP201/device_model_migrations
)
set(MIGRATION_DEVICE_MODEL_FILE_VERSION_V2 ${TARGET_MIGRATION_FILE_VERSION} PARENT_SCOPE)
set(MIGRATION_FILES_SOURCE_DIR_V2 ${MIGRATION_FILES_LOCATION} PARENT_SCOPE)
set(MIGRATION_FILES_DEVICE_MODEL_SOURCE_DIR_V2 ${MIGRATION_FILES_DEVICE_MODEL_LOCATION} PARENT_SCOPE)
option(LIBOCPP_INSTALL_STANDARDIZED_COMPONENT_CONFIG "Install the standardized components configs for OCPP2.0.1 and OCPP2.1" ON)
option(LIBOCPP_INSTALL_CUSTOM_COMPONENT_CONFIG "Install the custom component configs for OCPP2.0.1 and OCPP2.1" OFF)
list(APPEND CONFIGS
../logging.ini
)
install(
FILES ${CONFIGS}
DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP201
)
set(LIBOCPP_STANDARDIZED_COMPONENT_CONFIG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../common/component_config/standardized" CACHE PATH "Path to standardized OCPP component configs")
set(LIBOCPP_CUSTOM_COMPONENT_CONFIG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../common/component_config/custom" CACHE PATH "Path to custom OCPP component configs")
if (LIBOCPP_INSTALL_STANDARDIZED_COMPONENT_CONFIG)
message(STATUS "Using ocpp standardized component config file path: ${LIBOCPP_STANDARDIZED_COMPONENT_CONFIG_PATH}")
install(DIRECTORY ${LIBOCPP_STANDARDIZED_COMPONENT_CONFIG_PATH}/ DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP201/component_config/standardized)
endif()
if (LIBOCPP_INSTALL_CUSTOM_COMPONENT_CONFIG)
message(STATUS "Using ocpp custom component config file path: ${LIBOCPP_CUSTOM_COMPONENT_CONFIG_PATH}")
install(DIRECTORY ${LIBOCPP_CUSTOM_COMPONENT_CONFIG_PATH}/ DESTINATION ${CMAKE_INSTALL_DATADIR}/everest/modules/OCPP201/component_config/custom)
endif()

View File

@@ -0,0 +1,88 @@
PRAGMA foreign_keys = ON;
-- Authorization cache --
CREATE TABLE AUTH_CACHE(
ID_TOKEN_HASH TEXT PRIMARY KEY NOT NULL,
ID_TOKEN_INFO TEXT NOT NULL
);
-- OCPP 2.0.1. Availability --
-- Rows are the operative state (Operative/Inoperative) of the CS, all EVSEs, and all Connectors
CREATE TABLE AVAILABILITY(
EVSE_ID INT NOT NULL, -- EVSE_ID=0 AND CONNECTOR_ID=0 addresses the whole CS
CONNECTOR_ID INT NOT NULL, -- A CONNECTOR_ID of 0 when EVSE_ID > 0 addresses the whole connector
OPERATIONAL_STATUS TEXT NOT NULL, -- "Operative" or "Inoperative"
PRIMARY KEY (EVSE_ID, CONNECTOR_ID),
-- Consistency check: EVSE and connector IDs are positive, and if EVSE_ID is 0, CONNECTOR_ID must also be 0
CHECK (EVSE_ID >= 0 AND CONNECTOR_ID >= 0 AND (EVSE_ID > 0 OR CONNECTOR_ID = 0))
);
CREATE TABLE TRANSACTION_QUEUE(
UNIQUE_ID TEXT PRIMARY KEY NOT NULL,
MESSAGE TEXT NOT NULL,
MESSAGE_TYPE TEXT NOT NULL,
MESSAGE_ATTEMPTS INT NOT NULL,
MESSAGE_TIMESTAMP TEXT NOT NULL
);
-- Auth list --
CREATE TABLE AUTH_LIST_VERSION (
ID INT PRIMARY KEY NOT NULL,
VERSION INT
);
CREATE TABLE AUTH_LIST (
ID_TOKEN_HASH TEXT PRIMARY KEY NOT NULL,
ID_TOKEN_INFO TEXT NOT NULL
);
INSERT OR IGNORE INTO AUTH_LIST_VERSION (ID, VERSION) VALUES
(0, 0);
-- Metervalues --
CREATE TABLE READING_CONTEXT_ENUM (
ID INT PRIMARY KEY,
READING_CONTEXT TEXT
);
CREATE TABLE MEASURAND_ENUM (
ID INT PRIMARY KEY,
MEASURAND TEXT
);
CREATE TABLE PHASE_ENUM (
ID INT PRIMARY KEY,
PHASE TEXT
);
CREATE TABLE LOCATION_ENUM (
ID INT PRIMARY KEY,
LOCATION TEXT
);
CREATE TABLE METER_VALUES (
ROWID INTEGER PRIMARY KEY,
TRANSACTION_ID TEXT NOT NULL,
TIMESTAMP INT64 NOT NULL,
READING_CONTEXT INTEGER REFERENCES READING_CONTEXT_ENUM (ID),
CUSTOM_DATA TEXT,
UNIQUE(TRANSACTION_ID, TIMESTAMP, READING_CONTEXT)
);
CREATE TABLE METER_VALUE_ITEMS (
METER_VALUE_ID INTEGER REFERENCES METER_VALUES (ROWID),
VALUE REAL NOT NULL,
MEASURAND INTEGER REFERENCES MEASURAND_ENUM (ID),
PHASE INTEGER REFERENCES PHASE_ENUM (ID),
LOCATION INTEGER REFERENCES LOCATION_ENUM (ID),
CUSTOM_DATA TEXT,
UNIT_CUSTOM_DATA TEXT,
UNIT_TEXT TEXT,
UNIT_MULTIPLIER INT,
SIGNED_METER_DATA TEXT,
SIGNING_METHOD TEXT,
ENCODING_METHOD TEXT,
PUBLIC_KEY TEXT
);

View File

@@ -0,0 +1,2 @@
ALTER TABLE AUTH_CACHE DROP COLUMN LAST_USED;
ALTER TABLE AUTH_CACHE DROP COLUMN EXPIRY_DATE;

View File

@@ -0,0 +1,2 @@
ALTER TABLE AUTH_CACHE ADD COLUMN LAST_USED INT64 NOT NULL DEFAULT 0;
ALTER TABLE AUTH_CACHE ADD COLUMN EXPIRY_DATE INT64;

View File

@@ -0,0 +1 @@
DROP TABLE NORMAL_QUEUE;

View File

@@ -0,0 +1,7 @@
CREATE TABLE NORMAL_QUEUE(
UNIQUE_ID TEXT PRIMARY KEY NOT NULL,
MESSAGE TEXT NOT NULL,
MESSAGE_TYPE TEXT NOT NULL,
MESSAGE_ATTEMPTS INT NOT NULL,
MESSAGE_TIMESTAMP TEXT NOT NULL
);

View File

@@ -0,0 +1 @@
DROP TABLE TRANSACTIONS;

View File

@@ -0,0 +1,9 @@
CREATE TABLE TRANSACTIONS (
TRANSACTION_ID TEXT NOT NULL UNIQUE,
EVSE_ID INT NOT NULL UNIQUE,
CONNECTOR_ID INT NOT NULL,
TIME_START INT64 NOT NULL,
SEQ_NO INT NOT NULL,
CHARGING_STATE TEXT NOT NULL,
ID_TAG_SENT INT NOT NULL
);

View File

@@ -0,0 +1 @@
DROP TABLE CHARGING_PROFILES;

View File

@@ -0,0 +1,7 @@
CREATE TABLE CHARGING_PROFILES (
ID INT PRIMARY KEY NOT NULL,
EVSE_ID INT NOT NULL,
STACK_LEVEL INT NOT NULL,
CHARGING_PROFILE_PURPOSE TEXT NOT NULL,
PROFILE TEXT NOT NULL
);

View File

@@ -0,0 +1,2 @@
ALTER TABLE CHARGING_PROFILES DROP COLUMN CHARGING_LIMIT_SOURCE;
ALTER TABLE CHARGING_PROFILES DROP COLUMN TRANSACTION_ID;

View File

@@ -0,0 +1,2 @@
ALTER TABLE CHARGING_PROFILES ADD COLUMN CHARGING_LIMIT_SOURCE TEXT NOT NULL DEFAULT 'CSO';
ALTER TABLE CHARGING_PROFILES ADD COLUMN TRANSACTION_ID TEXT;

View File

@@ -0,0 +1,3 @@
DROP INDEX IF EXISTS idx_der_controls_default_type;
DROP INDEX IF EXISTS idx_der_controls_is_default;
DROP TABLE IF EXISTS DER_CONTROLS;

View File

@@ -0,0 +1,25 @@
CREATE TABLE IF NOT EXISTS DER_CONTROLS (
-- CiString<36> cap per OCPP 2.1.
CONTROL_ID TEXT PRIMARY KEY NOT NULL CHECK (length(CONTROL_ID) <= 36),
IS_DEFAULT INTEGER NOT NULL CHECK (IS_DEFAULT IN (0, 1)),
CONTROL_TYPE TEXT NOT NULL,
IS_SUPERSEDED INTEGER NOT NULL DEFAULT 0 CHECK (IS_SUPERSEDED IN (0, 1)),
PRIORITY INTEGER NOT NULL CHECK (PRIORITY >= 0),
-- RFC 3339 shape: lex-comparison-safe. LIKE used so '_' is single-char wildcard.
START_TIME TEXT CHECK (START_TIME IS NULL OR START_TIME LIKE '____-__-__T__:__:__%Z'),
-- Upper bound matches MAX_DURATION_SECONDS (one year = 86400 * 365) in der_control.cpp.
DURATION REAL CHECK (DURATION IS NULL OR (DURATION >= 0 AND DURATION <= 31536000)),
CONTROL_JSON TEXT NOT NULL,
-- R04.FR.07: when set, this row has been accepted but its supersede of
-- PENDING_SUPERSEDE_ID is deferred until START_TIME <= now.
PENDING_SUPERSEDE_ID TEXT,
-- R04.FR.20/21: 1 once NotifyDERStartStop(started=true) has been emitted for
-- this row. The scheduled-check pass flips this at the moment START_TIME <= now.
STARTED_NOTIFIED INTEGER NOT NULL DEFAULT 0 CHECK (STARTED_NOTIFIED IN (0, 1))
);
CREATE INDEX IF NOT EXISTS idx_der_controls_default_type
ON DER_CONTROLS (IS_DEFAULT, CONTROL_TYPE);
CREATE INDEX IF NOT EXISTS idx_der_controls_is_default
ON DER_CONTROLS (IS_DEFAULT);