메뉴 전체보기

회원메뉴

히트 센티넬 — 나만의 열지수 수호자 > 게시판

본문 바로가기

쇼핑몰 검색

NO. 3065
제목 : 히트 센티넬 — 나만의 열지수 수호자
2026-08-24 10:30

소개: 히트 센티넬 — 나만의 열지수 수호자


더위는 우리가 직면한 가장 은밀한 위험 중 하나입니다. 홍수나 화재처럼 예고 없이 닥치는 것이 아닙니다. 무언가 잘못되었다는 것을 알려주는 갑작스러운 사건도 없습니다. 대신 더위는 서서히, 한 번에 1도씩, 시간이 지날수록 점차 쌓여가다가, 처음에는 아주 쾌적해 보였던 방조차 머물기에는 위험한 곳이 되어버릴 수 있습니다. 그리고 종종, 이러한 변화에 가장 취약한 사람들이야말로 스스로 그 변화를 알아차리기 가장 어려운 경우가 많습니다.

혼자 사는 연로한 부모님. 아기방에서 잠든 아기. 무더운 오후, 집에 홀로 남겨진 반려동물.

일반적인 온도계를 사용하면 방의 온도가 35°C입니다. 하지만 온도만으로는 모든 상황을 파악할 수 없습니다. 습도 때문에 같은 온도라도 훨씬 더 덥게 느껴질 수 있으며, 장시간 노출될 경우 불편한 환경이 심각한 건강 위험으로 이어질 수 있습니다.

우리는 그 차이를 인식할 수 있는 무언가를 만들고 싶었습니다.

그 아이디어는 Heat Sentinel이 되었습니다. 이 시스템은 실내의 열을 모니터링하고 조기에 경고하도록 설계되어, 환경을 지속적으로 감시하다가 더위가 위험한 수준에 이르기 시작하면 누군가에게 알림을 보냅니다.

단순히 “방 안은 얼마나 덥나요?”라고 묻는 대신, Heat Sentinel은 더 큰 그림을 살펴봅니다. 즉, 실제로 얼마나 덥게 느껴지는지, 그것이 어느 정도의 위험 수준을 나타내는지, 그리고 방이 그 상태에 얼마나 오래 머물렀는지를 확인합니다.

잠시 기온이 급등하는 것과 몇 시간 동안 지속적인 더위에 노출되는 것은 같은 것이 아니기 때문입니다.

Heat Sentinel은 바로 이러한 개념을 바탕으로 개발되었습니다. 이 제품은 단순히 환경을 측정하는 데 그치지 않고, 시간이 지남에 따라 조건이 어떻게 변화하는지 추적하여 단순한 온도 측정값을 실제로 실내에서 어떤 일이 일어나고 있는지 보여주는 더 명확한 그림으로 바꿔 줍니다.

그리고 무엇보다도, 누군가가 계속해서 온도계를 확인하거나 대시보드를 열어 둘 필요가 없습니다. 상황이 위험해지면 Heat Sentinel이 경고를 직접 전달합니다. 우리가 해소하고 싶었던 격차는 바로 이것입니다. 즉, 온도를 아는 것위험을 이해하는 것사이의 격차입니다.




STEP 1. 준비물


준비물


구성 요소

  1. Waveshare ESP32-S3 Zero
  2. Waveshare BME280 센서
  3. 리포 배터리 400 mAh
  4. 배터리 충전기 (설계)

도구

  1. 납땜 인두
  2. Bambu Lab P2S
  3. 검정색 PLA 필라멘트
  4. 슈퍼 글루




STEP 2. 작동 원리


시스템의 한쪽에는 작은 Waveshare ESP32-S3-ZeroWaveshare BME280 센서와 연결되어 있습니다. 이 센서는 온도와 습도를 측정하고 Wi-Fi를 통해 해당 정보를 Java 26 백엔드로 전송합니다. 그러면 원시 측정값이 훨씬 더 의미 있는 정보로 변환됩니다.

백엔드는 Heat IndexNOAA regression 을 사용해 계산합니다. 이 회귀 분석은 온도와 습도를 모두 반영하여 환경이 실제로 얼마나 덥게 느껴지는지를 추정합니다. 그런 다음 결과를 여러 위험 수준으로 분류하므로, 시스템은 방이 단순히 따뜻한지뿐 아니라 환경 조건이 안전하지 않은 수준으로 악화되고 있는지도 파악할 수 있습니다.

기온이 잠시 급등하는 것과 몇 시간 동안 계속되는 더위 속에 머무는 것은 같지 않습니다. 따라서 Heat Sentinel은 하루 동안 방이 각 위험 구간에 머문 시간을 추적하여 환경과 그 변화 양상을 훨씬 더 명확하게 보여 줍니다.

이 모든 정보는 실시간 웹 대시보드에 모이며, 현재 온도, 습도, Heat Index, 위험 수준 및 이력을 실시간으로 확인할 수 있습니다. 하지만 Heat Sentinel이 누군가가 계속 화면을 지켜봐야 하는 시스템이 되기를 원한 것은 아닙니다.

상태가 위험 범위에 들어가면 시스템은 즉시 Telegram notification 을 해당 공간의 담당자에게 보냅니다. 담당자가 직접 확인할 때까지 기다릴 필요가 없습니다. 시스템이 경고를 담당자에게 전달하기 때문입니다.

전체 과정은 놀라울 만큼 간단합니다: BME280 → ESP32-S3 → Java 26 → Heat Index → Risk Analysis → Dashboard → Telegram Alert

또한 이 프로젝트의 소프트웨어 측면 자체도 하나의 엔지니어링 실습이 되기를 원했습니다.

백엔드는 Java 26을 기반으로 직접 구축했으며, Spring, Maven 또는 여러 외부 프레임워크를 사용하지 않습니다. sealed interface, pattern matching, exhaustive switch, record, virtual thread와 같은 최신 Java 기능을 활용하면 센서 API, 웹 대시보드, 실시간 WebSocket 계층 및 알림 시스템을 하나의 독립적인 애플리케이션으로 구축할 수 있습니다.

그 결과, 이해할 수 있을 만큼 작고, 배포하기에 충분히 간단하며, 실제 환경을 지속적으로 모니터링할 만큼 강력한 시스템이 완성되었습니다.




STEP 3. 부품 3D 프린팅


부품 3D 프린팅


부품 3D 프린팅


인클로저가 귀엽고 단순하며 미니멀하기를 원했습니다. 프로젝트의 특성에 어울리는 깔끔한 형태를 갖추도록 했습니다. 이를 처음부터 ThinkerCAD에서 설계했으며, 모든 부품을 넣을 수 있는 충분한 공간을 확보하면서도 인클로저를 컴팩트하게 유지했습니다.

CAD 모델을 최종 확정한 후, 검은색 PLA 필라멘트를 저희 Bambu Lab P2S 3D 프린터로 사용해 인클로저를 3D 프린팅했습니다. 그 결과, 전자 부품을 보호하면서도 Heat Sentinel에 우리가 목표로 했던 단순하고 세련된 외관을 더한 깔끔하고 컴팩트한 인클로저가 완성되었습니다.




STEP 4. 배터리 충전기 설계


배터리 충전기 설계


배터리 충전기 설계


배터리 충전기 설계


Heat Sentinel을 콤팩트하게 유지하기 위해, 우리는 별도의 기성 충전 모듈을 사용하는 대신 자체 배터리 충전기를 설계하기로 결정했습니다.

이 충전기는 EasyEDA에서 처음부터 설계했으며, MCP73831 리튬 이온 충전 컨트롤러를 사용했습니다. 또한 충전 상태 LED와 필요한 배터리 연결부 및 지원 부품도 포함했습니다.

회로를 작고 깔끔하며 안정적으로 유지하면서 Heat Sentinel 인클로저에 직접 쉽게 통합할 수 있도록 하는 데 중점을 두었습니다. 최종 회로도는 이 프로젝트를 위해 특별히 설계된 전용 충전 솔루션을 제공합니다.




STEP 5. PCB 주문하기


PCB 주문하기


PCB 주문하기


디자인을 확정한 후, 저희는 충전기 PCB를 NextPCB에 제조 및 조립을 맡기기 위해 보냈습니다.

Heat Sentinel을 지원해 준 NextPCB에 큰 박수를 보냅니다. PCB 제조 및 조립 품질은 훌륭했고, 전반적인 마감도 정말 인상적이었습니다. 특히 가격대를 고려하면 더욱 그렇습니다.

직접 하드웨어를 제작하고 계신다면, 지금이 NextPCB를 사용해 보기에 아주 좋은 시기입니다. 현재 NextPCB의 턴키 PCBA 서비스는 조건을 충족하는 1~10개 조립 주문에 최대 200달러 할인을 제공하므로, 훨씬 저렴한 비용으로 시제품을 조립할 수 있습니다.




STEP 6. 조립


조립


조립


조립


구성 요소를 하나씩 케이스 안에 설치하고, 배선을 깔끔하게 정리하며 각 부품이 지정된 위치에 올바르게 자리 잡았는지 확인하십시오.

특히 USB-C 포트에 주의를 기울이십시오. 케이스의 USB-C 절개부를 보드의 USB-C 커넥터와 정확히 맞춰 커넥터에 외부에서 완전히 접근할 수 있도록 하십시오.




STEP 7. 배선


배선


케이스 조립이 완료되었으므로 다음 단계는 전자 부품을 연결하는 것입니다. 위의 배선도를 따라 BME280Waveshare ESP32-S3-Zero에 연결하고, 전원 및 I²C 연결이 올바르게 맞물리도록 하십시오. 모든 것이 케이스 내부에 깔끔하게 들어가도록 전선을 가능한 한 짧고 정돈되게 유지하십시오. 전원을 공급하기 전에 3.3V, GND, SDA 및 SCL을 다시 확인하십시오.

센서 배선이 완료되면 도면에 표시된 대로 배터리와 충전 회로를 연결하십시오. 전원을 공급하기 전에 잠시 시간을 내어 모든 연결을 확인하십시오. 배터리 연결의 극성을 항상 주의 깊게 확인하십시오. 배터리를 반대로 연결하면 전자 부품이 손상될 수 있습니다.




STEP 8. 최종 조립


이 인클로저는 스냅핏 방식으로 설계되어 접착제나 별도의 부속품이 필요하지 않습니다. 케이스의 두 부분을 맞춘 다음, 단단히 고정될 때까지 서로 눌러주기만 하면 됩니다. 케이스를 닫기 전에 USB-C 포트와 센서 구멍이 제대로 정렬되었는지 확인하십시오.




STEP 9. Java 26 설치


Java 26 설치


Java 26 설치


Heat Sentinel의 백엔드는 Java 26에서 실행되므로, 첫 번째 단계는 서버를 실행할 컴퓨터에 Java Development Kit(JDK)를 설치하는 것입니다.

먼저 브라우저를 열고 Oracle Java를 방문하세요. JDK 26 을 원하는 운영 체제에 맞게 다운로드하세요.

시스템에 맞는 설치 프로그램을 선택하세요:

  1. Windows: x64 설치 프로그램(.exe)
  2. macOS: 설치 프로그램 패키지(.dmg)
  3. Linux: 사용 중인 배포판에 적합한 패키지(예: .deb, .rpm 또는 압축 아카이브)를 선택하세요.

다운로드가 완료되면 설치 프로그램을 실행하고 기본 설치 옵션을 유지하세요 . 변경할 특별한 이유가 없다면 설정 마법사의 안내에 따라 설치가 완료될 때까지 진행하세요.

Linux에서는 배포판의 표준 패키지 관리자를 사용하여 다운로드한 JDK를 설치하거나, 선택한 패키지에 대한 Oracle의 설치 지침을 따르세요. 지금은 이것으로 충분합니다. Java 26 이 설치되면 컴퓨터에서 Heat Sentinel 백엔드를 실행할 준비가 됩니다.




STEP 10. Java 설치 확인


Heat Sentinel 백엔드로 넘어가기 전에 Java 26이 올바르게 설치되어 명령줄에서 사용할 수 있는지 확인해 봅시다.

컴퓨터에서 새 터미널 창을 엽니다:

  1. Windows: 명령 프롬프트 또는 PowerShell
  2. macOS / Linux: 터미널

다음 명령을 실행합니다:

java -version
javac -version

두 명령 모두 26으로 시작하는 버전을 반환해야 하며, 이는 Java 런타임과 컴파일러를 사용할 수 있음을 확인해 줍니다.

not recognized”, “command not found” 또는 이와 유사한 메시지가 표시되면 먼저 터미널을 완전히 닫고 새 터미널을 엽니다. 시스템이 새 Java 설치를 인식하도록 하려면 새 터미널 세션을 시작하는 것만으로 충분한 경우가 있습니다.

그래도 명령을 인식하지 못한다면 JDK가 시스템의 PATH에 올바르게 추가되지 않았을 수 있습니다. 운영 체제에 맞는 설치 방법을 확인하고 JDK의 bin 디렉터리가 PATH에 포함되어 있는지 확인합니다.




STEP 11. 프로젝트 폴더 설정하기


Java는 소스 파일을 찾을 때 src/heatguardian 경로를 사용하므로 폴더 구조가 중요합니다. 다음 사항을 확인하세요. src와 heatguardian은 서로 중첩된 별개의 두 폴더이며, 두 이름이 모두 포함된 하나의 폴더가 아닙니다.

프로젝트는 다음과 같은 구조여야 합니다:

heat-index-guardian/
├── heat_index_guardian_dashboard.html
├── firmware/
│ └── HeatSentinel.ino
└── src/
└── heatguardian/
├── Zone.java
├── Thresholds.java
├── SensorReading.java
├── Settings.java
├── HeatIndexEngine.java
├── ExposureTracker.java
├── Json.java
├── TelegramNotifier.java
├── WsHub.java
└── HeatIndexGuardianServer.java

프로젝트를 보관하는 위치에 heat-index-guardian 이라는 폴더를 만드세요. 그 안에 src를 만들고, 다시 src 안에 heatguardian을 만드세요. 또한 프로젝트 루트에 별도의 firmware 폴더도 만드세요.

이제 프로젝트 파일을 각각의 위치에 배치하세요:

  1. 모든 10개의 .java 파일을 src/heatguardian/ 안에 넣으세요.
  2. HeatSentinel.ino는 firmware/ 안에 넣으세요.
  3. heat_index_guardian_dashboard.html은 heat-index-guardian/ 바로 안에 두세요.




STEP 12. Java 백엔드 컴파일하기


컴파일 은 단순히 .java 소스 파일을 Java 런타임에서 실행할 수 있는 바이트코드로 변환하는 작업을 의미합니다. Java 소스 코드를 변경할 때마다 이 작업을 반복해야 합니다. 새 터미널을 열고 다음 heat-index-guardian 프로젝트 폴더로 이동하세요.

Windows의 경우:

cd Documents\heat-index-guardian

macOS 또는 Linux의 경우:

cd Documents/heat-index-guardian

프로젝트 폴더 안에 들어간 후 다음 명령을 실행하세요:

javac -d out src/heatguardian/*.java

명령이 아무것도 출력하지 않은 채 완료되면 잘 진행된 것입니다. javac는 컴파일이 성공하면 일반적으로 아무 메시지도 출력하지 않습니다.

이제 새로운 out 폴더가 프로젝트 안에 생성된 것을 확인할 수 있습니다. 이 폴더에는 Heat Sentinel 백엔드를 실행하는 데 사용할 컴파일된 Java 클래스가 들어 있습니다.

오류가 표시되어도 걱정하지 마세요. 이 단계에서 가장 흔한 원인은 소스 파일이 없거나 잘못된 위치에 있는 것입니다. 다음 위치에 .java 파일 10개가 모두 있는지 확인하세요:

src/heatguardian/

또한 다음 heat-index-guardian 프로젝트 폴더에서 명령을 실행하고 있는지도 확인하세요.




STEP 13. 서버 실행하기


아직도 heat-index-guardian 폴더에 있으며 이전 단계에서 사용한 동일한 터미널 창을 사용하고 있는지 확인하세요. 다음 명령을 실행합니다:

java -cp out heatguardian.HeatIndexGuardianServer 8080 heat_index_guardian_dashboard.html

모든 설정이 올바르게 되어 있다면 서버가 시작되고 다음과 비슷한 짧은 시작 메시지가 표시됩니다:

Heat Sentinel — Your Personal Heat Index Guardian
Dashboard: http://localhost:8080/
WebSocket: ws://localhost:8080/ws
Readings: POST http://localhost:8080/api/reading

다음 세 주소는 서버가 무엇을 제공하는지 알려 줍니다:

  1. 대시보드 — Heat Sentinel을 모니터링하기 위한 웹 인터페이스입니다.
  2. WebSocket — 대시보드에 업데이트를 전송하는 데 사용되는 실시간 연결입니다.
  3. 읽기 API — 다음 장치에서 온도와 습도 데이터를 수신할 엔드포인트입니다: Waveshare ESP32-S3-Zero.
서버 계속 실행하기

Heat Sentinel을 사용하는 동안 이 터미널 창을 열어 두세요. 이 터미널에서는 현재 백엔드가 실행 중이므로, 터미널 창을 닫으면 서버가 중지됩니다.

테스트를 마쳤다면 터미널 내부를 클릭한 다음 다음 키를 누르세요: Ctrl+C

이렇게 하면 서버가 정상적으로 중지됩니다. 백엔드가 실행 중인 상태에서 이제 Heat Sentinel 대시보드를 열고, 센서 하드웨어를 연결하기 전에 웹 인터페이스가 제대로 작동하는지 확인할 수 있습니다.




STEP 14. 대시보드 확인


대시보드 확인


하드웨어를 연결하기 전에, Heat Sentinel 백엔드와 대시보드가 제대로 통신하고 있는지 확인해 봅시다.

서버가 여전히 실행 중인 상태에서 최신 웹 브라우저를 열고 다음 주소를 방문하세요:

http://localhost:8080/

이제 열 위험 지수, 기온, 습도 및 기압 측정값, 추세 차트, 노출계 등이 포함된 전체 히트 센티넬 대시보드가 표시되어야 합니다.

맨 위에는 ‘데모 데이터’ 표시가 보일 것입니다. 이는 예상된 현상입니다. 아직 Waveshare ESP32-S3-Zero가 연결되지 않았으므로 대시보드에서는 시뮬레이션된 측정값을 사용하므로 별도의 하드웨어 없이도 인터페이스를 확인할 수 있습니다.




STEP 15. IDE 설정하기


Heat Sentinel은 Waveshare ESP32-S3-Zero 를 사용하여 BME280의 데이터를 읽고 Wi-Fi를 통해 Java 백엔드로 환경 데이터를 전송합니다.

이 섹션을 진행하는 동안 Heat Sentinel 서버를 백그라운드에서 계속 실행해 두세요. 펌웨어 환경이 준비되면 하드웨어를 서버에 연결합니다.

Arduino IDE 설치

먼저 다음에서 최신 Arduino IDE를 다운로드하세요: Arduino IDE. 사용 중인 운영 체제에 맞는 설치 프로그램을 선택하여 다운로드한 후 기본 옵션으로 설치를 완료하세요. 설치가 끝나면 Arduino IDE를 실행하세요.

ESP32 보드 지원 추가

Arduino IDE에는 기본적으로 ESP32 지원이 포함되어 있지 않으므로 Espressif의 보드 패키지를 추가해야 합니다.

다음 경로에서 Preferences 를 여세요:

  1. Windows/Linux: File → Preferences
  2. macOS: Arduino IDE → Settings

Additional Boards Manager URLs ’을 찾아 다음 URL을 추가하세요:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

OK’를 클릭한 다음 다음을 엽니다: Tools → Board → Boards Manager

esp32’를 검색하여 esp32 by Espressif Systems을 찾아 Install을 클릭하세요. 이 패키지에는 Waveshare ESP32-S3-Zero용 펌웨어를 빌드하는 데 필요한 컴파일러와 도구가 포함되어 있습니다. 설치에는 인터넷 연결 속도에 따라 몇 분이 걸릴 수 있습니다.




STEP 16. 스케치 구성하기


먼저 공식 THE SPANNER GitHub 저장소에서 Heat Sentinel의 전체 소스 코드와 프로젝트 파일을 다운로드하세요. 저장소를 다운로드하거나 클론한 다음, firmware/HeatSentinel.ino 파일을 Arduino IDE에서 여세요

. 스케치 상단 부근에 설정 섹션이 있습니다. 다음 값을 본인의 네트워크 정보로 업데이트하세요:

WIFI_SSID
WIFI_PASSWORD
SERVER_HOST

WIFI_SSID와 WIFI_PASSWORD를 ESP32가 사용할 Wi-Fi 네트워크의 정확한 이름과 비밀번호로 설정하세요. Wi-Fi 인증 정보는 대소문자를 구분한다는 점을 기억하세요.

SERVER_HOST에는 Heat Sentinel Java 백엔드를 실행 중인 컴퓨터의 로컬 IP 주소를 입력하세요.

여기에는 localhost를 입력하지 마세요. ESP32의 관점에서 localhost는 사용자의 컴퓨터가 아니라 ESP32 자체를 의미합니다.




STEP 17. IP 주소 찾기


Waveshare ESP32-S3-Zero와 Java 서버를 실행하는 컴퓨터는 동일한 로컬 네트워크에 연결되어 있어야 합니다. Windows에서는 명령 프롬프트를 열고 다음 명령을 실행합니다:

ipconfig

사용 중인 네트워크 어댑터 아래에 표시된 IPv4 주소를 찾으세요.

macOS에서는 시스템 설정 → 네트워크 → Wi-Fi → 세부 정보를 여세요. 터미널에서 ifconfig 명령을 실행하여 활성 네트워크 인터페이스를 확인할 수도 있습니다.

Linux에서는 다음 명령을 실행하세요:

hostname -I

또는:

ip addr

일반적으로 다음과 같은 형식의 주소를 볼 수 있습니다:

192.168.1.42

이 주소를 SERVER_HOST로 사용하십시오. 센서를 테스트할 때는 이 컴퓨터에서 Java 백엔드가 실행 중인지 확인하십시오. 또한 컴퓨터와 ESP32가 동일한 네트워크에 연결되어 있는지 확인하십시오.




STEP 18. 펌웨어 업로드


펌웨어 업로드


펌웨어 업로드


펌웨어 업로드


펌웨어를 컴파일하기 전에 필요한 Arduino 라이브러리가 설치되어 있는지 확인하십시오. Arduino IDE에서 다음을 여십시오: 스케치 → 라이브러리 포함 → 라이브러리 관리 Adafruit BME280을 검색하여 Adafruit BME280 Library를 설치하십시오.

IDE에서 종속 라이브러리를 설치하라는 메시지가 표시되면 수락하십시오. Heat Sentinel에는 다음 라이브러리도 필요합니다:

  1. Adafruit Unified Sensor
  2. Adafruit BusIO

마지막으로 Adafruit NeoPixel 을 검색하여 설치하십시오. 이 라이브러리는 Waveshare ESP32-S3-Zero의 내장 상태 LED를 제어합니다. 이 라이브러리들을 설치하면 펌웨어를 컴파일하는 데 필요한 모든 것이 갖춰집니다.

보드 선택

USB-C 데이터 케이블을 사용하여 Waveshare ESP32-S3-Zero를 컴퓨터에 연결하십시오. Arduino IDE에서 다음을 여십시오: 도구 → 보드 → esp32 에서 다음을 선택하십시오: ESP32S3 Dev Module

다음으로 기본 USB 직렬 인터페이스를 활성화하십시오: 도구 → 부팅 시 USB CDC → Enabled 이렇게 하면 보드의 기본 USB 연결을 시리얼 모니터에서 사용할 수 있습니다. 그런 다음 다음을 여십시오: 도구 → 포트 에서 연결된 Waveshare ESP32-S3-Zero에 해당하는 포트를 선택하십시오.

Windows에서는 COM3과 같은 형태로 표시될 수 있습니다. macOS 또는 Linux에서는 일반적으로 /dev/... 장치로 표시됩니다.

Arduino IDE에서 Upload 버튼을 클릭하십시오. IDE는 먼저 스케치를 컴파일한 다음 Waveshare ESP32-S3-Zero로 펌웨어를 전송합니다. 그러면 보드가 다시 시작되고 Heat Sentinel 펌웨어 실행을 시작합니다.

업로드에 실패하는 경우

Failed to connect”가 표시되면 간단한 점검부터 시작하십시오. 충전만 지원하는 케이블이 아니라 데이터를 지원하는 USB-C 케이블을 사용하고 있는지 확인하십시오. 그런 다음 ESP32S3 Dev Module 이 선택되어 있고 도구 → 포트에서 올바른 포트가 선택되어 있는지 확인하십시오.

그래도 보드가 연결되지 않으면 업로드를 시작하는 동안 Waveshare ESP32-S3-Zero의 BOOT 버튼을 누르고 있으십시오. IDE에 “Connecting…”이 표시되기 시작하면 버튼을 놓으십시오.




STEP 19. 센서 데이터 확인


펌웨어 업로드가 완료되었으므로, 다음 단계는 Waveshare ESP32-S3-Zero 가 BME280을 성공적으로 읽고 실제 측정값을 Heat Sentinel 백엔드로 전송하는지 확인하는 것입니다.

Arduino IDE를 열고 다음 경로로 이동합니다: Tools → Serial Monitor로 이동한 다음, 전송 속도를 115200으로 설정합니다.

몇 초 후 보드가 Wi-Fi 네트워크에 연결됩니다. 연결되면 센서 측정값을 Java 백엔드로 전송하기 시작합니다. 다음과 유사한 출력이 표시되어야 합니다:

POST {"temp":29.4,…} -> 200

정확한 값은 주변 환경에 따라 달라집니다. 중요한 부분은 200 응답이며, 이는 서버가 측정값을 성공적으로 수락했음을 확인해 줍니다. Heat Sentinel은 약 20초마다 새 측정값을 전송합니다.

내장된 RGB LED는 빠르게 상태를 확인할 수 있는 표시기도 제공합니다:

  1. 파란색 — 깜박임: Wi-Fi에 연결하는 중
  2. 녹색 — 2회 깜박임: Wi-Fi 연결 완료
  3. 녹색 — 1회 깜박임: 센서 측정값이 성공적으로 전송됨
  4. 황색 — 2회 깜박임: POST 실패 — SERVER_HOST를 확인하고 Java 서버가 실행 중인지 확인
  5. 빨간색 — 계속 켜져 있거나 깜박임: BME280이 감지되지 않았거나 센서 판독에 실패함. 시리얼 모니터를 계속 열어 두지 않고도 LED를 빠른 진단 도구로 사용할 수 있습니다.
대시보드 확인

이제 브라우저에서 Heat Sentinel 대시보드로 돌아갑니다. “Demo data” 표시기는 첫 번째 실제 센서 측정값이 백엔드에 도달하면 “Live” 로 변경되어야 합니다. 이제 표시되는 온도, 습도, 기압, Heat Index 및 기타 값이 BME280 주변 환경의 실제 상태를 반영해야 합니다.

이 시점에서는 전체 데이터 경로가 정상적으로 작동합니다:

BME280
Waveshare ESP32-S3-Zero
Wi-Fi
Java 26 Backend
Heat Index Engine
Live Dashboard

대시보드에 Live 가 표시되고 값이 계속 업데이트된다면, Heat Sentinel의 하드웨어와 소프트웨어가 성공적으로 통신하고 있는 것입니다.




STEP 20. 텔레그램 봇


텔레그램 봇


Heat Sentinel은 모니터링 대상 환경이 Caution, Warning 또는 Danger 조건에 진입하면 텔레그램으로 직접 알림을 보낼 수 있습니다.

중요한 점은 이 기능을 구성하기 위해 펌웨어나 Java 소스 코드를 수정할 필요가 없다는 것입니다. 모든 설정은 Heat Sentinel 대시보드를 통해 입력하며, 서버는 인증 정보를 메모리에 보관해 두었다가 알림을 보내야 할 때 사용합니다.

텔레그램을 열고 @BotFather를 검색하세요. 파란색 인증 체크 표시가 있는 공식 계정을 사용하고 있는지 확인하세요.

대화를 시작하고 다음을 보내세요:

/newbot

BotFather는 표시 이름을 입력하라고 한 다음 고유한 사용자 이름을 입력하라고 합니다. 사용자 이름은 반드시 bot으로 끝나야 합니다. 예를 들면 다음과 같습니다:

HeatSentinelAlertBot

봇이 생성되면 BotFather는 봇 토큰을 제공합니다. 토큰은 다음과 비슷한 형식입니다:

123456789:ABCdefGHIjklmNOPQRSTUVwxyz1234567

이 토큰을 정확히 복사하여 안전하게 비공개로 보관하세요. 비밀번호처럼 취급하세요.




STEP 21. 사용자님의 채팅 ID


사용자님의 채팅 ID


방금 생성한 봇의 사용자 이름을 검색한 다음, 해당 봇과 대화를 시작하세요. 봇에게 다음과 같은 메시지를 보내보세요: 안녕하세요. 봇이 응답할 필요는 없습니다. 메시지를 보내기만 해도 텔레그램이 봇 API를 통해 보고할 수 있는 상호작용이 생성됩니다.

이제 브라우저에서 다음 주소를 열어주세요. 이때 <YOUR_TOKEN>을 실제 봇 토큰으로 대체해 주세요:

https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates

반환된 JSON에서 다음 내용을 찾아보세요:

"chat":{"id":XXXXXXXXX

id로 표시된 번호는 귀하의 채팅 ID.

Telegram에서 다음과 같은 응답이 돌아온다면:

"result":[]

봇에게 메시지를 하나 더 보내고 페이지를 새로 고침하세요.




STEP 22. 인증 정보 추가


인증 정보 추가


인증 정보 추가


Heat Sentinel 대시보드를 열고 설정으로 이동합니다. 봇 토큰을 봇 토큰 에 입력하고, 위에서 얻은 번호를 채팅 ID에 입력한 다음 설정 저장을 선택합니다. 이제 실행 중인 Heat Sentinel 서버에서 해당 인증 정보를 사용할 수 있습니다.




STEP 23. 테스트


모든 구성 요소가 의도한 대로 원활하게 연동되는지 확인하기 위해 전체 시스템에 대해 최종 테스트를 실시했습니다. 먼저 USB-C 전원 공급 장치를 연결하고 충전 회로를 점검했습니다. 배터리가 정상적으로 충전을 시작했고, 충전 상태 표시등은 예상대로 작동했으며, 테스트 내내 시스템은 안정적인 상태를 유지했습니다.

전원이 켜진 후 Heat Sentinel 대시보드를 확인했습니다. Waveshare ESP32-S3-Zero 가 Wi-Fi에 연결되자 대시보드가 Demo data 에서 Live로 전환되었고, BME280의 온도 및 습도 측정값이 지속적으로 업데이트되었습니다.

그런 다음 전체 데이터 경로를 검증했습니다: BME280 → Waveshare ESP32-S3-Zero → Wi-Fi → Java Backend → Dashboard! 모든 것이 원활하게 작동했으며, 실시간 측정값은 실제 환경과 일치했습니다.

마지막으로, 고온 상황을 인위적으로 유발하여 경보 시스템을 테스트했습니다. 몇 초 만에 해당 텔레그램 알림이 성공적으로 도착했습니다. 결과는 우리가 원했던 그대로였습니다: 충전이 정상적으로 이루어졌고, 센서 데이터는 실시간으로 전송되었으며, 대시보드는 실시간으로 업데이트되었고, 경보 시스템은 즉시 반응했습니다.




STEP 24. 사용법


히트 센티넬은 백그라운드에서 조용히 작동하며 지속적인 주의 없이 실내를 살필 수 있도록 설계되었습니다.

모니터링하려는 방에 기기를 놓고 Waveshare ESP32-S3-Zero가 감지를 담당하도록 하세요. BME280은 주변 환경을 지속적으로 측정하고, Java 백엔드는 이러한 측정값을 열지수로 변환하여 시간에 따른 실내 노출을 추적합니다.

대시보드는 현재 상태를 빠르게 확인할 수 있게 해 주며, Telegram 알림은 화면을 계속 지켜보지 않아도 되도록 알려 줍니다. 따라서 다음과 같이 장시간 사람이 지켜보지 않을 수 있는 공간에서 유용합니다. 침실, 아기방, 작업 공간, 반려동물 공간 또는 장시간 사람이 지켜보지 않을 수 있는 방.




STEP 25. 마무리 말


‘히트 센티넬’은 우리가 탐구하고 싶었던 두 가지 아이디어를 하나로 결합한 것입니다: 고온 환경에 진정으로 유용한 무언가를 구축하고, 현대적인 자바를 기반으로 완전한 연결형 시스템의 핵심을 구성하는 것.

엣지 단말기의 Waveshare ESP32-S3-Zero와 BME280부터 Java 26 백엔드, 실시간 대시보드, 노출 추적, 텔레그램 알림에 이르기까지, 모든 구성 요소는 하나의 파이프라인처럼 작동하도록 구축되었습니다: 감지 → 이해 → 대응

우리에게 ‘히트 센티넬’이 흥미로웠던 이유는 바로 그 점 때문이었습니다. 이 제품은 그저 평범한 온도 모니터가 아닙니다. 이는 세심하게 설계된 하드웨어와 소프트웨어가 어떻게 조화를 이루어 더위를 조금 더 쉽게 이해할 수 있게 하고, 동시에 더위를 무시하기 조금 더 어렵게 만드는지 보여주는 작은 사례입니다.


원문: https://www.instructables.com/Heat-Sentinel-Your-Personal-Heat-Index-Guardian/

좋아요 0
게시판

회사명 공방유니언 주소 각 공방 주소 참조
사업자 등록번호 0000 대표 공방유니언 전화 019-60105846 팩스 0000 이메일 gongbangunion@gmail.com
통신판매업신고번호 0000 개인정보관리책임자 공방유니언
Copyright © 2017 공방유니언. All Rights Reserved.