Edge Bridge로 직접 Edge Driver를 만들거나, 기존 Edge Bridge 기반 드라이버를 이해하고 싶은 분들을 위한 페이지입니다.
SmartThings Edge Driver는 허브 안에서 Lua 코드로 실행되며 보안상 외부 인터넷에 직접 접근할 수 없습니다. Edge Bridge는 이 한계를 풀기 위한 패턴 — 같은 로컬 네트워크의 다른 기기(AEB)가 외부 HTTP 호출을 대신 처리해주는 구조입니다.
AEB는 자체 HTTP 엔드포인트를 노출합니다. 같은 로컬 네트워크의 다른 서비스에서 직접 호출할 수도 있습니다.
| 엔드포인트 | 메서드 | 역할 |
|---|---|---|
/api/forward?url=<target> | ALL | 외부 클라우드(Tesla, OpenAI 등)에 HTTP 요청을 대신 전달. v1.0.3+: URL이 https://api.smartthings.com/이면 저장된 PAT(영구 토큰으로 표시된 경우)를 우선, 실패 시 ST OAuth access_token을 자동 주입 (toddaustin07 호환). |
/api/register | POST / DELETE | Edge Driver 디바이스 등록 / 해제 |
★/api/ping | POST | ★ 헬스체크 — battery / bridgeDevice / bridgeVersion / serverStartTime 응답 (AEB 확장) |
★/api/llm | POST | ★ LLM 직접 호출 — 자동화가 아닌 외부 통합에서 사용 (AEB 확장). v1.0.3+: 항상 API 모드로 실행 — destructive 도구(삭제·규칙 변경) 차단 + 되묻기 금지 system prompt 자동 적용. |
★/api/redirect | POST / DELETE / GET | ★ Redirect 매핑 — path를 외부 target URL로 영속 매핑(POST), 해제(DELETE), 목록 조회(GET). 등록된 path로 들어온 요청을 자동 프록시 (AEB 확장) |
★/api/callback | POST / DELETE / GET | ★ 비동기 콜백 저장소 — name 키로 임의 값 저장(POST), 삭제(DELETE), 전체 목록(GET), 단건 조회(GET /{name}). OAuth 콜백 등 비동기 흐름에서 Edge Driver가 결과를 받아갈 때 사용 (AEB 확장) |
/* (catch-all) | ALL | Inbound 요청을 SmartThings 허브 쪽으로 포워딩 |
★ = AEB 고유 확장. 그 외는 toddaustin07/edgebridge 원본과 동일합니다.
AEB 앱의 Info 탭 → API 가이드 다이얼로그에서 현재 IP/Port가 자동으로 채워진 예시 URL을 확인할 수 있습니다.
v1.0.3부터 LLM 호출 경로가 두 모드로 분기됩니다.
HTTP /api/llm 호출은 항상 API 모드(자동), 앱 채팅은 토글로 CHAT/API를 전환할 수 있습니다.
Devices-Delete, Devices-Update, Rules-Create, Rules-Update, Rules-Delete. Edge Driver / 외부 HTTP 환경에선 confirmation 받을 follow-up 턴이 없으므로 dispatch 직전에 차단.{ "ok": true, "text": "❌ 'tool' 작업은 Edge Driver 환경에선 차단됩니다. SmartThings 모바일 앱에서 진행해 주세요." }Devices-GetStatus 또는 Devices-StatusByQuery 선행 호출 의무Members-ListPresence 선행 호출 의무Edge Bridge 패턴을 사용하는 새 Edge Driver를 만들 때 가장 빠른 출발점입니다. 공개 ST Edge 샘플 템플릿 저장소로, mDNS 탐색 → AEB ping → 외부 API 포워딩 → 콜백 수신까지의 통신 패턴이 통째로 들어 있습니다. fork 후 자기 드라이버 코드만 얹으면 됩니다.
저자: WooBooung · 라이선스: 저장소 LICENSE 참고. 채널/허브 배포 예시도 README에 정리되어 있습니다.