
여름밤에 뒤척이다 보면 “침대 온도도 API로 제어할 수 있으면 좋겠다”는 생각을 한 번쯤 해본 개발자가 있을 것이다. bedctl은 그런 말을 진짜로 만들어 버린 오픈소스 도구다. 긱뉴스에 소개된 bedctl은 Sleep.me 사의 수랭식 침대 매트리스 Chilipad 2.0을 제조사의 클라우드 API를 통해 제어하는 CLI 클라이언트로, 본문 길이 1,800~2,500자 사이에서 핵심만 압축해 정리한다.
왜 침대를 코딩으로 제어해야 하나
개발자의 하드웨어는 보통 책상 위에 머문다. 키보드, 마우스, 모니터, 이어폰, 가끔은 시계나 조명까지. 그러나 잠은 책상이 아니라 침대에서 시작하고, 침대 온도는 수면의 질을 결정하는 가장 큰 변수 중 하나다. Chilipad는 물이 순환하는 얇은 토퍼 위에 펌프와 저수조, 온도 조절기를 결합해 체온에 맞춰 사계절 내내 일정한 수면 환경을 만들어 준다. 문제는 제조사가 제공하는 제어 앱이 클라우드 경유라는 점이고, 여기에 bedctl 같은 로컬 CLI가 들어가면 "잠들기 1시간 전" 시점에 서버 한 대에서 한 줄로 온도를 끌어내릴 수 있다.

bedctl이 제공하는 기능
bedctl은 본질적으로 Chilipad 클라우드 API의 래퍼지만, 단순한 토글 스위치가 아니다. 원 글에서 강조한 핵심 기능을 그대로 옮기면 다음과 같다.
- 요일별 온도 예약 — 월요일은 65°F, 금요일은 60°F처럼 요일 단위 스케줄을 정의하고 CLI 한 줄로 적용한다.
- 사이드별 독립 제어 — Chilipad는 한쪽 면만 켜는 비대칭 설치를 지원하고, bedctl도 그 구성을 그대로 존중한다. 두 사람이 같은 침대를 쓰더라도 한 명은 68°F, 다른 한 명은 62°F로 자기 쪽만 맞출 수 있다.
- 크론 친화적 호출 — REST 엔드포인트를 직접 두드리는 것이 아니라, 사람이 읽기 좋은 CLI 명령을 제공해 셸 스크립트나 systemd timer에서 그대로 호출한다.
- 상태 확인과 알림 — 현재 온도, 펌프 속도, 알람 상태를 단일 텍스트 출력으로 보여줘서 cron 로그에 그대로 흘려보내도 가독성이 떨어지지 않는다.
실전 예시 — cron + bedctl 조합
잠들기 30분 전 자동으로 침대를 식히고, 아침 6시에 다시 데우는 시나리오는 다음과 같이 4줄짜리 셸 스크립트로 끝난다.
#!/bin/bash
23:00 — 자기 전 냉각
bedctl set --side=left --temp=60
bedctl set --side=right --temp=62
06:00 — 기상 시 가온 (사이드별)
bedctl set --side=left --temp=72
bedctl set --side=right --temp=74
이 스크립트를 systemd timer나 launchd plist에 등록하면 출근길에 손이 닿지 않아도 침대는 알아서 준비된다. 그리고 bedctl 출력은 항상 사람이 읽는 한국어/영어 혼합 로그 형태라서, 가족과 공유할 때도 "왜 매번 알림이 뜨냐"는 항의 대신 "아, 23시에 침대 식히는 거구나"로 받아들여질 가능성이 훨씬 높다.
대안과 비교
Chilipad의 공식 앱은 분명히 잘 만들어져 있지만, 모바일 알림이 가끔 밀리고, 공유 가족 계정 외에는 API 키가 노출되지 않는다. 오픈소스 대안으로 Home Assistant 통합이 존재하지만, 수랭식 침대만큼 niche한 하드웨어를 위해 HASS를 통째로 설치하는 건 오버킬이다. bedctl은 그 중간 지점을 노린 가벼운 래퍼라서, 이미 크론과 셸 스크립트로 생활을 자동화해 온 개발자라면 5분이면 붙여서 쓸 수 있다.
결론 — 잠의 자동화
개발자에게 코딩은 깨어 있는 시간의 도구일 수도 있고, 잠드는 시간의 도구일 수도 있다. bedctl을 소개한 긱뉴스 글에서 보듯, Chilipad 같은 하드웨어는 이미 API가 열린 상태이고, 그것을 받아주는 가벼운 CLI가 있다는 사실 자체가 흥미롭다. 침대 온도 조절을 자동화하고 싶다면, 오늘 밤 시스템 트레이 한 켠에 bedctl cron 줄 하나 추가해 보는 걸 권한다.
참고: https://news.hada.io/topic?id=31631
📰 원본 출처 · https://news.hada.io/topic?id=31631 (#N=31631)
이 글은 GeekNews(긱뉴스)에 게제된 글을 기반으로 작성되었습니다. 원본의 라이선스와 저작권은 원작자에게 있습니다.