1P by GN⁺ | ★ favorite | 댓글 1개
  • 임대 아파트에서 장치를 교체하거나 전기기사를 부르지 않고, 기존 온도조절기의 무선 신호 재전송으로 Home Assistant 난방 제어를 구현한 사례임
  • 온도조절기는 868MHz 대역으로 보일러와 통신했고 프로토콜은 암호화되어 있었지만, Replay Attack은 패킷 내용을 몰라도 동작할 수 있었음
  • rtl_433 분석 결과 Honeywell 계열과 비슷한 프로토콜로 보였고, demand 값이 보일러 켜짐·꺼짐을 나타내며 보일러가 확인 응답을 보내는 구조였음
  • 최종 구성은 HackRF One 클론과 hackrf_transfer로 신호를 녹음·재생하고, Docker 웹 서버와 Home Assistant의 command_line, average, generic_thermostat를 연결함
  • 2024년 12월 초부터 문제 없이 사용 중이지만, 868MHz 송신은 지역 법규에 따라 불법일 수 있고 단순 온·오프 제어에 HackRF를 쓰는 선택은 과함

임대 주택에서 난방을 자동화하기 어려운 이유

  • 임대 아파트의 보일러는 집주인이 설치한 무선 온도조절기 하나로 제어됨
  • 온도조절기는 내장 온도 센서로 목표 온도에 맞춰 난방을 켜고 끄는 방식임
  • 실제 사용에서 불편한 점은 세 가지였음
    • 센서가 아파트의 한 방 온도만 측정해 방마다 난방이 고르지 않음
    • 조작부가 있는 방에 따라 침대나 거실에서 쓰기 불편함
    • 외출 전에 난방을 끄지 않으면 비싼 에너지를 낭비함
  • 이미 Home Assistant로 집 안 자동화를 하고 있었고, 난방도 같은 방식으로 제어하고 싶었음
  • 시판 솔루션도 있었지만 집주인의 협조와 전기기사 방문이 필요할 가능성이 있어, 기존 온도조절기를 그대로 쓰는 길을 택함

프로토콜 해석 대신 재전송 공격 선택

  • 출발점은 온도조절기와 보일러가 무선 프로토콜로 통신한다는 사실이었음
  • 프로토콜을 처음부터 역공학하는 일은 라디오 지식 수준에 비해 너무 복잡했음
  • 선택한 방식은 Replay Attack
    • 보일러와 온도조절기 사이의 신호를 복제함
    • 복제한 신호를 다시 송신해, 공격자가 온도조절기처럼 보이게 만듦
    • 프로토콜 내용을 이해하지 않아도 동작 가능함
  • 이 방식은 장치 구현에 운이 따라야 함
    • 통신에 증가하는 카운터가 있으면 과거 신호를 무시해 재전송 공격을 막을 수 있음
    • 해당 온도조절기는 이런 방식을 쓰지 않아 재전송이 가능했음

신호 대역 확인과 첫 관찰

  • 온라인에서 정확한 온도조절기 모델 정보를 찾았고, 데이터시트의 RF Communication 항목에서 868MHz 근처 대역을 사용한다는 점을 확인함
  • 데이터시트에는 Protocol: Encrypted라고 되어 있었지만, 재전송 방식에서는 큰 문제가 아니었음
  • 868MHz 신호 복제 자료는 많지 않았음
    • LoRa/Meshtastic 관련 자료는 많았음
    • 천장 선풍기나 차고문 같은 장치를 복제하려는 Reddit 글은 많았지만 답은 부족했음
    • 433MHz였다면 소비자용 도구가 훨씬 많았을 것이라고 판단함
  • 신호를 보기 위해 Software-Defined Radio를 사용함
    • 저가형 RTL-SDR V4를 구매함
    • SDR++에서 온도조절기 버튼을 누르자 워터폴에 신호가 나타남
  • Flipper Zero는 이 상황에 맞지 않았음
    • Flipper Zero는 SDR이 아님
    • 작동 가능한 주파수 범위가 제한적이라 이 장치에는 사용할 수 없었음

프로토콜 단서와 실패한 송신 시도

  • rtl_433으로 온도조절기가 알려진 프로토콜을 쓰는지 확인함
    • 이름과 달리 다른 주파수에서도 동작함
    • 더 드문 장치는 인식되지 않을 수 있음
  • 결과적으로 이 온도조절기는 다른 Honeywell 장치와 같은 프로토콜을 쓰는 것처럼 보였음
  • 통신에서 demand 속성이 보일러 상태를 나타냄
    • 1은 보일러 켜짐
    • 0은 보일러 꺼짐
    • 보일러는 확인 응답을 보내며, 온도조절기가 범위 밖인지 판단하는 용도로 보임
  • 이후 직접 패킷을 만들어 송신하려 했지만 실패함
    • URH로 패킷을 수동 역공학하고 재구성하려 함
    • 저가 868MHz 마이크로컨트롤러 보드로 송신하려 했음
    • 보드들은 같은 보드끼리 통신하는 데 맞춰져 있었고, 더 진행하려면 라디오 레지스터를 직접 다뤄야 했음
    • 이 작업은 기술 수준 밖이라고 판단함

HackRF로 신호를 그대로 녹음·재생

  • 최종적으로 HackRF를 사용해 신호 내용을 해석하지 않고 그대로 재생하는 방식을 택함
  • 기존 RTL-SDR은 수신만 가능해 송신에는 쓸 수 없었음
  • HackRF One은 보통 400달러 이상이지만, AliExpress에 40달러 수준의 클론이 있었음
    • 이후 AliExpress에서 “HackRF” 검색으로 찾을 수 있던 목록은 대부분 사라짐
    • 새 클론은 OpenSourceSDRLab에서 구매 가능하지만 예전만큼 싸지 않음
    • 여유가 있다면 Great Scott Gadgets의 HackRF One 같은 원본 하드웨어 프로젝트를 지원하는 편이 좋음
  • hackrf_transfer로 켜기·끄기 신호를 각각 녹음함
# We set the frequency to 868.3Mhz and the sample rate to 2000000.
hackrf_transfer -r turn_off.raw -f 868300000 -s 2000000
hackrf_transfer -r turn_on.raw -f 868300000 -s 2000000
  • 같은 설정으로 신호를 재생해 CLI에서 보일러를 켜고 끌 수 있었음
# We use -a to turn on the amplifier and -x to increase the gain a tad.
hackrf_transfer -t turn_off.raw -f 868300000 -s 2000000 -a 1 -x 23
hackrf_transfer -t turn_on.raw -f 868300000 -s 2000000 -a 1 -x 23
  • 명령 실행 후 보일러 내부의 물리 릴레이가 켜지고 꺼지는 소리를 들을 수 있었음

Home Assistant에 연결한 방식

  • HackRF를 전원 공급 USB 허브에 꽂고, 이를 Home Assistant 서버에 연결함
  • Docker 컨테이너 안에서 송신 명령을 실행하는 간단한 웹 서버를 작성함
  • Home Assistant에서는 Average Sensor Plugin을 사용하고, command_line, average, generic_thermostat 구성을 연결함
command_line:
- switch:
name: Boiler
command_on: "curl http://docker-vm:1111/api/on";
command_off: "curl http://docker-vm:1111/api/off";
sensor:
- platform: average
name: "Average Temperature"
entities:
- sensor.bedroom_thermostat_temperature
- sensor.kitchen_thermostat_temperature
climate:
- platform: generic_thermostat
name: Boiler Thermostat
heater: switch.boiler
target_sensor: sensor.average_temperature
  • 이 구성으로 침실과 부엌 온도 센서의 평균 온도를 기준으로 보일러를 제어하는 온도조절기를 만들었음
  • 구현은 임시방편에 가까움
    • 전용 Home Assistant 플러그인을 작성하는 편이 더 나음
    • CLI를 셸로 호출하는 대신 라디오를 직접 제어하는 편이 더 깔끔함
    • curl에 난방을 의존하는 구성은 다소 불편함

실제 사용 결과와 남은 한계

  • 이 설정은 2024년 12월 초부터 아파트 난방 제어에 사용됐고, 이후 문제는 없었음
  • 휴대폰에서 온도를 조정할 수 있어 편리함
  • 자동화 예시는 다음과 같음
    • 잠자는 동안 온도를 낮춤
    • 아침 기상 시간에 맞춰 온도를 올림
    • 시내에 나가면 난방을 끔
    • 집으로 돌아오기 몇 정거장 전에 난방을 다시 켜서 도착 시 따뜻하게 만듦
  • 가장 아쉬운 점은 단순한 보일러 온·오프 스위치에 HackRF 같은 강력한 라디오를 계속 써야 한다는 점임
  • 작은 라디오를 억지로 맞추는 데 시간을 더 쓰기보다, 과한 장비라도 제대로 동작하는 쪽을 선택함

무선 송신과 블로그 댓글에 대한 법적 주의

  • 무선 신호 송신은 지역 법규를 반드시 확인해야 함
  • 글에서 사용한 868MHz 대역은 미국에서 면허 없이 송신하면 불법
  • 2025년 3월 16일부터 영국의 Online Safety Act가 전면 시행되면서, 블로그 댓글 같은 사용자 간 콘텐츠 운영 부담이 커짐
  • 규제기관 Ofcom이 개인 블로그까지 단속할 가능성은 낮지만, 위반 시 1,800만 파운드 벌금 위험이 있어 댓글 섹션을 제거함
  • 자체 운영 블로그에 대한 법의 영향을 다룬 글로 관련 법률 해설hobbyist internet 관련 논의를 함께 제시함

댓글과 토론

Hacker News 의견들
  • 에너지나 비용 절감이 목표라면, 20분 만에 서늘한 집을 훈훈하게 만들 수 있는 시스템은 오히려 원하지 않는 쪽임
    대신 난방수 순환 온도를 훨씬 낮게 운전해, 비난방 공간에서의 손실을 줄이고 방 전체를 더 고르게 데우는 방식이 좋음. 콘덴싱 보일러라면 목표 출수 온도만 낮춰도 가능함
    그 위에 실외 온도 보정(weather compensation)을 더하면 바깥 기온에 따라 출수 온도를 조정해서, 건물이 목표 온도로 겨우 회복될 정도로만 운전할 수 있음
    제대로 튜닝했을 때는 온도조절기가 상한 제한처럼 동작하고 하루 22~24시간 난방을 요구하되 과열은 안 되게 맞췄음. 보통 출수 온도는 따뜻한 날 110°F, 영하권 날씨 135°F 정도였고, 이전 겨울의 고정 160°F 출수 대비 가스 사용량이 8~15% 감소했으며 훨씬 쾌적했음. 다만 이런 방식은 회복 시간이 길어서 큰 폭의 절전 설정과는 잘 맞지 않고, 평소에는 정밀하게 낮은 온도로 돌리다가 회복 구간에서만 더 뜨거운 물을 쓰는 더 똑똑한 제어가 필요함

    • 그건 집 안 난방 배치 방식의 영향이 큼. 무엇이 더 효율적인지는 열을 집 안 어디에 넣는지, 단열 수준이 어떤지 등에 달려 있음
      열은 온도 차에 따라 뜨거운 곳에서 차가운 곳으로 선형적으로 이동함. 가정적으로 배관 온도가 실내와 같다면 전달되는 열은 전부 외피 바깥으로 빠지는 셈이고, 배관이 뜨거울수록 이 비율은 좋아짐. 배관 중 몇 퍼센트가 외피 안에 있든 마찬가지임
      다만 창문 아래처럼 외벽 쪽을 따라 난방하면 실내 온도조절기보다 외벽을 더 높은 온도로 데워 바깥으로 손실이 커짐. 반면 복사 난방은 이 효과를 대체로 피함
    • 동의함. 켜고 끄는 방식은 최악의 난방 방식임. ISO 7730을 보면 쾌적함의 상당 부분은 차갑지 않은 벽에서 나옴: https://de.wikipedia.org/wiki/ISO_7730
      즉 합리적으로 단열된 집에서는 20°C 정도의 낮은 일정 온도를 유지하는 것이 쾌적성 면에서 가장 낫고, 난방수 온도도 낮출 수 있어 히트펌프나 보일러 효율이 좋아짐
    • 집에 없을 때 난방을 끄고 돌아올 때 다시 켜는 게 항상 더 효율적이라고 읽었음. 여기서 22~24시간 켜두는 이유는 원하는 온도까지 회복하는 데 오래 걸려서, 실제로 한동안 춥게 지내야 하기 때문인지 궁금함
    • 물 기반 시스템은 잘 몰라서 맞는지 확신은 못 하지만, 히트펌프에서는 이 주장이 틀렸다는 게 입증됐음
      고정 온도로 두는 것과 외출 때 올리거나 내리거나 끄고 귀가 전에 되돌리는 것을 비교했을 때 차이가 거의 없었고, 전력 소비량도 비슷했음
      링크가 있으면 좋겠는데, 효율이 떨어지는 재가열 상황까지 테스트했음. 여기에는 “비상 난방”도 포함됐음
    • “서늘한 상태에서 20분 만에 훈훈하게 만드는 시스템은 원하지 않는다”는 건 경우에 따라 다름. 다른 댓글에서 설명했듯이 어떤 방은 바닥 난방과 라디에이터를 함께 쓰고, 목표 온도가 현재 온도보다 1°C 이상 차이 나면 둘 다 돌리며, 아니면 바닥 난방만 사용함
  • 멋진 해킹임
    더 쉬운 방법은 온도조절기 아래에 펠티어 가열/냉각 소자를 놓고 원격으로 제어해서, 온도조절기가 인식하는 온도를 장악하는 것 같음
    정확한 온도조절기 모델 링크가 작동하지 않아 이 접근이 설계상 얼마나 맞을지는 모르겠지만, 내가 써본 온도조절기들은 보통 벽걸이라 아래에 열원이나 냉원을 두는 게 그리 어렵지 않았음. 뜨거운 쪽과 차가운 쪽이 동시에 온도조절기로 들어가지 않게만 하면 되고, 그건 단순한 위치 배치 문제임

    • 멋진 아이디어임. 이렇게 비효율적인 장치를 쓰는 용도가 이렇게 효율적이라는 게 아이러니함
    • 그런 보일러에 가장 좋은 제어 시스템은 외부 온도에 따라 난방수 온도를 고정하는 난방 곡선을 제어하는 방식임. 가능한 한 낮은 난방수 온도를 목표로 하면 시스템 반응은 꽤 느려짐. 이후에는 각 방으로 가는 물 유량만 조절해 온도 차이를 잡으면 됨. 다만 이건 장기적인 수동 최적화 과정이라 완성까지 1~2년 걸림
  • 도구 상자가 해법 공간을 정말 좌우하는 것 같음. RF 쪽은 전혀 모르는 상태로 이 글을 읽다 보니, 내 도구에 더 맞는 다른 공격이 바로 떠올랐음. 온도조절기를 상자에 넣고 그 상자 온도를 기계적으로 제어할 수 있지 않을까?

    • 벽면 컨트롤러 안의 서미스터를 제거하고 대신 디지털 가변저항을 배선했음. 센서를 물리적으로 데우고 식히지 않고도 같은 효과가 남
    • 아니면 보일러 제어 보드에 ESP32를 붙여서 무전압 접점 회로를 닫게 하면 되지 않나?
    • 괜찮은 접근처럼 들리지만, 상자를 냉각하는 게 문제임. 난방을 켜려면 온도 센서가 낮은 값을 읽어야 함
      그래도 온도조절기 내부에 접근할 수 있다면, 온도 센서를 회로로 대체해서 필요할 때 매우 높거나 매우 낮게 읽게 만드는 건 어렵지 않을 것 같음
    • 맞음. 실제로 그렇게 할 수 있음. CoolBot을 찾아보면 됨. 기존 온도조절기를 그냥 데워서 정확히 이걸 함
    • 콤비 보일러에 물리적으로 접근할 수 있다면 수신기를 제거하고 Home Assistant 친화적인 콤비 보일러 온도조절기로 바꾸는 방법도 있음
      처음 해봐도 아마 30분 작업이고, 양면테이프 조금만 있으면 쉽게 원상복구 가능함. Tracy Island를 만들어본 영국인이라면 익숙할 물건임. 감전 위험은 실제로 있지만, 보일러 전원을 끄면 완전히 줄일 수 있음
      그래도 재미있는 해킹이고, 잘 구현됐음
  • 범용 온도조절기의 이상적인 형태가 뭘지 궁금함
    우리 아파트의 온도조절기에는 요즘 미국 제품에 많이 있는 “기능”이 있는데, 기상, 외출, 귀가, 수면이라는 네 개의 순서 있는 시간과 각 구간의 희망 온도를 설정하게 되어 있음. 집 안 모두가 매일 같은 시간에 일어나고 나가고 돌아오고 자는 가구는 거의 모름
    나는 재택근무를 해서 그냥 온도 하나를 설정해 무기한 유지하고 싶은데, 이 시스템은 원하는 온도를 네 번 눌러 입력하고 네 구간을 확인해야 함
    결국 구식 다이얼 온도조절기처럼 동작하게 설정할 수 있는, 더 프로그래밍 가능한 온도조절기가 더 나을 것 같음

    • 여전히 다이얼이 가장 낫다고 봄. 특히 현대식 주택에서는, 적어도 유럽에서는 온도조절기를 항상 같은 온도에 두는 게 좋다는 생각이 있는 듯함. 아침에 식은 집을 데우는 데 드는 에너지가 안정된 온도를 유지하는 것보다 더 든다는 이론임
      이상적인 구성은 집 안 모든 라디에이터에 스마트 온도조절 밸브를 설치해, 방에 없을 때 수동으로 낮추거나 활동·창문 열림을 자동 감지해 조절하는 것임. 다만 거실의 주 온도조절기만 보일러를 켜는 게 아니라, 각 밸브가 필요하면 중앙 보일러를 켤 권한을 가져야 함
    • Ecobee를 쓰고 있는데 마음에 듦. 기본은 Home, Away, Sleep이지만 원하는 만큼 많이 또는 적게 추가할 수 있음. 온도를 수동으로 바꿀 수 있고, 수동 설정을 얼마나 유지할지도 정할 수 있음. 취소할 때까지든, 다음 예약 변경 전까지든 가능함
      밤에는 더 시원한 걸 좋아해서 평소 취침 시간쯤 온도가 바뀌게 해놨고, 낮 온도를 조정했더라도 자동으로 돌아감. 다시 바꾸는 걸 기억하고 싶지 않아서 스마트 온도조절기를 쓰는 거니까. 집을 나가면 감지해서 Away로 바꾸고, 휴가 때는 집을 안전하게만 유지하고 쾌적하게는 안 하도록 설정한 뒤 비행기 착륙 시간쯤 되돌릴 수 있음
      일정이 미친 듯이 무작위가 아니거나, 자거나 깨어 있거나 집에 없거나 항상 같은 온도를 원하는 게 아니라면, 기본 일정을 넣고 필요할 때 수동 조정하면 됨. 한 시간 일찍 일어나면 직접 바꾸면 되고, 제때 일어나면 신경 쓸 필요도 없음
    • 솔직히 예전 방식이 더 좋음. 우리 것도 프로그래밍 가능하지만 프로그램하지 않고 항상 원하는 온도로만 맞춤. 추운 날 약간 쌀쌀하면 1도 올리고, 햇빛이 좋아 모두가 덥게 느끼면 1도 내림
    • 이런 온도조절기들이 이미 거의 그걸 허용하지 않나? 새 Honeywell 온도조절기를 쓰고 있는데, 기본적으로 20년 된 이전 제품이 하던 일을 하고 UI 편의만 조금 추가된 수준임. 요일별로 기상/외출/귀가/수면 시점이 있고, 선택적으로 두 번째 외출/귀가 쌍도 추가됨. 또 하루 프로그램을 holiday로 덮어쓰는 옵션이 있는데, 언제든 활성화할 수 있는 여덟 번째 프로그래밍 요일 같은 것임
      원하는 사용 방식도 가능함. 표준 프로그램을 15°C로 두고, 필요할 때 원하는 온도로 설정한 holiday를 켜면 됨. 저녁의 적당한 시간에 15°C로 돌아가게 해두면 잊어도 계속 켜져 있지 않음
    • 뻔한 해결책은 기상 8:00, 외출 8:01, 귀가 8:02, 수면 8:03으로 두는 것임. 그런 다음 수면 온도를 원하는 온도로 설정하고 나머지는 적당히 가까운 값으로 두거나, 난방과 냉방을 자동 전환하지 않는다면 그 3분 동안 계절상 무동작 값으로 설정하면 됨. 예를 들어 여름에는 가능한 최고 온도, 겨울에는 가능한 최저 온도임
  • Flipper Zero는 훌륭하고, 커스텀 펌웨어를 설치하면 해킹과 조사 부분을 전부 처리할 수 있음
    원래 제품은 이해할 만하게 제약이 많은 펌웨어로 출고됨. 회사가 받는 비난을 줄이려는 목적일 듯함. 하지만 Flipper Unleashed 같은 것을 설치하는 건 매우 쉽고, 그러면 해당 제약을 제거하고 많은 추가 기능을 얻음
    범죄에 쓰일 수 있는 도구를 가지고 있다는 것 자체가 반드시 범죄는 아님. 다만 무엇을 하느냐는 조심해야 하고, 나라에 따라 정장 입은 사람들이 문을 두드릴 수도 있음
    개인적으로는 내 장치들, 예를 들어 전동 대문, 롤러 도어, 롤러 셔터 등의 “암호화된” 433MHz 신호를 재생하고 싶었는데, Flipper의 지역 설정이 Australia일 때는 비활성화돼 있었음

    • “범죄에 쓰일 수 있는 도구를 가지고 있다는 것 자체가 반드시 범죄는 아니다”에는 1000% 동의하지만, 과거에 사소한 문제를 겪어본 입장에서 이런 생각은 조심해야 함. 질문하는 권한자가 원하는 서사를 만들 수 있고, 그 서사가 받아들여지며, 내 논리는 오히려 불리하게 쓰일 수 있다고 항상 가정해야 함
      기술 탐구와 호기심은 늘 권장하지만, Flipper Zero 예시만 봐도 관할권과 무관하게 염두에 둘 게 있음. 쓸 생각이 없으면 들고 다니지 말 것. 연습 전에 모든 문서를 읽고, 눈에 띄지 않게 하는 연습을 할 것. 야외 활동 쪽에서 배운 “흔적 남기지 않기” 태도를 적용할 것. 자신의 존재와 행동이 환경과 대상에 어떤 영향을 주며 외부 관찰자에게 어떻게 해석될지 신경 쓰고, 의심을 줄이기 위한 조치를 할 것
      이런 원칙은 일회용 스마트폰부터 Temu의 저가 RFID 카드 복제기까지 많은 장치에 적용됨
      특히 초보자는 열의가 앞서 TV와 게임 속 해커처럼 보이는 단계로 바로 뛰어가고 싶어 함. 그들이 허구 인물인 데는 이유가 있음. 행동이 무해했든 아니든, 결국 중요한 건 질문하는 권한자가 어떻게 인식하느냐임
  • 해독하고 싶다면 아마 그렇게 어렵지 않을 것임. 예전에 이걸 했을 때 송신 쪽도 구현하려 했지만, 이사하면서 못 했음
    https://blog.habets.se/2017/04/Decoding-FSK.html

  • 나라면 무선 신호를 건드리기보다 온도조절기 자체를 데우거나 식히는 방식으로 할 것 같음. 작은 상자를 씌우고, 작은 펠티어 소자 같은 것으로 상자 안 온도를 제어하면 됨. 난방을 켜고 싶으면 상자 안을 식히고, 멈추고 싶으면 데우면 됨
    다만 취미로 열 제어 장치를 만들다 보니 이 방법이 훨씬 쉬워 보이는 걸 수도 있음

  • 원글 작성자가 여기에 온다면, 보일러와 호환되는 온도조절기로 그냥 교체했으면 돈과 골칫거리를 덜 썼을 가능성이 큼. 무작위 오픈소스 프로젝트에서 Honeywell 신호를 찾았고 그게 작동했다는 사실만 봐도, 보일러 시장은 경쟁에 꽤 열려 있음
    앞으로의 아파트 커스터마이징도 행운을 빔

    • 아파트가 임대라서 아무것도 수정할 수 없다고 설명한 부분을 놓친 것 같음
  • 멋진 프로젝트임
    비교적 최신 천연가스(CH4) 난방기라면 모두 OpenTherm/eBus 같은 프로토콜을 통한 변조식 온도조절기 기능이 있어야 함. 실외 온도 센서가 있는 온도조절기와 결합하면 시스템 효율이 몇 퍼센트 올라가고, 온도조절기와 설치 비용을 상쇄하는 데 도움이 됨. 결국 더 효율적인 현대식 난방 시스템이 됨
    히트펌프 시스템에도 동일하게 적용돼야 함

    • OpenTherm은 좋은 아이디어지만, 새로 설치한 곳도 항상 그에 맞게 배선되어 있지는 않음. 새 스마트 온도조절기를 설치할 때 보니 기존 설치가 S Plan으로 배선되어 있었고, 보일러 위치와 밸브 위치 사이의 몇 안 되는 케이블이 이미 다 쓰이고 있었음. 준비가 안 되어 있으면 작업 규모가 훨씬 커짐
  • 새 아파트, 정확히는 집으로 이사했고 전체 리노베이션이 필요했음. 현대식 단열은 없었지만 당장은 단열 투자수익이 맞지 않는다고 계산했음. 여러 층짜리 반분리 주택이라 가능한 한 쾌적하면서 경제적인 난방을 원했음
    특히 침실과 거실은 안정적이고 개별 조절 가능한 온도, 일부 방은 바닥 난방, 일부는 라디에이터 난방, 또 어떤 방은 혹한기에 바닥 난방만으로 부족할 수 있어 바닥 난방+라디에이터 조합을 원했음
    돈을 주면 누군가 제어 시스템을 설정해줄 수 있을 거라 생각했음. 간단한 일이어야 하지 않나?
    완전히 틀렸음. “전문가”들이 추천한 구성을 몇 시간 이해해본 뒤, 낭비가 생기거나 불편해지는 경계 사례를 찾아냈음. 불필요하고 피할 수 없는 온도 오버슈트나 언더슈트 같은 것들임. Honeywell, Tado, Siemens 등과 여러 차례 논의했지만 모두 큰 결함이 있었음
    이 때문에 리노베이션이 좀 멈췄지만 배관은 준비되어 있었고, 최소한 배관과 펌프가 작동하는지 보고 싶었음. 그래서 펌프와 밸브를 Zigbee 제어 스마트 플러그에 연결해 켜지는지 확인했음. 잘 됐고, 그때 생각이 이어졌음
    지금은 집 곳곳에 20달러짜리 Zigbee 온도 센서를 뿌려두고, 30달러짜리 스마트 플러그와 릴레이가 밸브, 펌프, 보일러를 구동하며, Home Assistant가 전체를 제어함. 모든 게 완벽하게 작동하고, 기성 시스템으로는 불가능한 기능도 구현했음. 예를 들어 바닥 난방과 라디에이터가 함께 있는 방에서는 목표 온도와 차이가 클 때 두 난방을 모두 돌려 빠르게 데우고, 목표에 가까워지면 라디에이터를 꺼서 바닥 난방이 주가 되게 함. 더 쾌적하고 라디에이터보다 에너지 효율도 좋음. 라디에이터 방은 목표 대비 ±0.4°C, 바닥 난방 방은 ±0.1°C 안에 들어옴

    • 자동·원격 제어 난방 시스템 세계와 초인종 세계는 사실상 거대한 사기판 같음. 과거에도 사기성 있던 영역을 업데이트한 것에 가깝기 때문임. Tado 장치에 큰돈을 냈을 때 울 뻔했는데, 멍청한 bTicino 장치조차 수백 유로였고 사실 센서와 작은 LCD, 지옥에서 설계한 메뉴 시스템일 뿐임. IP 기반 초인종도 똑같음. Doorbird는 사실 웹캠에 괜찮은 금속 케이스와 형편없는 소프트웨어를 얹은 것인데 수백 유로이고, 광케이블을 쓰는 아날로그 시스템도 거의 같거나 더 비싼 가격으로 경쟁함
    • 기성품 시스템은 효율만을 위해 최적화된 게 아님. 설치자가 반나절 교육만 받고 몇 번의 곱셈과 덧셈으로, 지정된 장비 조건에서 최적에 어느 정도 근접한 허용 가능한 결과가 나오도록 매개변수를 설정할 수 있게 만들어짐. 다음 사람이 이해할 수 있어야 하기도 함
      그래서 단순 모델이 놓치는 것들을 감안해 거의 항상 약간 과대 설계되고 비효율적임
      난방만 그런 게 아니라 공학 대부분이 이렇고, 완전히 최적화된 물건은 꽤 드묾
    • 단열 투자수익 계산은 틀렸다고 장담함. 아마 연료비나 전기요금을 크게 과소평가했을 가능성이 큼
      “HVAC/난방 업계 전체가 멍청해서 이런 걸 제대로 못 한다”고 생각하기보다, 자신의 가정이나 기준이 틀렸을 수 있다고 돌아보는 게 나음
      예를 들어 현대식 HVAC나 난방 시스템에서 언더슈트·오버슈트는 낭비나 불편을 일으키지 않음. 1~2°F 오버슈트가 난방 공간이 설정점에 완벽히 맞춰졌을 때보다 눈에 띄게 더 많은 열을 잃는다는 뜻은 아님. 즉시 반응하는 시스템도 원하지 않을 것임. 택배를 받으려고 문을 열고 서명까지 한 뒤 닫으면 방 안 공기가 꽤 차가워짐
      이때 난방이 켜져야 할까?
      당신 집에서는 켜질 것 같지만, 정답은 아니오임. 공기는 방 온도였던 모든 물체에서 빠르게 다시 데워지기 때문임. 표면적만 해도 수천 제곱피트가 넘음
    • 일반 온도조절기에서는 온도 히스테리시스가 피할 수 없지만, PID 제어기로 줄일 수 있음. 대부분의 상업용 건물 자동화 시스템은 PID 제어기를 광범위하게 사용함
      Honeywell, JCI, Siemens, Trane, Carrier 같은 주거용 선택지는 범용 적용에 더 초점을 맞추는 듯하고, 상업용 BAS 시스템은 범용 센서와 컨트롤러를 쓰더라도 특정 건물에 맞춘 맞춤 설계에 가까움. 참고로 앞서 언급한 다섯 회사 모두와 건물 자동화 프로젝트를 해봤음
    • 미래 구매자가 운전하기에는 악몽 같음
      어떤 사람들은 기계공학자가 보일러 구성을 설계한 집을 운 나쁘게 사기도 하는데, 보일러실에 Titanic 엔진을 조작할 것처럼 밸브와 압력계가 잔뜩 달려 있음
      요즘은 이 분야의 새로운 죄인이 프로그래머인 듯함