chore: HERV 통합 저장소 재초기화 커밋
손상된 .git 히스토리(missing tree)로 재초기화 후 작업트리 전체 커밋. .claude/ 만 제외(로컬 에이전트 설정). 구 저장소 백업(.git_corrupt_backup/) 포함. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
# EW11 (RS-485 ↔ WiFi) HOMENET 연결 검토
|
||||
|
||||
- 작성일: 2026-05-26
|
||||
- 대상 장비: Elfin EW11A (Hi-Flying) — RS-485 ↔ WiFi 투명 시리얼 브리지
|
||||
- 대상 MCU: Nuvoton Nano100 시리즈 (HERV)
|
||||
- 관련 문서:
|
||||
- `EW11_RS485 TO WIFI/EW11A manual/Elfin-EW1X_User ManualV1.3(20200415).pdf`
|
||||
- `EW11_RS485 TO WIFI/IOTService3.1.0_20220926/`
|
||||
- `doc/HERV_MCU PINMAP & CONNECTOR.txt`
|
||||
|
||||
---
|
||||
|
||||
## 1. 결론
|
||||
|
||||
**하드웨어/펌웨어 모두 가능**. 단, UART1 채널이 PC_Monitoring(디버그)과 HOMENET(CVnet)에 동시에 사용될 수 없는 구조적 트레이드오프가 있음.
|
||||
|
||||
EW11은 **투명 시리얼 브리지(Transparent Serial Bridge)**이므로 UART ↔ TCP/WiFi 변환을 EW11 내부에서 처리한다. MCU 펌웨어 측에서는 EW11의 존재를 알 필요가 없고, 기존 CVnet 프로토콜 코드를 그대로 사용하면 된다.
|
||||
|
||||
---
|
||||
|
||||
## 2. 현재 시스템 UART 채널 구성
|
||||
|
||||
| 채널 | 용도 | 초기화 위치 | Baud |
|
||||
|---|---|---|---|
|
||||
| UART0 | Hood (후드, CN6/CN13) | `program/User/My_system.c:36` | 9600 |
|
||||
| **UART1** | **HOMENET (CVnet) — CN15** | `program/User/My_system.c:50` | 9600 |
|
||||
| SC0 (SCUART) | Roomcon 232 | `program/User/My_system.c:64` | 1200 |
|
||||
| SC1 (SCUART) | Bunbaegi 분배기 | `program/User/My_system.c:73` | 115200 |
|
||||
|
||||
### HOMENET 핀맵 (CN15, RED, HOMENET_485)
|
||||
- TX: PB.5 (E485_TX)
|
||||
- RX: PB.4 (E485_RX)
|
||||
- DIR: PB.6 (E485_DIR)
|
||||
|
||||
> Nano100 시리즈는 **UART0/UART1 2개만 제공**하므로 추가 UART 확보가 불가능하다.
|
||||
|
||||
---
|
||||
|
||||
## 3. 하드웨어 연결 방안
|
||||
|
||||
| 항목 | 기존 HOMENET | EW11 연결 |
|
||||
|---|---|---|
|
||||
| 커넥터 | CN15 (RED), HOMENET_485 | CN15 RS-485 A/B 라인에 EW11 RS-485 단자 병렬 연결 |
|
||||
| MCU 핀 | UART1: PB.4(RX), PB.5(TX), PB.6(DIR) | 변경 없음 |
|
||||
| Baud | 9600 8N1 | EW11도 9600 8N1로 설정 |
|
||||
|
||||
EW11은 자체 RS-485 트랜시버를 가지고 DIR을 자동 제어하므로 MCU의 PB.6 DIR 제어와 충돌하지 않는다(RS-485 멀티드롭 버스 구성).
|
||||
|
||||
```
|
||||
[홈넷 서버/앱] ──(WiFi/TCP)── [EW11] ──(RS-485 A/B)── [CN15] ── [MCU UART1]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 펌웨어 측 필요 작업
|
||||
|
||||
### 4.1 CVnet 프로토콜 복구 (직전 작업 되돌리기)
|
||||
|
||||
직전 작업으로 비활성화한 두 곳을 다시 활성화해야 HOMENET 패킷을 처리할 수 있다.
|
||||
|
||||
- `program/User/main.c:110`
|
||||
```c
|
||||
CVnet_Com_process();
|
||||
```
|
||||
- `program/User/My_Uart.c:1758`
|
||||
```c
|
||||
rx_debug_check(u8InChar);
|
||||
Rx_CVnet_TimeOut = 50;
|
||||
```
|
||||
|
||||
### 4.2 PC_Monitoring과 동시 사용 불가 ⚠️
|
||||
|
||||
UART1은 단 하나의 물리 채널이므로 PC_Monitoring(디버그)과 CVnet(홈넷)이 **동시에 사용 불가**하다. 다음 중 하나를 선택해야 한다.
|
||||
|
||||
| 옵션 | 설명 | 비용 | 권장 |
|
||||
|---|---|---|---|
|
||||
| ① 평소 CVnet만, 디버그 시에만 PC_Monitoring | `#ifdef DEBUG_PC_MODE` 컴파일 스위치로 분리 | 펌웨어만 수정 | **★ 권장** |
|
||||
| ② PC_Monitoring을 UART0(Hood)로 이전 | Hood 통신을 잠시 끊고 디버그 | Hood 제어 일시 중단 | △ |
|
||||
| ③ 다른 시리얼(SC0/SC1) 사용 | 기존 통신 영향 | 다른 통신 끊김 | △ |
|
||||
|
||||
### 4.3 CVnet 타임아웃 검토
|
||||
|
||||
WiFi 경로는 **20 ~ 200 ms의 가변 지연**이 발생한다.
|
||||
|
||||
- MCU 측 `Rx_CVnet_TimeOut = 50` (50 ms): **패킷 수신 중단 감지용**이므로 EW11 bridge엔 직접 영향 없음.
|
||||
- 홈넷 마스터(서버) 측의 응답 타임아웃은 EW11 RTT를 감안해 설정 필요. 너무 짧으면 재전송 빈발.
|
||||
|
||||
---
|
||||
|
||||
## 5. EW11 설정 (PC에서 IOTService 도구로)
|
||||
|
||||
| 항목 | 권장값 |
|
||||
|---|---|
|
||||
| Serial Baudrate | 9600 |
|
||||
| Data / Parity / Stop | 8 / None / 1 |
|
||||
| Flow Control | None |
|
||||
| Protocol | **TCP Server** (홈넷 서버가 클라이언트로 접속) 또는 **TCP Client** (EW11이 서버에 접속) |
|
||||
| Port | 홈넷 게이트웨이와 합의된 포트 |
|
||||
| Buffer length | 8 (CVnet 패킷이 8바이트 고정) — 패킷 단위 전송 보장 |
|
||||
| Heartbeat / KeepAlive | 활성화 (WiFi 연결 유지) |
|
||||
| WiFi 보안 | WPA2-PSK |
|
||||
| Reconnect | 자동 재접속 활성화 |
|
||||
|
||||
IOTService 다운로드: `http://ftp.hi-flying.com:9000/IOTService/`
|
||||
|
||||
---
|
||||
|
||||
## 6. 위험 요소 및 평가
|
||||
|
||||
| 항목 | 평가 |
|
||||
|---|---|
|
||||
| 펌웨어 변경량 | 매우 적음 (CVnet 코드 복구만) |
|
||||
| 하드웨어 비용 | EW11 1개 + 5V 전원 + WiFi AP |
|
||||
| 응답 지연 | WiFi RTT 20~200 ms 추가 — 시나리오 제어용으론 충분 |
|
||||
| 신뢰성 | WiFi 끊김 시 홈넷 단절. EW11 자동 재접속 설정 필수 |
|
||||
| 보안 | EW11 자체 암호화는 제한적. 동일 LAN 내 사용 권장. 외부 노출 시 VPN/방화벽 필요 |
|
||||
| 디버그 병행 | **불가** — PC 디버그 채널을 별도 UART로 이전하거나 컴파일 분리 필요 |
|
||||
| 멀티드롭 충돌 | MCU와 EW11이 같은 RS-485 버스 → 마스터-슬레이브 규칙 준수 시 문제없음 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 권장 진행 순서
|
||||
|
||||
1. **CVnet 코드 복구** — `main.c:110`, `My_Uart.c:1758` 주석 해제
|
||||
2. **PC_Monitoring 조건부 컴파일 분리** — `#ifdef DEBUG_PC_MODE`로 양산 빌드에서 제외
|
||||
3. **EW11 평가보드 1대 확보** 후 단독 테스트
|
||||
- PC ↔ EW11(WiFi) ↔ RS-485 루프백 (송수신 확인)
|
||||
- PC ↔ EW11(WiFi) ↔ RS-485 ↔ MCU 통신 (CVnet 패킷 응답 확인)
|
||||
4. **응답 지연 측정** — 마스터-슬레이브 타임아웃 마진 검증
|
||||
5. **장시간 안정성 시험** — WiFi 끊김/재접속 시나리오 포함
|
||||
|
||||
---
|
||||
|
||||
## 8. 참고
|
||||
|
||||
- EW11A 매뉴얼: `EW11_RS485 TO WIFI/EW11A manual/Elfin-EW1X_User ManualV1.3(20200415).pdf`
|
||||
- 운용 가이드: `EW11_RS485 TO WIFI/EW11A manual/HF2211S_EW1X_PW1X_Wport-W30_Operation Guide(20220525).pdf`
|
||||
- 소프트웨어 기능: `EW11_RS485 TO WIFI/EW11A manual/IOT_Device_Series_Software_Funtion_20250328.pdf`
|
||||
- IOTService 매뉴얼: `EW11_RS485 TO WIFI/IOTService3.1.0_20220926/IOTService_User_Manual_20200708.pdf`
|
||||
- 핀맵: `doc/HERV_MCU PINMAP & CONNECTOR.txt`
|
||||
- HOMENET 프로토콜: `Protocol/힘펠_환기장치프로토콜V3.7_240111.xlsx`
|
||||
- 시나리오 프로토콜: `Protocol/DL 환기 시나리오 제어 프로토콜_20260319-1_노량진모델하우스_2차.xlsx`
|
||||
@@ -0,0 +1,134 @@
|
||||
# EW11 → 인터넷(AWS) 데이터 전송 검토
|
||||
|
||||
- 작성일: 2026-06-03
|
||||
- 목적: ERV 각실제어 데이터(신규 PC 대시보드 0xAA 프로토콜)를 **EW11(RS-485↔WiFi)** 로 인터넷 서버에 전송
|
||||
- 대상 장비: Elfin EW11A (Hi-Flying)
|
||||
- 관련 문서:
|
||||
- `EW11A manual/IOT_Device_Series_Software_Funtion_20250328.pdf`
|
||||
- `TestProgram/PC_ERV_Protocol.md` (전송할 프레임 규격)
|
||||
- `260526_EW11_검토.md` (기존: 로컬 HOMENET 연결 검토)
|
||||
|
||||
---
|
||||
|
||||
## 1. 결론 요약
|
||||
|
||||
**EW11 사용 가능.** 가장 적합한 방식은 **EW11 = TCP Client → AWS 자체 서버(EC2/Lightsail)** 이며, 우리 0xAA 바이너리 프레임이 **투명 전송(Transparent)** 으로 그대로 서버에 도달한다(PC 대시보드의 파서/프로토콜 코드를 서버에서 재사용 가능).
|
||||
|
||||
- **AWS IoT Core 직결은 비권장** — IoT Core는 MQTT 연결 시 **X.509 클라이언트 인증서 기반 mutual TLS**(또는 커스텀 권한부여자)가 필수인데, EW11의 TLS는 매뉴얼상 **"no certificate method"**(클라이언트 인증서 제시 불가)라 직접 연결이 곤란하다.
|
||||
- 표준 IoT 스택이 필요하면 **EC2에 Mosquitto MQTT 브로커**를 띄우고 EW11 MQTT Client(user/password + 서버 TLS)로 붙이는 방식이 차선.
|
||||
|
||||
---
|
||||
|
||||
## 2. EW11 네트워크 기능 (매뉴얼 확인)
|
||||
|
||||
| 기능 | 지원 | 비고 |
|
||||
|---|---|---|
|
||||
| TCP Client / TCP Server | ✅ | Client 모드로 외부 서버 접속 가능 |
|
||||
| UDP Client / Server | ✅ | |
|
||||
| Multiple Socket | ✅ | 최대 5 소켓 동시 |
|
||||
| HTTP (GET/POST) | ✅ | UART 데이터를 HTTP 본문/쿼리로 래핑, 헤더 커스텀 |
|
||||
| WebSocket Client | ✅ | |
|
||||
| **MQTT Client** | ✅ | Version 4(MQTT 3.1.1), Client ID/User/Password, Sub/Pub Topic, QoS |
|
||||
| 암호화 | ✅ | **AES**(CBC, 16자 키), **DES3**(24자), **TLS(인증서 없음)** |
|
||||
| TCP Keepalive / Reconnect | ✅ | 연결 끊김 자동 재접속 |
|
||||
| Register / Heartbeat | ✅ | 접속 시 장치 ID 전송, 주기적 하트비트 |
|
||||
| NTP | ✅ | 시각 동기 |
|
||||
|
||||
> ⚠️ **TLS 제약**: "TLS use no certificate method" — 서버/클라이언트 인증서 검증을 하지 않는 단순 암호화. → AWS IoT Core(mutual TLS 강제) 직결 불가, HTTPS(API Gateway) 서버 인증서 검증도 신뢰 어려움.
|
||||
|
||||
---
|
||||
|
||||
## 3. 전송 토폴로지
|
||||
|
||||
```
|
||||
ERV 메인보드 (RS-485, 0xAA STATUS/ACK 프레임, 115200 8N1)
|
||||
│ A / B
|
||||
┌────────┐
|
||||
│ EW11 │ WiFi
|
||||
└────────┘────────── [현장 공유기] ──── 인터넷 ────┐
|
||||
(TCP Client / MQTT Client, AES 암호화) │
|
||||
▼
|
||||
┌──────────────┐
|
||||
│ AWS 서버 │
|
||||
│ 0xAA 파서 + │
|
||||
│ 저장 + 웹표시 │
|
||||
└──────────────┘
|
||||
```
|
||||
|
||||
- PC 대시보드는 (a) 기존처럼 로컬 시리얼로 직결하거나, (b) 동일 0xAA 프레임을 AWS 서버에서 받아 보는 형태로 확장 가능.
|
||||
- 양방향(제어 CTRL_*)도 같은 TCP 소켓으로 가능(서버→EW11→ERV).
|
||||
|
||||
---
|
||||
|
||||
## 4. AWS 서버 옵션 비교
|
||||
|
||||
| 옵션 | 구성 | 우리 프로토콜 적합성 | 비용(개략) | 평가 |
|
||||
|---|---|---|---|---|
|
||||
| **A. EC2/Lightsail + 경량 TCP 서버** | EW11=TCP Client → 공인IP:Port. 서버가 0xAA 프레임 파싱·저장·웹표시 | ★★★ 바이너리 그대로 투명 전송, PC 파서 재사용 | t4g.nano ~$2~3/월, Lightsail $3.5~5/월 | **권장 1** |
|
||||
| **B. EC2 + Mosquitto(MQTT)** | EW11=MQTT Client(user/pass+TLS) → up/down 토픽 | ★★ 표준 IoT, 장치 다수 확장 유리 | EC2 비용 + 운영 | 권장 2 |
|
||||
| C. AWS IoT Core 직결 | EW11=MQTT Client | ✗ 클라이언트 인증서 필요(EW11 미지원) | 종량제 | **비권장**(브리지 필요) |
|
||||
| D. HTTP→API Gateway+Lambda+DynamoDB | EW11=HTTP POST | △ HTTPS 인증서 이슈 + 바이너리 본문 번거로움 + 주기 폴링형 펌웨어 필요 | 서버리스 종량제 | 부적합 |
|
||||
|
||||
### 권장안 상세 (옵션 A)
|
||||
1. **AWS Lightsail**(가장 운영이 간단) 또는 **EC2 t4g.nano** 1대 + 고정 공인 IP.
|
||||
2. 그 위에 경량 TCP 서버(Node.js/Python) 실행 → 포트 개방.
|
||||
3. EW11을 **TCP Client** 로 설정(서버 공인 IP/포트, AES 암호화, Keepalive/Register 활성).
|
||||
4. 서버는 `PC_ERV_Protocol.md` 와 동일한 파서(STX 0xAA → CMD/LEN/PAYLOAD → CRC16-MODBUS 검증)로 STATUS(0x81) 73B 해석 → DB/파일 적재 → 간단 웹대시보드 또는 API 제공.
|
||||
|
||||
---
|
||||
|
||||
## 5. EW11 설정 포인트
|
||||
|
||||
| 항목 | 권장값 |
|
||||
|---|---|
|
||||
| Serial Baudrate | **115200** (신규 PC 프로토콜 기준. 기존 HOMENET 9600과 다름 주의) |
|
||||
| Data/Parity/Stop | 8 / None / 1 |
|
||||
| Protocol | **TCP Client** (서버 공인 IP/포트) — 또는 MQTT |
|
||||
| Buffer Size | ≥ 최대 프레임(STATUS 78B 이상 여유) |
|
||||
| UART Auto-Frame | Frame Time(gap) 또는 Frame Length로 프레임 경계 정렬 (단, 프로토콜에 LEN 필드 있어 서버 재조립도 가능) |
|
||||
| Security | AES(16자 키) 활성 + 서버 동일 키 복호화 |
|
||||
| Keepalive / Reconnect / Heartbeat | 활성 |
|
||||
| NTP | 활성(타임스탬프 정확도) |
|
||||
|
||||
설정 도구: IOTService (`IOTService3.1.0_20220926/`) 또는 내장 웹페이지.
|
||||
|
||||
---
|
||||
|
||||
## 6. 보안 / 위험 평가
|
||||
|
||||
| 항목 | 평가 / 대책 |
|
||||
|---|---|
|
||||
| EW11 TLS 신뢰성 | "no certificate" → MITM 방어 약함. **AES 암호화 병행** 필수 |
|
||||
| 공인 포트 노출 | EC2 보안그룹 inbound를 **현장 공인 IP로 제한**, 불필요 포트 폐쇄 |
|
||||
| 권장 폐쇄망 | 가능하면 VPN / 4G 라우터 / 사설망 경유 |
|
||||
| WiFi 끊김 | EW11 자동 재접속 + 서버측 연결 상태 모니터링 |
|
||||
| 응답 지연 | WiFi+인터넷 RTT 수십~수백 ms. 모니터링/시나리오 제어엔 충분, 실시간 폐루프 제어엔 부적합 |
|
||||
| 트래픽 | STATUS 78B를 1초 주기 전송 시 ≈ 200MB/월 → 비용 영향 미미 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 권장 진행 순서
|
||||
|
||||
1. AWS **Lightsail nano**(또는 EC2 t4g.nano) 1대 생성 + 고정 IP.
|
||||
2. 경량 TCP 서버 작성(0xAA 파서는 `DashboardProtocol` 로직 이식) → 수신 로그 확인.
|
||||
3. EW11 1대 확보 → IOTService로 TCP Client + AES + 115200 설정.
|
||||
4. **루프백 시험**: PC(0xAA 프레임 송신) → EW11 → 서버 수신 파싱 검증.
|
||||
5. **실연동**: ERV → EW11 → 서버 STATUS 적재 확인.
|
||||
6. 보안그룹/암호화/재접속 안정성 시험 후 운영.
|
||||
|
||||
---
|
||||
|
||||
## 8. 비용 메모 (2026-06 기준, 변동 가능)
|
||||
|
||||
- **EC2 t4g.nano**: us-east-1 약 $2~3/월 (ARM Graviton, 0.5GB RAM). t4g.small은 2026-12-31까지 750h/월 무료 체험.
|
||||
- **신규 AWS 계정**: 12개월 t3.micro 750h/월 무료.
|
||||
- **Lightsail**: 최저 $3.5/월(IPv6, 512MB/2vCPU/20GB/1TB), 공인 IPv4 포함 $5/월. 고정요금이라 가장 단순.
|
||||
- AWS IoT Core: 종량제(연결/메시지/규칙별 과금). 본 케이스에선 비권장.
|
||||
|
||||
---
|
||||
|
||||
## 9. 참고
|
||||
|
||||
- EW11 소프트웨어 기능: `EW11A manual/IOT_Device_Series_Software_Funtion_20250328.pdf` (1.4 Working Mode, 1.5 암호화, 1.17 Register, 1.18 Heartbeat)
|
||||
- AWS IoT Core 클라이언트 인증: https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html
|
||||
- 전송 프레임 규격: `TestProgram/PC_ERV_Protocol.md`
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
IOTService工具下载地址:
|
||||
IOTService tools download address:
|
||||
http://ftp.hi-flying.com:9000/IOTService/
|
||||
Reference in New Issue
Block a user