패널 상태와 측정값 확인
전압·온도·습도·패널 내부 온도·도어·부분방전 정보를 수집하고 요약 카드와 상세 표로 표시합니다.
Python BLE 수집·SQLite 저장·PyQt5 모니터링 프로그램에 Vite·React·TypeScript 기반 디자인 개편 화면을 구성한 프로젝트. 상황판·상세정보·기준설정과 상태 시나리오를 제공합니다.
활선안전경보기의 패널 정보를 BLE로 수집하고 Python 데스크톱 화면에서 모니터링하는 프로그램입니다. 수집·저장·통신 상태 처리와 UI 갱신을 분리하고 측정 이력을 그래프와 통계로 확인하도록 구성했습니다. Vite·React·TypeScript 디자인 버전에서는 상황판·상세정보·기준설정과 상태 시나리오를 브라우저 화면으로 구성했습니다.
여러 패널의 측정값과 통신 상태를 확인하고, 이상 상태와 과거 기록을 함께 살펴볼 필요가 있었습니다. 순차 수집 흐름에서는 데이터 처리나 DB 잠금 대기가 다음 스캔을 지연시킬 수 있었습니다.
사용자가 패널별 상태를 요약·상세 화면에서 확인하고 연결 끊김과 이벤트 이력을 살펴보며, 기간별 데이터를 그래프와 CSV로 조회할 수 있어야 합니다.
전압·온도·습도·패널 내부 온도·도어·부분방전 정보를 수집하고 요약 카드와 상세 표로 표시합니다.
BLE 광고 수신은 큐에 데이터를 전달하고 DB 쓰기와 타임아웃 확인은 별도 비동기 태스크로 처리하도록 구성했습니다.
기간별 측정값과 이벤트를 조회하고 그래프·통계·CSV 내보내기로 살펴볼 수 있게 구성했습니다.
활선안전경보기 모니터링 프로그램 개발 프로젝트입니다. BLE 수집, 로컬 DB 저장, 상태 표시와 이력·그래프·통계 기능을 구성했습니다.
측정 이력·패널 상태·이벤트·설정 테이블과 시간·패널별 조회 구조 설계
Python 프로그램과 Vite 디자인 버전의 코드를 함께 검토했습니다. 첨부 화면은 Vite 앱의 데모 데이터이며 실제 BLE 측정 화면이 아닙니다. 원본 Python DB나 장치 스캔은 실행하지 않았습니다.

실제 코드에서 확인한 프로세스와 태스크 구분입니다. 측정 정확도나 안전 효과를 입증하는 성능 측정치는 포함하지 않습니다.
BLE 장치의 광고 데이터를 Bleak 콜백이 수신하고 파싱해 asyncio 큐에 전달합니다. DB 쓰기 태스크가 측정값과 패널 상태를 SQLite에 저장하고 타임아웃 태스크가 수신 중단을 처리합니다. 별도 PyQt5 UI 프로세스가 QTimer로 DB를 조회해 요약·상세 화면을 갱신하며 Matplotlib 그래프와 NumPy 통계, CSV 내보내기를 제공합니다.
React·TypeScript로 상황판 카드, 상세 표, 기준 설정과 상태 시나리오 제어를 구성했습니다. 현재 버전은 메모리의 데모 데이터를 사용하며 실제 BLE·DB 연결과 구분됩니다.
광고 수신 콜백에서 장치 데이터를 파싱하고 큐에 넣습니다. DB 쓰기 태스크와 수신 타임아웃 태스크를 분리해 실행합니다.
PanelData에 측정 이력, PanelStatus에 최근 수신과 연결 상태, event_log에 이벤트를 저장합니다. 설정과 조회 SQL은 데이터 모델과 쿼리 모듈에서 관리합니다.
QTimer로 설정된 주기에 데이터를 읽어 요약·상세 화면을 갱신합니다. 설정, 그래프, 이벤트 로그, 데이터 다운로드 대화상자를 제공합니다.
디자인 개편 화면을 브라우저에서 실행하고 컴포넌트·패널 데이터 타입과 상태를 구성합니다. 기존 Python 프로그램의 측정 흐름을 실제로 연결한 웹 서버 구현이라는 의미는 아닙니다.
장치 데이터 처리와 데스크톱 인터페이스를 Python으로 구성하고 PyQt5 위젯·타이머·백그라운드 다운로드 스레드를 사용했습니다.
BLE 수신은 Bleak으로, 수집·저장·타임아웃 분리는 asyncio로 구성했습니다. UI와 스캐너는 multiprocessing으로 별도 프로세스에서 실행합니다.
로컬 측정값과 이벤트는 SQL 테이블에 저장하고 그래프와 패널별 통계 계산에 Matplotlib·NumPy를 사용합니다.
SQLite의 PanelData·PanelStatus·event_log와 설정 테이블을 사용합니다. 스캐너는 주 DB와 백업 DB 경로에 저장하도록 구성하며 WAL 모드와 잠금 재시도 코드를 사용합니다. 자동 장애 복구를 검증했다는 의미는 아닙니다.
기존 19바이트와 부분방전 정보가 포함된 21바이트 패킷을 처리합니다. struct로 값을 읽고 전압·온도·습도 등 표시용 값으로 변환합니다.
최신값과 기간별 측정 이력을 DB에서 조회합니다. CSV 다운로드는 Qt 스레드로 처리하고 이벤트 이력도 별도로 내보낼 수 있습니다.
장치를 구분하고 허용된 패킷 길이의 데이터를 파싱해 패널 번호·수신 시각·측정값을 큐에 전달합니다.
DB 쓰기 태스크가 큐 데이터를 가져와 측정 이력과 최근 수신 정보를 기록합니다. SQLite 잠금은 재시도 경로로 처리합니다.
타임아웃 태스크가 최근 수신 시각을 확인해 패널의 오프라인 상태와 이벤트 이력을 갱신합니다.
UI 프로세스가 최신 데이터를 조회해 상태를 표시하고 선택한 기간의 그래프·통계·CSV 자료를 제공합니다.
BLE 광고 파싱, 큐 기반 비동기 저장, 패널 통신 상태와 이벤트 기록을 구성했습니다.
요약·상세 화면과 설정, 그래프, 로그·데이터 내보내기 흐름을 구현했습니다.
NumPy로 평균·표준편차와 전압 간 상관관계, 부분방전 발생 데이터를 계산하는 기능을 구성했습니다.
Vite 앱을 실행해 상황판·상세정보·기준설정 화면을 확인하고 과열 시나리오 적용 화면을 캡처했습니다. 화면 데이터는 실측값이 아니라 프로토타입 데모 데이터입니다.
측정값과 통신 상태를 요약·상세 화면에서 조회하고 이력을 그래프·통계로 살펴보는 데스크톱 프로그램을 구현했습니다.
수집 큐와 저장·타임아웃 태스크, 별도 UI 프로세스를 구성했습니다. 현장 적용 여부와 안전 효과, 성능 개선 수치는 추가 확인이 필요합니다.
README와 BLE 스캐너·데이터 모델·UI·통계 모듈을 검토했습니다. 원본 DB의 측정값을 공개하거나 장치 스캔·DB 초기화·모니터링 프로그램 실행을 수행하지 않았습니다. Vite 디자인 버전은 임시 복사본에서 실행해 상황판·상세정보·기준설정과 과열 시나리오 화면을 캡처했습니다. Python 프로그램의 실제 장치 연결과 현장 검증 자료는 포함하지 않았습니다.