Home Assistant, AdGuard Home, 8달러 스마트 콘센트로 브레인 로트 막기
(romanklasen.com)- 인터넷은 개발 업무와 커뮤니케이션에 꼭 필요하지만, 소셜 미디어와 광고 같은 중독적 요소를 완전히 차단하거나 무제한 허용하기 모두 어려움
- 네트워크 차단은 휴대폰에서 Wi-Fi를 끄면 우회할 수 있고, 가족 구성원이 업무·조사 목적으로 소셜 미디어가 필요해 상시 차단이 맞지 않음
- Zigbee 스마트 플러그 버튼을 누르면 AdGuard Home의 커스텀 필터링을 15분간 끄고, 이후 1시간 쿨다운 동안 다시 누를 수 없게 자동화함
- gli.net 라우터의 AdGuard Home에서는 내장 서비스 차단보다 커스텀 규칙을 토글 대상으로 삼고, Home Assistant의 “Filtering” 스위치로 제어함
- Wi-Fi 우회까지 막는 해결책은 아니지만, 소셜 미디어 사용을 작은 단위로 제한해 절제 연습을 돕는 장치로 작동함
완전 차단과 무제한 허용 사이의 문제
- 인터넷은 광고, 산만함, 스폰서 콘텐츠, 나쁜 뉴스, 소셜 미디어 때문에 부담이 되지만, 소프트웨어 개발과 사람들과의 커뮤니케이션에는 필수 인프라임
- 네트워크 전체 광고 차단기로 소셜 미디어를 막아도 휴대폰에서 Wi-Fi를 끄면 셀룰러 데이터로 계속 스크롤할 수 있음
- 가족 구성원이 업무, 조사, 개인적 사용을 위해 소셜 미디어가 필요할 때가 있어 완전 차단은 실행하기 어려움
- 동시에 두 명의 성인에게 인터넷을 제한 없이 허용하는 방식도 원하는 결과를 만들지 못함
Neil Chen 아이디어를 가정용 네트워크에 맞게 변형
- Neil Chen의 아이디어는 스마트 플러그로 uBlock Origin 목록을 동적으로 다시 작성해 산만한 콘텐츠 접근을 잠시 허용하는 방식임
- 여기서는 “버튼을 누르면 제한 시간 동안 허용”이라는 구조는 유지하되, uBlock Origin 대신 이미 사용 중인 AdGuard Home과 Home Assistant를 조합함
- 필요한 구성 요소는 단순함
- AdGuard Home이 있는 gli.net 라우터
- Home Assistant
- Zigbee 스위치들
- 약간의 여유 시간
버튼을 누르면 15분 허용, 이후 1시간 쿨다운
- 목표는 버튼을 눌렀을 때 소셜 미디어 접근을 잠시 허용하고, 15분 뒤 필터를 다시 켜는 것임
- 허용 시간이 끝나면 1시간 쿨다운을 두어 곧바로 다시 버튼을 누를 수 없게 함
- Zigbee 지원 스마트 플러그가 이 버튼 역할에 적합한 장치로 쓰임
- 전체 흐름은 버튼 입력, 필터 비활성화, 제한 시간 만료, 필터 재활성화 순서로 이어짐
gli.net 라우터에서 AdGuard Home 제어 준비
- gli.net의 OpenWRT 기반 라우터에는 AdGuard Home이 편리하게 통합되어 있음
- 차단할 서비스는 AdGuard Home의 커스텀 규칙으로 설정해야 함
- 내장 서비스 차단 기능은 “커스텀”으로 취급되지 않는 것으로 보임
- 그래서 내장 서비스 차단은 자동화로 켜고 끄기 어려운 대상임
- AdGuard Home API는 OpenAPI YAML로 제공되며 일반 사용자명과 비밀번호로 로그인함
- 라우터의 기본 인터페이스는 인증을 우회해 통합되어 있어, API 접근에 쓸 AdGuard Home 사용자/비밀번호가 기본적으로 없음
- GL.iNet 포럼 글은 기존 통합을 깨지 않고 사용자를 추가하는 방법을 안내함
/etc/Adguard/config.yaml에서users: []를 사용자 항목으로 바꿈- 예시는
admin의 bcrypt 해시를 사용하지만, 실제 비밀번호로 쓰는 값은 아니라고 명시됨 - bcrypt 해시는 CyberChef로 생성할 수 있음
Home Assistant 자동화 흐름
- Home Assistant의 AdGuard Home 통합은 기능이 다소 줄어 있지만, 필요한 동작은 수행할 수 있음
- 노출되는 스위치 중 “Filtering”은 커스텀 필터 규칙 적용을 켜거나 끄는 스위치임
- 자동화는 Zigbee 스마트 플러그가 켜지는 이벤트를 트리거로 사용함
- 실행 조건은 두 가지임
- 마지막 비활성화 시점 이후 1시간 초과가 지났는지 확인함
- 현재 AdGuard override가 비활성 상태인지 확인함
- 조건을 만족하면 자동화가 다음 순서로 진행됨
input_boolean.adguard_override_active를 켬input_datetime.last_adguard_disable에 현재 시각을 기록함switch.adguard_home_filterung을 꺼서 AdGuard 필터링을 비활성화함- 14분을 기다림
- 스마트 플러그를 15회 껐다 켜며 2초 간격으로 반복함
- AdGuard 필터링을 다시 켬
- 스마트 플러그와 override 상태를 끔
- 조건을 만족하지 않으면 2초 뒤 스마트 플러그만 끄는 기본 동작으로 끝남
- 자동화의
mode는single이며, 동시에 여러 번 실행되지 않도록 구성됨
남는 한계
- 이 방식은 휴대폰에서 Wi-Fi를 꺼서 셀룰러 데이터로 소셜 미디어를 계속 보는 행위까지 막지 못함
- 목적은 모든 우회를 봉쇄하는 것이 아니라, 소셜 미디어를 소량 사용으로 제한하고 절제를 연습하게 만드는 데 있음
댓글과 토론
Hacker News 의견들
-
주의를 산만하게 하는 것들에서 벗어나려고 과하게 복잡한 시스템을 만들고, 그 과정을 글로 쓰는 건 확실히 HN다운 행동임
- 현대의 문제에는 현대의 해법이 필요함
좀 더 진지하게 말하면, 주의 산만과 집중은 어려운 주제임. 동기가 높을 때는 완전히 흔들리지 않지만, 지루한 잡일을 해야 할 때는 정말 아무거나 다 방해가 됨 - 기술이 만든 문제에 다시 기술적 해법을 원하고, 삶을 과하게 구조화한 뒤에는 그 구조화에서 회복하기 위한 체계적 접근을 찾게 됨
- 문제 행동을 파악했다면 그 행동을 관리하기 위해 외부 제약을 두는 건 합리적으로 보임
이 반응은 금연한 사람에게 아직도 담배를 주머니에 넣고 다니지 않는다고 깎아내리는 것처럼 읽힘 - 원글 작성자가 HN 취향에 맞추려고 이야기 일부를 지어냈거나 조금 더 자극적으로 다듬었을 가능성은 있음
그래도 글은 상쾌할 정도로 짧고 핵심적이면서 꽤 재미있고 유익했음. 독일인이라 영어가 제2언어일 텐데 실력이 아주 좋고, 기술 글쓰기를 잘하는 사람으로 보임. 북마크했고 더 보고 싶음 - 누군가가 주의 산만을 피하려고 과하게 복잡한 시스템을 만든 글을 읽고 거기에 댓글을 달며 스스로를 산만하게 하는 것이야말로 궁극의 HN 행동임 ;P
- 현대의 문제에는 현대의 해법이 필요함
-
Home Assistant를 정말 좋아함
몇 년 전 당시 유아였던 아이에게 오래된 디지털카메라를 가지고 놀라고 줬는데, 나중에 사진을 보고 충격을 받았음. 아이가 밤에 현관문을 열고 밖으로 나가 집 외관을 찍고, 다시 들어와 문을 닫고 잠그고 침대로 돌아갔던 것임. 그래서 무선 문 센서를 사서 밤 10시부터 아침 6시 사이에 센서가 작동하면 우리 방 불이 켜져 깨우는 자동화를 만들었음
이후에는 아이들이 집 밖으로 나갈 수 있는 모든 문과 창문에 센서를 달았고, 아이가 네 명이라 꽤 유용함. 우연히도 같은 문과 창문은 도둑이 들어올 수 있는 경로이기도 해서, 외출할 때 켜두면 센서가 작동할 때 원격으로 알려주는 경보 시스템 역할도 함
가장 좋은 점은 Home Assistant를 쓰면 특정 앱이나 생태계에 갇히지 않는다는 것임. 문/창문 센서와 전구 브랜드가 달라도 하나의 앱에서 전부 제어함- 그중 가장 흥미로운 부분은 유아가 현관문을 열고 밤에 밖으로 나가 집 사진을 찍은 뒤 다시 들어와 문을 잠그고 침대로 돌아갔다는 대목임
왜 그랬는지 물어본 적이 있는지 궁금함. 그 나이 아이가 밤의 집 바깥 사진을 그렇게까지 찍고 싶어 했다는 사고 과정은 꽤 높은 수준의 호기심이고, 키워줄 만함
우리 아이 중 하나도 그 나이 때 그런 기묘함은 있었겠지만 아마 어둠을 무서워했을 것 같음. 우리 집은 살 때 이미 보안 시스템이 있었고 지금도 가끔 실수로 울리기 때문에, 아이들도 그 사실을 알았을 가능성이 큼 - 어떤 문/창문 센서를 썼는지 궁금함
- 혼자만 그런 건 아님 https://hyperboleandahalf.blogspot.com/2020/09/richard.html
- 그중 가장 흥미로운 부분은 유아가 현관문을 열고 밤에 밖으로 나가 집 사진을 찍은 뒤 다시 들어와 문을 잠그고 침대로 돌아갔다는 대목임
-
휴대폰 중독 여부를 확인할 수 있는 난이도별 단계식 실험은 다음과 같음
1단계: 쉬는 날, 휴대폰을 꼭 써야 할 이유가 없을 때 하루 동안 휴대폰을 서랍에 넣고 보거나 쓰지 않기
2단계: 같은 조건에서 휴대폰을 서랍에 넣고 최소 1시간 집 밖에 나가기
3단계: 친구를 만나거나 점심을 먹거나 장을 보러 갈 때 휴대폰을 집에 두기
4단계: 하루 동안 사무실에 갈 때 휴대폰을 집에 두기
5단계: 주말 내내 휴대폰을 서랍에 넣어두기
6단계: 하루 넘게 여행할 때, 예를 들어 휴가나 가족 방문 때 휴대폰을 집에 두기- 뭔가를 테스트하기에는 좋아 보이지만, 그걸 휴대폰 중독이라고 부르지는 않겠음
친구와 가족에게 연락 가능한 상태이고 싶어 하는 건 괜찮고, 중독은 소셜 미디어를 끝없이 스크롤하는 식으로 휴대폰을 강박적으로 쓰기 시작할 때부터라고 봄
휴대폰은 콘텐츠 소비 기계만도 아님. 동네에서 새 고양이를 봤을 때 찍을 작은 주머니 카메라가 있으면 좋고, 버스 시간표 확인, 도시 자전거 대여, 택시 호출 같은 건 밖에 있을 때 거의 필요함
아이러니하게도 휴대폰을 거의 보지 않게 된 비결은 스마트워치와 세심하게 정리한 알림임. 중요한 알림을 놓치지 않는다는 걸 알면 휴대폰을 볼 이유가 없고, 그래서 시간 낭비 앱을 볼 가능성도 사라짐. 손목에 알림이 울리면 정말 중요한지 나중에 봐도 되는지 순식간에 확인 가능함 - 이런 방법들은 아주 좋음. 동네 산책, 가게, 도심 축제에 갈 때 휴대폰 없이 걷기를 하는데 처음엔 이상하지만 곧 좋아짐
지난봄에는 인터넷 없는 휴가를 갔고 정말 좋았음
여행을 계획하면서 오래된 TomTom의 내장 지도가 온라인에서 본 것과 맞는지 확인했음. 그 지역은 지난 10~20년 사이 도로 공사가 많지 않았음. 그런 다음 휴대폰을 끄고 비상용으로 글러브박스에 잠가두었음
깊게 숨을 쉬고 시동을 걸어 북쪽으로 향했음
알림이 울릴 수 없고, 아무도 전화할 수 없고, 뉴스 헤드라인이 튀어나와 기분을 망칠 수 없다는 사실만으로도 굉장했음. 그런 일이 실제로 계속 일어나지 않더라도, 일어날 수 있는 상태 자체가 스트레스였던 듯하고, 그 물건을 꺼버리는 건 놀랄 만큼 카타르시스가 있었음 - 문제는 내가 완전히 중독됐다는 걸 알지만 멈출 수 없다는 것임
하루에 보드카 한 병을 마시는 알코올중독자 같은 느낌임. 여러 번 끊으려 했지만 도저히 성공하지 못했음. 하루 잘 버텨도 다음 날이면 바로 중독으로 미끄러짐. 의미 없는 화면 시간이 하루 평균 5~10시간쯤 될 것 같음. 무작위 YouTube 클립을 스크롤하고, 절대 사지 않을 물건을 조사하고, 얻을 수 없는 직업을 상상함
온갖 차단 소프트웨어와 전략을 시도했지만, 아무리 정교한 차단 소프트웨어도 별 차이를 못 냈음. 결국 어떤 식으로든 우회하게 되고, 시간이 지나면 차단을 끄는 것 자체가 근육 기억처럼 됨. 가장 극단적으로는 집 인터넷을 끊고 6개월 동안 피처폰으로 돌아갔음. 확실히 화면 시간은 줄었을 것임. 하지만 역에서 공용 Wi-Fi를 쓰며 몇 시간을 보내거나 의미 없는 TV를 몇 시간씩 보기도 했음
이건 정말 풀기 어려운 문제이고, 아마 기술적 해법은 없을 것 같음 - 셀룰러가 되는 Apple Watch도 추천함. 긴급 상황에는 연락을 받을 수 있으면서 소셜 미디어나 다른 방해 요소에는 접근하지 못함
Apple Watch를 산 뒤로 휴대폰을 집에 두고 나가는 일이 더 많아졌음 - 독점적인 산업 장비가 많은 제한 구역 안에서 일하다 보니, 의도치 않게 매 근무일마다 바로 4단계로 건너뛴 셈이 됨
- 뭔가를 테스트하기에는 좋아 보이지만, 그걸 휴대폰 중독이라고 부르지는 않겠음
-
휴대폰에서 효과를 본 건 OneSec 앱 하나였음
앱에는 단축어로, 웹사이트에는 Safari 확장으로 연결되어, 차단된 콘텐츠에 접근하기 전에 20초 호흡 운동 같은 작은 과제를 하게 만듦. 시간 지연과 과제가 결합되면 지금 하려던 게 내가 원하는 일이 아니라는 걸 떠올리기에 충분함. 정말 의식적으로 XYZ 플랫폼을 방문하고 싶을 때는 운동을 하고 접근하면 됨
단점은 웹사이트 차단을 위해 Safari 확장이 웹 탐색 전체에 접근 권한을 가져야 한다는 것임. 데이터는 수집하지 않는다고 하고 지금은 믿고 있지만, 다르게 느낄 수도 있음. 앱 차단에는 비공개 데이터 공유가 필요 없음- 때로 가장 단순한 해법은 러다이트식 해법임. 휴대폰을 내려놓고 멀리 떨어지면 됨
이것이 극복 불가능하거나 현실적으로 불가능해 보인다면, 손에서 떼지 못하는 휴대폰에 앱을 하나 더 깔아 해결할 수 있는 문제보다 더 큰 걱정거리가 있는 것 같음 - OneSec이 요구하는 권한들을 어떻게 받아들이는지 궁금함
모든 것이 기기 안에 남는다고 하지만 비공개 소스 앱이라서, 휴대폰에서 나가는 패킷을 들여다보는 것 말고는 실제로 확인할 방법이 거의 없음 - iPhone의 단축어로 비슷한 걸 만들 수 있을까?
- 아이가 목에 걸려 숨 막히고 있는데 그 앱이 “20초 동안 차분히 호흡하세요”라고 요구하는 상황을 상상해보면 됨
- 때로 가장 단순한 해법은 러다이트식 해법임. 휴대폰을 내려놓고 멀리 떨어지면 됨
-
스마트홈 장비를 고를 때 몇 가지 기준이 있음. 제어 장치는 상시 전원이거나 UPS에 물려 있거나 둘 다여야 함
중요한 장치라면 Wi-Fi나 이더넷이 끊겨도 계속 작동해야 함. 예전 초인종 Doorbird는 기계식 차임과 연결되어 있었고, 지금 쓰는 Reolink 장비는 그렇지 않지만 PoE이고 스위치들이 모두 UPS에 물려 있음. Reolink는 콘센트에 꽂는 별도 차임과 훨씬 나은 카메라가 있음
집 안 장비에는 인터넷 무제한 접근을 절대 주지 않음. 사물인터넷용 VLAN을 두 개 쓰는데, 대부분의 장치는 things에, 좀 무서운 장치는 sewer에 둠
전체를 기업 IT처럼 다루고 Nessus도 돌림. Home Assistant도 여러 개 관리하는데 집, 직장, 몇몇 고객 쪽까지 있음
원글 작성자가 고른 스마트 플러그는 손대기가 살짝 불편하지만 신뢰성은 있도록 설계된 선택으로 보임. 모니터링 기능도 있을 것에 돈을 걸 수 있음
제대로 하려는 너드의 방식임- 이런 용도 대부분에 PoE-DC 전원 어댑터를 쓰기 시작했음
UPS를 다용도실에 중앙집중화할 수 있고, 그 덕분에 작동 시간이 크게 늘어남. 라우터와 스위치 구성이 이제 원격 스위치(PoE++ 전원)와 접근 지점까지 집 전체에 전원을 공급함. 보안 카메라와 점점 늘어나는 보안 투광등도 PoE 전원임. UPS 배터리를 크게 쌓아둬서 12~14시간 정도 버티고, 아직 집에 하드와이어링할 시간이 없었던 “집 전체” UPS를 방으로 끌고 오면 며칠 더 늘릴 수도 있음
광 NIU와 케이블 모뎀 같은 장비는 PoE 분배기로 필요한 9/12/24V 출력으로 전원을 공급함. 아직 바꿔야 할 브리지와 잡다한 장치가 몇 개 남았지만 요즘은 게을렀음
포트 수가 적은 “코어” 스위치 두 대를 하나 대신 골라 중복성을 확보했음. 하나가 죽어도 네트워크 절반만 내려가고 성능 저하 상태로 계속 운영 가능함. 접근 지점 밀도가 충분해서 괜찮고, 벽면 포트와 PoE 전원 스위치를 워크스테이션용으로 다시 패치할 수도 있음
유일한 문제는 이게 자기 마음대로 자라난다는 것임. 지금은 네트워크에 붙은 장치 수가 터무니없이 많아졌음
- 이런 용도 대부분에 PoE-DC 전원 어댑터를 쓰기 시작했음
-
더 저기술이지만 훨씬 비싼 방법을 했음
pihole을 설치하는 것 이상은 도움 없이는 못 하는 기술 수준이기도 함. 손볼 곳이 있는 2001년식 E39 BMW를 샀고, 아직도 둠스크롤을 너무 많이 하지만 이제 절반은 이 차와 자동차 수리에 관한 내용임 -
광고나 소셜 미디어가 아무리 많아도, YAML로 프로그래밍하려고 애쓰는 것보다 뇌를 더 빨리 썩히지는 못할 것 같음
- Home Assistant에서는 자동화의 99%에 YAML이 필요 없음
원글 작성자가 자동화 소스 코드를 올렸을 뿐, 실제로는 그래픽 UI로 만들었을 가능성이 큼
Node-Red를 쓸 수도 있음
- Home Assistant에서는 자동화의 99%에 YAML이 필요 없음
-
왜 Zigbee 버튼이 아니라 플러그를 쓴 건지 이해가 안 됨. 플러그 부분이 이상함
- 그냥 굴러다니던 플러그가 있었고, 버튼이 달려 있어서 역할을 했음
그런데 실제 장점도 있음. 작은 램프를 꽂을 수 있고, 14분이 지나면 플러그가 2초마다 켜졌다 꺼지면서 시간이 다 되어감을 알려줘 약간의 극적 효과가 생김 - 플러그에 버튼이 있어서 수동으로 켜면 이벤트를 보냄
- 그냥 굴러다니던 플러그가 있었고, 버튼이 달려 있어서 역할을 했음
-
Neil Chen이 소셜 미디어 중독자를 위한 인터넷 필터 해제 아이디어를 막 올렸는데 천재적임: https://news.ycombinator.com/item?id=44346450
그 아이디어를 써서 AdGuard Home을 일시적으로 비활성화하는 Home Assistant 자동화를 만들었음 -
개념은 훌륭함. 다만 작성자가 보고 있다면, 이런 글은 첫 두 문단 안에 무엇을 하는지 짧은 요약이 있으면 훨씬 좋아짐
예를 들면 이런 식임: “집 자동화 시스템을 활용해 소셜 미디어 접근을 한 번에 15분, 한 시간에 한 번 이하로 제한했다. 내장 광고 차단 기능을 이용해 라우터가 기본적으로 소셜 미디어 DNS 질의를 블랙홀로 보내고, 이제는 집 안 여러 스마트 콘센트 중 하나의 버튼을 눌러 이를 잠시 해제할 수 있다”