Git Product home page Git Product logo

open-ocpp's People

Contributors

c-jimenez avatar habbus avatar mahdidadashi65 avatar ruudvd avatar siarheivolkau avatar thom-gh avatar thomas-brunel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-ocpp's Issues

Add RPC server implementation

Add RPC server implementation : rework RPC layer to handle RPC server => first step for Central System implementation

Parsing of certificates in the certificate management module

Dear author, hello. I have some questions about certificate management and would like to seek your assistance.

  1. Currently, I am conducting test cases related to the "Security Whitepaper." I am currently testing the InstallCertificate and DeleteCertificate test cases. I have received a certificate in PEM format from the server, and it is as follows:
-----BEGIN CERTIFICATE-----
MIIBwzCCAWmgAwIBAgIBBDAKBggqhkjOPQQDAjBIMRUwEwYDVQQDDAxSb290IENB
IEVEU0ExDDAKBgNVBAoMA09DQTELMAkGA1UEBhMCTkwxFDASBgoJkiaJk/IsZAEZ
FgRPQ1RUMCAXDTIwMDIxMjE4MTAyOFoYDzIwNjAwMjAyMTgxMDI4WjBIMRUwEwYD
VQQDDAxSb290IENBIEVEU0ExDDAKBgNVBAoMA09DQTELMAkGA1UEBhMCTkwxFDAS
BgoJkiaJk/IsZAEZFgRPQ1RUMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE29Hr
M7bR+VZ+jY9Z7IgLKJw7/A3OQWGY5B05wEO2V1V3Z3VrZINHADdOz7BNc/5ZyCTB
W/OgFDvXym1/gV/NY6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwHQYDVR0OBBYEFC6gycssqInCC/9PJY9F43M7B224MAoGCCqGSM49BAMCA0gA
MEUCIAK3aLaF12sAkvQCluO835VbXGDuWZQWYBgZOtkiHb1NAiEAvmmT8us14HWN
iLgObzzsqf7crpqXctWBDkvN2e5WeBU=
-----END CERTIFICATE-----
  1. The data content after saving the certificate is as follows:
"certificateHashData": [
{
"hashAlgorithm": "SHA256",
"issuerNameHash": "54f4257fbdeeb44e068971a08eb5ba3401612055ed4b3eac7fad036d31387e4d",
"issuerKeyHash": "5eb367725b386513ee5d250023dccc8ce802f8cd476b142436042380c836fb29",
"serialNumber": "04"
}
  1. Currently, two issues have been raised:

3.1 The first issue is that the serialNumber data is "04" after saving, and it is suggested that the certificate serial number should not start with 0. However, I believe this is a minor issue.

3.2 The second issue is that the parsed issuerNameHash data does not match the one issued by the server. The data for deleting the certificate issued by the server is as follows, where it can be seen that the issuerNameHash is inconsistent:

"certificateHashData": {
"hashAlgorithm": "SHA256",
"issuerNameHash": "72a509445ee1f05435358832f9a06bf0ddb3d21dfa68ed8ff45f1362a3cbd58e",
"issuerKeyHash": "5eb367725b386513ee5d250023dccc8ce802f8cd476b142436042380c836fb29",
"serialNumber": "4"
}
  1. Currently, I have read the code for SecurityManager::fillHashInfo and Sha2. However, I found that they internally call the EVP_DigestUpdate method of OpenSSL. Additionally, issuerKeyHash also uses the same method but obtains the correct result.

  2. I tried using another programming language (Python) to parse the certificate and obtain the issuerNameHash. The printed value is also "72a509445ee1f05435358832f9a06bf0ddb3d21dfa68ed8ff45f1362a3cbd58e".

import OpenSSL.crypto
import hashlib

Read the PEM format certificate file
cert_file = "/Users/james/Downloads/pem/1.pem"
with open(cert_file, 'rt') as f:
pem_data = f.read()

Parse the PEM format certificate
cert = OpenSSL.crypto.loadcertificate(OpenSSL.crypto.FILETYPE_PEM, pem_data)

Get the issuer name of the certificate
issuer_name = cert.get_issuer().der()

Calculate the issuerNameHash
hash_value = hashlib.sha256(issuer_name).hexdigest()

Print the complete issuerNameHash value
print("issuerNameHash: " + hash_value)
  1. In conclusion, could you provide some assistance? How can I resolve the issue of inconsistent issuerNameHash?

The connection timeout duration configured for WebSocket is not taking effect.

Dear author,

Hello.

Recently, we have observed that the timeout duration for connecting to the WebSocket seems not to align with the expected configuration results. Below are some brief logs.

LOG_DEBUG << "connect websokect -connectionTimeout = " << m_stack_config.connectionTimeout().count()
              << " -retryInterval = " << m_stack_config.retryInterval().count()
              << " -webSocketPingInterval = " << m_ocpp_config.webSocketPingInterval().count();
    m_reconnect_scheduled = false;
    return m_rpc_client->start(connection_url,
                               iface,
                               credentials,
                               m_stack_config.connectionTimeout(),
                               m_stack_config.retryInterval(),
                               m_ocpp_config.webSocketPingInterval());



[ DEBUG ] - [2024-01-12 18:59:42.405] - ChargePoint.cpp:1228 - connect websokect -connectionTimeout = 180000 -retryInterval = 1000 -webSocketPingInterval = 10
[2024/01/12 18:59:42:4690] N: lws_create_context: LWS: 4.3.2-a1c9db4, NET CLI SRV H1 H2 WS ConMon IPv6-absent
[2024/01/12 18:59:42:4723] N: __lws_lc_tag:  ++ [wsi|0|pipe] (1)
[2024/01/12 18:59:42:5365] N: __lws_lc_tag:  ++ [vh|0|default|eth1|eth1|-1] (1)
[2024/01/12 18:59:44:6463] N: __lws_lc_tag:  ++ [wsicli|0|WS/h1/default/192.168.10.10] (1)
[ ERROR ] - [2024-01-12 19:00:04.468] - ChargePoint.cpp:933 - Connection failed with Central System
[ INFO  ] - [2024-01-12 19:00:04.517] - ChargePoint.cpp:942 - Last registration status was accepted, offline actions are allowed7
[2024/01/12 19:00:04:6147] N: __lws_lc_untag:  -- [wsicli|0|WS/h1/default/192.168.10.10] (0) 20.702s
[2024/01/12 19:00:06:5030] N: __lws_lc_tag:  ++ [wsicli|1|WS/h1/default/192.168.10.10] (1)
[2024/01/12 19:00:26:5121] N: __lws_lc_untag:  -- [wsicli|1|WS/h1/default/192.168.10.10] (0) 20.009s
[2024/01/12 19:00:27:6334] N: __lws_lc_tag:  ++ [wsicli|2|WS/h1/default/192.168.10.10] (1)
[2024/01/12 19:00:47:6367] N: __lws_lc_untag:  -- [wsicli|2|WS/h1/default/192.168.10.10] (0) 20.003s
[2024/01/12 19:00:48:7002] N: __lws_lc_tag:  ++ [wsicli|3|WS/h1/default/192.168.10.10] (1)
[2024/01/12 19:01:08:7188] N: __lws_lc_untag:  -- [wsicli|3|WS/h1/default/192.168.10.10] (0) 20.018s
[2024/01/12 19:01:09:8496] N: __lws_lc_tag:  ++ [wsicli|4|WS/h1/default/192.168.10.10] (1)
[2024/01/12 19:01:29:8662] N: __lws_lc_untag:  -- [wsicli|4|WS/h1/default/192.168.10.10] (0) 20.016s
[2024/01/12 19:01:31:0347] N: __lws_lc_tag:  ++ [wsicli|5|WS/h1/default/192.168.10.10] (1)

Additionally, we have consulted the libwebsockets API and found a parameter named connect_timeout_secs. We attempted to replace timeout_secs with connect_timeout_secs. However, after conducting actual tests, we found that the timeout duration still does not meet our expected time.

Could you please provide some guidance?

Improve release note generation

Improve release note generation : update the .github/release.yml template to generate a release note with implemented issues instead of branch merges.

quick_start_centralsystem segmentation fault

I have built a prototype Central System using the quick_start_centralsystem in open-ocpp-1.4.0 (please see attached code main.cpp and iccs.hpp). I have two Charging Points physically attached to the Central System running on an Orange-pi PC Plus with Armbian Linux (Ubuntu 20.04). For some reason, I don't know why at this stage, both CPs randomly disconnect themselves (software disconnect) from the CS and sometimes this causes the CS software to seg fault.
As well as the source code I have dumped the contents of the build_gcc_native/examples/quick_start_centralsystem/CMakeFiles/quick_start_centralsystem.dir directory to include the make and object files. Also in the dump is a document 'ocpp seg fault 31-oct-2023' which contains the strace output of the seg fault. Also in the attached segfault.zip
segfault.zip
is the core dump.
Are you able to tell what is causing the seg fault from these files?
From the comments in the main.cpp you can see I though I'd found the cause by checking the size of event_handler.chargePoints() - see line 317, I think this may have solved one instance, but clearly there is still an issue.
many thanks
andy

{security extensions] Implement fallback when swiching security pofiles

{security extensions] Implement fallback when swiching security pofiles:

When switching to a new security profile or when a new certificate is installed, the charge point must reconnect to the central system with the new credentials/certificate. If the connexion fails, it muts fallback to old connexion parameters.

connectorId=0 on RemoteStartTransaction should be rejected

Hi,
We are working on some testing against the ocpp1.6 spec and noticed the following issue.
The RemoteStartTransaction.req has an optional connectorId. Currently, the TransactionManager treats an unset optional as connectorid=0. However, the ocpp1.6 standard states the following on the connectorId field:

Optional. Number of the connector on which to start the transaction.
connectorId SHALL be > 0

Our test case expects a status of Rejected in the RemoteStartTransaction.conf. The spec specifically states that connectorId should be larger than 0.

Would you be fine with changing the logic so the RemoteStartTransaction.req is Rejected when connectorId is set and equal to 0?

The implementation of the GetCompositeSchedule use case.

Dear author, hello. Your open-source OCPP library has been very helpful to me, and I would like to express my respect and gratitude to you. I have a small question about the "GetCompositeSchedule" use case. I would like to ask why it doesn't support a value of 0(whole chargepoint). Is it due to technical limitations or other reasons?

Problème d'installation sur raspberry

Bonjour,
J'essaye actuellement d'installer le soft sur une Raspberry pi mais j'ai une erreur lors de la compilation.
Sur quelle plateforme a été déployé ce soft ? Que sur pc linux ?

Segfault on cancel reservation

Hi!

First of all, what a cool project! We have been testing this for quite a while, and it is well put together.

When trying to cancel a reservation, the application crashes with a segfault.
This has to do with the following logic in the handleMessage for a CancelReservation.req:

    for (const Connector* connector : m_connectors.getConnectors())
    {
        if ((connector->status == ChargePointStatus::Reserved) && (connector->reservation_id == request.reservationId))
        {
            // Cancel reservation
            m_worker_pool.run<void>([this, &connector] { endReservation(connector->id, true); });

            // Prepare response
            response.status = CancelReservationStatus::Accepted;
            break;
        }
    }

That lambda that is passed to the worker pool takes a reference to connector, however, this connector pointer only exists here in the scope of the for loop. Updating the worker pool to provide the connector pointer by value fixes the problem for me:

m_worker_pool.run<void>([this, connector] { endReservation(connector->id, true); });

Some extra info:
For me the segfault does not occur when the worker pool runs the function, but in our own logic after the call to reservationEnded in the eventhandler interface. The connectorid that is passed does not make sense anymore.

[Core profile] RemoteStartTransaction on unknown connector id

The OCPP 1.6 states that:

... When no connector id is provided, the Charge Point is in control of the connector selection. ...

However, TransactionManager::handleMessage says that:

// No remote start allowed without connector id

Is there a way to implement connector selection in user code?
Could, at least, the message propagate to the remoteStopTransactionRequested handler with no connector id?

The header protections may be not unique

The header protections may be not unique when the headers are used in 3rd party projects, especially for the database and timer headers which are relatively frequents.
To fix it, change the pattern of header protections from FILENAME_H to OPENOCPP_FILENAME_H.

when there is not any conectivity to network this loop is happening that has not handled in code

[2023/04/03 12:32:35:9243] N: __lws_lc_tag: ++ [wsicli|3|WS/h1/default/10.19.1.15] (1)
[2023/04/03 12:32:35:9243] N: [wsicli|3|WS/h1/default/10.19.1.15]: lws_sort_dns: 10.19.1.15 has no route out
[2023/04/03 12:32:35:9243] N: [wsicli|3|WS/h1/default/10.19.1.15]: lws_sort_dns_dump: empty
[2023/04/03 12:32:35:9243] N: __lws_lc_untag: -- [wsicli|3|WS/h1/default/10.19.1.15] (0) 53μs
[2023/04/03 12:32:37:0555] N: __lws_lc_tag: ++ [wsicli|4|WS/h1/default/10.19.1.15] (1)
[2023/04/03 12:32:37:0556] N: [wsicli|4|WS/h1/default/10.19.1.15]: lws_sort_dns: 10.19.1.15 has no route out
[2023/04/03 12:32:37:0556] N: [wsicli|4|WS/h1/default/10.19.1.15]: lws_sort_dns_dump: empty
[2023/04/03 12:32:37:0556] N: __lws_lc_untag: -- [wsicli|4|WS/h1/default/10.19.1.15] (0) 130μs
[2023/04/03 12:32:38:1429] N: __lws_lc_tag: ++ [wsicli|5|WS/h1/default/10.19.1.15] (1)
[2023/04/03 12:32:38:1430] N: [wsicli|5|WS/h1/default/10.19.1.15]: lws_sort_dns: 10.19.1.15 has no route out

Incorrect status notification behavior on trigger message

Incorrect status notification behavior on trigger message:

  • When the optional connectorId field is absent, the stack only sends the status for connector 0
  • The MinimumStatusDuration guard time is applied to this triggered message

Implement GetCompositeSchedule request

Implement GetCompositeSchedule request :

Ask for the non-ocpp charging constraints schedule of the user application through the IOcppEventHandler interface in the form of an OCPP ChargingProfile data structure.
Compute composite schedule with received OCPP charging profiles and user application charging profile is any.

After starting the transaction in the case of a reservation on Connector 0, the status of Connector 0 was not reset to "available."

Dear author,

Hello.

During the testing process, we encountered the following issues:

  1. Firstly, we attempted to reserve Connector 0 and then initiate a remote start on Connector 0, followed by plugging in the charging cable on Connector 1 to begin charging.

  2. However, the status of Connector 0 remained "Reserved" throughout.

  3. I have added the following code, but it may not be correct. If it is correct, you can refer to it.

// Check reservation on the whole charge point
                    if (m_ocpp_config.reserveConnectorZeroSupported())
                    {
                        Connector& charge_point = m_connectors.getChargePointConnector();
                        if (charge_point.status == ChargePointStatus::Reserved)
                        {
                            // Check if this transaction can be used for the charge point reservation
                            if (m_reservation_manager.isTransactionAllowed(Connectors::CONNECTOR_ID_CHARGE_POINT, id_tag) ==
                                AuthorizationStatus::Accepted)
                            {
                                // Fill reservation id
                                start_transaction_req.reservationId = charge_point.reservation_id;

                                // Clear reservation
                                m_reservation_manager.clearReservation(connector_id);

                                //Clear Status with chargepint(0)
                                m_status_manager.updateConnectorStatusWithOutReport(Connectors::CONNECTOR_ID_CHARGE_POINT,
                                                                                    ocpp::types::ChargePointStatus::Available);
                            }
                        }
                    }
/**
 * @brief 
 * 
 * @param connector_id 
 * @param status 
 * @return true 
 * @return false 
 */
bool StatusManager::updateConnectorStatusWithOutReport(unsigned int connector_id, ocpp::types::ChargePointStatus status)
{
    Connector* connector = m_connectors.getConnector(connector_id);
    if (connector)
    {
        // Check if status has changed
        if (connector->status != status)
        {
            LOG_INFO << "Connector " << connector_id << " : " << ChargePointStatusHelper.toString(status);
            {
                std::lock_guard<std::mutex> lock(connector->mutex);

                // Save new status
                connector->status           = status;
                connector->status_timestamp = DateTime::now();
                return m_connectors.saveConnector(connector->id);
            }
        }
    }
}

The FIFO module crashes when processing offline messages.

Dear author,

Hello.

We have found that after the system goes offline and comes back online, there is a crash when processing offline messages. We have tried to identify patterns and reasons for the occurrence but have not found any. However, we have captured some logs before the crash.

Could you provide us with some guidance and suggestions for troubleshooting?

[[ DEBUG ][ - [2024-01-11 08:00:40.586] - InternalConfigManager.cpp:182 - Key : StackVersion = 1.0.0
[[ DEBUG ][ - [2024-01-11 08:00:40.755] - InternalConfigManager.cpp:182 - Key : LastSessionStartDate = 2024-01-10T23:26:23Z
[[ DEBUG ][ - [2024-01-11 08:00:40.795] - InternalConfigManager.cpp:182 - Key : LastSessionUpTime = 2010
[[ DEBUG ][ - [2024-01-11 08:00:40.835] - InternalConfigManager.cpp:182 - Key : LastSessionDisconnectedTime = 199
[[ DEBUG ][ - [2024-01-11 08:00:40.875] - InternalConfigManager.cpp:182 - Key : TotalUpTime = 33450
[[ DEBUG ][ - [2024-01-11 08:00:40.926] - InternalConfigManager.cpp:182 - Key : TotalDisconnectedTime = 1350
[[ DEBUG ][ - [2024-01-11 08:00:40.967] - InternalConfigManager.cpp:182 - Key : LastConnectionUrl = ws://192.168.10.10:8080/ocpp/
[[ DEBUG ][ - [2024-01-11 08:00:41.015] - InternalConfigManager.cpp:182 - Key : LastRegistrationStatus = Accepted
[[ DEBUG ][ - [2024-01-11 08:00:41.055] - InternalConfigManager.cpp:182 - Key : LAST_CONNECTION_IFACE = eth1
[[ DEBUG ][ - [2024-01-11 08:00:41.095] - InternalConfigManager.cpp:182 - Key : LocalListVersion = 0
[[ DEBUG ][ - [2024-01-11 08:00:41.135] - InternalConfigManager.cpp:182 - Key : SignedFirmwareUpdateId = 
[[ DEBUG ][ - [2024-01-11 08:00:41.178] - Connectors.cpp:253 - Connector 0 loaded from database : status = Available - last_notified_status = Unavailable - transaction_id = 0 - transaction_id_offline = 0 - transaction_start = 1970-01-01T00:00:00Z - transaction_id_tag =  - transaction_parent_id_tag =  - reservation_id = 0 - reservation_id_tag =  - reservation_parent_id_tag =  - reservation_expiry_date = 1970-01-01T00:00:00Z
[[ DEBUG ][ - [2024-01-11 08:00:41.229] - Connectors.cpp:253 - Connector 1 loaded from database : status = Finishing - last_notified_status = Charging - transaction_id = 0 - transaction_id_offline = 0 - transaction_start = 1970-01-01T00:00:00Z - transaction_id_tag =  - transaction_parent_id_tag =  - reservation_id = 0 - reservation_id_tag =  - reservation_parent_id_tag =  - reservation_expiry_date = 2024-01-10T09:06:49Z
[[ DEBUG ][ - [2024-01-11 08:00:41.276] - Connectors.cpp:253 - Connector 2 loaded from database : status = Available - last_notified_status = Preparing - transaction_id = 0 - transaction_id_offline = 0 - transaction_start = 1970-01-01T00:00:00Z - transaction_id_tag =  - transaction_parent_id_tag =  - reservation_id = 0 - reservation_id_tag =  - reservation_parent_id_tag =  - reservation_expiry_date = 2024-01-10T09:08:33Z
[[ INFO  ][ - [2024-01-11 08:00:41.320] - RequestFifo.cpp:176 - Transaction related request FIFO : 0 message(s) pending
HMIManager set workpath=/app/ocpp_config/certificates
[[ INFO  ][ - [2024-01-11 08:00:41.367] - ChargePoint.cpp:216 - Starting OCPP stack v1.0.0 - Central System : ws://192.168.10.10:8080/ocpp - Charge Point identifier : 23859016
[[ DEBUG ][ - [2024-01-11 08:00:41.675] - MessageDispatcher.cpp:52 - [GetConfiguration] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:41.717] - MessageDispatcher.cpp:52 - [ChangeConfiguration] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:41.760] - MessageDispatcher.cpp:52 - [TriggerMessage] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:41.807] - MessageDispatcher.cpp:52 - [ExtendedTriggerMessage] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:41.849] - MessageDispatcher.cpp:52 - [ClearCache] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:41.895] - MessageDispatcher.cpp:52 - [GetLocalListVersion] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:41.939] - MessageDispatcher.cpp:52 - [SendLocalList] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:41.985] - AuthentLocalList.cpp:66 - Authent local list version : 0
[[ DEBUG ][ - [2024-01-11 08:00:42.028] - MessageDispatcher.cpp:52 - [ChangeAvailability] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.075] - MessageDispatcher.cpp:52 - [ReserveNow] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.113] - MessageDispatcher.cpp:52 - [CancelReservation] Validator loaded
[[ INFO  ][ - [2024-01-11 08:00:42.158] - MeterValuesManager.cpp:319 - Configure clock aligned meter values : interval in seconds = 30
[[ INFO  ][ - [2024-01-11 08:00:42.219] - MeterValuesManager.cpp:325 - Thu Jan 11 08:01:00 2024

[[ DEBUG ][ - [2024-01-11 08:00:42.270] - MessageDispatcher.cpp:52 - [ClearChargingProfile] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.325] - MessageDispatcher.cpp:52 - [SetChargingProfile] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.367] - MessageDispatcher.cpp:52 - [GetCompositeSchedule] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.409] - MessageDispatcher.cpp:52 - [RemoteStartTransaction] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.456] - MessageDispatcher.cpp:52 - [RemoteStopTransaction] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.500] - MessageDispatcher.cpp:52 - [DataTransfer] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.600] - MessageDispatcher.cpp:52 - [Reset] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.639] - MessageDispatcher.cpp:52 - [UnlockConnector] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.679] - MessageDispatcher.cpp:52 - [GetDiagnostics] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.718] - MessageDispatcher.cpp:52 - [UpdateFirmware] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.760] - MessageDispatcher.cpp:52 - [GetLog] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.815] - MessageDispatcher.cpp:52 - [SignedUpdateFirmware] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.849] - MaintenanceManager.cpp:112 - Signed firmare update request id : No signed firmware update in progress
[[ DEBUG ][ - [2024-01-11 08:00:42.897] - MessageDispatcher.cpp:52 - [CertificateSigned] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.939] - MessageDispatcher.cpp:52 - [DeleteCertificate] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:42.991] - MessageDispatcher.cpp:52 - [GetInstalledCertificateIds] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:43.035] - MessageDispatcher.cpp:52 - [InstallCertificate] Validator loaded
[[ DEBUG ][ - [2024-01-11 08:00:43.099] - Connectors.cpp:303 - Connector 1 updated in database
[[ INFO  ][ - [2024-01-11 08:00:43.146] - ChargePoint.cpp:1224 - connect websokect,interface:eth1,connection_url:ws://192.168.10.10:8080/ocpp/,chargePointIdentifier:23859016,AuthenticationKey:123456789,security_profile:2
[2024/01/11 08:00:43:1912] N: lws_create_context: LWS: 4.3.2-v1.2.0-276-g82dd33b, NET CLI SRV H1 H2 WS ConMon IPv6-absent
[2024/01/11 08:00:43:1944] N: __lws_lc_tag:  ++ [wsi|0|pipe] (1)
[2024/01/11 08:00:43:2633] N: __lws_lc_tag:  ++ [vh|0|default|eth1|eth1|-1] (1)
[2024/01/11 08:00:43:3448] N: __lws_lc_tag:  ++ [wsicli|0|WS/h1/default/192.168.10.10] (1)
[[ INFO  ][ - [2024-01-11 08:00:44.078] - MeterValuesManager.cpp:319 - Configure clock aligned meter values : interval in seconds = 30
[[ INFO  ][ - [2024-01-11 08:00:44.113] - MeterValuesManager.cpp:325 - Thu Jan 11 08:01:00 2024
[[ INFO  ][ - [2024-01-11 08:00:44.089] - MeterValuesManager.cpp:319 - Configure clock aligned meter values : interval in seconds = 30
[[ INFO  ][ - [2024-01-11 08:00:44.129] - MeterValuesManager.cpp:325 - Thu Jan 11 08:01:00 2024
[[ ERROR ][ - [2024-01-11 08:01:02.023] - ChargePoint.cpp:933 - Connection failed with Central System
[[ INFO  ][ - [2024-01-11 08:01:02.064] - ChargePoint.cpp:942 - Last registration status was accepted, offline actions are allowed
[[ INFO  ][ - [2024-01-11 08:01:02.043] - MeterValuesManager.cpp:319 - Configure clock aligned meter values : interval in seconds = 30
[[ INFO  ][ - [2024-01-11 08:01:02.093] - MeterValuesManager.cpp:325 - Thu Jan 11 08:01:30 2024
[[ INFO  ][ - [2024-01-11 08:01:02.225] - main.cpp:644 - ConnectorId:1; Event:LocalStop; CurrentStatus:IDLE
[[ INFO  ][ - [2024-01-11 08:01:02.381] - main.cpp:275 - ConnectorId:2; Event:ConnectorDisconnect; CurrentStatus:IDLE
[2024/01/11 08:01:02:6371] N: __lws_lc_untag:  -- [wsicli|0|WS/h1/default/192.168.10.10] (0) 20.713s
[2024/01/11 08:01:04:3552] N: __lws_lc_tag:  ++ [wsicli|1|WS/h1/default/192.168.10.10] (1)
[[ INFO  ][ - [2024-01-11 08:01:04.378] - ChargePoint.cpp:924 - Connected to Central System
[[  COM  ][ - [2024-01-11 08:01:04.413] - ChargePoint.cpp:989 - TX : [2, "1849143064", "BootNotification", {"chargeBoxSerialNumber":"","chargePointModel":"EA_DC_CHARGE_STATIO","chargePointSerialNumber":"23859016","chargePointVendor":"","firmwareVersion":"1.0.0","iccid":"","imsi":"","meterSerialNumber":""}]
[[  COM  ][ - [2024-01-11 08:01:04.540] - ChargePoint.cpp:982 - RX : [3,"1849143064",{"status":"Accepted","currentTime":"2024-01-11T00:01:07.630Z","interval":60}]
[[  COM  ][ - [2024-01-11 08:01:04.669] - ChargePoint.cpp:989 - TX : [2, "1849143065", "StatusNotification", {"connectorId":0,"errorCode":"NoError","status":"Available","timestamp":"2024-01-11T00:00:41Z"}]
[[  COM  ][ - [2024-01-11 08:01:04.754] - ChargePoint.cpp:982 - RX : [3,"1849143065",{}]
[[  COM  ][ - [2024-01-11 08:01:04.850] - ChargePoint.cpp:989 - TX : [2, "1849143066", "StatusNotification", {"connectorId":1,"errorCode":"NoError","status":"Available","timestamp":"2024-01-11T00:00:41Z"}]
[[  COM  ][ - [2024-01-11 08:01:04.926] - ChargePoint.cpp:982 - RX : [3,"1849143066",{}]
[[  COM  ][ - [2024-01-11 08:01:05.015] - ChargePoint.cpp:989 - TX : [2, "1849143067", "StatusNotification", {"connectorId":2,"errorCode":"NoError","status":"Available","timestamp":"2024-01-11T00:00:41Z"}]
[[  COM  ][ - [2024-01-11 08:01:05.086] - ChargePoint.cpp:982 - RX : [3,"1849143067",{}]
[[ INFO  ][ - [2024-01-11 08:01:05.124] - StatusManager.cpp:495 - Registration status : Accepted
[[ INFO  ][ - [2024-01-11 08:01:07.039] - MeterValuesManager.cpp:319 - Configure clock aligned meter values : interval in seconds = 30
[[ INFO  ][ - [2024-01-11 08:01:07.062] - MeterValuesManager.cpp:325 - Thu Jan 11 08:01:30 2024
[[  COM  ][ - [2024-01-11 08:01:21.009] - ChargePoint.cpp:982 - RX : [2,"1704902482252","ChangeConfiguration",{"key":"LocalPreAuthorize","value":"false"}]
[[  COM  ][ - [2024-01-11 08:01:21.064] - ChargePoint.cpp:989 - TX : [3, "1704902482252", {"status":"Accepted"}]
[[  COM  ][ - [2024-01-11 08:01:21.149] - ChargePoint.cpp:982 - RX : [2,"1704902482393","GetConfiguration",{"key":["AuthorizeRemoteTxRequests"]}]
[[  COM  ][ - [2024-01-11 08:01:21.184] - ChargePoint.cpp:989 - TX : [3, "1704902482393", {"configurationKey":[{"key":"AuthorizeRemoteTxRequests","readonly":true,"value":"false"}],"unknownKey":[]}]
[[ INFO  ][ - [2024-01-11 08:01:26.923] - main.cpp:275 - ConnectorId:1; Event:ConnectorDisconnect; CurrentStatus:IDLE
[[  COM  ][ - [2024-01-11 08:01:27.733] - ChargePoint.cpp:982 - RX : [2,"1704902488974","RemoteStartTransaction",{"connectorId":2,"idTag":"56727548615757"}]
[[ INFO  ][ - [2024-01-11 08:01:27.769] - TransactionManager.cpp:292 - Remote start transaction requested : connector = 2 - idTag = 56727548615757
[[ INFO  ][ - [2024-01-11 08:01:27.819] - TransactionManager.cpp:336 - Remote start transaction Accepted : connector = 2
[[ INFO  ][ - [2024-01-11 08:01:27.820] - main.cpp:424 - ConnectorId:2; Event:RemoteStartPending; CurrentStatus:IDLE
[[  COM  ][ - [2024-01-11 08:01:27.848] - ChargePoint.cpp:989 - TX : [3, "1704902488974", {"status":"Accepted"}]
[[ DEBUG ][ - [2024-01-11 08:01:28.001] - Connectors.cpp:303 - Connector 2 updated in database
[[ INFO  ][ - [2024-01-11 08:01:28.046] - StatusManager.cpp:167 - Connector 2 : Preparing
[[  COM  ][ - [2024-01-11 08:01:28.205] - ChargePoint.cpp:989 - TX : [2, "1849143068", "StatusNotification", {"connectorId":2,"errorCode":"NoError","status":"Preparing","timestamp":"2024-01-11T00:01:27Z"}]
[[  COM  ][ - [2024-01-11 08:01:28.304] - ChargePoint.cpp:982 - RX : [3,"1849143068",{}]
[[ DEBUG ][ - [2024-01-11 08:01:30.086] - MeterValuesManager.cpp:361 - Clock aligned meter values : Current.Import,Energy.Active.Import.Register,Power.Active.Import,Voltage.L1-L2,Voltage.L2-L3,Voltage.L3-L1,SoC,Temperature
[[  COM  ][ - [2024-01-11 08:01:30.146] - ChargePoint.cpp:989 - TX : [2, "1849143069", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:01:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"401","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"402","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:01:31.735] - ChargePoint.cpp:982 - RX : [4,"1849143069","InternalError","An internal error occurred and the receiver was not able to process the requested Action successfully",{}]
[[  COM  ][ - [2024-01-11 08:01:31.770] - ChargePoint.cpp:989 - TX : [2, "1849143070", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:01:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ DEBUG ][ - [2024-01-11 08:01:36.799] - RequestFifo.cpp:44 - Transaction related request FIFO : pushing MeterValues request
[[ DEBUG ][ - [2024-01-11 08:01:36.842] - RequestFifoManager.cpp:94 - Request failed, next retry in 5second(s)
[[ DEBUG ][ - [2024-01-11 08:01:41.865] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 0/3
[[  COM  ][ - [2024-01-11 08:01:41.903] - ChargePoint.cpp:989 - TX : [2, "1849143071", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:01:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:01:42.001] - ChargePoint.cpp:982 - RX : [3,"1849143071",{}]
[[ DEBUG ][ - [2024-01-11 08:01:42.067] - RequestFifoManager.cpp:218 - Request succeeded
[[ DEBUG ][ - [2024-01-11 08:01:42.109] - RequestFifo.cpp:101 - Transaction related request FIFO : poping MeterValues request
[[  COM  ][ - [2024-01-11 08:01:44.972] - ChargePoint.cpp:982 - RX : [2,"1704902506216","ChangeConfiguration",{"key":"LocalPreAuthorize","value":"false"}]
[[  COM  ][ - [2024-01-11 08:01:45.015] - ChargePoint.cpp:989 - TX : [3, "1704902506216", {"status":"Accepted"}]
[[  COM  ][ - [2024-01-11 08:01:45.094] - ChargePoint.cpp:982 - RX : [2,"1704902506336","GetConfiguration",{"key":["AuthorizeRemoteTxRequests"]}]
[[  COM  ][ - [2024-01-11 08:01:45.145] - ChargePoint.cpp:989 - TX : [3, "1704902506336", {"configurationKey":[{"key":"AuthorizeRemoteTxRequests","readonly":true,"value":"false"}],"unknownKey":[]}]
[[  COM  ][ - [2024-01-11 08:01:52.119] - ChargePoint.cpp:982 - RX : [2,"1704902513362","RemoteStartTransaction",{"connectorId":2,"idTag":"56727548615757"}]
[[ INFO  ][ - [2024-01-11 08:01:52.159] - TransactionManager.cpp:292 - Remote start transaction requested : connector = 2 - idTag = 56727548615757
[[ INFO  ][ - [2024-01-11 08:01:52.209] - TransactionManager.cpp:336 - Remote start transaction Accepted : connector = 2
[[ INFO  ][ - [2024-01-11 08:01:52.210] - main.cpp:424 - ConnectorId:2; Event:RemoteStartPending; CurrentStatus:PREPARE_AUTHED
[[  COM  ][ - [2024-01-11 08:01:52.235] - ChargePoint.cpp:989 - TX : [3, "1704902513362", {"status":"Accepted"}]
[[ DEBUG ][ - [2024-01-11 08:02:00.086] - MeterValuesManager.cpp:361 - Clock aligned meter values : Current.Import,Energy.Active.Import.Register,Power.Active.Import,Voltage.L1-L2,Voltage.L2-L3,Voltage.L3-L1,SoC,Temperature
[[  COM  ][ - [2024-01-11 08:02:00.134] - ChargePoint.cpp:989 - TX : [2, "1849143072", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:02:00Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:02:01.752] - ChargePoint.cpp:982 - RX : [4,"1849143072","InternalError","An internal error occurred and the receiver was not able to process the requested Action successfully",{}]
[[  COM  ][ - [2024-01-11 08:02:01.793] - ChargePoint.cpp:989 - TX : [2, "1849143073", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:02:00Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ DEBUG ][ - [2024-01-11 08:02:06.819] - RequestFifo.cpp:44 - Transaction related request FIFO : pushing MeterValues request
[[ DEBUG ][ - [2024-01-11 08:02:06.864] - RequestFifoManager.cpp:94 - Request failed, next retry in 5second(s)
[[ DEBUG ][ - [2024-01-11 08:02:11.888] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 0/3
[[  COM  ][ - [2024-01-11 08:02:11.925] - ChargePoint.cpp:989 - TX : [2, "1849143074", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:02:00Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:02:12.001] - ChargePoint.cpp:982 - RX : [3,"1849143074",{}]
[[ DEBUG ][ - [2024-01-11 08:02:12.036] - RequestFifoManager.cpp:218 - Request succeeded
[[ DEBUG ][ - [2024-01-11 08:02:12.061] - RequestFifo.cpp:101 - Transaction related request FIFO : poping MeterValues request
[[ DEBUG ][ - [2024-01-11 08:02:30.086] - MeterValuesManager.cpp:361 - Clock aligned meter values : Current.Import,Energy.Active.Import.Register,Power.Active.Import,Voltage.L1-L2,Voltage.L2-L3,Voltage.L3-L1,SoC,Temperature
[[  COM  ][ - [2024-01-11 08:02:30.147] - ChargePoint.cpp:989 - TX : [2, "1849143075", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:02:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:02:30.269] - ChargePoint.cpp:982 - RX : [3,"1849143075",{}]
[[  COM  ][ - [2024-01-11 08:02:30.336] - ChargePoint.cpp:989 - TX : [2, "1849143076", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:02:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:02:30.436] - ChargePoint.cpp:982 - RX : [3,"1849143076",{}]
[[  COM  ][ - [2024-01-11 08:02:39.069] - ChargePoint.cpp:982 - RX : [2,"1704902560317","GetConfiguration",{"key":["AuthorizeRemoteTxRequests"]}]
[[  COM  ][ - [2024-01-11 08:02:39.113] - ChargePoint.cpp:989 - TX : [3, "1704902560317", {"configurationKey":[{"key":"AuthorizeRemoteTxRequests","readonly":true,"value":"false"}],"unknownKey":[]}]
[[ DEBUG ][ - [2024-01-11 08:02:52.399] - Connectors.cpp:303 - Connector 2 updated in database
[[ INFO  ][ - [2024-01-11 08:02:52.435] - StatusManager.cpp:167 - Connector 2 : Available
[[  COM  ][ - [2024-01-11 08:02:52.506] - ChargePoint.cpp:989 - TX : [2, "1849143077", "StatusNotification", {"connectorId":2,"errorCode":"NoError","status":"Available","timestamp":"2024-01-11T00:02:52Z"}]
[[  COM  ][ - [2024-01-11 08:02:52.575] - ChargePoint.cpp:982 - RX : [3,"1849143077",{}]
[[ INFO  ][ - [2024-01-11 08:02:55.453] - main.cpp:200 - ConnectorId:1; Event:ConnectorConnect; CurrentStatus:IDLE
[[ DEBUG ][ - [2024-01-11 08:02:55.530] - Connectors.cpp:303 - Connector 1 updated in database
[[ INFO  ][ - [2024-01-11 08:02:55.553] - StatusManager.cpp:167 - Connector 1 : Preparing
[[  COM  ][ - [2024-01-11 08:02:55.606] - ChargePoint.cpp:982 - RX : [2,"1704902576853","RemoteStartTransaction",{"connectorId":2,"idTag":"56727548615757"}]
[[  COM  ][ - [2024-01-11 08:02:55.629] - ChargePoint.cpp:989 - TX : [2, "1849143078", "StatusNotification", {"connectorId":1,"errorCode":"NoError","status":"Preparing","timestamp":"2024-01-11T00:02:55Z"}]
[[ INFO  ][ - [2024-01-11 08:02:55.659] - TransactionManager.cpp:292 - Remote start transaction requested : connector = 2 - idTag = 56727548615757
[[  COM  ][ - [2024-01-11 08:02:55.731] - ChargePoint.cpp:982 - RX : [3,"1849143078",{}]
[[ INFO  ][ - [2024-01-11 08:02:55.736] - TransactionManager.cpp:336 - Remote start transaction Accepted : connector = 2
[[ INFO  ][ - [2024-01-11 08:02:55.788] - main.cpp:424 - ConnectorId:2; Event:RemoteStartPending; CurrentStatus:IDLE
[[  COM  ][ - [2024-01-11 08:02:55.792] - ChargePoint.cpp:989 - TX : [3, "1704902576853", {"status":"Accepted"}]
[[ DEBUG ][ - [2024-01-11 08:02:56.032] - Connectors.cpp:303 - Connector 2 updated in database
[[ INFO  ][ - [2024-01-11 08:02:56.055] - StatusManager.cpp:167 - Connector 2 : Preparing
[[  COM  ][ - [2024-01-11 08:02:56.256] - ChargePoint.cpp:989 - TX : [2, "1849143079", "StatusNotification", {"connectorId":2,"errorCode":"NoError","status":"Preparing","timestamp":"2024-01-11T00:02:56Z"}]
[[ DEBUG ][ - [2024-01-11 08:03:00.086] - MeterValuesManager.cpp:361 - Clock aligned meter values : Current.Import,Energy.Active.Import.Register,Power.Active.Import,Voltage.L1-L2,Voltage.L2-L3,Voltage.L3-L1,SoC,Temperature
[[  COM  ][ - [2024-01-11 08:03:01.339] - ChargePoint.cpp:989 - TX : [2, "1849143080", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:03:00Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:03:01.446] - ChargePoint.cpp:982 - RX : [3,"1849143080",{}]
[[  COM  ][ - [2024-01-11 08:03:01.528] - ChargePoint.cpp:989 - TX : [2, "1849143081", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:03:00Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[  COM  ][ - [2024-01-11 08:03:01.630] - ChargePoint.cpp:982 - RX : [3,"1849143081",{}]
[[ ERROR ][ - [2024-01-11 08:03:19.210] - ChargePoint.cpp:953 - Connection lost with Central System
[2024/01/11 08:03:19:2957] N: __lws_lc_untag:  -- [wsicli|1|WS/h1/default/192.168.10.10] (0) 2.218min
[2024/01/11 08:03:20:4003] N: __lws_lc_tag:  ++ [wsicli|2|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:20:4047] N: [wsicli|2|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:20:4051] N: __lws_lc_untag:  -- [wsicli|2|WS/h1/default/192.168.10.10] (0) 4.809ms
[2024/01/11 08:03:21:6037] N: __lws_lc_tag:  ++ [wsicli|3|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:21:6075] N: [wsicli|3|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:21:6079] N: __lws_lc_untag:  -- [wsicli|3|WS/h1/default/192.168.10.10] (0) 4.260ms
[2024/01/11 08:03:22:7965] N: __lws_lc_tag:  ++ [wsicli|4|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:22:8020] N: [wsicli|4|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:22:8024] N: __lws_lc_untag:  -- [wsicli|4|WS/h1/default/192.168.10.10] (0) 5.952ms
[2024/01/11 08:03:23:9299] N: __lws_lc_tag:  ++ [wsicli|5|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:23:9334] N: [wsicli|5|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:23:9338] N: __lws_lc_untag:  -- [wsicli|5|WS/h1/default/192.168.10.10] (0) 3.889ms
[2024/01/11 08:03:25:0859] N: __lws_lc_tag:  ++ [wsicli|6|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:25:0895] N: [wsicli|6|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:25:0899] N: __lws_lc_untag:  -- [wsicli|6|WS/h1/default/192.168.10.10] (0) 3.962ms
[[ INFO  ][ - [2024-01-11 08:03:25.546] - main.cpp:275 - ConnectorId:1; Event:ConnectorDisconnect; CurrentStatus:PREPARE_CONNECTED
[[ DEBUG ][ - [2024-01-11 08:03:25.606] - Connectors.cpp:303 - Connector 1 updated in database
[[ INFO  ][ - [2024-01-11 08:03:25.628] - StatusManager.cpp:167 - Connector 1 : Available
[2024/01/11 08:03:26:1319] N: __lws_lc_tag:  ++ [wsicli|7|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:26:1386] N: [wsicli|7|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:26:1390] N: __lws_lc_untag:  -- [wsicli|7|WS/h1/default/192.168.10.10] (0) 7.127ms
[2024/01/11 08:03:27:2285] N: __lws_lc_tag:  ++ [wsicli|8|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:27:2333] N: [wsicli|8|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:27:2338] N: __lws_lc_untag:  -- [wsicli|8|WS/h1/default/192.168.10.10] (0) 5.224ms
[2024/01/11 08:03:28:3533] N: __lws_lc_tag:  ++ [wsicli|9|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:28:3575] N: [wsicli|9|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:28:3579] N: __lws_lc_untag:  -- [wsicli|9|WS/h1/default/192.168.10.10] (0) 4.674ms
[2024/01/11 08:03:29:4813] N: __lws_lc_tag:  ++ [wsicli|a|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:29:4866] N: [wsicli|a|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:29:4870] N: __lws_lc_untag:  -- [wsicli|a|WS/h1/default/192.168.10.10] (0) 5.683ms
[[ DEBUG ][ - [2024-01-11 08:03:30.086] - MeterValuesManager.cpp:361 - Clock aligned meter values : Current.Import,Energy.Active.Import.Register,Power.Active.Import,Voltage.L1-L2,Voltage.L2-L3,Voltage.L3-L1,SoC,Temperature
[[ DEBUG ][ - [2024-01-11 08:03:30.136] - RequestFifo.cpp:44 - Transaction related request FIFO : pushing MeterValues request
[[ DEBUG ][ - [2024-01-11 08:03:30.203] - RequestFifo.cpp:44 - Transaction related request FIFO : pushing MeterValues request
[2024/01/11 08:03:30:5374] N: __lws_lc_tag:  ++ [wsicli|b|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:30:5416] N: [wsicli|b|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:30:5422] N: __lws_lc_untag:  -- [wsicli|b|WS/h1/default/192.168.10.10] (0) 4.706ms
[2024/01/11 08:03:31:5856] N: __lws_lc_tag:  ++ [wsicli|c|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:31:5888] N: [wsicli|c|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:31:5893] N: __lws_lc_untag:  -- [wsicli|c|WS/h1/default/192.168.10.10] (0) 3.705ms
[2024/01/11 08:03:32:6297] N: __lws_lc_tag:  ++ [wsicli|d|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:32:6326] N: [wsicli|d|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:32:6331] N: __lws_lc_untag:  -- [wsicli|d|WS/h1/default/192.168.10.10] (0) 3.349ms
[2024/01/11 08:03:33:7526] N: __lws_lc_tag:  ++ [wsicli|e|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:33:7571] N: [wsicli|e|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:33:7576] N: __lws_lc_untag:  -- [wsicli|e|WS/h1/default/192.168.10.10] (0) 4.948ms
[2024/01/11 08:03:34:9036] N: __lws_lc_tag:  ++ [wsicli|f|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:34:9078] N: [wsicli|f|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 9 says e 111
[2024/01/11 08:03:34:9082] N: __lws_lc_untag:  -- [wsicli|f|WS/h1/default/192.168.10.10] (0) 4.626ms
[2024/01/11 08:03:35:9687] N: __lws_lc_tag:  ++ [wsicli|10|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:35:9732] N: [wsicli|10|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:35:9737] N: __lws_lc_untag:  -- [wsicli|10|WS/h1/default/192.168.10.10] (0) 5.001ms
[2024/01/11 08:03:37:0820] N: __lws_lc_tag:  ++ [wsicli|11|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:37:0863] N: [wsicli|11|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:37:0868] N: __lws_lc_untag:  -- [wsicli|11|WS/h1/default/192.168.10.10] (0) 4.738ms
[2024/01/11 08:03:38:1802] N: __lws_lc_tag:  ++ [wsicli|12|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:38:1847] N: [wsicli|12|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:38:1852] N: __lws_lc_untag:  -- [wsicli|12|WS/h1/default/192.168.10.10] (0) 4.974ms
[2024/01/11 08:03:39:2746] N: __lws_lc_tag:  ++ [wsicli|13|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:39:2802] N: [wsicli|13|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:39:2808] N: __lws_lc_untag:  -- [wsicli|13|WS/h1/default/192.168.10.10] (0) 6.169ms
[2024/01/11 08:03:40:3523] N: __lws_lc_tag:  ++ [wsicli|14|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:40:3566] N: [wsicli|14|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:40:3653] N: __lws_lc_untag:  -- [wsicli|14|WS/h1/default/192.168.10.10] (0) 12.995ms
[2024/01/11 08:03:41:5158] N: __lws_lc_tag:  ++ [wsicli|15|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:41:5207] N: [wsicli|15|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:41:5212] N: __lws_lc_untag:  -- [wsicli|15|WS/h1/default/192.168.10.10] (0) 5.346ms
[2024/01/11 08:03:42:5235] N: __lws_lc_tag:  ++ [wsicli|16|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:42:5271] N: [wsicli|16|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:42:5275] N: __lws_lc_untag:  -- [wsicli|16|WS/h1/default/192.168.10.10] (0) 3.953ms
[2024/01/11 08:03:43:5889] N: __lws_lc_tag:  ++ [wsicli|17|WS/h1/default/192.168.10.10] (1)
[2024/01/11 08:03:43:5950] N: [wsicli|17|WS/h1/default/192.168.10.10]: lws_client_connect_check: getsockopt fd 8 says e 111
[2024/01/11 08:03:43:5954] N: __lws_lc_untag:  -- [wsicli|17|WS/h1/default/192.168.10.10] (0) 6.518ms
[2024/01/11 08:03:44:6350] N: __lws_lc_tag:  ++ [wsicli|18|WS/h1/default/192.168.10.10] (1)
[[ INFO  ][ - [2024-01-11 08:03:44.657] - ChargePoint.cpp:924 - Connected to Central System
[[  COM  ][ - [2024-01-11 08:03:44.744] - ChargePoint.cpp:989 - TX : [2, "1849143082", "StatusNotification", {"connectorId":1,"errorCode":"NoError","status":"Available","timestamp":"2024-01-11T00:03:25Z"}]
[[  COM  ][ - [2024-01-11 08:03:49.823] - ChargePoint.cpp:989 - TX : [2, "1849143083", "StatusNotification", {"connectorId":2,"errorCode":"NoError","status":"Preparing","timestamp":"2024-01-11T00:02:56Z"}]
[[ INFO  ][ - [2024-01-11 08:03:54.844] - RequestFifoManager.cpp:80 - Restart transaction related FIFO processing
[[ DEBUG ][ - [2024-01-11 08:03:54.876] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 0/3
[[  COM  ][ - [2024-01-11 08:03:54.910] - ChargePoint.cpp:989 - TX : [2, "1849143084", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:03:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ ERROR ][ - [2024-01-11 08:03:54.987] - ChargePoint.cpp:953 - Connection lost with Central System
[2024/01/11 08:03:55:0928] N: __lws_lc_untag:  -- [wsicli|18|WS/h1/default/192.168.10.10] (0) 10.457s
[[ DEBUG ][ - [2024-01-11 08:03:55.936] - Connectors.cpp:303 - Connector 2 updated in database
[[ INFO  ][ - [2024-01-11 08:03:55.958] - StatusManager.cpp:167 - Connector 2 : Available
[2024/01/11 08:03:56:2556] N: __lws_lc_tag:  ++ [wsicli|19|WS/h1/default/192.168.10.10] (1)
[[ INFO  ][ - [2024-01-11 08:03:56.286] - ChargePoint.cpp:924 - Connected to Central System
[[ DEBUG ][ - [2024-01-11 08:03:59.960] - RequestFifoManager.cpp:240 - Request failed, next retry in 5second(s)
[[  COM  ][ - [2024-01-11 08:03:59.962] - ChargePoint.cpp:989 - TX : [2, "1849143085", "StatusNotification", {"connectorId":1,"errorCode":"NoError","status":"Available","timestamp":"2024-01-11T00:03:25Z"}]
[[ DEBUG ][ - [2024-01-11 08:04:00.086] - MeterValuesManager.cpp:361 - Clock aligned meter values : Current.Import,Energy.Active.Import.Register,Power.Active.Import,Voltage.L1-L2,Voltage.L2-L3,Voltage.L3-L1,SoC,Temperature
[[ DEBUG ][ - [2024-01-11 08:04:00.115] - RequestFifo.cpp:44 - Transaction related request FIFO : pushing MeterValues request
[[ DEBUG ][ - [2024-01-11 08:04:00.173] - RequestFifo.cpp:44 - Transaction related request FIFO : pushing MeterValues request
[[ DEBUG ][ - [2024-01-11 08:04:04.997] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 1/3
[[ INFO  ][ - [2024-01-11 08:04:05.060] - RequestFifoManager.cpp:80 - Restart transaction related FIFO processing
[[  COM  ][ - [2024-01-11 08:04:05.062] - ChargePoint.cpp:989 - TX : [2, "1849143086", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:03:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ DEBUG ][ - [2024-01-11 08:04:05.092] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 1/3
[[  COM  ][ - [2024-01-11 08:04:05.265] - ChargePoint.cpp:982 - RX : [3,"1849143082",{}]
[[  COM  ][ - [2024-01-11 08:04:05.325] - ChargePoint.cpp:982 - RX : [3,"1849143083",{}]
[[  COM  ][ - [2024-01-11 08:04:05.361] - ChargePoint.cpp:982 - RX : [3,"1849143084",{}]
[[  COM  ][ - [2024-01-11 08:04:05.414] - ChargePoint.cpp:982 - RX : [3,"1849143085",{}]
[[  COM  ][ - [2024-01-11 08:04:05.454] - ChargePoint.cpp:982 - RX : [3,"1849143086",{}]
[[ DEBUG ][ - [2024-01-11 08:04:05.477] - RequestFifoManager.cpp:218 - Request succeeded
[[  COM  ][ - [2024-01-11 08:04:05.482] - ChargePoint.cpp:989 - TX : [2, "1849143087", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:03:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"400","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ DEBUG ][ - [2024-01-11 08:04:05.512] - RequestFifo.cpp:101 - Transaction related request FIFO : poping MeterValues request
[[ DEBUG ][ - [2024-01-11 08:04:05.572] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 0/3
[[  COM  ][ - [2024-01-11 08:04:05.586] - ChargePoint.cpp:982 - RX : [3,"1849143087",{}]
[[ DEBUG ][ - [2024-01-11 08:04:05.631] - RequestFifoManager.cpp:218 - Request succeeded
[[  COM  ][ - [2024-01-11 08:04:05.638] - ChargePoint.cpp:989 - TX : [2, "1849143088", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:03:30Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ DEBUG ][ - [2024-01-11 08:04:05.668] - RequestFifo.cpp:101 - Transaction related request FIFO : poping MeterValues request
[[ DEBUG ][ - [2024-01-11 08:04:05.733] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 0/3
[[  COM  ][ - [2024-01-11 08:04:05.742] - ChargePoint.cpp:982 - RX : [3,"1849143088",{}]
[[ DEBUG ][ - [2024-01-11 08:04:05.784] - RequestFifoManager.cpp:218 - Request succeeded
[[  COM  ][ - [2024-01-11 08:04:05.792] - ChargePoint.cpp:989 - TX : [2, "1849143089", "MeterValues", {"connectorId":1,"meterValue":[{"timestamp":"2024-01-11T00:04:00Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"258.140","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"399","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"60","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"15","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ DEBUG ][ - [2024-01-11 08:04:05.822] - RequestFifo.cpp:101 - Transaction related request FIFO : poping MeterValues request
[[ DEBUG ][ - [2024-01-11 08:04:05.889] - RequestFifoManager.cpp:116 - Request FIFO processing MeterValues retries : 0/3
[[  COM  ][ - [2024-01-11 08:04:05.899] - ChargePoint.cpp:982 - RX : [3,"1849143089",{}]
[[ DEBUG ][ - [2024-01-11 08:04:05.940] - RequestFifoManager.cpp:218 - Request succeeded
[[  COM  ][ - [2024-01-11 08:04:05.942] - ChargePoint.cpp:989 - TX : [2, "1849143090", "MeterValues", {"connectorId":2,"meterValue":[{"timestamp":"2024-01-11T00:04:00Z","sampledValue":[{"value":"0.0","context":"Sample.Clock","format":"Raw","measurand":"Current.Import","unit":"A"},{"value":"267.630","context":"Sample.Clock","format":"Raw","measurand":"Energy.Active.Import.Register","unit":"kWh"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Power.Active.Import","unit":"W"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L1-L2","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L2-L3","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"Voltage","phase":"L3-L1","unit":"V"},{"value":"0","context":"Sample.Clock","format":"Raw","measurand":"SoC","unit":"Percent"},{"value":"14","context":"Sample.Clock","format":"Raw","measurand":"Temperature","unit":"Celsius"}]}]}]
[[ DEBUG ][ - [2024-01-11 08:04:05.972] - RequestFifo.cpp:101 - Transaction related request FIFO : poping MeterValues request
[[  COM  ][ - [2024-01-11 08:04:06.049] - ChargePoint.cpp:982 - RX : [3,"1849143090",{}]
[[ DEBUG ][ - [2024-01-11 08:04:06.076] - RequestFifoManager.cpp:218 - Request succeeded
[[ DEBUG ][ - [2024-01-11 08:04:06.103] - RequestFifo.cpp:101 - Transaction related request FIFO : poping  request


Take into account modifications of ClockAlignedDataInterval configuration key at runtime

When the configuration key ClockAlignedDataInterval is modified the effect is not taken into account until the stack has been restarted. It shall be taken into account as soon as the modification occurs.

Note: the behavior for the MeterValueSampleInterval configuration key is correct since the new value is taken into account as soon as a new transaction begins and doesn't affect the alredy running transactions.

HeartbeatInterval not updated when changed by backend

When the backend changes the HeartbeatInterval parameter, the heartbeat interval does not actually change. The heartbeat timer is restarted with the interval that the timer was started with, instead of the parameter stored in the config.

I'll open a PR to solve this

Regarding the issue of the root certificate being unable to verify the certificate,

Dear author, hello.

I have encountered some issues regarding certificate-related functionality, particularly regarding the problem of root certificate verification for certificates.

  1. Currently, I have two certificates: 1.pem (containing certificate A) and 2.pem (containing certificates B and C). The complete certificate chain is A/B/C (with C being the top-level CA).

  2. When I attempt to verify 1.pem using 2.pem (root), I receive a failure result (from the return value of the Certificate::verify function in Certificate.cpp).

  3. I have tried swapping the order of certificates B and C in 2.pem, but I still receive a failure result (from the return value of the Certificate::verify function in Certificate.cpp).

  4. In the same operating system and environment, I have tried using the openssl command for verification:

openssl verify -CAfile 2.pem 1.pem

I have tried both swapping and not swapping the order of certificates B and C in 2.pem, and in both cases, the verification succeeds.

Dear author, could you please provide me with some suggestions for modification?

Below is the PEM content of the certificates:

[1.pem]
-----BEGIN CERTIFICATE-----
MIIGfzCCBOegAwIBAgIRAP90I3tYvw8Yh0nkJvGU0qwwDQYJKoZIhvcNAQEMBQAw
WTELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs
IEluYy4xIzAhBgNVBAMTGlRydXN0QXNpYSBSU0EgRFYgVExTIENBIEcyMB4XDTIz
MDgwMTAwMDAwMFoXDTI0MDgzMDIzNTk1OVowGjEYMBYGA1UEAxMPd3lldmNoYXJn
ZXIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArCXBTauJGBG1
ZI/eoR5OAPIXCGd9stkFbAaNRTsqmJ3JjoZve8u0xvl9r2sw4Ya9YoyYN5+Sxbvr
awu2jUeYOTG8k30lcw9vpB/k/btsvNuWBDJRklj9LKgzbmBrXFHBSmVPlen7SFu4
nttZctlIrGWByete9jn69y5UArlOGw6mXYBDromIcbH0Dw36uCTzGXFqQt03VWjC
tInUaX9WiLdELvUjZZPXYNq+RiXAzNGtNK9rNZJky7wqjOD4i3PLi9zfEeqG75ti
kIcwC4qFhli6Dz/EmaObwe1868caG+rS+DFO4mf7fY7c04Zj7EhM0E7undvQ1VQz
FxcSz4fbjQIDAQABo4IC/zCCAvswHwYDVR0jBBgwFoAUXzp8ERB+DGdxYdyLo7UA
A2f1VxwwHQYDVR0OBBYEFJUXz+oJyWpOfsZvi7itDfO1OanPMA4GA1UdDwEB/wQE
AwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD
AjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIxMCUwIwYIKwYBBQUHAgEWF2h0dHBz
Oi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB9BggrBgEFBQcBAQRxMG8wQgYI
KwYBBQUHMAKGNmh0dHA6Ly9jcnQudHJ1c3QtcHJvdmlkZXIuY24vVHJ1c3RBc2lh
UlNBRFZUTFNDQUcyLmNydDApBggrBgEFBQcwAYYdaHR0cDovL29jc3AudHJ1c3Qt
cHJvdmlkZXIuY24wLwYDVR0RBCgwJoIPd3lldmNoYXJnZXIuY29tghN3d3cud3ll
dmNoYXJnZXIuY29tMIIBfwYKKwYBBAHWeQIEAgSCAW8EggFrAWkAdgB2/4g/Crb7
lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6dAAAAYmurIGzAAAEAwBHMEUCIQDC1Iup
XhCHSihbyuf6qG9/ZxKwLJxv6tksbw8j59WKUAIgeuk5jjvH6dJERSSxKSjDvx56
aiQKm0jEtCdtnRfHBQcAdgDatr9rP7W2Ip+bwrtca+hwkXFsu1GEhTS9pD0wSNf7
qwAAAYmurIIFAAAEAwBHMEUCIQDBCvCY8TF6hgp0XqDH+Jir8SscT3WF5RSqGnP9
3bgq9QIgLv9V1ldDmN0XdNg1SiyQcXOmafMSd8SgLShH5E+RprcAdwDuzdBk1dsa
zsVct520zROiModGfLzs3sNRSFlGcR+1mwAAAYmurIHiAAAEAwBIMEYCIQCWj7fn
AUbktgKJ26mscZ6Va/wHNKodEYR3XKT4JgdXfAIhAItFRZM2rAnKOKHsz7TOJKNy
4WZx6rzPNMr5sVh9V50sMA0GCSqGSIb3DQEBDAUAA4IBgQCLgSNYEZeZpMY9/Vlc
ctinjIAExRjbaaTd78pBq8ziev7JT9MhOkmSgsTSE/vT0nIzYoXZHUC1iTz944Xe
+keYFbkYxp1zJ4secQlJPTCz+W4ZvOAGBrY9JJAUjddR8sKUrpKWD0NRh18OvcBD
cRayN3Yxaps6OgElHS2AI4vZq3Vp7fejxphyK+zm19U/vQn+97QQicCsnKrJmLaZ
lsdlWkV3ywAOVGLvIzbv3QG5IrpHrfncN32KXKPWxxtggvK4C+hvt6JmePiXBNo4
REEjoTGoe83GaTTl9R5kRv1T3Se3N0jyu3+joa35nUqFG/iLyDpbhLTqwOXncvaS
L4yvJFHUDEzFurcW7+8kBThbmQVcuy7tvPjbbB0wMKsFov4QOIerOneYyGOMRTtZ
YkUiU2x4GfgGjJLZKF52AWeaq4SIWhHwcGq6d/6OCpbd1e5eZCAFCuO8Qx+iGe0j
enlZVTijr2BLYPdxbzhQsoTqCSFdJku4uhNFEtgpSYKUxoU=
-----END CERTIFICATE-----
[2.pem]
-----BEGIN CERTIFICATE-----
MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y
ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg
VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM
UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs
Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm
qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c
Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf
IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5
8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB
Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8
SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY
1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB
JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE
FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E
CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE
GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo
dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy
bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY
eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO
2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4
3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP
v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s
Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
-----END CERTIFICATE-----

replace system_clock with steady_clock?

Currently in Timer/TimerPool std::system_clock is used for triggering timers. In our testing we got a high CPU usage if the time synchronization is later then the application is started. The initial std::system_clock time point was before the time synchronization took place. After system time does get synchronized, the time jumps forward multiple years, leading to constant triggering of the timers. Using std::steady_clock resolves this issue. Can std::steady_clock be used in the implementation instead of std::system_clock, or is there a reason why std::system_clock is used?

request from chargepoint to central system

I've observed that when charge point is connected to central system, Central system is sending requests regards some operations to charge point and the regarding functions are getting triggered and sending back the response to central system.
but what I've to know is whether the charge point can send request to central system from itself without being called from central system, As I've to use DATA TRANSFER operation from both sides (i.e, central system to charge point and charge point to central system).
so, it is possible to send data transfer from charge point to central system ? If yes, how ?

Regarding the issue with the malfunctioning of the BASE64 decoding

Dear author,

Greetings.

We are currently testing and using the "Firmware Update" module. Here are the details:

  1. Firstly, we used OpenSSL commands to create the necessary digital signature for secure firmware updates:

public.pem: Public key certificate
public_public.pem: Public key information extracted from the public key
firmware.bin: Firmware name
signature.bin: Signature
verify_result: Verification result
Commands:

[1] openssl x509 -in certificate/public.pem -pubkey -noout > public_public.pem
[2] openssl dgst -sha256 -sign certificate/private.pem -out signature.bin certificate/firmware.bin
[3] openssl dgst -sha256 -verify public_public.pem -signature signature.bin -out verify_result firmware.bin
  1. Next, we configured the relevant public key and signature in the CSMS and tested the secure firmware use case.

  2. By printing the values in MaintenanceManager::handleMessage(const ocpp::messages::SignedUpdateFirmwareReq& request, ocpp::messages::SignedUpdateFirmwareConf& response), we confirmed that signingCertificate and signature are correct.

  3. However, the signing_certificate.verify function returned false, causing the process to fail:

std::vector<uint8_t> decoded_signature = base64::decode(signature);
success = signing_certificate.verify(decoded_signature, local_firmware_file, Sha2::Type::SHA256);
  1. We performed the following analysis to investigate the issue:

5.1 Firstly, when printing std::vector<uint8_t> decoded_signature = base64::decode(signature), we noticed that the returned value had two additional zeros compared to the original data (signature.bin).

Original data:

6e0a79e7b492c0a71ed74a39fa77b94c4074abb1b14604a002f29a3a0e29e1a96f70d2710524d731fa850a07742db58536ec24303f1371859ea9f0eff0358f23363f02d097dce939a2aeac429f44bd79c4a6cd1445c58ceffe1fcf52e5beb1a93e15e1e503e64eb59fc867f6af73bf53c40b0da2ee998d5a441368a0872b38a2f4efe1ae2ff4c4aa4b49a75b9839f3eb8096e423207fbd3456ebe7c77564628370de86cd67c4b0c825803d25c3b4764e29280ec56533bd8e925f31e63cd0dbbe92fb2e92ca9968af88a938d5fab7459eca9149e104cd941f1e96e14b980a93b82c54b2fe6b689e84a97d54249660b8930fca8fe5dacd956f323f2b35fa2c039e

Actual returned data:
6e0a79e7b492c0a71ed74a39fa77b94c4074abb1b14604a002f29a3a0e29e1a96f70d2710524d731fa850a07742db58536ec24303f1371859ea9f0eff0358f23363f02d097dce939a2aeac429f44bd79c4a6cd1445c58ceffe1fcf52e5beb1a93e15e1e503e64eb59fc867f6af73bf53c40b0da2ee998d5a441368a0872b38a2f4efe1ae2ff4c4aa4b49a75b9839f3eb8096e423207fbd3456ebe7c77564628370de86cd67c4b0c825803d25c3b4764e29280ec56533bd8e925f31e63cd0dbbe92fb2e92ca9968af88a938d5fab7459eca9149e104cd941f1e96e14b980a93b82c54b2fe6b689e84a97d54249660b8930fca8fe5dacd956f323f2b35fa2c039e00

We attempted to remove these two zeros and found that the verification passed.

5.2 The issue is likely with the base64::decode(signature) function.

Regarding the modification of the base64::decode(signature) function, can you provide some suggestions?

Add support for OpenSSL 3.x

Add support for OpenSSL 3.x.
In the current version, the library use OpenSSL 1.1.X API, it must support both versions of OpenSSL.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.