#와이파이해킹 #제미나이 #파이썬 #오픈플로터 #가성비끝판왕
“전용 앱만 써야 한다고? 그런 게 어디 있어!”
▲ 가성비 끝판왕 KM110F 션트 모니터
알리익스프레스에서 4만 원 주고 산 KM110F 션트 모니터. 컬러 스크린도 예쁘고 가격도 착한데, 치명적인 단점이 있었습니다. 제조사에서 제공하는 전용 앱 으로만 데이터를 볼 수 있다는 것.
라즈베리 파이(OpenPlotter)에 통합해서 차트 플로터랑 같이 보고 싶은데… 이대로 포기해야 할까요?
그럴 리가요. 저에게는 든든한 항해사 제미나이(Gemini) 가 있습니다.
1. 작전 개시: 신호를 털어라
처음에는 RS485 유선 연결을 고민했지만, KM110F가 WiFi 를 지원한다는 점에 주목했습니다. “앱으로 데이터를 보낸다면, 그 신호를 중간에서 가로챌 수 있지 않을까?”
제미나이에게 물었습니다. “이 장비가 앱이랑 통신하는 패킷을 캡처해서 분석하고 싶어. 도와줘.”
📡 와이파이 신호 분석
우리는 노트북으로 패킷 스니핑(Packet Sniffing)을 시도했습니다. 다행히 암호화되지 않은 UDP 브로드캐스트 패킷이 날아다니고 있더군요. 하지만 16진수로 된 외계어 같은 데이터 덩어리였습니다.
2. 제미나이의 활약: 프로토콜 리버스 엔지니어링
캡처한 데이터를 제미나이에게 던져주자, 놀라운 일이 벌어졌습니다.
Gemini: “Captain, 패턴이 보입니다. 앞부분 헤더
0xAA뒤에 4바이트가 전압(Voltage)이고, 그 뒤가 전류(Current) 값인 것 같네요. 체크섬 계산 방식은 이렇습니다…”
제미나이는 금세 프로토콜을 파싱(Parsing)해 냈습니다. 단순한 숫자의 나열이 배터리 잔량, 전압, 전류, 전력량 이라는 의미 있는 정보로 바뀌는 순간이었습니다.
3. 파이썬(Python) 코드로 구현하기
이제 분석된 프로토콜을 바탕으로, 라즈베리 파이에서 돌아갈 파이썬 스크립트를 짰습니다.
- WiFi 수신: KM110F가 쏘는 UDP 패킷을 라즈베리 파이가 받아냅니다.
- 데이터 파싱: Hex 데이터를 사람이 읽을 수 있는 십진수로 변환합니다.
- Signal K 전송: 변환된 데이터를 OpenPlotter가 이해할 수 있는 Signal K 포맷(JSON)으로 쏴줍니다.
# (제미나이가 짜준 코드의 핵심 부분)
def parse_packet(data):
voltage = int.from_bytes(data[4:6], byteorder='big') / 100.0
current = int.from_bytes(data[6:8], byteorder='big') / 100.0
# ... Signal K로 전송 ...
4. OpenPlotter 연동 완료
결과는 성공적이었습니다! 이제 4만 원짜리 션트 저항이 30만 원짜리 Victron 장비처럼 작동합니다.
▲ Signal K 대시보드에 뜬 KM110F 데이터. 전용 앱은 이제 안녕!
💡 이 시스템의 장점
- 선 없는 자유: WiFi로 통신하니 거추장스러운 RS485 배선이 필요 없습니다.
- 완벽한 통합: Signal K 를 통해 다른 항해 계기들과 데이터를 공유합니다.
- AI와의 협업: 코딩을 몰라도 제미나이와 함께라면 리버스 엔지니어링 이 가능합니다.
Captain’s Note: 기술의 닫힌 문을 여는 열쇠는 ‘호기심’, 그리고 ‘똑똑한 AI 파트너’입니다. 이제 제 배의 배터리는 제미나이와 제가 만든 코드로 24시간 감시됩니다.
PS. 혹시 코드가 필요하신 분은 댓글 남겨주세요!
📚 함께 읽으면 좋은 글
- 상용 플로터를 넘어서: OpenPlotter와 MacArthur HAT으로 나만의 통합 항해 시스템 만들기: 배터리 데이터까지 통합된 완벽한 항해 시스템을 만나보세요.
- 요트 항해 계획(Passage Planning): 1급 해기사의 A-P-E-M 원칙: 안정적인 전력 관리 시스템은 장거리 항해의 필수 조건입니다.
Bon Voyage!