KR102034427B1 - IoT 기기 및 그것의 펌웨어 업데이트 방법 - Google Patents

IoT 기기 및 그것의 펌웨어 업데이트 방법 Download PDF

Info

Publication number
KR102034427B1
KR102034427B1 KR1020180020706A KR20180020706A KR102034427B1 KR 102034427 B1 KR102034427 B1 KR 102034427B1 KR 1020180020706 A KR1020180020706 A KR 1020180020706A KR 20180020706 A KR20180020706 A KR 20180020706A KR 102034427 B1 KR102034427 B1 KR 102034427B1
Authority
KR
South Korea
Prior art keywords
firmware
iot device
server
keep
command
Prior art date
Application number
KR1020180020706A
Other languages
English (en)
Other versions
KR20190105170A (ko
Inventor
권상혁
김득화
김정훈
Original Assignee
주식회사 펀진
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 펀진 filed Critical 주식회사 펀진
Priority to KR1020180020706A priority Critical patent/KR102034427B1/ko
Publication of KR20190105170A publication Critical patent/KR20190105170A/ko
Application granted granted Critical
Publication of KR102034427B1 publication Critical patent/KR102034427B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 IoT 네트워크를 통해 IoT 기기에 펌웨어를 다운로드하여 IoT 기기의 펌웨어를 업데이트하되, IoT기기의 동작여부 확인을 위해 서버와 IoT기기 간에 송수신되는 킵얼라이브 메시지(keep alive message)를 이용하여 IoT 기기에 펌웨어(Firmware)를 전송하여 IoT 기기의 펌웨어를 업데이트 함으로써 IoT 기기의 펌웨어를 경제성 있게 효율적으로 업데이트하도록 하는 IoT 기기 및 그것의 펌웨어 업데이트 방법에 관한 것이다.
본 발명은 IoT 기기가 서버 측으로 핑(Ping) 명령의 킵얼라이브 메시지를 송신하여, 서버로부터 퐁(Pong) 명령의 킵얼라이브 메시지를 수신하고, 상기 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 소속 IoT 기기의 현재 버전과 다른 것으로 확인되면 핑(PING) 명령의 킵얼라이브 메시지를 통해 서버 측에 전송 가능한 청크 단위의 펌웨어 데이터 전송을 요청하고, 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 통해 청크 단위의 펌웨어 데이터를 수신하여서 펌웨어 데이터를 청크 단위로 순차적으로 다운로드받아 펌웨어를 업데이트한다.

Description

IoT 기기 및 그것의 펌웨어 업데이트 방법{IoT Device and It's Firmware Update Method}
본 발명은 IoT(Internet of Things) 기기에 관한 것으로, IoT 네트워크를 통해 IoT 기기에 펌웨어를 다운로드하여 IoT 기기의 펌웨어를 업데이트하되, IoT기기의 동작여부 확인을 위해 서버와 IoT기기 간에 송수신되는 킵얼라이브 메시지(keep alive message)를 이용하여 IoT 기기에 펌웨어(Firmware)를 전송하여 IoT 기기의 펌웨어를 업데이트 함으로써 IoT 기기의 펌웨어를 경제성 있게 효율적으로 업데이트하도록 하는 IoT 기기 및 그것의 펌웨어 업데이트 방법에 관한 것이다.
일반적으로 IoT(Internet of Things)는 사물 인터넷을 일컫는 것으로, 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술을 의미한다. 여기서, 사물이라는 것은 예를들어, 가전제품, 모바일 장비, 웨어러블 컴퓨터(wearable computer) 등 다양한 임베디드 시스템(embedded system)을 지칭한다.
최근 IoT 기기는 사회적인 수요에 따라 급속하게 증가하는 추세에 있다. 이와 같은 IoT 기기를 운용함에 있어서 해당 IoT 기기의 기능을 향상 및 개선하기 위해서는 해당 IoT 기기의 운영체제인 펌웨어(Firmware)를 수시로 업데이트하여 줄 필요가 있다.
기존에는 일반적인 펌웨어 다운로드 방식으로서 다운로드 서버에 통신 접속하여 다운로드 받는 FOTA(Firmware Update Over The Air)를 사용하였는데, IoT 네트워크에서는 업링크 및 다운링크의 사이즈 제약으로 인하여 FOTA에 의한 펌웨어 다운로드가 불가능하고, FOTA 서비스를 위해서는 DM 서버, 푸쉬 메시지 서버(Push Message Server), 콘텐트 다운로드 서버(Content Download Server), 버전 관리 서버 등 많은 시스템이 구성되어야 펌웨어 전송이 가능하고, 여러 버전의 펌웨어가 있는 경우에 단계적으로 펌웨어 업데이트를 수행해야 되어서 자원 낭비가 발생한다.
대한민국 공개특허공보 제10-2017-0121911호(공개일자: 2017년 11월 3일)에는 IoT 기기 사이에 P2P 통신을 수행하여 펌웨어를 업데이트하는 방법이 제안된바 있으나 P2P 통신을 구성할 수 없는 IoT 환경에는 적용할 수 없다는 문제점이 있다.
또한, 대한민국 공개특허공보 제10-2017-0042947호(공개일자: 2017년 4월 20일)에는 LoRa 기술이 적용된 IoT 시스템에서 LoRa 디바이스의 클레스를 변경하여 하향링크 데이터를 지속적으로 수신하여 펌웨어를 업데이트하는 기술이 제안된바 있으나, 이 기술은 클레스 변경에 따라 네트워크 서버, 게이트웨이 등 중간 처리 장치들의 클레스도 변경하여야 펌웨어 업데이트 가능하므로 네트워크의 안정성 문제를 유발할 수 있는 문제점이 있다.
본 발명은 상술한 바와 같은 종래기술의 문제점을 해결하기 위하여 제안된 것으로, IoT 네트워크를 통해 IoT 기기에 펌웨어를 다운로드하여 IoT 기기의 펌웨어를 업데이트하되, IoT 기기의 동작여부 확인을 위해 서버와 IoT 기기간에 송수신되는 킵얼라이브 메시지를 이용하여 IoT 기기에 펌웨어를 전송하여서 IoT 기기의 펌웨어를 업데이트 함으로써 별도의 시스템 설치 및 변경없이 기존의 시스템을 그대로 이용하여 IoT 기기의 펌웨어를 경제성 있게 효율적으로 업데이트하도록 하는 IoT 기기 및 그것의 펌웨어 업데이트 방법을 제공함에 목적이 있다.
상술한 바와 같은 목적을 달성하기 위하여, 본 발명은 센서부에 의해 검출된 검출 정보를 IoT 네트워크에 전송하는 IoT 기기로서, 펌웨어에 의거하여 소속 IoT 기기의 제반 구동을 제어하고, 펌웨어 업데이트 프로그램에 의거하여 소속 IoT 기기의 펌웨어 업데이트 처리를 수행하되, 서버로부터 킵얼라이브 메시지를 통해 펌웨어 데이터를 다운로드 받아 소속 IoT 기기의 펌웨어를 업데이트하는 MCU(Micro Control Unit); IoT 네트워크에 대한 통신을 담당하되 상기 MCU의 제어에 따라 안테나를 통해 무선 통신을 수행함으로써 IoT 네트워크에 대한 통신을 수행하여 상기 서버로부터 킵얼라이브 메시지를 통해 펌웨어 데이터를 수신하여 상기 MCU에 인가하는 통신부; 및 상기 펌웨어와 펌웨어 업데이트 프로그램을 저장하여 상기 MCU에 제공하고, MCU의 제어에 의해 업데이트되는 펌웨어를 저장하는 저장부;를 포함하며, 상기 MCU는, 통신부를 통해 서버 측으로 핑(Ping) 명령의 킵얼라이브 메시지를 송신하여, 서버로부터 퐁(Pong) 명령의 킵얼라이브 메시지를 수신하고, 해당 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 소속 IoT 기기의 현재 버전과 다른 것으로 확인되면 소속 IoT 기기의 펌웨어 업데이트를 진행하되, 핑(PING) 명령의 킵얼라이브 메시지를 통해 서버 측에 전송 가능한 청크 단위의 펌웨어 데이터 전송을 요청하여 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 통해 청크 단위의 펌웨어 데이터를 수신하여서 펌웨어 데이터를 청크 단위로 순차적으로 다운로드받아 소속 IoT 기기의 펌웨어를 업데이트하는 처리를 수행하는 것을 특징으로 하는 IoT 기기를 제공한다.
본 발명에 따른 IoT 기기에 의하면, 상기 MCU는 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 소속 IoT 기기의 현재 버전과 다른 것으로 확인한 경우, 서버로부터의 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 펌웨어 사이즈(Size) 정보를 확인하고, 해당 펌웨어 사이즈에 대응되는 상기 저장부의 신규 펌웨어 저장 영역을 확보하고, IoT 네트워크를 통해 전송 가능한 사이즈로 펌웨어 데이터의 청크(Chunk) 수를 계산하고, 펌웨어 데이터 수신을 위한 킵얼라이브 메시지의 전송 주기를 변경하여 설정하고, 수신받을 펌웨어 청크 인덱스(Chunk Index) 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지를 서버에 전송하여 청크 단위로 펌웨어 데이터를 전송할 것을 서버에 요청한다.
본 발명에 따른 IoT 기기에 의하면, 상기 MCU는 상기 변경 설정된 킵얼라이브 메시지의 전송 주기에 따라 서버 측에 핑(PING) 명령의 킵얼라이브 메시지를 전송하여서, 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 순차적으로 수신하여 청크 단위의 펌웨어 데이터를 순차적으로 다운로드 받는다.
본 발명에 따른 IoT 기기에 의하면, 상기 MCU는 서버로부터 전송되는 퐁(PONG) 명령의 킵얼라이브 메시지에 포함된 청크 단위의 펌웨어 데이터를 수신하여 소속 IoT 기기의 펌웨어를 업데이트 하는 중에 서버로부터 수신되는 퐁(PONG) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 현재 업데이트 중인 펌웨어의 버전과 다르게 새롭게 변경된 것을 확인하는 경우에, 핑(PING) 명령의 킵얼라이브 메시지를 서버측에 전송하면서 신규 버전의 펌웨어 전송을 요청하여 서버로부터 청크 단위의 신규 펌웨어 데이터를 순차적으로 다운로드받아 소속 IoT 기기의 신규 펌웨어를 업데이트한다.
본 발명에 따른 IoT 기기에 의하면, 상기 MCU는 소속 IoT 기기의 펌웨어를 저장부에 업데이트 완료한 경우에 킵얼라이브 메시지의 전송 주기를 원래의 전송 주기로 복귀시킨다.
한편, 상술한 바와 같은 목적을 달성하기 위하여, 본 발명은 IoT 네트워크를 통해 IoT 기기에 펌웨어를 다운로드하여 IoT 기기의 펌웨어를 업데이트하는 IoT 기기의 펌웨어 업데이트 방법으로서, IoT 기기가 서버 측으로 핑(Ping) 명령의 킵얼라이브 메시지를 송신하여, 서버로부터 퐁(Pong) 명령의 킵얼라이브 메시지를 수신하는 단계; 상기 IoT 기기가 상기 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 소속 IoT 기기의 현재 버전과 다른 것으로 확인되면 핑(PING) 명령의 킵얼라이브 메시지를 통해 서버 측에 전송 가능한 청크 단위의 펌웨어 데이터 전송을 요청하는 단계; 및 상기 IoT 기기가 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 통해 청크 단위의 펌웨어 데이터를 수신하여서 펌웨어 데이터를 청크 단위로 순차적으로 다운로드받아 소속 IoT 기기의 펌웨어를 업데이트하는 단계를 포함하는 것을 특징으로 하는 IoT 기기의 펌웨어 업데이트 방법을 제공한다..
본 발명에 따른 IoT 기기의 펌웨어 업데이트 방법에 의하면, 상기 펌웨어 데이터 전송을 요청하는 단계는, IoT 기기가 상기 서버로부터의 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 펌웨어 사이즈(Size) 정보를 확인하는 단계; IoT 기기가 상기 펌웨어 사이즈에 대응되는 신규 펌웨어 저장 영역을 확보하는 단계; IoT 기기가 IoT 네트워크를 통해 전송 가능한 사이즈로 펌웨어 데이터의 청크(Chunk) 수를 계산하는 단계; IoT 기기가 펌웨어 데이터 수신을 위한 킵얼라이브 메시지의 전송 주기를 변경하여 설정하는 단계; 및 IoT 기기가 수신받을 펌웨어 청크 인덱스(Chunk Index) 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지를 서버에 전송하여 청크 단위로 펌웨어 데이터를 전송할 것을 서버에 요청하는 단계;를 포함한다.
본 발명에 따른 IoT 기기의 펌웨어 업데이트 방법에 의하면, IoT 기기가 상기 변경 설정된 킵얼라이브 메시지의 전송 주기에 따라 서버 측에 핑(PING) 명령의 킵얼라이브 메시지를 전송하여서, 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 순차적으로 수신하여 청크 단위의 펌웨어 데이터를 순차적으로 다운로드 받는다.
본 발명에 따른 IoT 기기의 펌웨어 업데이트 방법에 의하면, IoT 기기가 서버로부터 전송되는 퐁(PONG) 명령의 킵얼라이브 메시지에 포함된 청크 단위의 펌웨어 데이터를 수신하여 소속 IoT 기기의 펌웨어를 업데이트 하는 중에 서버로부터 수신되는 퐁(PONG) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 현재 업데이트 중인 펌웨어의 버전과 다르게 새롭게 변경된 것을 확인하는 단계; 및 IoT 기기가 핑(PING) 명령의 킵얼라이브 메시지를 서버측에 전송하면서 신규 버전의 펌웨어 전송을 요청하여 서버로부터 청크 단위의 신규 펌웨어 데이터를 순차적으로 다운로드받아 소속 IoT 기기의 신규 펌웨어를 업데이트하는 단계를 더 포함한다.
본 발명에 따른 IoT 기기의 펌웨어 업데이트 방법에 의하면, IoT 기기가 펌웨어를 업데이트 완료한 경우에 킵얼라이브 메시지의 전송 주기를 원래의 전송 주기로 복귀시키는 단계를 더 포함한다.
본 발명은 IoT 네트워크를 통해 IoT 기기에 펌웨어를 다운로드하여 IoT 기기의 펌웨어를 업데이트하되, IoT 기기의 동작여부 확인을 위해 서버와 IoT 기기간에 송수신되는 킵얼라이브 메시지를 이용하여 IoT 기기에 펌웨어를 전송하여서 IoT 기기의 펌웨어를 업데이트 함으로써 별도의 시스템 설치 및 변경없이 기존의 시스템을 그대로 이용하여 IoT 기기의 펌웨어를 경제성 있게 효율적으로 업데이트하게 된다.
도 1은 본 발명에서 IoT 기기의 펌웨어 업데이트를 위한 IoT기기와 서버 간의 통신을 예시한 IoT 시스템 구성도이다.
도 2는 본 발명에서 IoT 기기의 펌웨어 업데이트에 적용하기 위한 메시지 전송 프레임을 예시한 도이다.
도 3은 본 발명에 따른 IoT 기기의 구성을 예시한 블럭도이다.
도 4는 본 발명에 따른 IoT 기기의 펌웨어 업데이트 방법을 예시한 흐름도이다.
이하 첨부 도면을 참조하여 본 발명의 실시예를 상세히 설명한다. 이하에서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서 및 청구범위에 사용된 용어는 사전적인 의미로 한정 해석되어서는 아니되며, 발명자는 자신의 발명을 최선의 방법으로 설명하기 위해 용어의 개념을 적절히 정의할 수 있다는 원칙에 입각하여, 본 발명의 기술적 사상에 부합되는 의미와 개념으로 해석되어야 한다.
따라서, 본 명세서에 기재된 실시예 및 도면에 도시된 구성은 본 발명의 바람직한 실시예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 표현하는 것은 아니므로, 본 출원 시점에 있어 이를 대체할 수 있는 다양한 균등물과 변형예들이 존재할 수 있음을 이해하여야 한다.
본 발명의 바람직한 실시예에 대하여 구체적으로 설명하되, 이미 주어진 기술적 부분에 대해서는 설명의 간결함을 위해 생략하거나 압축하기로 한다.
본 발명은 IoT 기기의 펌웨어를 업데이트하는 경우에, 도 1에 예시된 바와 같이, 서버(200)가 IoT 네트워크(LTE-M, LoRa, NB-IoT 등의 LPWA(Low Power Wide Area) 통신기술을 적용한 네트워크)를 통해 IoT 기기(100)에 펌웨어를 다운로드하여 IoT 기기(100)의 펌웨어를 업데이트하되, IoT 기기(100)의 동작여부 확인을 위해 서버(200)와 IoT 기기(100)간에 송수신되는 킵얼라이브 메시지를 이용하여 IoT 기기(100)에 펌웨어를 전송하여서 IoT 기기(100)의 펌웨어를 업데이트하도록 구현된다.
기존에 IoT 기기(100)와 서버(200) 간에 IoT 네트워크를 통하여 메시지를 전송하여 통신하는 경우에 도 2에 예시된 바와 같은 메시지 전송 프레임(300)을 사용하였다. 이와 같은 메시지 전송 프레임(300)은 예를 들어, 전송 프레임의 시작을 나타내기 위한 SOF(Start Of Frame) 필드(301), 프로토콜 버전을 나타내기 위한 PVER(Protocol Version) 필드(302), IoT 기기의 식별 정보를 나타내기 위한 기기 DID 필드(303), IoT 기기의 버전을 나타내기 위한 DVER(Device Version) 필드(304), 전송 데이터 분할시의 총청크(Chunk) 개수를 나타내기 위한 CHUNK COUNT 필드(305), 전송 데이터 분할시의 청크 인덱스(Chunk Index)를 나타내기 위한 CHUNK SEQUENCE NO. 필드(306), COMMAND 필드(308)로부터 CRC 필드(310) 까지의 데이터 길이를 나타내기 위한 LENGTH 필드(307), 동작 명령을 나타내기 위한 COMMAND 필드(308), 전송 데이터를 로딩하기 위한 PAYLOAD 필드(309), 에러 체크를 위한 CRC(Cyclic Redundancy Chacking) 필드(310) 및, 전송 프레임의 종료를 나타내기 위한 EOF(End Of Frame) 필드(311)를 포함한다.
기존에는 상술한 바와 같은 메시지 전송 프레임(300)에 의거하여 IoT 기기(100)와 서버(200) 간에 킵얼라이브 메시지를 송수신함으로써 서버(200)가 IoT 기기(100)의 정상 동작여부를 확인하였는데, 킵얼라이브 메시지를 송수신하는 경우에 메시지 전송 프레임(300)의 COMMAND 필드(308)에 핑(PING) 명령과 퐁(PONG) 명령을 로딩하여 전송함으로써 킵얼라이브 메시지를 송수신하였다. 즉, 기존에는 IoT 기기(100)가 메시지 전송 프레임(300)의 COMMAND 필드(308)에 핑(PING) 명령을 로딩하여 서버(200)에 전송하고, 그에 따라 서버(200)가 메시지 전송 프레임(300)의 COMMAND 필드(308)에 퐁(PONG) 명령을 로딩하여 IoT 기기(100) 전송하는 방식으로, 서버(200)가 IoT 기기(100)와 킵얼라이브 메시지를 송수신함으로써 IoT 기기(100)의 정상 동작여부를 주기적으로 확인하였다.
이와 같이 기존에 서버(200)가 킵얼라이브 메시지를 송수신하여 IoT 기기(100)의 동작여부를 확인하는 경우에, IoT 기기(100)와 서버(200) 간에는 메시지 전송 프레임(300)의 COMMAND 필드(308)에 핑(PING) 명령 및 퐁(PONG) 명령을 기록하여 송수신할 뿐 다른 데이터를 송수신하지는 않았다.
본 발명은 IoT 네트워크를 통해 IoT 기기(100)에 펌웨어를 다운로드하여 IoT 기기(100)의 펌웨어를 업데이트하는 경우에, 서버(200)가 킵얼라이브 메시지를 이용하여 IoT 기기(100)에 펌웨어를 전송하여 IoT 기기(100)의 펌웨어를 업데이트하되, 킵얼라이브 메시지를 전송하면서 해당 킵얼라이브 메시지 전송 프레임(300)의 COMMAND 필드(308)에 펌웨어 데이터를 로딩하여 전송함으로써 킵얼라이브 메시지를 이용하여 IoT 기기(100)에 펌웨어를 전송하여서 IoT 기기(100)의 펌웨어를 업데이트 하도록 구현된다. 이처럼 본 발명은 킵얼라이브 메시지를 이용하여 IoT 기기(100)의 펌웨어를 업데이트하므로, 별도의 시스템 설치 및 변경없이 기존의 시스템을 그대로 이용하여 IoT 기기의 펌웨어를 경제성 있게 효율적으로 업데이트할 수 있다.
IoT 기기(100)는 무선 통신에 의해 IoT 네트워크 측과 통신한다. IoT 기기(100)는 자체에 구동을 위한 펌웨어를 저장하고, 해당 펌웨어에 의해 구동하여, 자체에 구비된 센서에 의해 주변의 온도, 습도, 조도, 냄새 또는 가스 등의 주변 상태를 검출하여 검출정보를 무선 전송함으로써 자체 주변의 상태를 사용자에게 알려준다.
그리고, IoT 기기(100)는 자체에 저장되어 있는 펌웨어 업데이트 프로그램에 의거하여 자체의 펌웨어를 업데이트하는 처리를 수행하되 무선 통신을 수행함으로써 서버(200)로부터 킵얼라이브 메시지를 통해 펌웨어를 다운로드받아 자체의 펌웨어를 업데이트한다.
IoT 기기(100)는 무선 통신에 의해 서버(200) 측으로 핑(Ping) 명령의 킵얼라이브 메시지를 송신하여, 서버(200)로부터 퐁(Pong) 명령의 킵얼라이브 메시지를 수신하는 경우에, 퐁(Pong) 명령의 킵얼라이브 메시지 수신시에 해당 퐁(PONG) 명령의 킵얼라이브 메시지 전송 프레임(300)의 DEVER 필드(304)에 로딩된 IoT 기기의 버전이 자체 펌웨어의 현재 버전과 다른 것으로 확인되면 펌웨어 업데이트를 진행한다.
IoT 기기(100)는 자체의 펌웨어 업데이트를 진행하는 경우에, 서버(200) 측에 핑(PING) 명령의 킵얼라이브 메시지를 서버(200) 측에 전송하여 서버(200) 측에 청크단위 펌웨어 데이터의 전송을 요청함으로써 서버(200)로부터 청크 단위의 펌웨어 데이터를 순차적으로 수신하여 소속 IoT 기기(100)의 펌웨어를 업데이트 한다. 이때, IoT 기기(100)는 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 수신하면서 해당 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 청크 단위의 펌웨어를 함께 수신함으로써 서버(200)로부터 펌웨어 데이터를 청크 단위로 순차적으로 다운로드하여 자체의 펌웨어를 업데이트 한다.
이와 같이 IoT 기기(100)가 서버(200) 측에 펌웨어의 전송을 요청하여 서버(200)로부터 청크 단위의 펌웨어 데이터를 순차적으로 수신하여 자체의 펌웨어를 업데이트하는 과정을 살펴보면 다음과 같다.
IoT 기기(100)는 서버(200)로부터의 퐁(Pong) 명령의 킵얼라이브 메시지 수신시에 해당 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 펌웨어 사이즈(Size) 정보를 확인하고, 해당 펌웨어 사이즈에 대응되는 신규 펌웨어 저장 영역을 확보하고, IoT 네트워크를 통해 전송 가능한 사이즈로 펌웨어 데이터의 청크(Chunk) 수를 계산하고, 펌웨어 데이터 수신을 위한 킵얼라이브 메시지의 전송 주기를 변경하여 설정하되 통상시보다 짧은 주기로 변경하여 설정한다. 그 후에, IoT 기기(100)는 메시지 전송 프레임(300)의 CHUNK SEQUENCE NO. 필드(306)에 청크 인덱스를 로딩함과 아울러 메시지 전송 프레임(300)의 COMMAND 필드(308)에 핑(PING) 명령을 로딩하여서 수신받을 펌웨어 청크 인덱스(Chunk Index) 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)에 전송함으로써, 전송 가능한 청크 단위로 펌웨어 데이터를 전송할 것을 서버(200)에 요청하여 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 수신하면서 해당 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 청크 단위의 펌웨어 데이터를 수신하여 해당 펌웨어의 청크 인덱스(서버(200)로부터 수신된 킵얼라이브 메시지 전송 프레임(300)의 CHUNK SEQUENCE NO. 필드(306)에 로딩되어 있음)에 해당되는 자체의 저장 영역에 펌웨어 데이터를 순차적으로 저장하여서 자체의 펌웨어를 업데이트 한다.
이와 같이 IoT 기기(100)는 서버(200)측에 핑(PING) 명령의 킵얼라이브 메시지를 전송하여서 전송 가능한 청크 단위로 펌웨어를 전송할 것을 서버(200)에 요청함으로써, 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 수신하면서 청크 단위의 펌웨어 데이터를 수신하여 펌웨어 데이터를 순차적으로 다운로드받아 업데이트 하는 경우에, 상술한 변경 설정된 킵얼라이브 메시지의 전송 주기에 따라 서버(200) 측에 핑(PING) 명령의 킵얼라이브 메시지를 전송함으로써 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 반복하여 수신하여서 청크 단위의 펌웨어 데이터를 순차적으로 수신하여 자체의 펌웨어를 업데이트 한다.
또한, IoT 기기(100)는 서버(200)로부터 전송되는 퐁(PONG) 명령의 킵얼라이브 메시지에 포함된 청크 단위의 펌웨어를 수신하여 IoT 기기(100)의 펌웨어를 업데이트 하는 중에 서버(200)로부터 수신되는 해당 킵얼라이브 메시지 전송 프레임(300)의 DVER 필드(304)에 로딩된 IoT 기기의 버전이 현재 업데이트 중인 펌웨어의 버전과 다르게 새롭게 변경된 것을 확인하는 경우에, 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)측에 전송하면서 새로운 버전의 펌웨어 전송을 요청하여 곧바로 신규 펌웨어 데이터를 다운로드받아서 자체의 신규 펌웨어로 업데이트하되, 상술한 바와 마찬가지로 서버(200) 측에 청크 단위 펌웨어 데이터의 전송을 요청하여 서버(200)로부터 청크 단위의 펌웨어를 순차적으로 다운로드받아 자체의 신규 펌웨어를 업데이트할 수 있다.
IoT 기기(100)는 신규 펌웨어를 자체에 업데이트 완료한 경우에, 킵얼라이브 메시지의 전송 주기를 통상시의 전송 주기로 복귀시켜서 서버(200) 측과 통상시의 주기로 킵얼라이브 메시지를 송수신한다.
상술한 바와 같이 펌웨어 업데이트를 구현하기 위한 본 발명에 따른 IoT 기기(100)는, 도 3에 예시된 바와 같이, MCU(Micro Control Unit)(110), 통신부(120), 저장부(130), 센서부(140), 상태표시부(150), 전원공급부(160) 및 안테나(170)를 포함하여 이루어진다.
MCU(110)는 펌웨어에 의거하여 IoT 기기(100)의 제반 구동을 제어한다. 통신부(120)는 IoT 네트워크에 대한 통신을 담당하되 MCU(110)의 제어에 따라 안테나(170)를 통해 무선 통신을 수행함으로써 IoT 네트워크에 대한 통신을 수행한다. 저장부(130)는 IoT 기기(100)의 구동을 위한 펌웨어를 저장하고, 해당 펌웨어를 MCU(110)에 제공하여 MCU(110)로 하여금 해당 펌웨어에 의해 IoT 기기(100)를 구동 제어케 한다. 센서부(140)는 MCU(110)의 제어에 따라 구동되어 IoT 기기(100)가 설치된 주변의 온도, 습도, 조도, 냄새 또는 가스 등의 주변 상태를 검출하여 해당 검출 정보를 MCU(110)에 인가한다. 상태표시부(150)는 센서부(140)의 구동 상태를 표시한다. 전원공급부(160)는 MCU(110), 통신부(120), 센서부(140) 및 상태표시부(150)에 구동 전원을 공급함으로써 IoT 기기(100)의 구동 전원을 공급한다.
MCU(110)는 센서부(140)를 통해 검출한 정보를 통신부(120)에 의해 무선 전송함으로써 IoT 기기(100) 주변의 상태를 사용자에게 알려준다. 또한, MCU(110)는 저장부(130)에 저장되어 있는 펌웨어 업데이트 프로그램에 의거하여 소속 IoT 기기(100)의 펌웨어를 업데이트하는 처리를 수행하는데, 통신부(120)를 통해 무선 통신을 수행함으로써 서버(200)로부터 킵얼라이브 메시지를 통해 펌웨어 데이터를 수신하여 IoT 기기(100)의 펌웨어를 업데이트한다.
MCU(110)는 통신부(120)를 통해 서버(200) 측으로 핑(Ping) 명령의 킵얼라이브 메시지를 송신하여, 서버(200)로부터 퐁(Pong) 명령의 킵얼라이브 메시지를 수신하는 경우에, 해당 퐁(Pong) 명령의 킵얼라이브 메시지 수신시에 해당 킵얼라이브 메시지 전송 프레임(300)의 DEVER 필드(304)에 로딩된 IoT 기기의 버전이 소속 IoT 기기(100)의 현재 버전과 다른 것으로 확인되면 소속 IoT 기기(100)의 펌웨어 업데이트를 진행한다.
MCU(110)는 소속 IoT 기기(100)의 펌웨어 업데이트를 진행하는 경우에, 핑(PING) 명령의 킵얼라이브 메시지를 서버(200) 측에 전송하여 서버(200) 측에 펌웨어의 전송을 요청함으로써 서버(200)로부터 청크 단위의 펌웨어 데이터를 순차적으로 수신하여 소속 IoT 기기(100)의 펌웨어를 업데이트 하는데, 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 수신하면서 해당 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 청크 단위의 펌웨어 데이터를 함께 수신함으로써 서버(200)로부터 펌웨어 데이터를 청크 단위로 순차적으로 다운로드받아 소속 IoT 기기(100)의 펌웨어를 업데이트 한다.
이처럼 MCU(100)가 서버(200) 측에 펌웨어 데이터의 전송을 요청하여 서버(200)로부터 청크 단위의 펌웨어 데이터를 순차적으로 수신하여 소속 IoT 기기(100)의 펌웨어를 업데이트하는 과정을 살펴보면 다음과 같다. 먼저, MCU(110)는 서버(200)로부터의 퐁(Pong) 명령의 킵얼라이브 메시지 수신시에 수신되는 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 펌웨어 사이즈(Size) 정보를 확인하고, 해당 펌웨어 사이즈에 대응되는 저장부(130)의 신규 펌웨어 저장 영역을 확보한다. 그리고, MCU(110)는 IoT 네트워크를 통해 전송 가능한 사이즈로 펌웨어 데이터의 청크(Chunk) 수를 계산하고, 펌웨어 데이터 수신을 위한 킵얼라이브 메시지의 전송 주기를 변경하여 설정하되 통상시보다 짧은 주기로 변경하여 설정한다. 그 후에, MCU(110)는 메시지 전송 프레임(300)의 CHUNK SEQUENCE NO. 필드(306)에 청크 인덱스를 로딩함과 아울러 메시지 전송 프레임(300)의 COMMAND 필드(308)에 핑(PING) 명령을 로딩하여서 수신받을 펌웨어 청크 인덱스(Chunk Index) 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)에 전송함으로써, 전송 가능한 청크 단위로 펌웨어 데이터를 전송할 것을 서버(200)에 요청하여 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 수신하면서 해당 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 청크 단위의 펌웨어 데이터를 수신하여 해당 펌웨어의 청크 인덱스(서버(200)로부터 수신된 킵얼라이브 메시지 전송 프레임(300)의 CHUNK SEQUENCE NO. 필드(306)에 로딩되어 있음)에 해당되는 저장부(130)의 저장 영역에 펌웨어 데이터를 순차적으로 저장하여서 소속 IoT 기기(100)의 펌웨어를 업데이트 한다.
이와 같이 MCU(110)가 서버(200)측에 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)에 전송하여서 전송 가능한 청크 단위로 펌웨어 데이터를 전송할 것을 서버(200)에 요청함으로써, 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 수신하면서 청크 단위의 펌웨어 데이터를 수신하여 소속 IoT 기기(100)의 펌웨어를 순차적으로 업데이트 하는 경우에, 상술한 바와 같이 변경 설정된 킵얼라이브 메시지의 전송 주기에 따라 서버(200) 측에 핑(PING) 명령의 킵얼라이브 메시지를 전송함으로써 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 순차적으로 수신하여서 청크 단위의 펌웨어 데이터를 순차적으로 다운로드받아 소속 IoT 기기(100)의 펌웨어를 업데이트 한다.
MCU(110)는 서버(200)로부터 전송되는 퐁(PONG) 명령의 킵얼라이브 메시지에 포함된 청크 단위의 펌웨어 데이터를 수신하여 소속 IoT 기기(100)의 펌웨어를 업데이트 하는 중에 서버(200)로부터 수신되는 해당 킵얼라이브 메시지 전송 프레임(300)의 DVER 필드(304)에 로딩된 IoT 기기의 버전이 현재 업데이트 중인 펌웨어의 버전과 다르게 새롭게 변경된 것을 확인하는 경우에, 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)측에 전송하면서 새로운 버전의 펌웨어 전송을 요청하여 곧바로 신규 펌웨어 데이터를 수신하여서 IoT 기기(100)의 신규 펌웨어로 업데이트할 수 있는데, 상술한 바와 마찬가지로 서버(200) 측에 청크 단위 펌웨어 데이터의 전송을 요청하여 서버(200)로부터 청크 단위의 펌웨어 데이터를 순차적으로 수신하여 소속 IoT 기기(100)의 신규 펌웨어를 업데이트할 수 있다.
MCU(110)는 소속 IoT 기기(100)의 펌웨어를 저장부(130)에 업데이트 완료한 경우에, 킵얼라이브 메시지의 전송 주기를 통상시의 전송 주기로 복귀시킴으로써 서버(200) 측과 통상적인 주기로 킵얼라이브 메시지를 송수신한다.
상술한 바와 같은 기능을 구비하는 본 발명에 따른 IoT 기기(100)는 IoT 네트워크를 통해 펌웨어를 다운로드받아 자체의 펌웨어를 업데이트하는 경우에 도 4에 예시된 바와 같이 펌웨어 업데이트를 진행한다.
먼저, IoT 기기(100)의 MCU(110)는 통신부(120)를 통해 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)에 전송하고(S110), 서버(200)로부터 그에 대한 퐁(PONG) 명령의 킵얼라이브 메시지를 수신한다(S120).
그리고, IoT 기기(100)의 MCU(110)는 서버(200)로부터 수신된 해당 퐁(Pong) 명령의 킵얼라이브 메시지 전송 프레임(300)의 DEVER 필드(304)에 로딩된 IoT 기기의 버전이 소속 IoT 기기(100)의 현재 버전과 다른지를 확인하여(S130), 해당 로딩된 IoT 기기의 버전이 소속 IoT 기기(100)의 현재 버전과 다르지 않음을 확인하면 상술한 S110으로 귀환하여 반복 처리를 수행하고, 해당 로딩된 IoT 기기의 버전이 소속 IoT 기기(100)의 현재 버전과 다른 것을 확인하면 해당 퐁(Pong) 명령의 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 펌웨어 데이터가 로딩되어 있는지의 여부를 확인한다(S140).
IoT 기기(100)의 MCU(110)는 S140에서 해당 퐁(Pong) 명령의 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 펌웨어 데이터가 로딩되어 있지 않음을 확인하는 경우, 해당 퐁(Pong) 명령의 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 신규 펌웨어의 사이즈 정보에 의거하여 신규 펌웨어의 사이즈를 확인하고(S150), 해당 신규 펌웨어 사이즈에 대응되는 저장부(130)의 신규 펌웨어 저장 영역을 확보한다(S160).
그리고, IoT 기기(100)의 MCU(110)는 IoT 네트워크를 통해 전송 가능한 사이즈로 펌웨어의 청크(Chunk) 수를 계산하고(S170), 펌웨어 수신을 위한 킵얼라이브 메시지의 전송 주기를 변경하여 설정하되 통상시보다 짧은 주기로 변경하여 설정한다(S180).
그 후에, IoT 기기(100)의 MCU(110)는 메시지 전송 프레임(300)의 CHUNK SEQUENCE NO. 필드(306)에 청크 인덱스를 로딩함과 아울러 메시지 전송 프레임(300)의 COMMAND 필드(308)에 핑(PING) 명령을 로딩하여서 수신받을 펌웨어 청크 인덱스(Chunk Index) 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지 전송 프레임을 생성하고(S190), 해당 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)에 전송하여서, 전송 가능한 청크 단위로 펌웨어를 전송할 것을 서버(200)에 요청한다(S110).
이에 따라, IoT 기기(100)의 MCU(110)는 S120에서 서버(200)로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 수신하되 해당 킵얼라이브 메시지 전송 프레임(300)의 PAYLOAD 필드(309)에 로딩된 청크 단위의 펌웨어 데이터를 수신하고, 해당 수신된 킵얼라이브 메시지 전송 프레임(300)의 CHUNK SEQUENCE NO. 필드(306)에 로딩되어 있는 청크 인덱스에 해당되는 저장부(130)의 저장 영역에 펌웨어 데이터를 저장하고(S200), 신규 펌웨어가 모두 저장되어 있는지를 확인하여(S210), 신규 펌웨어가 모두 저장되지 않은 것을 확인하면 상술한 S190을 수행하여서 메시지 전송 프레임(300)의 CHUNK SEQUENCE NO. 필드(306)에 후속 수신할 청크 인덱스를 로딩함과 아울러 메시지 전송 프레임(300)의 COMMAND 필드(308)에 핑(PING) 명령을 로딩함으로써 후속 수신받을 펌웨어 청크 인덱스 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지 전송 프레임을 생성하고, 상술한 S110을 수행하여 서버(200)에 핑(PING) 명령의 킵얼라이브 메시지를 전송하여서 상술한 바와 마찬가지로 서버(200)로부터의 퐁(PONG) 명령의 킵얼라이브 메시지를 수신함으로써 청크 단위의 펌웨어 데이터를 수신한다.
또한, IoT 기기(100)의 MCU(110)는 S210에서 신규 펌웨어가 모두 저장된 것을 확인하면 킵얼라이브 메시지의 전송 주기를 통상시의 전송 주기로 복귀시시키고, 저장부(130)에 다운로드 저장한 펌웨어 데이터를 신규 펌웨어로서 업데이트시킨다(S230).
한편, IoT 기기(100)의 MCU(110)는 서버(200)로부터 전송되는 퐁(PONG) 명령의 킵얼라이브 메시지에 포함된 청크 단위의 펌웨어를 수신하여 IoT 기기(100)의 펌웨어를 업데이트 하는 중에, S130에서 서버(200)로부터 수신되는 해당 킵얼라이브 메시지 전송 프레임(300)의 DVER 필드(304)에 로딩된 IoT 기기의 버전이 현재 업데이트 중인 펌웨어의 버전과 다르게 새롭게 변경된 것을 확인하면, 상술한 S140, S150, S160, S170, S180 및 S190을 수행하여 핑(PING) 명령의 킵얼라이브 메시지를 서버(200)측에 전송하면서, 새로운 버전의 펌웨어 전송을 요청하여 곧바로 신규 펌웨어를 청크 단위로 순차적으로 다운로드 받아서 IoT 기기(100)의 신규 펌웨어로 업데이트할 수 있다.
상술한 바와 같이, 본 발명은 IoT 네트워크를 통해 IoT 기기에 펌웨어를 다운로드하여 IoT 기기의 펌웨어를 업데이트하되, IoT 기기의 동작여부 확인을 위해 서버와 IoT 기기간에 송수신되는 킵얼라이브 메시지를 이용하여 IoT 기기에 펌웨어를 전송하여서 IoT 기기의 펌웨어를 업데이트 함으로써 별도의 시스템 설치 및 변경없이 기존의 시스템을 그대로 이용하여 IoT 기기의 펌웨어를 경제성 있게 효율적으로 업데이트할 수 있다.
또한, 본 발명은 IoT 기기가 신규 펌웨어를 다운로드해야 할 상황인 경우에 킵얼라이브 메시지의 전송 주기를 짧게 변경함으로써 펌웨어 다운로드 시간을 단축시킬 수 있다.
아울러, 본 발명은 IoT 기기가 펌웨어 업데이트를 주도하도록 구현되어 있어, 서버로부터의 신규 펌웨어를 킵얼라이브 메시지를 통해 다운로드 받는 도중에 서버로부터 수신되는 킵얼라이브 메시지에 의해 다른 신규 버전의 펌웨어가 있음을 확인하는 경우에 IoT 기기가 서버측에 신규 버전의 펌웨어로 변경허여 전송할 것을 요청함으로써 신규 버전의 펌웨어 데이터를 바로 다운로드 받아 업데이트할 수 있다.
상술한 바와 같이, 본 발명에 대한 구체적인 설명은 실시예에 의해 이루어졌지만, 상술한 실시예는 본 발명의 바람직한 예를 들어 설명하였을 뿐이기 때문에, 본 발명이 상기의 실시예에만 국한되는 것으로 이해되어져서는 아니 되며, 본 발명의 권리범위는 후술하는 청구범위 및 그 등가개념으로 이해되어져야 할 것이다.
100; IoT 기기 110; MCU
120; 통신부 130; 저장부
140; 센서부 150; 상태표시부
160; 전원공급부 170; 안테나
200; 서버

Claims (10)

  1. 센서부에 의해 검출된 검출 정보를 IoT 네트워크에 전송하는 IoT 기기로서,
    펌웨어에 의거하여 소속 IoT 기기의 제반 구동을 제어하고, 펌웨어 업데이트 프로그램에 의거하여 소속 IoT 기기의 펌웨어 업데이트 처리를 수행하되, 서버로부터 킵얼라이브 메시지를 통해 펌웨어 데이터를 다운로드 받아 소속 IoT 기기의 펌웨어를 업데이트하는 MCU(Micro Control Unit);
    IoT 네트워크에 대한 통신을 담당하되 상기 MCU의 제어에 따라 안테나를 통해 무선 통신을 수행함으로써 IoT 네트워크에 대한 통신을 수행하여 상기 서버로부터 킵얼라이브 메시지를 통해 펌웨어 데이터를 수신하여 상기 MCU에 인가하는 통신부; 및
    상기 펌웨어와 펌웨어 업데이트 프로그램을 저장하여 상기 MCU에 제공하고, MCU의 제어에 의해 업데이트되는 펌웨어를 저장하는 저장부;를 포함하며,
    상기 MCU는, 통신부를 통해 서버 측으로 핑(Ping) 명령의 킵얼라이브 메시지를 송신하여, 서버로부터 퐁(Pong) 명령의 킵얼라이브 메시지를 수신하고, 해당 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 소속 IoT 기기의 현재 버전과 다른 것으로 확인되면 소속 IoT 기기의 펌웨어 업데이트를 진행하되,
    핑(PING) 명령의 킵얼라이브 메시지를 통해 서버 측에 전송 가능한 청크 단위의 펌웨어 데이터 전송을 요청하여 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 통해 청크 단위의 펌웨어 데이터를 수신하여서 펌웨어 데이터를 청크 단위로 순차적으로 다운로드받아 소속 IoT 기기의 펌웨어를 업데이트하는 처리를 수행하는 것을 특징으로 하는 IoT 기기.
  2. 제1항에 있어서,
    상기 MCU는 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 소속 IoT 기기의 현재 버전과 다른 것으로 확인한 경우, 서버로부터의 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 펌웨어 사이즈(Size) 정보를 확인하고, 해당 펌웨어 사이즈에 대응되는 상기 저장부의 신규 펌웨어 저장 영역을 확보하고, IoT 네트워크를 통해 전송 가능한 사이즈로 펌웨어 데이터의 청크(Chunk) 수를 계산하고, 펌웨어 데이터 수신을 위한 킵얼라이브 메시지의 전송 주기를 변경하여 설정하고, 수신받을 펌웨어 청크 인덱스(Chunk Index) 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지를 서버에 전송하여 청크 단위로 펌웨어 데이터를 전송할 것을 서버에 요청하는 것을 특징으로 하는 IoT 기기.
  3. 제2항에 있어서,
    상기 MCU는 상기 변경 설정된 킵얼라이브 메시지의 전송 주기에 따라 서버 측에 핑(PING) 명령의 킵얼라이브 메시지를 전송하여서, 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 순차적으로 수신하여 청크 단위의 펌웨어 데이터를 순차적으로 다운로드 받는 것을 특징으로 하는 IoT 기기.
  4. 제1항에 있어서,
    상기 MCU는 서버로부터 전송되는 퐁(PONG) 명령의 킵얼라이브 메시지에 포함된 청크 단위의 펌웨어 데이터를 수신하여 소속 IoT 기기의 펌웨어를 업데이트 하는 중에 서버로부터 수신되는 퐁(PONG) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 현재 업데이트 중인 펌웨어의 버전과 다르게 새롭게 변경된 것을 확인하는 경우에, 핑(PING) 명령의 킵얼라이브 메시지를 서버측에 전송하면서 신규 버전의 펌웨어 전송을 요청하여 서버로부터 청크 단위의 신규 펌웨어 데이터를 순차적으로 다운로드받아 소속 IoT 기기의 신규 펌웨어를 업데이트하는 것을 특징으로 하는 IoT 기기.
  5. 제1항 내지 제4항 중의 어느 한 항에 있어서,
    상기 MCU는 소속 IoT 기기의 펌웨어를 저장부에 업데이트 완료한 경우에 킵얼라이브 메시지의 전송 주기를 원래의 전송 주기로 복귀시키는 것을 특징으로 하는 IoT 기기.
  6. IoT 네트워크를 통해 IoT 기기에 펌웨어를 다운로드하여 IoT 기기의 펌웨어를 업데이트하는 IoT 기기의 펌웨어 업데이트 방법으로서,
    IoT 기기가 서버 측으로 핑(Ping) 명령의 킵얼라이브 메시지를 송신하여, 서버로부터 퐁(Pong) 명령의 킵얼라이브 메시지를 수신하는 단계;
    상기 IoT 기기가 상기 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 소속 IoT 기기의 현재 버전과 다른 것으로 확인되면 핑(PING) 명령의 킵얼라이브 메시지를 통해 서버 측에 전송 가능한 청크 단위의 펌웨어 데이터 전송을 요청하는 단계; 및
    상기 IoT 기기가 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 통해 청크 단위의 펌웨어 데이터를 수신하여서 펌웨어 데이터를 청크 단위로 순차적으로 다운로드받아 소속 IoT 기기의 펌웨어를 업데이트하는 단계를 포함하는 것을 특징으로 하는 IoT 기기의 펌웨어 업데이트 방법.
  7. 제6항에 있어서,
    상기 펌웨어 데이터 전송을 요청하는 단계는,
    IoT 기기가 상기 서버로부터의 퐁(Pong) 명령의 킵얼라이브 메시지에 로딩된 펌웨어 사이즈(Size) 정보를 확인하는 단계;
    IoT 기기가 상기 펌웨어 사이즈에 대응되는 신규 펌웨어 저장 영역을 확보하는 단계;
    IoT 기기가 IoT 네트워크를 통해 전송 가능한 사이즈로 펌웨어 데이터의 청크(Chunk) 수를 계산하는 단계;
    IoT 기기가 펌웨어 데이터 수신을 위한 킵얼라이브 메시지의 전송 주기를 변경하여 설정하는 단계; 및
    IoT 기기가 수신받을 펌웨어 청크 인덱스(Chunk Index) 정보를 포함하는 핑(PING) 명령의 킵얼라이브 메시지를 서버에 전송하여 청크 단위로 펌웨어 데이터를 전송할 것을 서버에 요청하는 단계;를 포함하는 것을 특징으로 하는 IoT 기기의 펌웨어 업데이트 방법.
  8. 제7항에 있어서,
    IoT 기기가 상기 변경 설정된 킵얼라이브 메시지의 전송 주기에 따라 서버 측에 핑(PING) 명령의 킵얼라이브 메시지를 전송하여서, 서버로부터 퐁(PONG) 명령의 킵얼라이브 메시지를 순차적으로 수신하여 청크 단위의 펌웨어 데이터를 순차적으로 다운로드 받는 것을 특징으로 하는 IoT 기기의 펌웨어 업데이트 방법.
  9. 제6항에 있어서,
    IoT 기기가 서버로부터 전송되는 퐁(PONG) 명령의 킵얼라이브 메시지에 포함된 청크 단위의 펌웨어 데이터를 수신하여 소속 IoT 기기의 펌웨어를 업데이트 하는 중에 서버로부터 수신되는 퐁(PONG) 명령의 킵얼라이브 메시지에 로딩된 IoT 기기의 버전이 현재 업데이트 중인 펌웨어의 버전과 다르게 새롭게 변경된 것을 확인하는 단계; 및
    IoT 기기가 핑(PING) 명령의 킵얼라이브 메시지를 서버측에 전송하면서 신규 버전의 펌웨어 전송을 요청하여 서버로부터 청크 단위의 신규 펌웨어 데이터를 순차적으로 다운로드받아 소속 IoT 기기의 신규 펌웨어를 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 IoT 기기의 펌웨어 업데이트 방법.
  10. 제6항 내지 제9항 중의 어느 한 항에 있어서,
    IoT 기기가 펌웨어를 업데이트 완료한 경우에 킵얼라이브 메시지의 전송 주기를 원래의 전송 주기로 복귀시키는 단계를 더 포함하는 것을 특징으로 하는 IoT 기기의 펌웨어 업데이트 방법.
KR1020180020706A 2018-02-21 2018-02-21 IoT 기기 및 그것의 펌웨어 업데이트 방법 KR102034427B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180020706A KR102034427B1 (ko) 2018-02-21 2018-02-21 IoT 기기 및 그것의 펌웨어 업데이트 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180020706A KR102034427B1 (ko) 2018-02-21 2018-02-21 IoT 기기 및 그것의 펌웨어 업데이트 방법

Publications (2)

Publication Number Publication Date
KR20190105170A KR20190105170A (ko) 2019-09-16
KR102034427B1 true KR102034427B1 (ko) 2019-10-18

Family

ID=68067259

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180020706A KR102034427B1 (ko) 2018-02-21 2018-02-21 IoT 기기 및 그것의 펌웨어 업데이트 방법

Country Status (1)

Country Link
KR (1) KR102034427B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220037859A (ko) 2020-09-18 2022-03-25 경북대학교 산학협력단 IoT 서비스의 플래시코드 업데이트 시스템 및 IoT 서비스의 플래시코드 업데이트 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102397340B1 (ko) * 2020-07-30 2022-05-12 경북대학교 산학협력단 마이크로컨트롤러 업데이트 관리방법 및 관리시스템
KR102561411B1 (ko) * 2022-11-30 2023-07-31 펜타시큐리티시스템 주식회사 Oma-dm 표준 확장 구조를 이용하는 ota 기반 차량 긴급 업데이트 알림 배포 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120102478A1 (en) 2010-10-25 2012-04-26 Electronics And Telecommunications Research Institute Apparatus and method for cooperatively updating firmware on wireless mesh network
US20130013907A1 (en) 2005-02-15 2013-01-10 Gytheion Networks, Llc Wireless router remote firmware upgrade

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150032018A (ko) * 2013-09-17 2015-03-25 삼성전자주식회사 전자 장치 및 전자 장치의 정보 전송 방법, 정보 전송 시스템
KR20170127138A (ko) * 2016-05-11 2017-11-21 현대자동차주식회사 업데이트 소프트웨어 제공 시스템 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130013907A1 (en) 2005-02-15 2013-01-10 Gytheion Networks, Llc Wireless router remote firmware upgrade
US20120102478A1 (en) 2010-10-25 2012-04-26 Electronics And Telecommunications Research Institute Apparatus and method for cooperatively updating firmware on wireless mesh network

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220037859A (ko) 2020-09-18 2022-03-25 경북대학교 산학협력단 IoT 서비스의 플래시코드 업데이트 시스템 및 IoT 서비스의 플래시코드 업데이트 방법

Also Published As

Publication number Publication date
KR20190105170A (ko) 2019-09-16

Similar Documents

Publication Publication Date Title
US11146362B2 (en) Internet of things data transmission method, device and system
CN109074251B (zh) 嵌入式系统的本地空中更新
KR102391408B1 (ko) 장치 부트스트랩 방법, 단말, 및 서버
KR102034427B1 (ko) IoT 기기 및 그것의 펌웨어 업데이트 방법
US8386589B2 (en) System that provides embedded software to an embedded system
CN105100021B (zh) 一种设备管理会话的触发方法、设备及系统
US10083021B2 (en) Method and apparatus for providing firmware over the air service to user equipments
US10313861B2 (en) Wireless control of multiple actor devices by multiple controller devices with communication security
CN111373776A (zh) 邻近平台
CN111240713A (zh) 一种用电检测远程断点续传的方法
KR101541112B1 (ko) Fota 시스템 및 그 실행 방법
EP3383080B1 (en) Electronic device and coverage compensation method thereof for short range communication
KR101428778B1 (ko) 원격검침 단말의 원격 펌웨어 업그레이드 장치 및 방법
US20160100021A1 (en) Information processing device, destination information updating method, and record medium
CN112970238A (zh) Lwm2m客户端状态同步
EP3723349B1 (en) Electronic device for supporting low-latency domain name system (dns) processing
KR102059409B1 (ko) Ip 기반의 슬립 모드 제어 방법
JP7213966B2 (ja) 通信機器、サーバ、制御方法、及び通信システム
KR20200106317A (ko) 엣지 컴퓨팅 환경에서 어플리케이션 재배치를 제어하기 위한 장치 및 방법
CN115052252A (zh) 一种ota升级方法、系统及装置
JP2016531524A5 (ko)
JP7152452B2 (ja) サーバ装置、通信デバイス、端末装置、通信システム、プログラム及び更新方法
CN110851161B (zh) 一种智能家居设备的固件更新方法
CN116414411A (zh) 程序升级方法、系统、电子设备及存储介质
KR102521447B1 (ko) 보안 요소와 서버 사이의 연결을 관리하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right