---
title: "침대 옆 시계 하나 만들려다 라즈베리파이, 홈킷, 배포 파이프라인까지 간 이야기"
published: 2026-07-23T12:01:52.000Z
canonical: https://jeff.news/article/5144
---
# 침대 옆 시계 하나 만들려다 라즈베리파이, 홈킷, 배포 파이프라인까지 간 이야기

Ars Technica의 Lee Hutchinson은 자동으로 시간 맞추고, 빨간 7세그먼트 LED를 쓰고, 앱 없이 동작하는 침대 옆 시계를 원하다가 결국 라즈베리파이 기반 DIY 시계를 만들었어. 프로젝트는 NTP, systemd 서비스, HomeKit, Gitea Actions 배포, 3D 프린팅 케이스, LLM 기반 코드·CAD 보조까지 붙으면서 ‘시계에 CI/CD 하는’ 수준으로 커졌어.

- 출발점은 단순했음 — “전원 깜빡이거나 서머타임 바뀔 때마다 버튼 연타해서 맞추는 시계, 이제 그만 쓰고 싶다”였음
  - 원하는 조건은 자동 시간 설정, 자동 DST 반영, drift 관리, 빨간 7세그먼트 LED, 프라이버시 망치는 앱 없음
  - 시중 제품은 하나둘은 만족해도 전부 만족하는 물건을 찾기 어려웠고, 결국 “그럼 내가 만들지 뭐”로 감

- 하드웨어 선택지는 Arduino 계열과 Raspberry Pi 계열이었고, 글쓴이는 Pi를 골랐음
  - Raspberry Pi Zero W와 Zero 2 W를 사용함
  - 이유는 Debian 기반 OS, Wi-Fi, NTP, 익숙한 Linux 원격 관리가 한 번에 따라오기 때문임
  - 더 가볍게 보자면 ESP32가 더 합리적일 수 있다고 나중에 인정함

- 디스플레이는 Adafruit의 1.2인치 빨간 7세그먼트 LED 키트를 선택함
  - LED를 구동하는 HT16K33 컨트롤러가 달린 backpack 보드와 묶인 제품임
  - 납땜이 필요해서 글쓴이는 처음으로 인두와 60/40 납, 확대 렌즈까지 사게 됨

### 시계인데 운영 요구사항이 꽤 진지함

- 소프트웨어 요구사항은 거의 작은 홈 서버 운영 체크리스트 수준임
  - 호스트는 LAN-only로 두고 인터넷에서 접근하지 못하게 함
  - 업데이트는 LAN 전용 apt mirror에서 받고, 시간 동기화도 LAN 전용 NTP 서버에서 받게 함
  - 시계 서비스는 dedicated service account에서 권한 낮춰 systemd 서비스로 실행함

- 기능 요구사항도 꽤 촘촘함
  - OS의 system time을 사용해서 NTP와 DST 처리는 호스트가 맡음
  - 일정에 따라 디스플레이를 켜고 끄거나 밝기를 조절할 수 있어야 함
  - 터미널에서 CLI로 제어할 수 있어야 하고, iOS 생태계에 맞춰 HomeKit도 붙이고 싶었음

- 배포까지 자동화함
  - Gitea Actions로 태그를 push하면 runner가 release artifact를 만들고 Pi에 배포함
  - 배포 전용 로컬 서비스 계정을 따로 두고, 그 계정은 배포 관련 작업만 할 수 있게 제한함
  - 네, 침대 옆 시계에 CI/CD가 붙은 거 맞음

> [!IMPORTANT]
> 이 프로젝트의 농담 포인트는 “백업 배터리 달린 시계”가 아니라 “배포 파이프라인 달린 시계”라는 점임. 근데 요구사항을 하나씩 보면, 과한 듯하면서도 전부 이유는 있음.

### LLM은 코딩과 CAD에서 실제로 일을 함

- 글쓴이는 I2C로 디스플레이를 제어하는 Python 코드를 보다가 프로젝트가 재미없어지는 지점에 도달함
  - 본인은 ops 쪽에 강하고 dev 쪽은 약하다고 설명함
  - 그래서 Claude Code에 코딩 작업을 넘겼고, 결과적으로 Python 파일 묶음과 테스트 스위트까지 얻음

- LLM은 HomeKit 통합, 설치 루틴, 배포 파이프라인 일부, 문서 작성에도 투입됨
  - 모델은 처음에 Opus 4.8, 이후 Fable을 사용했다고 밝힘
  - 글쓴이는 LLM 없이는 프로젝트를 끝내지 못했을 거라고 꽤 솔직하게 말함

- 3D 모델 수정에도 LLM과 MCP를 사용함
  - 기존 Creative Commons 라이선스 케이스 모델을 찾았지만, 아크릴과 필터를 넣기에는 맞지 않았음
  - Autodesk Fusion의 MCP 서버를 통해 LLM이 모델을 수정하게 했고, Qwen 3.6-35B 로컬 양자화 모델도 일부 시도함
  - Qwen은 한 가지 수정은 해냈지만 다른 하나는 놓쳤고, 최종적으로는 Claude Code와 Fable이 대부분 처리함

### 물리 세계는 늘 디테일에서 터짐

- 실제 조립에서는 밝기가 문제였음
  - Adafruit 디스플레이는 dimming을 지원하지만, 최저 밝기에서도 어두운 침실에는 너무 밝았음
  - 해결책은 smoked acrylic과 12% neutral density filter 조합이었고, 기존 저가 침대 시계와 비슷한 밝기까지 낮출 수 있었음

- 케이스는 여러 번 출력하고 수정함
  - 아크릴 면을 넣을 포켓을 만들고, 부품별 guide pin과 hole도 추가함
  - 오버행 없이 support 없이 출력되도록 유지함
  - 최종 버전은 대부분 스스로 고정되지만, 앞 bezel은 전기테이프나 순간접착제 약간이 필요함

- 결과물은 정확히 원하던 시계였음
  - 자동으로 시간 맞추고, 빨간 7세그먼트로 표시하고, HomeKit에서 제어되고, 로컬 배포도 됨
  - 비용은 생각보다 많이 들었지만, 글쓴이는 “원하는 걸 정확히 가진 기쁨”이 값어치 있다고 정리함

> [!TIP]
> 비슷한 걸 만들 개발자라면 Raspberry Pi가 편하긴 하지만 과할 수 있음. 글쓴이도 Wi-Fi와 I2C가 있는 ESP32가 디스플레이 제어만 놓고 보면 더 똑똑한 선택일 수 있다고 봄.

---

## 기술 맥락

- Raspberry Pi를 고른 이유는 성능이 필요해서라기보다 운영 모델이 익숙해서예요. Debian, NTP, systemd, SSH, 배포 스크립트가 그대로 따라오니까, 시계 로직보다 주변 운영을 안정적으로 만들기 쉬웠던 거죠.

- systemd 서비스로 만든 선택도 같은 맥락이에요. 시계 프로세스를 전용 계정으로 낮은 권한에서 돌리고, 부팅 시 자동 실행하고, 실패 시 관리할 수 있으니 작은 장치라도 운영 기준을 맞출 수 있어요.

- LLM을 쓴 부분은 무작정 맡긴 게 아니라, 글쓴이가 대략 검증 가능한 Python과 설정 작업에 집중돼 있어요. I2C 제어, HomeKit 연동, 설치 루틴처럼 귀찮고 낯선 구현을 LLM이 밀어주고, 사용자는 테스트와 실제 하드웨어 동작으로 결과를 확인한 셈이에요.

- ESP32 대신 Pi를 쓰는 건 전력, 복잡도, 비용 면에서는 과한 선택이에요. 하지만 프로젝트 목표가 최적의 제품 설계가 아니라 원하는 시계를 완성하는 것이었기 때문에, 본인이 잘 아는 Linux 운영 환경을 선택한 게 완주 가능성을 높였어요.

## 핵심 포인트

- 요구사항은 자동 시간 설정, 자동 DST, 빨간 7세그먼트 디스플레이, 프라이버시 침해 앱 없음이었음
- 하드웨어는 Raspberry Pi Zero W·Zero 2 W와 Adafruit 1.2인치 7세그먼트 LED 디스플레이, HT16K33 컨트롤러를 사용함
- 소프트웨어는 unprivileged systemd 서비스, Unix socket 제어, HomeKit 연동, Gitea Actions 기반 배포 파이프라인으로 구성됨
- 코드와 HomeKit 통합, 설치 루틴, 문서 상당 부분은 Claude Code와 LLM 도움으로 작성됨
- 케이스는 3D 프린팅했고, 밝기 문제는 smoked acrylic과 12% neutral density filter 조합으로 해결함

## 인사이트

이 글은 ‘LLM으로 뭘 자동화할 수 있나’보다 ‘내가 검증 가능한 범위의 귀찮은 작업을 LLM에 맡기면 hobby project의 완주율이 확 올라간다’는 쪽이 핵심에 가까워. 그리고 솔직히 침대 시계에 systemd, HomeKit, Gitea Actions를 붙이는 건 과하지만, 그래서 개발자들이 좋아할 만한 글임.
