요청: space-전기능활성화-센서규격-RPi-FPGA
- 날짜: 2026-07-17 13:44:55
- 작업 경로: /Users/ef/CrownyBrowser
요청 본문
space.crowny.org 모든 기능 활성화할 때까지 하나씩 구현하기. 라즈베리파이와 ESI fpga 모듈들을 적극 이용할 계획. 센서들 코드 규격 표준화할 계획임. 필요한 도구들 열거하고 이미 한선씨코드로 구현된 것 확인(응용 가능한 지 검토 목적), 미구현된 것들 구현해서 한선씨/크라우니화 작업 시작
관련 산출
1. 필요 도구 열거 × 기존 한선씨 자산 대조표 (2026-07-17 조사)
| # | 필요 도구 | 기존 한선씨 자산 | 응용 판정 | 갭 |
|---|---|---|---|---|
| 1 | 센서코드 규격(와이어 포맷) | 없음 | — | 신규 SC1 규격 + 센서코드.한선 코덱 (이번 웨이브) |
| 2 | GPIO 제어 | VM 네이티브 opcode(GPIO개수/정보, /sys/class/gpio RPi5 구현 crownyc.c:8192~) + libs/GPIO.한선(핀모드/쓰기/읽기/토글/풀업/인터럽트) + 학습DB fn_드라이버_GPIO | ✅ 즉시 응용 | RPi 실기 검증만 |
| 3 | 시리얼/UART/I2C/SPI | VM 네이티브(termios) UART읽기/쓰기/초기화·I2C·SPI opcode + 학습DB fn_드라이버_시리얼·SPI전송 | ✅ 즉시 응용 | FPGA 프레임 수신에 사용 |
| 4 | MQTT 클라이언트(zigbee2mqtt 대응) | libs/MQTT.한선(연결/구독/발행/유언/QoS) | ✅ 응용 가능 | 브로커 실연동 검증 후속 |
| 5 | 센서 매니저/보정 | libs/센서드라이버.한선(등록/읽기/보정/온습도/거리/폴링 — 원시값은 시뮬) | ⚙️ 부분 응용 | 시뮬→SC1 규격 출력으로 개조 |
| 6 | 센서 네트워크/퓨전 | libs/센서네트워크.한선(36줄 골격)·센서퓨전.한선 | ⚙️ 참고 수준 | 허브에 흡수 |
| 7 | FPGA 시뮬(게이트/DFF/레지스터/파형) | libs/하드웨어.한선(704줄, ghdl 검증 이력) + 하드웨어확장.한선 | ✅ 응용 가능 | 센서수집 모듈 신규 |
| 8 | FPGA 합성 파이프라인 | libs/한선씨하드웨어합성.한선(115줄 — 게이트레벨/타이밍/비트스트림, 교육 수준) | ⚙️ 골격만 | 실합성은 VHDL+외부 도구 더블 |
| 9 | VHDL 더블 규칙 | 가드레일 VHDL 함정 절 + ghdl 검증 패턴 확립 | ✅ 공정 확립 | 센서 모듈 .vhd 신규 |
| 10 | 지오펜스 판정 | 학습DB 지오펜스_다각형판정·fn_지오펜싱_ | ✅ 응용 가능 | 재실 트래커 배선 후속 |
| 11 | 페어링(기기 추가) | 학습DB fn_QR페어링_(페어ID/QR/세션토큰) | ⚙️ 부분 응용 | 발견 프로토콜 후속 |
| 12 | 자동화 시간/일몰 트리거 | 서버 1차엔진(상태변화만) | — | 서버 확장 (이번 웨이브) |
| 13 | 에너지 적산·누진요금 | 서버 정적 표시만 | — | 서버 확장 (이번 웨이브) |
| 14 | 웹 프론트 라이브 하이드레이션 | CrownyAI spaceBridge.js(브라우저 축만) | ⚙️ 부분 | 웹 /bridge.js (이번 웨이브) |
| 15 | 서버↔허브 어댑터 프로토콜 | hall /bus 이벤트버스 계약 | ⚙️ 부분 | 공간어댑터.한선 + RPi허브.한선 (웨이브 2) |
| 16 | RPi에서 crownyc 실행 | 멀티플랫폼 빌드 지원(RPi5, sysfs GPIO 경로 내장) | ✅ 즉시 응용 | 실기 배포 러너 |
| — | (비해당) real하드웨어.한선 | 베어메탈 렌더 엔진 — 센서와 무관 | — | — |
2. 구현 웨이브 계획
- 웨이브 1(진행 중): ①SC1 센서코드 규격 v1 + 센서코드.한선 코덱(27타입 삼진 인덱스·고정소수점·4상 품질·체크섬) ②서버 확장 3종(시간/일몰 트리거
/api/tick·에너지 적산/api/energy·웹 하이드레이션/bridge.js) - 웨이브 2: ③공간어댑터.한선 + 시뮬어댑터 + RPi허브.한선(GPIO/센서드라이버 재사용, SC1 준수) ④ESI FPGA 센서수집 모듈(하드웨어.한선 시뮬 + VHDL 더블)
- 후속 큐: MQTT 실연동·페어링/발견·지오펜스 재실·hall 어댑터 전환·CrownyAI 브릿지 DOM 하이드레이션 통합·RPi 실기 배포
3. ①SC1 센서코드 규격 v1 완료 (2026-07-17)
- 문서:
/Users/ef/crowny-space/규격/센서코드규격-v1.md— 포맷 정의·27타입 표준표(트릿열 병기)·범위표·체크섬 알고리즘·SCMD 명령 프레임·버전 정책·예시 프레임 10개+SCMD 2개(실제 코덱 출력, 왕복검증됨) - 정본 코덱:
/Users/ef/crowny-space/규격/센서코드.한선(440줄) —SC인코딩/SC디코딩/SC검증,SCMD인코딩/SCMD디코딩,타입코드/타입이름/타입트릿/트릿타입(27타입 표+삼진 라벨 유틸, 내장삼진인코딩미사용 자체구현),범위검사(품질 자동판정),셀코어범위검증(가져오기 "셀코어" — 룰생성/룰조건추가/룰변경추가로 범위검사 로직 병행표현) - 검증:
CROWNY_STRICT=1 ./hanseonc_high 센서코드.한선 → ./crownyc run→ ALL_PASS 110/110, STRICT 경고 0. 27타입 전수 왕복, 체크섬 훼손 검출, 범위밖 품질강등, 미지타입/버전미지원/필드부족 4상 판정, 타입코드↔이름↔트릿 왕복, SCMD 왕복+훼손검출, 셀코어 룰 파리티 등 커버. - 설계 결정: value=정수 고정소수점(스케일 1/10/100/1000), typeCode=0~26 정수(트릿열은 문서/디버그 표시용, 와이어는 정수), quality="T"/"O"/"A" 1문자(U는 프레임구분자
|로만 사용), chk=양수나머지(가중합,997)(crownyc%가 균형나머지라 필수), 필드파싱은 배열(분리()) 대신 스칼라 전용필드꺼내/필드개수자체구현(함수재호출 배열지역변수 함정 회피). - RPN 동반:
clike_to_rpn.한선(Python 버전 폐기·한선씨 도구로 전환됨,tools/clike_to_rpn.py는 삭제되어tools/_삭제됨_python/으로 이동) 자동변환 실패 — "한 줄 다중 문장 + 함수호출식" 관용구를 변환기가 소화 못해hanseonc_rpn컴파일 시 32개 호출식 미인식 경고. RPN 정본화는 후속 과제(변환기 보강 또는 수동 이식). - 학습:
crownycode-brain.sh learn "센서코드규격코덱" 센서코드.한선+crownycode-learn.sh add "센서코드SC1코덱" ...완료. - 잔여: RPN 미완, 대형정수필드(energy/count/misc) 32bit 실기 상한 별도 문서화 필요, LoRa 저대역용 이진 프레임 변환은 후속.
4. ②서버 확장 3종 완료 — 상세 CrownyDoc 2026-07-17-crowny-space-확장3종.md
시간/일몰 트리거(/api/tick + 1분 폴러 LaunchAgent org.crowny.space.tick 라이브)·에너지 적산/누진(/api/energy, 단일행 스냅샷 설계로 65535B 캡 회피)·웹 하이드레이션(/bridge.js, 앱.html 무수정 append). 신규 VM 함정 발견(함수 내 전역 스칼라 bare 재대입=무한재귀) → 가드레일+메모리 즉시 반영.5. ③어댑터 계층 + RPi 허브 완료 — 상세 CrownyDoc 2026-07-17-crowny-space-rpi-허브게이트.md
- 서버 허브 게이트:
POST /api/ingest(SC1, ¶ 구분)·GET /api/commands·POST /api/hub/register·명령큐. 기존 버그 수리: 본문추출()이 실제 HTTP\r\n\r\n구분자를 못 봐 비-JSON 본문을 조용히 버리던 결함(additive 수정, 회귀 0). - 풋프린트 절제: 코덱 전체 import가 문자열핸들 90% 경고 유발 → 자체시험 게이트(SC1_SELFTEST=1) + 서버는 최소 이식으로 101,979큐브 안정화.
허브/RPi허브.한선: sim|gpio 이중 모드, 로컬 seq 영속, HUB_CYCLES 종료 게이트. E2E 실측: 등록→sim 3사이클 accepted 12/rejected 0→엔티티 반영(cause:"hub")→명령 왕복(SCMD 큐→허브 적용→에코 일치)→체크섬 훼손/seq 역행 거부→재기동 복원. 배포 runbook허브/배포-rpi.md.- 판정 정정: libs/GPIO.한선=순수 시뮬. 단 VM 자체에는 RPi5 sysfs GPIO 구현이 있음(crownyc.c:8192~8247, GPIO개수/정보 opcode) — 실기 경로는 GPIO.한선을 네이티브 opcode 래핑으로 확장하는 것이 후속 과제(신규 opcode 불필요할 수 있음).
6. ④ESI FPGA 센서수집 모듈 완료 — 상세 CrownyDoc 2026-07-17-esi-fpga-센서수집모듈.md
fpga/FPGA센서모듈.한선(8채널 FSM+SC1 조립, 55/55) + fpga_sensor_collector.vhd+tb(ghdl --std=08 ALL_PASS 8/8) + 3자 파리티 바이트일치 + 합성추정(LUT58/FF96, 참고용). 발견: 한선씨하드웨어합성.한선의 포함() boolean 오용 버그(미수정·후속 큐).7-완료. 후속 배치 2 결과 (2026-07-17~19)
- GPIO 네이티브 래핑 완료 — VM opcode 180~193(
__내장__()탈출구, 실측 GPIO개수=40) 래핑: 핀쓰기자동/핀읽기자동(RPi5=sysfs/mac=가상핀뱅크·시뮬 위임). 자체시험 11/11·사용처 회귀 무손상·허브 gpio 연결·runbook §9(udev·배선표·스모크). 허브 sim E2E 재실행 PASS(2사이클 accepted 8/0). 상세=CrownyDoc 2026-07-17-GPIO-네이티브opcode-래핑.md - 서버 OOM 근본수리 완료 — 원인: VM 힙=GC 없는 범프 할당자(배열당 ~4097셀)+요청별 append-log 전체 재파싱=단조증가→144M셀 상한(47분). 수리: 요청별 메모리마커/복원+쓰기시점 엔티티 스냅샷 컴팩션(8000자)+로그북/수신프레임 idx 회전. 스트레스 300cmd+100frame 크래시0·RSS 수렴·회귀 12/12·재기동 복원. 가드레일 "한선씨 상주 HTTP 서버 필수 이디엄" 신설. 상세=CrownyDoc 2026-07-18-crowny-space-OOM컴팩션수리.md
- 지오펜스 재실 트래커 완료 — 규격/지오펜스.한선(정수 등장방형 거리·원형 존·4상 재실판정, 22/22) + POST /api/presence + persons/env/interlock 실데이터 우선(시드 폴백) + auto1 트리거 presence:all_out 승격(15분 유예 tick 판정)·first_in 즉시 발화·중복발화 방지. E2E 전 단계 실측 PASS(외출 발화 cause:"automation"·귀가·신선도 옴). 신규 quirk: 특정 소수 리터럴 ×1e6 ±1~2 드리프트(존 반경 스케일에서 무해, 인라인 문서화). 상세=CrownyDoc 2026-07-19-crowny-space-재실-지오펜스-트래커.md
- 한선씨하드웨어합성.한선 포함() 버그 수리 완료 — 포함하나()==1 교체·컴파일 OK·학습 래칫.
7. 후속 큐 (다음 배치)
- GPIO.한선 → VM 네이티브 sysfs opcode 래핑 확장 + RPi5 실기 검증(crownyc RPi 빌드·허브 gpio 모드)
- ESI FPGA 실보드 합성(Vivado/Quartus)·UART 실배선(허브 UART수신→ingest)
- MQTT.한선 브로커 실연동(zigbee2mqtt) → 어댑터 3호
- 지오펜스 재실 트래커(학습DB 다각형판정 재사용)·페어링 발견 프로토콜
- hall 목 어댑터 → 실서비스(:9607) 전환
- 서버 append-log 재파싱 구조의 ARRAY힙 OOM(47분 1회, KeepAlive 자활) — 스냅샷+컴팩션 구조 개선
- 한선씨하드웨어합성.한선 포함()→포함하나() 수리 · SC1 RPN 정본화(변환기 보강)
- CrownyAI spaceBridge DOM 하이드레이션 통합·옴 확인 UI