피드로 돌아가기
Dev.toInfrastructure
원문 읽기
SmartThings CLI를 통한 모니터 입력 소스 제어 자동화 구현
Switch Your Samsung M8 Monitor HDMI Inputs from the Terminal (No Remote Needed)
AI 요약
Context
물리 리모컨과 OSD 메뉴를 통한 수동 입력 전환으로 인한 잦은 컨텍스트 스위칭 발생. OS 및 하드웨어 종속적인 DDC/CI 방식의 한계를 극복하기 위한 네트워크 기반 제어 체계 필요.
Technical Solution
- Node.js 기반 @smartthings/cli를 활용하여 Samsung M8 모니터의 제어 인터페이스를 API 형태로 추상화
- asdf를 통한 Node.js 버전 관리로 macOS와 Linux 환경 간 런타임 일관성 확보
- UUID 기반의 Device ID를 환경 변수로 분리하여 보안성을 높인 설정 구조 설계
- jq 라이브러리를 이용해 모니터의 현재 상태(JSON)를 파싱하고 다음 입력 소스를 결정하는 Toggle 로직 구현
- 쉘 스크립트 내 가드 클로저를 배치하여 CLI 미설치 환경에서도 런타임 에러가 발생하지 않는 무결성 확보
- 네트워크 레이어 제어를 통해 현재 세션이 종료된 상태에서도 외부 기기에서 입력 전환이 가능한 비동기 제어 구조 채택
실천 포인트
1. 하드웨어 제어 시 DDC/CI 같은 로컬 프로토콜 대신 제조사 제공 Cloud API 검토
2. 환경 변수(.zshrc.local)를 통해 기기별 고유 ID를 관리하여 Dotfiles 레포지토리 보안 유지
3. 쉘 스크립트 작성 시 command -v를 활용한 의존성 체크 로직 포함
4. jq를 통한 JSON 상태 기반의 상태 머신(State Machine) 설계 적용