{"id":22608673,"url":"https://github.com/slicequeue/poc-nodejs-mqtt-influx","last_synced_at":"2026-05-06T22:10:18.581Z","repository":{"id":267056782,"uuid":"900142771","full_name":"slicequeue/poc-nodejs-mqtt-influx","owner":"slicequeue","description":"IoT 디바이스에서 수집한 센서 데이터를 MQTT를 통해 수신하고 InfluxDB에 저장하는 개념 증명(PoC) 프로젝트입니다.","archived":false,"fork":false,"pushed_at":"2025-02-22T02:25:24.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T22:43:40.509Z","etag":null,"topics":["influxdb","iot","mqtt","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slicequeue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-08T01:10:58.000Z","updated_at":"2025-02-22T02:25:27.000Z","dependencies_parsed_at":"2024-12-08T02:23:10.751Z","dependency_job_id":"ee1452f2-5510-49b7-8310-bcb2e6cc94bd","html_url":"https://github.com/slicequeue/poc-nodejs-mqtt-influx","commit_stats":null,"previous_names":["slicequeue/poc-nodejs-mqtt-influx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/slicequeue/poc-nodejs-mqtt-influx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slicequeue%2Fpoc-nodejs-mqtt-influx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slicequeue%2Fpoc-nodejs-mqtt-influx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slicequeue%2Fpoc-nodejs-mqtt-influx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slicequeue%2Fpoc-nodejs-mqtt-influx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slicequeue","download_url":"https://codeload.github.com/slicequeue/poc-nodejs-mqtt-influx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slicequeue%2Fpoc-nodejs-mqtt-influx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32713921,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["influxdb","iot","mqtt","nodejs"],"created_at":"2024-12-08T15:08:39.794Z","updated_at":"2026-05-06T22:10:18.563Z","avatar_url":"https://github.com/slicequeue.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Node.js \u0026 MQTT, InfluxDB - POC\n\n이 프로젝트는 MQTT를 통해 IoT 디바이스에서 센서 데이터를 수신하고, InfluxDB에 저장하는 시스템의 개념 증명(Proof of Concept, POC)을 목적으로 합니다. 데이터 수집 및 저장 과정을 테스트하고 기술적 가능성을 확인하는 데 중점을 둡니다.\n\n| ESP32 센서 데이터 측정 및 송신: https://github.com/slicequeue/poc-esp32-dht11-fc28-mqtt 이 작업을 통해 센서 측정 정보를 브로커에 송신합니다.\n\n---\n\n## 주요 내용\n\n1. **목적**\n   - IoT 디바이스에서 실시간으로 센서 데이터를 MQTT를 통해 수신.\n   - 데이터 구조 검증 및 저장 성능 확인.\n   - InfluxDB를 활용한 타임 시리즈 데이터 저장 가능성 검토.\n\n2. **구성 요소**\n   - **MQTT 브로커**: EMQX와 같은 MQTT 브로커를 사용하여 디바이스와 데이터 교환.\n   - **InfluxDB**: 타임 시리즈 데이터 저장 및 관리.\n   - **Node.js 애플리케이션**: MQTT 메시지를 수신하고 InfluxDB에 저장하는 역할.\n\n---\n\n## 설치 및 실행\n\n1. **프로젝트 준비**\n   ```bash\n   git clone https://github.com/your-username/smart-plant-poc.git\n   cd smart-plant-poc\n   npm install\n   ```\n\n2. **환경 변수 설정**\n   프로젝트 루트에 `.env` 파일을 생성하고 필요한 설정 값을 입력합니다.\n   ```env\n   MQTT_URL=\u003cMQTT_브로커_URL\u003e\n   MQTT_TOPIC=\u003cMQTT_토픽\u003e\n   INFLUX_URL=\u003cINFLUXDB_접속_URL\u003e\n   INFLUX_TOKEN=\u003cINFLUXDB_접속_TOKEN\u003e\n   INFLUX_ORG=\u003cINFLUXDB_접속_ORGANIZATION\u003e\n   INFLUX_BUCKET=\u003cINFLUXDB_접속_BUCKET\u003e\n   ```\n\n3. **애플리케이션 실행**\n   ```bash\n   node app.js\n   ```\n\n---\n\n## 메시지 구조\n\nIoT 디바이스에서 전송하는 JSON 메시지의 예시는 다음과 같습니다:\n```json\n{\n  \"uid\": \"B0:A7:32:DB:61:18\",\n  \"at\": \"2024-12-07T18:17:07+0100\",\n  \"data\": [\n    { \"type\": \"humidity\", \"value\": 35, \"unit\": \"%\" },\n    { \"type\": \"temperature\", \"value\": 25.8, \"unit\": \"C\" },\n    { \"type\": \"soil-moisture\", \"value\": 0, \"unit\": \"%\" }\n  ]\n}\n```\n\n---\n\n## 한계점 및 결과\n\n1. **한계점**\n   - 데이터 중복 처리 및 메시지 유효성 검증 추가 필요.\n   - 대규모 데이터 처리 시 성능 테스트 미흡.\n   - MQTT 브로커와 InfluxDB 간 연결 안정성 확인 부족.\n\n2. **결과**\n   - 실시간 데이터 수신 및 저장에 성공.\n   - InfluxDB의 타임 시리즈 데이터 관리 기능 확인.\n   - Node.js 기반의 데이터 처리 구조 검증.\n![image](https://github.com/user-attachments/assets/9b14ce80-942b-4a97-b5da-67ae4a1dc33d)\n\n---\n\n## 사용 기술\n\n- **MQTT.js**: MQTT 브로커와의 통신.\n- **@influxdata/influxdb-client**: InfluxDB 데이터 쓰기 및 관리.\n- **dotenv**: 환경 변수 관리.\n\n---\n\n## 앞으로의 계획\n\n- 대량의 데이터 테스트 및 확장성 검증.\n- 대시보드 및 모니터링 기능 추가.\n- 데이터 중복 방지 및 에러 처리 강화. \n\n--- \n\n### 주의\n이 코드는 프로토타입(PoC)으로, 운영 환경에서 사용하기 전에 추가적인 검토와 개선이 필요합니다.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslicequeue%2Fpoc-nodejs-mqtt-influx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslicequeue%2Fpoc-nodejs-mqtt-influx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslicequeue%2Fpoc-nodejs-mqtt-influx/lists"}