[Projects] 졸업 프로젝트
Projects

[Projects] 졸업 프로젝트

 

[Projects] 졸업 프로젝트

 

고신뢰 IoT 장치개발을 위한 QA 도구 개발이라는 주제로 약 1년간 진행한 졸업 프로젝트입니다. 네트워크 패킷 분석, Wireshark, 에러 판별 등 처음 해보는 부분이 많았지만 긴 시간동안 열심히 했던 프로젝트에 대해 적어두려고 합니다 :)

깃 주소: https://github.com/GraduationProjectIoT
(좀더 기술적인 얘기는 깃에 작성해두려고 합니다)

 

 

    평소에 스마트홈에 관심이 많으신가요? 저희 프로젝트는 바로 이 스마트홈에 관련되어 있습니다. 핸드폰 어플리케이션으로 스마트 기기를 제어했을 때 이 기기가 올바르게 동작했냐, 아니냐를 검증하는 소프트웨어를 개발해보자는 것이었죠. 이 프로젝트는 산학 협력 프로젝트로, 삼성에서 대학원 연구실에 요청한 연구의 일부를 저희가 졸업 프로젝트로 진행하는 형태였습니다. 따라서 스마트홈 어플리케이션들 중에서 삼성에서 개발한 SmartThings를 이용했고, 기기도 SmartThings의 Wafer(LED 전구)를 사용했습니다.

 

프로젝트의 수행 과정을 간단하게 나타내면 다음과 같습니다.

  1. SmartThings 환경 내 무선신호를 통해 전송되는 명령/응답 데이터에 대한 packet sniffing
  2. IoT 장치의 무결성 검증용 소프트웨어 도구 개발

여기서 패킷 분석 툴로 Wireshark, 패킷 스니핑으로 NRF Sniffer Dongle, DK를 이용하고 소프트웨어 도구는 웹으로 개발하게 되었습니다.


🎈 Zigbee

우선 허브를 사용하는 경우입니다. 허브를 사용할 때, Wafer와 허브는 Zigbee 통신을 하게 되죠. 저희는 핸드폰과 클라우드 사이의 와이파이 통신, 허브와 Wafer 사이의 Zigbee 통신에서 Packet Sniffing을 진행했습니다.

 

에러 상황은 다음과 같이 정의했습니다.

 

-> Cloud에는 log가 남아있지 않은데, command에 대해 packet sniffing이 되었을 경우가 에러

1. Report Attribute/Read Attribute Response 에서 LED상태가 변경되지 않은 경우

2. Report Attribute/Read Attribute Response 오지 않은 경우

3. Zigbee통신은 잘 되었는데, Cloudlog만 없는 경우

 

결과물은 다음과 같습니다.

 

성공했을 경우
1번 에러의 경우
2번 에러의 경우
3번 에러의 경우


🎈 BLE

이번엔 BLE 통신을 하는 경우입니다. Zigbee와는 다르게 허브가 이미지에 없습니다. 핸드폰과 Wafer사이에서 바로 BLE로 통신하게 되고 이 사이를 packet sniffing 하였습니다.

 

하지만 BLE 통신의 경우 여러가지 문제가 나타나게 됩니다. 바로 Sniffer가 두개가 있어야 정상적으로 packet Sniffing을 진행할 수 있었지만 저희에게 주어진건 하나뿐이었다는 거였죠. 뿐만 아니라 중간에 Wafer의 펌웨어 업데이트가 이뤄지면서 설상가상으로 패킷 스니핑이 잘 되지 않게 되었습니다. 따라서 이전에 연습용으로 잡아두었던 패킷을 활용하면서 일부 커맨드에 대해서만 구현을 진행했습니다. 

 

여기서의 에러 상황은 Response가 올바르지 않은 경우 입니다.

 

성공한 경우
에러 상황


💎결론

    이 프로젝트의 결과물을 통해 사용자는 Zigbee, BLE 통신 과정을 모르더라도 에러를 시각적으로 확인할 수 있습니다. 프로젝트를 진행하면서 처음에 Zigbee 통신을 위해 라즈베리파이로 무선랜카드를 만들어서 환경을 구성하는 과정에서 부터 수많은 문제에 직면하였습니다. 그럴때마다 공식문서와 Nordic 커뮤니티를 뒤지기도 하면서 문제를 해결해나가고 프로젝트를 진행했습니다. 결과적으로 위와 같은 결과물을 얻을 수 있었고 배운 점이 많았던 프로젝트라고 생각합니다 :)

 

+ 감사하게도 상위작을 받게 되었습니다 :)

 

 

728x90
반응형