Policy profile
디바이스 트윈을 통해 전달되는 Policy profile 을 처리하는 방법을 설명합니다. 서버 투 서버 인터페이스 방식에서는 사용되지 않으며, IoT hub 를 통할 때만 활용할 수 있는 기능입니다.
Last updated
디바이스 트윈을 통해 전달되는 Policy profile 을 처리하는 방법을 설명합니다. 서버 투 서버 인터페이스 방식에서는 사용되지 않으며, IoT hub 를 통할 때만 활용할 수 있는 기능입니다.
Last updated
디바이스 트윈은 디바이스의 상태나 서버와 주고 받을 수 있는 메타 정보들을 모두 저장하고 있습니다.
디바이스 트윈 예시
Policy profile 은 서버에서 IoT 디바이스가 동작하는 방법을 정의할 수 있는 체계입니다. Policy profile 은 디지털 트윈에 저장된 후 IoT hub 의 디바이스 트윈 기능을 통해 IoT 디바이스에 전달 될 수 있습니다.
디바이스 트윈에는 다른 정보들이 많이 저장되어 있는데, 이중 policy profile 로 사용되는 곳은 properties.desired.policy 입니다.
Policy profile 의 기본 구조
각 필드에 대한 설명은 아래와 같습니다.
필드
설명
policy
child 의 object 를 파싱해서 펌웨어에서 처리합니다.
ver
Policy profile 의 버전을 나타냅니다. 펌웨어는 휘발성 메모리 공간에 현재 내가 실행되고 있는 policy profile 의 버전을 저장하고 있어야 합니다. 그 후 서버에서 디바이스 트윈이 변경되었다는 이벤트를 수신하면 이 버전 필드를 비교한 후 펌웨어가 동작하는 설정을 새로 업데이트 해야 합니다.
fw
펌웨어 어플리케이션의 버전 정보입니다. 서버에서 관리하기 위한 값이며 펌웨어에서는 무시할 수 있는 필드입니다.
brate
시리얼 통신에 필요한 baudrate 를 지정합니다. 디지털 컨트롤러(PLC)에 연결하는 IoT 디바이스의 경우 이 필드에 지정된 baudrate 로 디지털 컨트롤러(PLC)와 시리얼 통신하면 됩니다.
sec
데이터 수집 주기를 나타냅니다. 마지막 데이터 전송이 완료된 이후 이 필드에 지정된 시간동안 펌웨어 동작이 타이머 이벤트를 기다리거나 sleep() 하면 됩니다.
devices
IoT 디바이스가 여러 데이터 원천에서 데이터를 수집하는 경우 그 원천들을 구분하기 위해서 사용될 수 있습니다. 이 필드 아래에는 각 원천마다 어떤 deviceId 를 써야만 하는지 설정되어 있을 것이며, 각 원천마다 개별적으로 데이터를 만들고 전송해야 합니다.
데이터 원천이 나 자신 하나인 경우에도 이 필드는 값을 가질 수 있으며, 이 필드에 지정된 값대로 deviceId 를 설정하고 데이터를 보내야 합니다.
Policy profile 예시
예시에는 devices 아래에 2개의 JSON 객체 "sensor1" 과 "sensor2" 가 있습니다. 각각 idx 라는 필드를 갖고 있으며, idx 필드는 같은 policy profile 내에서 배열에 인덱싱하듯 0부터 시작하는 정수로 순서대로 지정됩니다.
펌웨어는 이 설정으로 2개의 IoT 디바이스 데이터를 만들어야 합니다.
Policy profile 의 sec 주기 마다 위 2개의 데이터를 각각 센서들로부터 얻어서 독립적으로 서버로 전송해야 합니다. 그리고 devices 아래에 있는 sensor1, sensor2 는 각각 deviceId 로 사용합니다.
MODBUS 네트워크가 구성되어 있고 단일 IoT 디바이스로 전체 네트워크에 엑세스 해서 데이터를 얻는 경우 개별 설비 별로 데이터 원천을 명확히 구분을 해야 그랜드뷰에서 제대로 데이터를 활용할 수 있습니다. 이와 같은 경우 devices 필드로 데이터 원천을 구분합니다.
sec 필드는 펌웨어 입장에서는 단순히 타이머를 기다리거나 sleep() 할 수 있는 값이지만, 전체 서비스 관점에서는 데이터를 수집하는 주기를 뜻합니다. 이 데이터 수집 주기는 사업적인 의사결정 통해 지정이 되는 부분으로, 아래 문서에서 더 자세한 내용을 확인하기 바랍니다.