TL;DR
- 삼성 스마트 세탁기의 남은 세탁 시간을 삼성 클라우드 없이 확인하기 위해 카메라와 컴퓨터 비전으로 화면을 읽고, 데이터를 로컬 네트워크로 제공하는 방식임.
- 삼성 SmartThings 앱은 개인정보 접근 권한이 많고 아이폰에서 857MB를 차지하며, 삼성은 10월부터 API 이용료로 월 5달러를 부과할 예정임.
- Home Assistant의 SmartThings 연동도 삼성 클라우드를 거치므로 클라우드 의존성과 비용 문제를 해결하지 못함.
- Raspberry Pi 카메라 모듈 3로 세탁기 화면을 촬영하고, Raspberry Pi Pico와 1602 LCD, 부저 등을 조합해 상태 표시 장치를 구성함.
- 구현한 장치는 세탁기 상태를 읽기만 하며 원격 일시 정지나 세제 추가는 지원하지 않고, 세탁 완료 시 ‘Die Forelle’를 재생함.
삼성 스마트 세탁기
- 2021년 5월에 450유로를 주고 삼성 세탁기를 구입했으며, 세탁이 끝나면 ‘Die Forelle’를 재생하는 기능이 있음.
- 세탁기는 차고에 있어 거실이나 홈 오피스에서는 완료음을 듣기 어려움.
- 세탁물의 양과 물의 오염도에 따라 예상 시간이 달라지는 스마트 기능이 있어, 처음에는 90분 남았다고 표시해도 90분 뒤에 30분이 더 남거나 이미 15분 전에 끝났을 수 있음.
- SmartThings 앱을 통해 알림을 받을 수 있지만, 앱은 여러 권한을 요구하고 아이폰에서 857MB를 차지함.
- 세탁기는 SmartThings 클라우드에 세탁 완료 예상 상태를 보내며, 휴대전화 앱도 같은 클라우드에서 데이터를 가져와 상태를 보여주고 알림을 전송함.
- 삼성은 일부 스마트 냉장고에 업데이트를 보내 며칠 동안 작동 불능 상태로 만든 적도 있음.
Home Assistant도 클라우드에 의존함
- Home Assistant는 Raspberry Pi나 전용 하드웨어에 설치할 수 있는 홈 오토메이션 플랫폼이며, SmartThings 연동 기능을 제공함.
- 해당 연동은 여전히 삼성 클라우드를 사용하므로 세탁기는 SmartThings와 통신해야 하고 Home Assistant 서버도 삼성 클라우드에서 데이터를 받아야 함.
- 삼성은 클라우드 접근에 월 5달러를 부과하기로 했으며, Home Assistant 이용자의 10% 이상이 이 연동을 설치한 상태임.
- 세탁기를 소유한 기간 동안 매달 5달러를 냈다면 세탁기 가격 450유로에 클라우드 이용료 320달러가 더해지는 셈임.
목표
- 거실에 둘 작은 디스플레이에 세탁기 화면과 남은 시간을 표시해, 외출할지 세탁이 끝날 때까지 기다릴지 빠르게 판단하고자 함.
- 이를 위해 삼성 앱이나 삼성 클라우드를 사용하지 않는 것이 목표임.
구현 방식
- Matter 프로토콜이 기기 간 상호 운용성을 제공하고 삼성이 초기 후원사였기에 세탁기도 로컬 네트워크에서 Matter 기기로 동작할 것으로 기대했음.
- 삼성은 Matter 지원을 제공하지만, 이는 Matter 전구나 세탁기를 SmartThings 플랫폼에서 제어하는 방식임. 반대 방향으로 세탁기가 네트워크에 Matter 기기로 자신을 공개하지는 않음.
- 세탁기는 네트워크상에 서비스를 공개하지 않으며, Wireshark로 확인한 결과도 같음.
- Brother 프린터는 공개 웹사이트와 CSV 데이터를 제공해 토너 잔량, 누적 인쇄량, 용지 걸림 횟수를 확인할 수 있음.
- 삼성도 비슷한 기능을 쉽게 구현할 수 있지만, 사용자를 SmartThings 생태계에 두고 개인정보를 보내게 하며 비용을 받을 수도 있는 구조를 선택함.
- 대안으로 세탁기 앞에 카메라를 두고 화면을 촬영한 다음, 컴퓨터 비전으로 읽고 파싱해 로컬 네트워크의 HTTP 엔드포인트로 제공하는 방식을 선택함.
- 처음에는 보유 중인 Raspberry Pi와 구형 Logitech 720P 웹캠을 사용하려 했지만, 웹캠의 고정 초점 거리와 낮은 해상도 때문에 결과가 좋지 않았음.
- 자동 초점 기능이 있는 Raspberry Pi Camera Module 3를 약 35유로에 구입해 사용했음. 다만 자동 초점과 괜찮은 카메라를 갖춘 화면이 깨진 구형 Android 휴대전화로도 충분했을 수 있음.
- Raspberry Pi Pico, 1602 LCD, 부저, LED 몇 개, 버튼을 브레드보드에 연결함.
- Pico는 이와 같은 용도에 적합한 저렴한 소형 프로그래머블 마이크로컨트롤러이며, 원한다면 MicroPython을 실행할 수 있음.
- 디스플레이 장치는 Wi-Fi에 연결해 세탁기 상태를 받아 화면에 표시하며, 세탁 중이 아닐 때는 시계로 동작함.
- 세탁이 완료되면 부저가 ‘Die Forelle’를 재생함.
프로젝트 소감과 한계
- 삼성 세탁기가 데이터를 Wi-Fi 네트워크에 직접 공개했다면 훨씬 나았을 것임.
- 이 연동은 세탁기 상태를 읽기만 하며, 앱에서 제공하는 원격 일시 정지나 세제 추가 등은 할 수 없음. 이런 기능은 사용할 생각도 없음.
- 동료는 전력 사용량을 공개하는 스마트 플러그를 세탁기에 연결해 Home Assistant에서 상태를 확인함. 전력 사용이 멈추면 세탁이 끝난 것으로 판단할 수 있지만, 세탁이 언제 끝날지는 알 수 없음.
- 상태 데이터를 확보했으므로 세탁 주기 동안 예상 완료 시간이 몇 차례 조정되는 모습을 그래프로 만들 수 있음. 세탁이 최초 예상보다 일찍 끝나는 경우도 있고 훨씬 늦게 끝나는 경우도 있음.
- 디스플레이용 3D 프린팅 케이스를 만들고, Raspberry Pi에서 Matter 서비스를 제공해 Home Assistant와 연동하는 방안도 생각 중임.
- 현재 Home Assistant를 직접 사용하지 않으며, 활용할 만한 Python 라이브러리도 찾지 못한 상태임.
- 전반적으로 재미있는 프로젝트임.
Hacker News 토론
- Hacker News에서 관련 토론이 진행됨.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요