Skip to content

If GetDiagnostics failed again, charger didn't send DiagnosticsStatusNotification #397

@JungHeum-Park

Description

@JungHeum-Park

Hi @matth-x .
I'm using v1.2.0.
I'm working with FirmwareUpdate/Diagnostics.

After Diagnostics upload failed, if I request GetDiagnostic again, charger didn't send DiagnosticsStatusNotification.

Here's log

[MO] Recv: [2,"81ce6fca-6967-48ff-8391-1255116ca892","GetDiagnostics",{"location":"ftp://127.0.0.1:21/files/failedLocation"}]
[MO] info (DiagnosticsService.cpp:173): Scheduled Diagnostics upload!
                  location = ftp://127.0.0.1:21/files/failedLocation/diagnostics.log
                  retries = 1, retryInterval = 20                  startTime = 1970-01-01T00:00:00Z
                  stopTime = 2026-01-24T05:13:41Z
[MO] debug (DiagnosticsService.cpp:185): Initial try at 2025-01-24T05:13:47Z
[MO] verbose (RequestQueue.cpp:74): front 1 len 0
[MO] Send: [3,"81ce6fca-6967-48ff-8391-1255116ca892",{"fileName":"diagnostics.log"}]
[MO] debug (DiagnosticsService.cpp:66): Call onUpload
[MO] debug (DiagnosticsService.cpp:379): discovered 3 files
[MO] debug (FtpMbedTLS.cpp:504): init upload ftp://127.0.0.1:21/files/failedLocation/diagnostics.log
[MO] debug (FtpMbedTLS.cpp:829): parsed dir: /files/failedLocation; fname: diagnostics.log
[MO] debug (FtpMbedTLS.cpp:854): parsed user: ; pass: -***
[MO] debug (FtpMbedTLS.cpp:871): parsed host: 127.0.0.1; port: 21
[MO] ERROR (FtpMbedTLS.cpp:276): mbedtls_net_connect: 1
[MO] ERROR (FtpMbedTLS.cpp:302): connect: 1
[MO] ERROR (FtpMbedTLS.cpp:522): could not establish connection to FTP server: 1
[MO] info (DiagnosticsService.cpp:469): FTP upload failure (2)
[MO] warning (DiagnosticsService.cpp:99): Upload timeout or failed
[MO] debug (DiagnosticsService.cpp:112): end upload routine (no more retry)
[MO] verbose (RequestQueue.cpp:74): front 3 len 0
[MO] Send: [2,"b177a108-92fa-e60a-66bc-639534ecf5d3","DiagnosticsStatusNotification",{"status":"UploadFailed"}]
[MO] Recv: [3,"b177a108-92fa-e60a-66bc-639534ecf5d3",{}]
[MO] Recv: WS pong
[MO] Recv: WS pong
[MO] Recv: WS pong
[MO] Recv: WS pong
[MO] Recv: WS pong
[MO] Recv: [2,"36c364c0-aa10-4aaf-9b68-7203256f0dbe","GetDiagnostics",{"location":"ftp://127.0.0.1:21/files/failedLocation"}]
[MO] info (DiagnosticsService.cpp:173): Scheduled Diagnostics upload!
                  location = ftp://127.0.0.1:21/files/failedLocation/diagnostics.log
                  retries = 1, retryInterval = 20                  startTime = 1970-01-01T00:00:00Z
                  stopTime = 2026-01-24T05:14:51Z
[MO] debug (DiagnosticsService.cpp:185): Initial try at 2025-01-24T05:14:56Z
[MO] verbose (RequestQueue.cpp:74): front 2 len 0
[MO] Send: [3,"36c364c0-aa10-4aaf-9b68-7203256f0dbe",{"fileName":"diagnostics.log"}]
[MO] debug (DiagnosticsService.cpp:66): Call onUpload
[MO] debug (DiagnosticsService.cpp:379): discovered 3 files
[MO] debug (FtpMbedTLS.cpp:504): init upload ftp://127.0.0.1:21/files/failedLocation/diagnostics.log
[MO] debug (FtpMbedTLS.cpp:829): parsed dir: /files/failedLocation; fname: diagnostics.log
[MO] debug (FtpMbedTLS.cpp:854): parsed user: ; pass: -***
[MO] debug (FtpMbedTLS.cpp:871): parsed host: 127.0.0.1; port: 21
[MO] ERROR (FtpMbedTLS.cpp:276): mbedtls_net_connect: 1
[MO] ERROR (FtpMbedTLS.cpp:302): connect: 1
[MO] ERROR (FtpMbedTLS.cpp:522): could not establish connection to FTP server: 1
[MO] info (DiagnosticsService.cpp:469): FTP upload failure (2)
[MO] warning (DiagnosticsService.cpp:99): Upload timeout or failed
[MO] debug (DiagnosticsService.cpp:112): end upload routine (no more retry)
[MO] Recv: WS pong
[MO] Recv: WS pong
[MO] Recv: WS pong

I think the cause of this is that lastReportedStatus has not changed, but I need to check the exact details more.

std::unique_ptr<Request> DiagnosticsService::getDiagnosticsStatusNotification() {
     
    if (getDiagnosticsStatus() != lastReportedStatus) {
        lastReportedStatus = getDiagnosticsStatus();

        if (lastReportedStatus != DiagnosticsStatus::Idle) {
            Operation *diagNotificationMsg = new Ocpp16::DiagnosticsStatusNotification(lastReportedStatus);
            auto diagNotification = makeRequest(diagNotificationMsg);
            return diagNotification;
        }
    }

    return nullptr;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions