← 목록
기타 2026-07-21 4KB 읽기 4분

crowny-space 기기 페어링/발견 라이브러리 (SC1 규격 엔티티화)

개요

space.crowny.org 홈어시스턴트의 '+ 기기 추가'(현재 토스트만)를 위해 Home Assistant 페어링 모델(스캔→발견→Area 배정→등록)을 규격화하는 라이브러리 페어링.한선을 신규 작성했다. 발견된 기기는 SC1(센서코드.한선) 규격의 엔티티가 된다.

무엇을 했는지

  1. /Users/ef/crowny-space/규격/페어링.한선 신규 작성(함수정의만, 기동문 없음):
- 페어세션시작(프로토콜) / 페어검증(세션,코드) / 세션사용처리(세션) — SC1(센서코드.한선) 체크섬 프레임 관례를 재사용한 무상태 세션(문자열 자체에 상태 봉인, 내부 DB 없음). - 발견시뮬(프로토콜,시드) — zigbee(전구/모션/도어센서 3종), zwave(도어락), matter(플러그), mqtt(온습도) 대표 기기 카탈로그 + demo 프로토콜로 에어컨(climate+sensor.temp+sensor.filter 3엔티티) 팬아웃 시연. - 기기등록(공간,기기,영역) — Device 1개→엔티티 n개 팬아웃, SC1 타입코드·초기상태·area 포함 배열 + 서버 엔티티상태.psv 형식과 일치하는 참고용 PSV 라인 반환. - 어댑터이름/어댑터스캔/어댑터정규화 — zigbee2mqtt 등 실연동 지점 stub(시그니처 확정, 현재는 발견시뮬로 위임). - 셀코어페어검증(세션,코드) — 룰생성/룰조건추가/룰변경추가로 등록가능 판정을 병행 표현(센서코드.한선 셀코어범위검증과 동일 패턴). - 자체시험 페어자체시험() 30 assert (PAIR_SELFTEST=1 게이트) — 전부 PASS.
  1. /Users/ef/crowny-space/규격/페어링-통합명세.md — 서버가 추가할 라우트
3종(POST /api/pair/scan, POST /api/pair/register, GET /api/pair/session/<id>)의 요청/응답 JSON, 엔티티상태.psv 반영 방식 (_엔티티신규등록() 재사용 권장), 가져오기 순서 함정과 해법(서버.한선이 규격/페어링.한선을 가져오기하려면 규격/센서코드.한선을 먼저 가져오기해야 함 — hanseonc_high의 가져오기 경로 해석이 entry file 디렉토리에 고정되는 특성 때문), 무상태 설계의 함의를 정확히 기술.

검증

cd /Users/ef/CrownyOS/crownyc
CROWNY_STRICT=1 ./hanseonc_high /Users/ef/crowny-space/규격/페어링.한선 > /tmp/pair.toau
# → STRICT 경고 0
PAIR_SELFTEST=1 ./crownyc run /tmp/pair.toau
# → ALL_PASS 30/30

한 번 실패(치환() 첫 항목만 치환 — 전체치환() 필요)를 잡아 수정 후 재검증 통과. ~/.claude/scripts/crownycode-brain.sh learn "기기페어링발견" 페어링.한선 로 학습 완료.

크라우니코드

  • 학습DB fn_QR페어링_*(사용자계정↔모바일기기 QR 링크, DB조회/DB삽입 CRUD
기반) 조회: HIT였지만 도메인(계정 링크 vs 네트워크 기기 발견)과 저장모델 (CRUD DB vs 무상태 체크섬 프레임)이 달라 함수를 직접 재사용하지 않음. 대신 관용구 3종을 이식(재사용 사유 명시): ①"PAIR-" 접두 세션ID 표시 (_페어ID생성 idiom → 세션ID표시()), ②"CROWNY_PAIR:v1:..." QR 매직 문자열(페어링QR데이터 idiom → 페어QR데이터()), ③init→pending→ approved/rejected/expired류 상태기계 → 페어검증() 4상(티/옴/타/음).
  • lookup MISS(정확 키), search HIT 다수(재사용 사유 상기)/생성 1건(페어링.한선
전체) / learn 추가 1건.

관련 파일

  • /Users/ef/crowny-space/규격/페어링.한선 (신규)
  • /Users/ef/crowny-space/규격/페어링-통합명세.md (신규)
  • 참조(읽기 전용, 미수정): /Users/ef/crowny-space/서버.한선,
/Users/ef/crowny-space/규격/센서코드.한선, /Users/ef/crowny-space/규격/센서코드규격-v1.md

잔여 이슈

  • RPN(.rpn.한선) 동반 미완(센서코드.한선과 동일 이유 — 한 줄 다중 문장 +
함수호출식 관용구를 clike_to_rpn 변환기가 소화 못함).
  • 서버 라우트 3종 실제 배선은 이 작업 범위 밖(서버.한선 편집 금지 지시,
다른 에이전트 병렬 작업 중) — 통합명세.md가 서버 담당자를 위한 정확한 시방서 역할.
  • /api/pair/scan의 스캔 시드 카운터, /api/pair/register의 발견목록
재조회 방식은 서버 구현 시 결정할 세부사항(통합명세 §6 참조).