에러 조회와 운영자 친화적 표현#
이 프로젝트는 에러 표현을 중요한 기능으로 다룹니다. 단순히 raw code만 보여 주는 대신, 다음 네 가지 필드로 해석해서 보여 줍니다.
Error code
Description
Explanation
Suggestion
실제 환경의 에러 상세 화면으로 교체해서 사용할 수 있습니다.#
왜 중요한가#
raw code는 짧고 간결하지만, 파트너 제품에서는 운영자나 서비스 엔지니어가 바로 이해할 수 있는 설명이 훨씬 중요합니다. 그래서 이 프로젝트는 에러를 사용자 친화적인 형식으로 바꾸는 층을 기본으로 포함합니다.
DB 기반 조회#
저장소에는 ``ur_error_codes.sqlite3``가 포함되어 있습니다. GUI와 API 모두 이 로컬 DB를 사용하므로, 외부 네트워크 서비스 없이도 에러 설명을 조회할 수 있습니다.
이 방식은 다음 환경에 특히 유리합니다.
외부 인터넷이 제한된 공장 환경
서비스 노트북 기반 점검 환경
데모나 교육 환경에서 예측 가능한 동작이 필요할 때
라이브 감지 경로#
에러는 여러 경로에서 인식될 수 있습니다.
구조화된 message field
message text 안의 code string
필요할 때 raw packet 검사
코드가 인식되면 클라이언트는 로컬 DB를 조회해서 errors namespace 아래에 네 개 필드를 정리합니다.
대표적인 API 사용#
from ur_client import ClientInterfaceAPI
with ClientInterfaceAPI("192.168.0.10", error_db_path="ur_error_codes.sqlite3") as api:
api.wait_until_ready(timeout=5.0, minimum_packet_count=1)
print(api.read("errors.latest.error_code"))
print(api.read("errors.latest.description"))
print(api.read("errors.latest.explanation"))
print(api.read("errors.latest.suggestion"))
fallback 동작#
어떤 경우에는 매우 구체적인 코드가 정확히 매칭되고, 어떤 경우에는 그룹 단위 코드가 가장 적절한 매칭일 수 있습니다. 그래서 클라이언트는 가장 구체적인 항목이 없더라도 의미 있는 설명을 보여 줄 수 있도록 fallback lookup을 지원합니다.
실시간이 아닌 조회에도 활용 가능#
실시간 모니터링이 아니더라도, 저장해 둔 에러 코드를 나중에 보고서나 HMI에서 렌더링할 수 있습니다.
info = api.lookup_error("C204A7")
if info:
ui_model = {
"error_code": info["error_code"],
"description": info["description"],
"explanation": info["explanation"],
"suggestion": info["suggestion"],
}