M5 — AAS Server/API 구조 이해 및 기본 학습

09:00–12:00 · Demo Server 단일 exe · Port 5080 · BaSyx REST 패턴
M5
Demo Server 3계층 아키텍처
🌐 클라이언트 레이어브라우저/dashboard.htmlcurl / PostmanAPI 테스트Python requests자동화 스크립트SignalR WSPush 확장 옵션⟳ 3초폴링HTTP/REST (JSON)⚙️ API 레이어 — .NET 8 Minimal API (Port 5080)AAS RepositoryGET /shells/{id}POST /shellsBaSyx v3 규격Submodel RepositoryGET /submodels/{id}PUT /submodels/{id}Base64Url IDRegistryAAS RegistrySM RegistryMonitoring APIGET /monitoring/snapshotPUT /db/equipment/{id}Demo 전용Dashboard정적 HTMLGET /dashboardEntity Framework🗄️ 데이터 레이어 — SQLite (단일 파일)equipmentid · asset_id · name · type · aas_id14행 (조립 셀 S513 자산 14종)equipment_propertyequipment_id · submodel_id · id_short · valueAAS Property ↔ DB 1:1 매핑equipment_state_logequipment_id · timestamp · oee · cycle_time100행 시드 로그 (5분 간격)시드: OEEkpi=0.852 · CTkpi=42s · quality_score_avg=98.7%
Base64Url 인코딩 원리
AAS ID는 IRI — URL 경로에 직접 사용 불가 → Base64Url 인코딩 필수예: https://example.com/shells/CellS513 를 경로 파라미터로 사용원본 IRI:https://example.com/shells/CellS513base64url_encode인코딩:aHR0cHM6Ly9leGFtcGxlLmNvbS9zaGVsbHMvQ1RfMTQyAPI:GET /api/v3.0/shells/aHR0cHM6Ly9leGFtcGxlLmNvbS9zaGVsbHMvQ1RfMTQy⚠ Base64Url: '+' → '-', '/' → '_', 패딩 '=' 제거 (일반 Base64와 다름)
핵심 API 엔드포인트 맵
GET 조회GET /api/v3.0/shells→ 전체 Shell 목록GET /api/v3.0/shells/{aasId}→ 특정 ShellGET /api/v3.0/submodels/{smId}→ Submodel 전체GET /api/monitoring/snapshot→ 전체 상태 스냅샷PUT 변경PUT /api/v3.0/submodels/{smId}→ SM 전체 교체PATCH/submodels/{id}/.../$value→ 단일 값 패치PUT /db/equipment/{id}/properties/{name}→ DB 직접 패치{aasId}, {smId} = Base64Url 인코딩된 IRI