Study

Container / IoT Edge

기본적으로 Azure IoT Edge를 구동하기 위해서는 Docker나 moby 등 컨테이너 엔진이 필요하다.
만약 Azure IoT Edge로 MS의 Certification 을 받고 싶다면 moby 컨테이너를 사용해야 한다.

라즈베리파이를 기준으로, moby-engine 과 iot-edge를 단순 설치하기 위해서는 최소한 250MB의 저장공간이 필요하다.


기본 모듈

Azure IoT Edge에서 기본 예제로 제공하는 SimulatedTemperatureSensor를 IoT Edge에서 동작해본다.

https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azure-iot.simulated-temperature-sensor

Overview에는 SimulatedTemperatureSensor 의 minumum hardware requirements에 대해 적혀 있다.

  • Linux or Windows Container
  • x64 or arm32
  • 150Mb disk space
  • 50Mb RAM


기본모듈이 사용하는 메모리

moby-engine과 iot-edge를 설치하고 Azure IoT Edge runtime이 실행할때의 메모리 사용량은 215MB 정도이다.



SimulatedTemperatureSensor를 1개 동작시킬 경우 260MB 정도로 늘어난 것을 확인할 수 있다.


SimulatedTemperatureSensor를 하나 더 추가하니 386MB로 100MB 이상이 추가로 사용되고 있었다.



총 3개의 SimulatedTemperatureSensor를 구동시키니 432MB 메모리를 사용한다.




Azure IoT Edge 최소 시스템 요구사항

Azure IoT Edge의 최소 요구사항을 살펴보면, 라즈베리파이3 정도의 디바이스에서 서버등급의 장비에서 동작하는 목표로 하는 솔루션이다.
그리고 최소 시스템 요구사항에 대해 모호한 표현으로 적혀있다.
직접 라즈베리파이에 Azure IoT Edge를 설치해보고 모듈을 올려보니 최소 요구사항이 애매한 이유를 알 수 있었다.

테스트에서는 기본 모듈인 SimulatedTemperatureSensor를 사용했지만, 실제 응용에서는 다양한 동작과 데이터 처리를 해야할 것이다.

단순 설치와 동작에는 기존의 OS와 250MB 정도의 설치 공간, 그리고 300MB 정도의 RAM이 사용되었다.

여기에 Azure에서는 Azure Function, Azure Stream Analytics, Azure SQL DB 등 서비스도 Edge runtime에서 구동할 수 있도록 지원하고 있는데, 이런 처리들을 하는데 더 많은 리소스를 사용하게 될 것이다.

'Study' 카테고리의 다른 글

라즈베리파이에 Azure IoT Edge 설치하기  (0) 2020.11.10
Study

구성

기본적으로 Azure IoT Edge는 Windows/Linux 운영체제에서 moby 컨테이너를 사용하여 동작하도록 배포하고 있다.

Windows OS에서 Linux 컨테이너를 사용하거나, Linux OS에서 Windows 컨테이너를 사용하는 것은 가능하지만, 실제 제품화를 위해서는 Windows OS + Windows 컨테이너나, Linux OS + Linux 컨테이너만을 지원하는 것 같다.

Container overview

OS

2020년 9월까지만 하더라도 Azure Certified Device certification에서 계층 1 OS만을 지원했던 것으로 보인다.

최근에(2020년 10월 22일) 업데이트 된 문서를 보면 계층 2 OS도 인증을 받을 수 있도록 추가된 것 같다.
https://github.com/Azure/azure-iot-device-ecosystem/blob/master/Azure_Certified_Device/Edge_Managed/docs/Azure_Certified_Device-Edge-Managed_Requirements-v1.0.md

계층 1 OS에는 Raspbian Stretch가 포함되어 있고, Raspbian Buster 는 계층 2 OS에 포함되어 있다.

https://en.wikipedia.org/wiki/Raspberry_Pi_OS

Raspbian Strech는 Debian 버전 9에 해당하며 라즈베리파이 3+ 까지 지원하는 OS이다.
Raspbian Buster는 Debian 버전 10에 해당하고 라즈베리파이 4까지 지원한다. Buster 버전은 2019년 6월부터 Release 되었다.

이번 설치에서는 Raspbian Buster 버전으로 진행했다. MS의 가이드 상에는 Buster로 진행할 경우 OpenSSL 버전을 추가로 설치하라고 되어있는데, 진행해보니 설치하지 않아도 동작은 하는 것 같다.

OpenSSL 패키지 추가 설치

sudo apt-get install libssl1.0.2

IoT Edge runtime 설치

  1. IoT Edge 패키지 리스트 설치
curl https://packages.microsoft.com/config/debian/stretch/multiarch/prod.list > ./microsoft-prod.list
sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
  • OS 종류에 따라 curl로 다운로드하는 리스트가 다름
  1. moby 컨테이너 설치

    sudo apt-get update
    sudo apt-get install moby-engine
    sudo apt-get install moby-cli
  2. IoT Edge runtime 설치

    sudo apt-get update
    sudo apt-get install iotedge

IoT Hub와 연결하기

  1. device_connection_string 입력하기
    IoT Hub에 IoT Edge Device를 생성한 후 Device의 Connection String을 라즈베리파이의 IoT Edge runtime의 configuration file에 입력한다.
    sudo nano /etc/iotedge/config.yaml
# Manual provisioning configuration provisioning:
    source: "manual"
    device_connection_string: "HostName=EdgeTestHub.azure-devices.net;DeviceId=rpi-edge;SharedAccessKey=123412341234"
# DPS TPM provisioning configuration
  1. IoT Edge runtime 실행하기
    sudo systemctl start iotedge

'Study' 카테고리의 다른 글

Azure IoT Edge에서 사용하는 리소스  (0) 2020.11.10
IoT Open House/ThingPlug

SKT의 LoRa 단말의 데이터는 SKT의 ThingPlug로 저장된다.

따라서 SKT LoRa 개발자는 ThingPlug 상에서 LoRa 단말의 데이터가 정상적으로 전송되었는지 체크할 수 있다.

 

이 포스팅에서는 Postman이라는 API 테스트 툴을 활용해서 SKT LoRa 단말의 데이터를 확인하는 기본 방법에 대해서 작성한다.

 

자세한 내용은 IoT 오픈하우스를 통해 문의할 수 있다.

https://www.sktiot.com/iot/support/openhouse/reservation/openhouseMain

 

SK telecom IoT Portal

목적 - 기술지원을 통한 서비스 개발 및 상용화 기간 단축 - 개발자 지원을 통한 자생적 개발환경 조성 및 LoRa, Cat.M1, LTE-M 생태계 활성화 지원대상 - LoRa, Cat.M1, LTE-M 단말 및 서비스 상용화 준비중인 중소기업 및 스타트업 지원업무 - 기술지원을 통한 서비스 개발 및 상용화 기간 단축 - 개발자 지원을 통한 자생적 개발환경 조성 및 LoRa, Cat.M1, LTE-M 생태계 활성화 지원업무 설명 컨설팅 기획/개발, 디바

www.sktiot.com

 

앞서 설명한대로, SKT LoRa는 ThingPlug로 연동되며, 사용자 앱서버에서는 MQTT나 HTTP로 LoRa 단말의 데이터 조회와 제어 등을 할 수 있다.

 

 

 

API를 사용하기 위해서는 우선 ThingPlug에서 발급해주는 ukey(사용자 인증키)가 필요하다.

(ThingPlug 가입/단말 등록 등은 이번 포스팅에서 다루지 않음.)

 

테스트 툴은 postman이라는 API 테스트 툴을 사용한다.

https://www.getpostman.com/

 

Postman | API Development Environment

Postman is the only complete API development environment used by more than 6 million developers and 200,000 companies worldwide.

www.getpostman.com

 

그리고 아래 script를 다운로드한다. script는 두 종류로 나누어져 있는데, 테스트 script와 ukey, 단말 id 등 환경 변수를 입력하는 파일로 나뉘어져 있다.

 

https://github.com/wpgnss/thingplug_lora_script

 

wpgnss/thingplug_lora_script

Contribute to wpgnss/thingplug_lora_script development by creating an account on GitHub.

github.com

 

두 파일의 사용법은 아래와 같다.

우선, [Script]_ThingPlug_API.postman.json 파일을 postman에서 import 한다.

 

다음은 [Env]_ThingPlug.postman.json 파일로 환경 변수파일을 추가로 import 한다.

 

환경변수 파일을 import 하면 아래처럼 각각 value를 입력할 수 있으며, 테스트를 위해 최대한 입력한다.

최소한 app_eui, ltid, uKey, platform_url은 입력되어 있어야 기본 테스트를 진행할 수 있다.

 

1 2 3 4 5 6 ··· 14
블로그 이미지

IoT 개발자 블로그이고 싶다.

1byte