미사일·드론 공격에 Home Assistant를 활용하는 우크라이나 가정 안전 구성
(denysdovhan.com)- 우크라이나의 반복되는 공습 위협 속에서 Home Assistant가 집 안 안전 알림 시스템으로 쓰이며, 미사일·드론 접근 정보를 휴대폰과 스피커로 전달함
- 단순 공습 사이렌만으로는 판단이 어려워 MiG-31K 이륙, 자폭 드론, 탄도미사일, 순항미사일, 복합 공격을 서로 다른 위험 단계로 나눔
- 내장 Ukraine Alarm 통합은 전국 공습 경보를 감시하고, Kyiv에 가족이 있을 때만 임계 알림과 스마트 스피커 안내를 실행함
- Telegram 모니터링 채널은 HA Multiscrape로 5초마다 확인하며, Tu-95 이륙·Kyiv·동네 이름·대피 문구 같은 키워드로 임박 공격과 직접 위험을 감지함
- 직접 위험이 감지되면 휴대폰 최대 볼륨 알림과 침실 HomePod 안내로 즉시 두 벽 뒤 은신처인 욕실 같은 곳으로 이동하게 함
우크라이나 공습 상황과 위험 단계
- 2022년 러시아의 전면 침공 이후 우크라이나는 핵무기를 제외한 여러 무기 공격을 매일 받고 있으며, Home Assistant는 접근 중인 위협을 알리는 데 사용됨
- 공습 사이렌은 하루에도 몇 번씩 울릴 수 있어, 매번 대피소로 이동하면 일상이 완전히 멈춤
- 많은 사람은 사이렌이 울리면 휴대폰으로 실제 위험 수준을 확인함
- alerts.in.ua 같은 앱과 Telegram 채널에서 위험 종류, 미사일 경로, 직접 위험 여부를 살핌
- 공습 위험은 여러 유형으로 나뉨
- MiG-31K 이륙: 하루에 여러 번 발생할 수 있으며, MiG-31K는 Kh-47M2 Kinzhal 극초음속 미사일을 탑재할 수 있음. 실제 탑재 여부를 예측할 수 없어 많은 사람이 이 위험 수준을 감수함
- 자폭 드론 공격: 주로 Iranian Shahed 136 드론으로 수행되며, 대부분 격추되더라도 여전히 위험하고 공포를 줌. 엔진 소리 때문에 “mopeds” 또는 “lawn-mowers”라고 부름
- 탄도미사일 공격: 9K720 Iskander 같은 탄도미사일은 약 2km/s로 매우 빠르며, 숨을 수 있는 시간이 최대 10분 정도임. 가장 빠른 방법은 복도나 욕실처럼 두 벽 뒤에 숨는 것임
- 순항미사일 공격: Kalibr 같은 순항미사일은 비교적 느리고 비행기처럼 날지만, 먼 거리를 비행해 국가 어디든 도달할 수 있음
- 가장 위험한 유형은 복합 공격임
- 드론과 순항미사일로 방공망을 소모시킨 뒤 탄도 또는 극초음속 타격이 이어짐
- 보통 새벽 4시쯤 밤사이에 발생함
Home Assistant로 공습 경보 감시
- Home Assistant의 내장 Ukraine Alarm 통합은 전국 공습 경보 시스템을 감시함
- Home Assistant 안의 안전 센서를 켜고 끔
- 어떤 종류의 위험이든 발생하면 임계 알림을 보내고 스마트 스피커로 메시지를 말하게 함
- 거리의 공습 사이렌이 도시 전체에 울리더라도, 집 안에서 확실히 깨어 상황을 확인할 수 있도록 자동화를 구성함
- Kyiv 공습 사이렌 자동화는
binary_sensor.alerts_kyiv_air상태 변화를 트리거로 사용함off에서on이 되면 “Air Alert goes off!”를 사용함on에서off가 되면 “It is safe now!”를 사용함sensor.family_in_kyiv가on일 때만 실행되어, 누군가 Kyiv에 있을 때만 동작함
- 알림은
script.announcement를 통해 실행됨force_speak: true로 방해 금지 모드에서도 말하게 함- 푸시 알림은
critical: 1, 볼륨0.75로 설정됨
Telegram 채널 스크래핑
- 공습 중에는 Telegram 채널이 위험, 비행 경로, 공격 유형에 대한 실시간 업데이트를 제공함
- 휴대폰을 계속 보며 직접 위험인지, 몇 시간 더 잘 수 있는지 판단하던 일을 Home Assistant에 맡김
- 우크라이나에 있다면 대피소로 가야 한다는 경고가 함께 붙어 있으며, 이 구성을 행동 지침으로 따라서는 안 된다고 명시함
- 스크래핑에는 HA Multiscrape 커스텀 통합을 사용함
- Home Assistant의 내장 scrape 통합도 있지만, 단일 스크래프에서 여러 센서를 만들고 데이터 목록을 다뤄야 해 한계가 있음
https://t.me/s/war_monitor같은 Telegram 웹 페이지를 긁어와.js-message_text목록을 읽고, 최신 메시지를 센서 판단과 속성에 사용함
Tu-95 이륙으로 임박 공격 감지
- 순항미사일은 보통 Tu-95 폭격기가 운반하고 발사함
- Tu-95는 미사일 발사 지점까지 약 3시간 비행하고, 발사 후 미사일이 Kyiv까지 도달하는 데 약 1~2시간 걸림
- 이 시간 동안 욕실 같은 은신처를 준비함
- 문서를 모으고, 공격이 시작되기 전 몇 시간 잠을 잘 수 있음
- 이런 상황은 보통 저녁에 발생하며, 그날 밤 대규모 미사일 공격이 있을 가능성을 뜻함
- 센서는 Telegram 채널 메시지 목록을 5초마다 스크래핑함
- 최신 메시지를 소문자로 바꿔 검사함
- “take off”, “plane”, “tu-95”에 해당하는 특정 단어 조합이 있는지 확인함
- 최신 메시지는
latest_message속성으로 저장함
- 센서가 켜지면 폭격기가 공중에 떠 있고 준비할 시간이 남아 있다는 뜻임
- 자동화는
binary_sensor.imminent_attack_in_war_monitor또는binary_sensor.imminent_attack_in_operinform가off에서on으로 바뀔 때 실행됨 - 알림 제목은 “Bombers take off 🛫”이며, 메시지는 센서의
latest_message를 사용함
- 자동화는
직접 위험 알림과 대피 행동
- 직접 위험 센서는 사용자의 위치에 대한 즉각적 위협이 있을 때 알림을 보냄
- 야간 공격 중에는 대피소로 가서 잠 못 이루는 밤을 보낼지, 다음 날 출근을 위해 가능한 오래 침대에 있을지 선택해야 하는 상황이 생김
- 이런 환경에 오래 노출되면 위험을 계산하게 됨
- 일을 하려면 충분한 수면이 필요함
- 방공망은 날아오는 위협을 정기적으로 격추함
- Kyiv에서 직접 피격이나 파편 피격 위험은 비과학적 추정상 차에 치일 위험과 비슷한 정도로 감수 가능하다고 봄
- 직접 피격을 당하면 생존 가능성이 매우 낮음
- 근처에서 미사일이나 드론이 격추되면 충격파가 창문을 깰 수 있음
- 대부분의 시간에는 침대에서 자고, 상황이 심각해지면 욕실에 숨음
- 폭발이 근처에서 일어났을 때 유리 파편과 충격파로부터 두 벽 뒤에 있기 위한 선택임
- 직접 위험 센서는 특정 키워드를 찾음
- 위치 조건: “Kyiv” 또는 동네 이름
- 위험 조건: “warning”, “be in a safe place”, “fast target”에 해당하는 표현
- 두 조건이 모두 참이면 센서가 켜짐
- 센서가 켜지면 즉시 숨을 직접 위험으로 간주함
Direct Danger ⚠️제목의 임계 알림을 보냄- 푸시 알림은
critical: 1, 볼륨1로 설정됨 - 침실 HomePod 볼륨을
0.6으로 설정함 - “즉시 숨으라”, “Kyiv 공격 위협” 같은 우크라이나어 경고 메시지를 스피커로 말함
force_speak: true로 스피커 안내를 강제로 실행함
댓글과 토론
Hacker News 의견들
-
이게 존재한다는 사실이 매혹적이면서도 끔찍함
K8s나 Ansible용 YAML을 많이 쓸 때는 보통 운영에 넣기 전 테스트 환경에서 검증하는데, 여기서는 YAML 버그 하나가 실제로 사람 목숨을 잃게 만들 수 있음- 여기서 battle tested라는 표현은 문자 그대로 쓰임
- 진짜 끔찍한 부분은 이게 경보 시스템이라기보다 버티기용 도구에 가깝다는 점임. Kyiv에서도 경보 시스템으로서 효용은 제한적임
운명을 받아들일 단계까지는 아니지만 실제 대피소로 가는 건 포기한 상태라면, 순항미사일과 살상 드론이 올 때 몇 시간씩 숨는 대신 한 시간 정도 유리 파편만 피하도록 설정할 수 있음
Kyiv보다 전선에 가까운 곳에서는 거의 쓸모가 없음. 극초음속이 아닌 탄도미사일이나 활공폭탄조차 비행 시간이 너무 짧아서, 알람 소리와 폭발음을 거의 동시에 듣게 됨 - 대부분은 이미 Home Assistant UI로 옮겨져서 이전보다 오류가 덜 나기 쉬운 편임
- 디스토피아 미래 시간선에 온 걸 환영함. 더 나빠질 것임
-
우크라이나 전 지역의 공습경보 횟수와 지속시간, 지역·기간별 언론 보도 폭발 횟수 같은 통계는 https://alerts.in.ua/en에서 볼 수 있음
통계 요약 섹션이 있고, 화면 아래의 모래시계 버튼을 누른 뒤 기간으로 필터링하면 됨- 통계 일을 하는데, 데이터 포인트가 더 적었으면 좋겠다고 바라는 경우는 드묾
-
진짜 질문은 왜 위험의 성격을 자세히 알려주는 공식 API가 없느냐는 것임. 공습 무기의 종류와 속도, 예상 도달 시간을 알아내려고 Telegram을 긁어야 해서는 안 됨
참고로 Kropyva도 볼 만함. 포격용 Uber 같은 것이고 러시아군을 지우는 데 매우 유용함- 이런 단일 API는 계속 공격받을 것임
다른 서비스를 활용해 공격 표면을 분산시키고 있는 셈임 - 핵심 이유는 탈중앙화임
이런 채널을 업데이트하는 기자들은 우크라이나 방공망 내부 소스뿐 아니라, SDR로 러시아 무선 교신을 감시하는 공개출처정보(OSINT) 활동가나 러시아·벨라루스에서 항공기 이륙을 지상 관측하는 사람들에게서도 정보를 받음. 매우 위험하지만 정보를 비교적 안전하게 보낼 방법은 있고, 비행기는 대체로 시끄러움
기자 한 명이 어떤 이유로든 사라져도 다른 사람들이 업데이트를 계속 올릴 수 있음. 각 주(oblast)에도 공격을 알리는 자체 채널이 있고, 지역 행정기관이나 긴급 서비스가 운영하는 곳도 있음
방공 담당자들은 이런 내용을 직접 감시하고 글로 정리하기엔 너무 바쁨. 상황이 악화되기 전 단체 채팅이나 Telegram 봇에 짧은 메시지를 남기는 정도가 최선일 때가 많고, 동시에 경고 시간을 충분히 주면서도 우크라이나 관측소들의 능력과 위치가 드러나지 않도록 정보 공개 시점을 조절해야 함
이 시스템은 단순해야 함. 훈련받은 방공 인력이라고 모두 기술에 밝은 건 아니며, API가 뭔지도 모르는 사람이 많음. 우크라이나인 다수도 API를 다루지는 못하지만 Telegram 경고는 읽을 수 있음
감시 채널을 큐레이션하는 기자들은 일반 대중에게서 미사일과 드론의 비행 경로 제보도 받음. 휴대폰 GPS와 나침반을 쓰고 물체를 향해 폰을 겨냥해 데이터를 보내는 앱도 몇 개 있지만, 결국 비기술자가 쉽게 쓸 수 있는 여러 정보 채널을 두는 문제임
순항미사일이 지나가는 소리를 들었다고 대략적 위치와 함께 메시지를 보내는 것만으로도 도움이 될 수 있음. 레이더 커버리지가 100%는 아니기 때문임. 이런 메시지는 실시간으로 요격을 시도하는 우크라이나 방공 담당자들에게 다시 전달됨
보안 문제도 명확함. 개인 연락처와 단체 채팅 접근은 검증할 수 있고, Telegram 채널은 외부에서 익명성을 깨기 어려워 작성자 기기를 사이버공격 대상으로 삼기도 쉽지 않음. 반면 API는 전 세계에 열려야 하므로 즉시 표적이 됨
지저분한 시스템이지만 작동함
Kropyva는 일반 대중에게 공개되어 있지 않고 유사한 NATO 시스템의 역량과도 거리가 멂. 강점은 값싼 태블릿에서 돌아가는 Android 앱이라 군산복합체가 제공하는 하드웨어에 의존하지 않는다는 점임. 그런 하드웨어는 더 안전하고 견고하지만 훨씬 비쌈
- 이런 단일 API는 계속 공격받을 것임
-
“Home Assistant에는 내장 Ukraine Alarm 통합이 있다. 전국 공습경보 시스템을 감시하고 HA의 안전 센서를 토글한다”는 대목을 보면, HA 커뮤니티는 잘 모르지만 이 플러그인에 영향을 주는 새 커밋은 매우 조심해야 할 것 같음
- 수천, 어쩌면 수백만 가정에서 돌아가고 있을 테니, 어쨌든 모든 걸 확인하고 있기를 바람
- HA 커뮤니티에 대해 정확히 무엇을 암시하는지는 모르겠지만, 별개로 이런 상황에서는 소프트웨어 공급망 공격 위험을 매우 중시해야 함
신뢰할 수 있는 동료 그룹이 코드를 아주 신중히 검토하고, 서명 등을 사용해 모두가 말하자면 “돈 낸 만큼 제대로 받는지” 보장하는 게 이상적임
사람 목숨이 달릴 정도로 의존하지는 않을 수도 있지만, 쓸 만큼 중요하다면 확실히 검증할 만큼도 중요함
다만 집에 무서운 탄약 목록이 쏟아지는 와중에 잠을 자려는 상황이 아닌 내가 말하기는 쉽고, “검증된 구성에서 업데이트하지 않기” 같은 단순한 조치만으로도 충분할 수 있음
-
이게 존재한다는 사실은 동시에 오싹하고 고무적임
- Tu-95 이륙과 Kalibr 발사를 문자열 매칭하는 프로그래밍 튜토리얼을 현실에서 읽게 될 줄은 몰랐음. 너무 비현실적으로 느껴짐
Cold Waters 모딩 가이드 같은 느낌임
- Tu-95 이륙과 Kalibr 발사를 문자열 매칭하는 프로그래밍 튜토리얼을 현실에서 읽게 될 줄은 몰랐음. 너무 비현실적으로 느껴짐
-
Home Assistant의 흥미로운 활용임. 다음 섹션에서 가동시간 모니터를 언급했는데, 온라인 상태를 유지하기 위해 뭘 쓰는지 궁금함. UPS나 배터리 백업 같은 것일 듯함
- 2022년 겨울 이후로는 대부분 뭔가 갖춰두고 있음. 러시아가 민간인과 인프라를 공격했고 방공 부족까지 겹치면서 정전이 체계적으로 벌어졌기 때문임
그래도 대부분 일은 해야 해서 UPS, EcoFlow, 발전기, 태양광 시스템을 들였고, 예산이 적으면 DIY 배터리까지 썼음. 올해도 비슷함 - 우크라이나에서는 전력망이 계속 공격받고 있으니 어차피 UPS가 필요할 것 같음
- 2022년 겨울 이후로는 대부분 뭔가 갖춰두고 있음. 러시아가 민간인과 인프라를 공격했고 방공 부족까지 겹치면서 정전이 체계적으로 벌어졌기 때문임
-
삶을 개선하기 위해 기술을 쓰는 것도 대단하지만, 미사일 공격에서 살아남기 위해 기술을 쓰는 것은 완전히 다른 차원임
가끔 인간이 언젠가 전쟁을 영원히 멈출 수 있을지 자문하게 됨- 그런 상태는 안정적이지 않을 것 같음. 전쟁이 없으면 싸우는 능력을 잃게 되고, 결국 작은 집단 하나가 훨씬 크지만 약한 상대를 공격하기 쉬워짐
공격받은 나라가 즉시 항복해 침략자 하나가 세계를 지배하는 방식으로 전쟁이 해결된다 해도, 그 내부에서 다시 권력을 놓고 경쟁하는 파벌이 생길 것임
방어 기술이 공격 기술을 영구적으로 압도하면 해법이 될 수도 있겠지만, 사람들은 그래도 방법을 찾아낼 것 같음. 전쟁은 사람들의 충성심을 심리적으로 바꾸는 방식으로 시작될 수도 있음 - 인간은 본질적으로 전쟁이나 갈등 쪽으로 기울어 있음. 우리의 치명적 결함임
- “인간이 언젠가 전쟁을 영원히 멈출 수 있을까”는 너무 넓고 철학적인 질문임. 멀리 떨어진 질문이라 다 같이 커피를 마시며 오래 토론할 수 있음
더 현실적이고 실용적인 질문은 “왜 Biden은 전쟁을 멈추지 않았나?”가 될 것임
이러면 본격적인 논쟁이 시작됨. 서로 모순되는 생각, 꽤 많은 적대감, MTG 같은 성향의 인물과 그 추종자들, 그리고 당연히 이 댓글은 지옥까지 내려갈 만큼 비추천받을 것임
바로 그게 핵심임. 같은 주제라도 멀리 있는 가정적 상황인지, 물리적 현실인지에 따라 생각이 크게 달라짐
- 그런 상태는 안정적이지 않을 것 같음. 전쟁이 없으면 싸우는 능력을 잃게 되고, 결국 작은 집단 하나가 훨씬 크지만 약한 상대를 공격하기 쉬워짐
-
Telegram 채널은 많은 사람에게 생명의 은인이었고 언론에도 큰 자원임. 여기서 쓰이는 방식이 흥미로움
러시아 국가 행위자들은 이런 채널을 장악하거나 침투하려고 많은 돈을 낼 것 같음 -
정말 말도 안 되는 상황임. 밤낮 아무 때나 이런 공격을 견디는 스트레스라면 나를 10년은 늙게 만들 것 같음. 그런데도 몇 시간 뒤나 다음 날에는 다시 일해야 한다고 기대됨
- 말도 안 되는 상황이고 2022년 2월부터 계속 그랬으며, 동시에 정말 벗어나고 싶은 새로운 일상이 됨. 그렇다고 항복할 만큼 절박한 건 아님
이것은 전쟁과 관련된 스트레스 요인 중 하나일 뿐임. 매주 민간인 사상자 소식을 듣고, Bucha나 Kherson처럼 점령지에서 탈출했거나 해방된 사람들이 겪은 끔찍한 일을 읽고 들으며, 친구와 지인이 전투에서 전사했다는 소식, 징병, 불확실하지만 대체로 암울해 보이는 미래 전망 등이 계속 이어짐
그래서 하루가 몇 년처럼 지나감. 우리의 실수를 반복하지 말고 여러분의 대표자들에게 편지를 쓰길 바람
- 말도 안 되는 상황이고 2022년 2월부터 계속 그랬으며, 동시에 정말 벗어나고 싶은 새로운 일상이 됨. 그렇다고 항복할 만큼 절박한 건 아님
-
고무적이면서도 끔찍함이 정확히 반반임. 서방은 언제쯤 Putin이 힘만 존중한다는 걸 이해하고 배짱을 낼까
우크라이나인들에게 필요한 모든 것을 줘야 함. 그게 옳은 일이고, 동시에 세기의 군사적 거래이기도 함. 우크라이나가 러시아군을 계속 크게 소모시키는 동안 NATO는 병사 한 명도 잃지 않아도 됨
아니면 러시아가 이기게 두고 수백만 우크라이나 난민을 감당해야 할 것임. 아마 그다음에는 러시아가 또 다른 나라를 공격할 가능성이 큼