SensorSpot 앱과 데모 페이지가 보낸 폰 센서 값을 ThingsBoard 대시보드에 띄웁니다. KCFT 테넌트(seihoon61@gmail.com) 기준이며, 이 서버(ThingsBoard 4.3.1.3, 한국어)의 실제 메뉴·위젯·프로파일 이름으로 썼습니다.
서버 준비는 이미 끝나 있고, 지금 데이터가 들어오고 있습니다.
| 디바이스 | Myphone · 프로파일 Smartphone MQTT |
|---|---|
| 규칙 체인 | Smartphone Rule Chain — Filter → Parse Accelerometer → save |
| 확인된 수신 | accelerometer_x/y/z, gyroscope_x/y/z |
SensorSpot 은 정상 동작 중입니다. 규칙 체인의
Parse Accelerometer 가 android.sensor.* 페이로드를 축별로 풀어 저장합니다.
그리고 그 스크립트는 그 밖의 페이로드는 손대지 않고 통과시키므로, 데모 페이지가 보내는
특징량도 그대로 저장됩니다 — 둘을 한 화면에서 볼 수 있습니다.
앱을 켜면 바로 올라옵니다. 그래프는 잘 보이지만 진단으로는 이어지지 않습니다 — 초당 수십 개의 원시 값일 뿐입니다.
| 키 | 뜻 | 단위 |
|---|---|---|
accelerometer_x/y/z | 가속도 3축 | m/s² |
gyroscope_x/y/z | 각속도 3축 | rad/s |
데모 페이지의 📱 스마트폰 센서 탭에서 ThingsBoard 로 전송 시작을 누르면 올라갑니다. 실제 설비도 이렇게 보냅니다.
| 키 | 뜻 | 단위 | 위젯 추천 |
|---|---|---|---|
vib_rms_h | 진동 실효값 — 세기 | 가속도(정규화) | 시계열 차트 · 게이지 |
vib_kurtosis_h | 첨도 — 충격성. 정상은 3 부근 | — | 시계열 차트 |
vib_crest_h | 파고율 — 피크/실효값 | — | 시계열 차트 |
vib_p2p_h | 피크-피크 진폭 | 가속도(정규화) | 카드 |
sensor_fs | 표본율 — 폰 센서는 보통 60 | Hz | 카드 |
sensor_n | 이번 측정의 표본 수 | 개 | 카드 |
sensor_axis | 채널(a 가속도 / g 자이로) | 글자 | 카드 |
왜 원시 3축이 아니라 특징량인가. 서울교통공사 2,756대를 1분마다 재면 원파형은 하루 95 GB, 특징량은 0.9 GB 입니다(실측). 그리고 RMS·첨도라야 이상탐지·부위 판정으로 이어집니다. 원시 3축은 무엇이 들어오는지 눈으로 보는 용도입니다.
이미 있는 PHONE-01 을 써도 되고, 설비에 붙일 것이면 포털에서 새로 만드는 편이 낫습니다.
Myphone 클릭대시보드를 만들기 전에 값이 실제로 도착하는지 봐야 합니다. 여기서 안 보이면 대시보드에서도 안 보입니다.
vib_rms_h 등이 보이고 시각이 갱신되면 성공단위 설정 대화상자를 열지 마세요. ThingsBoard 4.3 의 그 대화상자는 6.8 MB 짜리 코드 묶음(gzip 1.5 MB)을 끌어옵니다. 4G 보통 속도에서 8초가 걸리고, 받은 뒤에도 압축 전 6.7 MB 를 브라우저가 파싱·실행해야 해서 화면이 무거워집니다.
타이핑이 굼뜬 것도 같은 곳입니다 — 단위 입력창에 디바운스가 없어 한 글자마다 단위 목록 전체를 다시 훑습니다. ThingsBoard 자체 코드라 우리가 고칠 수 없습니다.
그래서 단위를 미리 넣은 대시보드 파일을 만들어 뒀습니다. 가져오기 한 번이면 위젯 5개가 단위까지 붙은 채로 올라옵니다.
https://thingsboard.codebridge.ai.kr/landing/phone-dashboard-kcft.json| 위젯 | 보여주는 것 | 출처 | 단위 |
|---|---|---|---|
| 현재 진동 세기 | vib_rms_h 최신값 | 데모 | g |
| 진동 세기 추이 | vib_rms_h 시계열 | 데모 | g |
| 측정 조건 | 표본율 · 표본 수 · 채널 | 데모 | Hz · 개 |
| 가속도 3축 | accelerometer_x/y/z | SensorSpot | m/s² |
| 충격성 | 첨도 · 파고율 | 데모 | — |
엔티티 별칭은 프로파일이 Smartphone MQTT 인 기기 전부를 가리킵니다.
폰을 여러 대 붙여도 그대로 나옵니다.
위젯을 일부러 5개로 줄였습니다. 이 화면이 느린 이유가
렌더 비용이라, 위젯을 늘리면 그만큼 더 느려집니다. 자이로(gyroscope_x/y/z)를
보시려면 가속도 위젯을 복사해 키만 바꾸는 편이 낫습니다.
구조를 익히려면 손으로 만들어 보는 것도 좋습니다. 다만 단위 칸은 건드리지 말고 위젯 제목에 단위를 적는 편이 빠릅니다.
폰 센서 실습 입력 → 추가위젯은 "어느 기기의 값인가"를 별칭으로 가리킵니다. 이 단계를 건너뛰면 위젯이 빈 채로 남습니다.
폰폰 선택vib_rms_h, vib_kurtosis_h, vib_crest_h단위가 다른 값을 한 그래프에 겹치지 마세요. 첨도(3 부근)와 RMS(0.02 부근)를 같이 그리면 한쪽이 바닥에 깔려 안 보입니다. 축이 다르면 차트를 나누는 편이 낫습니다.
폰 → 키 vib_rms_h0, 최댓값은 기준선의 3~4배로 잡습니다ISO 10816 구간(2.3 / 4.5 / 7.1)을 그대로 쓰지 마세요. 그 값은 속도 RMS(mm/s) 기준인데, 폰이 보내는 값은 정규화된 가속도라 단위가 다릅니다. 폰 실습에서는 "정상일 때 얼마였나"를 기준으로 잡는 게 맞습니다.
단위 칸은 비워 두세요. 그 입력창이 느린 이유는 위에 적었습니다.
단위를 꼭 보이려면 위젯 제목에 진동 세기 (g) 처럼 적는 편이 빠릅니다.
sensor_fs, sensor_n, sensor_axis표본율이 60 Hz 근처인지 보세요. 폰 기종·브라우저에 따라 30 Hz 까지 떨어지고, 그러면 같은 시간을 재도 표본이 절반입니다.
MQTT 앱(SensorSpot 등)이 자꾸 끊긴다
ThingsBoard 는 JSON 이 아닌 페이로드를 받으면 무시하지 않고 연결을 끊습니다. 서버 로그에 이렇게 남습니다.
Closing current session due to invalid publish msg [v1/devices/me/telemetry][1]
재현해 확인한 결과입니다.
| 보낸 것 | 결과 |
|---|---|
{"vib_rms_h":1.1} | ✓ 저장됨 |
{"type":"accelerometer","values":[0.1,0.2,9.8]} | ✓ 저장됨 — 규칙 체인이 x/y/z 로 풀어 줍니다 |
0.1,0.2,9.8 (CSV) | ✗ 세션 종료 |
1.23 (숫자만) | ✗ 세션 종료 |
hello (평문) | ✗ 세션 종료 |
| 빈 메시지 | ✗ 세션 종료 |
앱에서 페이로드 형식을 JSON 으로 바꾸고, 토픽은 정확히
v1/devices/me/telemetry 여야 합니다(뒤에 아무것도 붙이지 않습니다).
지금 KCFT 의 SensorSpot 은 이 조건을 만족해 정상 동작 중입니다 —
accelerometer_* 가 계속 들어오고 있습니다.
위젯이 비어 있다 — 대개 엔티티 별칭을 안 만들었거나, 대시보드 시간 범위가 데이터보다 과거입니다. 시간 범위를 최근 15분으로 좁혀 보세요.
값이 한 번만 찍히고 멈춘다 — 데모의 주기를 측정할 때마다로 두면 한 번만 갑니다. 10초마다 자동으로 바꾸면 계속 재서 보냅니다.
진단 결과(이상탐지)까지 보고 싶다면 ThingsBoard 대시보드가 아니라 ORBIT 포털의 센서 상세 화면을 보세요. 기기가 쌓은 이력의 앞 20점을 기준선으로 삼아 8종 알고리즘 교차 검증을 그 자리에서 돌립니다. 규칙 체인을 손댈 필요가 없습니다.