FirmwareStatusNotification 개요
FirmwareStatusNotification은 충전소에서 중앙 시스템(CSMS)으로 보내는 펌웨어 업데이트 상태 알림 메시지입니다. 이 메시지는 UpdateFirmware 요청에 대한 응답으로 펌웨어 다운로드, 설치, 검증의 전체 과정에서 발생하는 상태 변화를 실시간으로 CSMS에 보고하여 펌웨어 업데이트 프로세스의 완전한 가시성을 제공합니다.
메시지 구조
Request (충전소 → CSMS)
{
"status": "Downloading",
"requestId": 12345,
"statusInfo": {
"reasonCode": "NoError",
"additionalInfo": "펌웨어 다운로드 진행률: 65% (32.5MB / 50.0MB)"
}
}
Response (CSMS → 충전소)
{
"customData": {
"vendorId": "FirmwareManager",
"data": "Download progress acknowledged"
}
}
주요 필드 설명
Request 필드들
status 필드 (필수)
값 |
설명 |
Downloaded |
다운로드 완료됨 |
DownloadFailed |
다운로드 실패 |
Downloading |
다운로드 진행 중 |
DownloadScheduled |
다운로드 예약됨 |
DownloadPaused |
다운로드 일시정지 |
Idle |
유휴 상태 - 펌웨어 작업 없음 |
InstallationFailed |
설치 실패 |
Installing |
설치 진행 중 |
Installed |
설치 완료됨 |
InstallRebooting |
설치를 위한 재부팅 중 |
InstallScheduled |
설치 예약됨 |
InstallVerificationFailed |
설치 검증 실패 |
InvalidSignature |
잘못된 서명 |
SignatureVerified |
서명 검증 완료 |
requestId 필드 (필수)
필드명 |
필수여부 |
타입 |
설명 |
requestId |
필수 |
Integer |
UpdateFirmware 요청의 requestId (요청-응답 매칭용) |
statusInfo 필드 (선택사항)
필드명 |
필수여부 |
타입 |
설명 |
reasonCode |
선택사항 |
String |
상태 이유 코드 |
additionalInfo |
선택사항 |
String |
추가 상세 정보 (진행률, 오류 메시지 등) |
Response 필드들
필드명 |
필수여부 |
타입 |
설명 |
customData |
선택사항 |
Object |
벤더별 사용자 정의 데이터 |
실제 사용 예제
예제 1: 다운로드 예약 확인
// Request
{
"status": "DownloadScheduled",
"requestId": 12345,
"statusInfo": {
"reasonCode": "ScheduleAccepted",
"additionalInfo": "펌웨어 v2.1.5 다운로드 예약됨."
}
}
// Response
{
"customData": {
"vendorId": "ScheduleManager",
"data": "Download schedule confirmed"
}
}
예제 2: 다운로드 진행률 업데이트
// Request
{
"status": "Downloading",
"requestId": 12345,
"statusInfo": {
"reasonCode": "DownloadInProgress",
"additionalInfo": "다운로드 진행률: 45% (22.5MB / 50.0MB)"
}
}
// Response
{
"customData": {
"vendorId": "ProgressTracker",
"data": "Progress update received"
}
}
예제 3: 다운로드 완료 및 서명 검증
// Request
{
"status": "Downloaded",
"requestId": 12345,
"statusInfo": {
"reasonCode": "DownloadCompleted",
"additionalInfo": "펌웨어 다운로드 완료."
}
}
// Response
{
"customData": {
"vendorId": "SecurityValidator",
"action": "verify_signature",
"data": "Initiating signature verification"
}
}
예제 4: 서명 검증 성공
// Request
{
"status": "SignatureVerified",
"requestId": 12345,
"statusInfo": {
"reasonCode": "SignatureValid",
"additionalInfo": "디지털 서명 검증 성공"
}
}
// Response
{
"customData": {
"vendorId": "SecurityValidator",
"data": "Signature verification successful"
}
}
예제 5: 설치 시작
// Request
{
"status": "Installing",
"requestId": 12345,
"statusInfo": {
"reasonCode": "InstallationStarted",
"additionalInfo": "펌웨어 설치 시작."
}
}
// Response
{
"customData": {
"vendorId": "InstallManager",
"data": "Installation process initiated"
}
}
예제 6: 설치 완료
// Request
{
"status": "Installed",
"requestId": 12345,
"statusInfo": {
"reasonCode": "InstallationSuccessful",
"additionalInfo": "펌웨어 v2.1.5 설치 완료."
}
}
// Response
{
"customData": {
"vendorId": "VersionManager",
"action": "update_registry",
"data": "Firmware version registry updated"
}
}
예제 7: 다운로드 실패
// Request
{
"status": "DownloadFailed",
"requestId": 12346,
"statusInfo": {
"reasonCode": "NetworkTimeout",
"additionalInfo": "네트워크 타임아웃으로 다운로드 실패."
}
}
// Response
{
"customData": {
"vendorId": "RetryManager",
"action": "schedule_retry",
"data": "Retry scheduled with increased timeout"
}
}
예제 8: 서명 검증 실패
// Request
{
"status": "InvalidSignature",
"requestId": 12347,
"statusInfo": {
"reasonCode": "SignatureVerificationFailed",
"additionalInfo": "디지털 서명 검증 실패"
}
}
// Response
{
"customData": {
"vendorId": "SecurityManager",
"action": "security_alert",
"data": "Invalid firmware signature reported to security team"
}
}
예제 9: 설치 실패 및 롤백
// Request
{
"status": "InstallationFailed",
"requestId": 12348,
"statusInfo": {
"reasonCode": "BootloaderError",
"additionalInfo": "부트로더 오류로 설치 실패."
}
}
// Response
{
"customData": {
"vendorId": "RecoveryManager",
"action": "initiate_rollback",
"data": "Automatic rollback procedure activated"
}
}
펌웨어 업데이트 상태 흐름
성공적인 업데이트 시나리오
- DownloadScheduled: "다운로드가 예약되었습니다"
- Downloading: "다운로드 진행 중: 25%, 50%, 75%..."
- Downloaded: "다운로드 완료되었습니다"
- SignatureVerified: "서명 검증이 성공했습니다"
- InstallScheduled: "설치가 예약되었습니다"
- Installing: "설치 진행 중입니다"
- InstallRebooting: "설치를 위해 재부팅 중입니다"
- Installed: "설치가 완료되었습니다"
다운로드 실패 및 재시도 시나리오
- DownloadScheduled: "다운로드 예약"
- Downloading: "다운로드 진행 중"
- DownloadFailed: "네트워크 오류로 실패"
- Downloading: "재시도 중"
- Downloaded: "재시도 후 성공"
보안 검증 실패 시나리오
- Downloaded: "다운로드 완료"
- InvalidSignature: "서명 검증 실패"
- Idle: "대기 상태로 복귀"
진행률 모니터링
다운로드 진행률
{
"status": "Downloading",
"statusInfo": {
"additionalInfo": "진행률: 73% (36.5MB/50.0MB)"
}
}
설치 진행률
{
"status": "Installing",
"statusInfo": {
"additionalInfo": "설치 단계: 부트로더 업데이트 (2/4), 진행률: 50%"
}
}
검증 과정
{
"status": "SignatureVerified",
"statusInfo": {
"additionalInfo": "체크섬 검증: 통과"
}
}
오류 분류 및 처리
네트워크 관련 오류
- DownloadFailed: 연결 타임아웃, 속도 저하
- 자동 재시도 메커니즘 활성화
- 재시도 간격 조정
보안 관련 오류
- InvalidSignature: 서명 불일치, 인증서 만료
- 파일 즉시 삭제
- 보안 팀 알림
시스템 관련 오류
- InstallationFailed: 저장 공간 부족
- 자동 롤백 실행
- 기술 지원팀 알림
성능 지표 및 분석
다운로드 성능
- 평균 다운로드 속도: MB/s
- 완료율: 성공/실패 비율
- 재시도 빈도 분석
설치 성능
- 평균 설치 시간: 분/초
- 재부팅 횟수와 소요 시간
- 롤백 발생 빈도
보안 지표
- 서명 검증 성공률
- 잘못된 펌웨어 탐지 횟수
- 보안 정책 위반 사례
중요 포인트
- FirmwareStatusNotification은 펌웨어 업데이트의 전체 생명주기를 추적하는 핵심 메시지입니다
- 실시간 진행률 업데이트를 통해 관리자와 사용자에게 투명성을 제공합니다
requestId
를 통해 여러 동시 업데이트 요청을 구별하고 추적할 수 있습니다
- 상세한
additionalInfo
는 문제 진단과 성능 분석에 중요한 데이터를 제공합니다
- 보안 검증 실패 시 즉시 알림하여 악성 펌웨어 설치를 방지합니다
- 설치 실패 시 자동 롤백 메커니즘이 시스템 안정성을 보장합니다
- 네트워크 문제 시 재시도 로직이 업데이트 성공률을 향상시킵니다
- CSMS는 상태 정보를 바탕으로 업데이트 정책을 최적화할 수 있습니다
이 메시지를 통해 펌웨어 업데이트 과정의 완전한 가시성을 확보하고, 문제 발생 시 신속한 대응이 가능하며, 전체 충전소 네트워크의 펌웨어 관리를 효율적이고 안전하게 수행할 수 있습니다.