에러 조회와 운영자 친화적 표현#

이 프로젝트는 에러 표현을 중요한 기능으로 다룹니다. 단순히 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"],
    }