IoT Open House/ThingPlug


ThingPlug Bridge는 위 LoRa 서비스에서 (A) 위치에 해당하는 툴이다.


원래는, (B)에 해당하는 서비스 App 서버가 ThingPlug와 연동해 LoRa 디바이스의 데이터를 가져가고, 제어명령을 내려야 한다.

하지만, 기존의 App 서버를 변경하지 않고 LoRa 서비스를 사용하고 싶은 경우 ThingPlug Bridge를 활용하면 가능해진다.


ThingPlug Bridge 본 글에 첨부되어 있다.


ThingPlug_Bridge (2).z01

ThingPlug_Bridge (2).z02

ThingPlug_Bridge (2).zip



ThingPlug Bridge 의 역할


ThingPlug Bridge는 ThingPlug의 subscription 기능을 활용해서 만들어졌다. ThingPlug 포털의 ID와 PWD로 로그인을 하게 되면 아래와 같이 User Key를 받아오게 된다.

(User Key는 App이 ThingPlug에 접근하기 위한 권한이다.)


이 User Key를 가지고 로그인한 계정에 있는 LoRa Device 리스트를 조회 할 수 있고, ThingPlug는 Device들의 데이터를 ThingPlug Bridge로 Push 해준다.


Bridge는 ThingPlug로 부터 Push 받은 데이터를 설정된 서버로 보내고, Log 파일로 남기는 역할을 하게 된다.




ThingPlug Bridge 사용방법


1. 로그인


로그인하기 전, 접속하고자 하는 ThingPlug 플랫폼의 주소와 Port 번호를 우선 입력한다.(테스트망, 상용망에 따라 이 주소가 다르다.)

그 후 ID와 PWD를 입력해 Login 버튼으로 User Key를 얻어온다.



2. 설정

APP EUI와 App Server 정보를 입력한다.

APP EUI: LoRa 서비스의 경우, SKT로부터 할당받게 되며, ThingPlug만 사용하는 경우 'ThingPlug' 그대로 두면 된다.

App Server: Push 받은 데이터를 다시 보낼 서버의 주소를 입력한다.



3. RUN

RUN!




4. 디바이스 리스트

ThingPlug 계정에 등록된 디바이스의 리스트를 확인할 수 있다.


5. 디바이스 제어

ThingPlug 디바이스를 제어할 수 있다. data 필드를 이용해 유저 데이터를 보낼 수 있는데, LoRa 디바이스는 extDevMgmt 명령에서만 가능하다.




6. App Server

위 설정에서 App Server로 설정된 서버로 실제 LoRa 디바이스가 보낸 데이터를 보내게 된다.(1234567890 x 4)





7. 데이터 로그

데이터의 Log는 'log\debug_log.txt'에서 확인할 수 있다.

Study/etc

OpenSSL에 대한 설명


https://ko.wikipedia.org/wiki/OpenSSL


OpenSSL은 SSL/TLS를 오픈소스로 구현한 것이다.



<SSL/TLS, HTTPS에 대한 설명 영상>



OpenSSL 사용하기


구글에서 검색해보면 OpenSSL 라이브러리로 공개하는 것과, 실제로 OpenSSL을 사용할 수 있는 컴파일 된 파일로 된 것들이 있다.


소스코드 레벨로 공개된 것들은

https://www.openssl.org/source/


컴파일 방법은 아래 Youtube를 따라하면 될 것이다.

<How to Compile OpenSSL on Windows10 x64 for Static Library>

위 방법으로 컴파일 시 필요 툴

- Perl 

- VC++




컴파일 된 파일로 SSL 사용하기

OpenSSL을 이용해 SSL/TLS를 사용하기 위해서는 이미 컴파일 된 파일로 다운로드 받는게 더 편하다.

https://indy.fulgan.com/SSL/



위 사이트에서 openssl-x.x.x-XXXXX-winxx.zip 형태의 파일을 다운 받는다. OpenSSL의 버전과 사용 PC의 환경(ex, windows 32bit, 64bit)로 파일을 선택한다.




본 예제에서는 openssl-1.0.2k-x64_86-win64.zip으로 진행했다.




다운로드 받은 파일을 적당한 이름으로 원하는 곳에 압축을 해제한다.(openssl-1.0.2k-x64_86-win64 -> OpenSSL)



환경 변수에 추가하기

압축을 해제한 후에는 해당 폴더를 '시스템 환경 변수'에 추가해야 한다.

'시스템 환경 변수'는 윈도우 어디에서든지 '시스템 환경 변수'에 있는 파일을 실행시킬 수 있도록 해주는 역할을 한다.

본 예제에서는 폴더 안에 'openssl.exe' 파일을 시스템 어디에서든지 사용할 수 있도록 하기 위해서 '시스템 환경 변수'에 추가해준다.



'시작'을 눌러 '환경' 이라고 검색하면 '시스템 환경 변수 편집'이 나온다. 여기서 '환경 변수(N)' 을 누르면 아래와 같은 화면이 나온다






'시스템 변수(S)'에서 'Path'를 편집하게 되면 오른쪽 화면이 나오게 되고, '새로 만들기(N)'으로 환경 변수를 추가할 수 있다.

이때 경로는 OpenSSL을 압축 해제한 경로를 설정한다.





실행해보기

실행되면 아래와 같이 프롬프트가 바뀐다.환경 변수가 추가 되었으면 명령 프롬프트에서 'openssl'을 실행시킬 수 있다.


OpenSSL>




OpenSSL 테스트

이제 OpenSSL을 사용해서 SSL/TLS를 쓸 수 있다.

한가지 예제로 www.google.com 에 접속하는 HTTPS Client 예제는 아래와 같다.


OpenSSL> s_client -connect www.google.com:443





IoT Open House/LoRa

 

LoRa의 Class, 서비스 형태에 따라 선택해야 한다.

LoRa 디바이스로 구성된 LoRa network에서 LoRa 디바이스는 통신을 위해 3가지 클래스로 동작한다.

이 클래스는 Down-Link 할 수 있는 타이밍에 따라 구분된다. LoRa 디바이스는 LoRa Gateway에 Join 하면서 사용할 클래스에 대한 정보를 Gateway와 공유하게 된다. 그리고 LoRa 디바이스의 클래스에 따라서 디바이스에게 데이터를 보내는 타이밍을 정한다.


Class를 선택하기 위해서는 LoRa 서비스의 형태와 LoRa 디바이스에 상시전원을 공급할 수 있는지 여부로 판단할 수 있다.

서비스의 형태는 LoRa 디바이스가 Up-Link 위주의 서비스인지, Down-Link도 포함하는지 여부이다.



A Class

LoRa 디바이스와 LoRa 게이트웨이 사이의 A Class 통신은, LoRa 디바이스가 게이트웨이에게 Up-Link 전송을 수행한 이후에 두 번에 걸쳐 Down-Link 수신할 수 있다.

LoRa 디바이스는 Tx를 하기 전에는 Tx와 Rx를 꺼두었다가 Tx 이후 정해진 시간에 잠깐 Rx 신호를 감지한다.


A Class를 사용하면 Rx를 수신하기 위해서 Tx를 사용해야 한다. 그렇기 때문에 Tx 위주의 서비스나, 상시전원을 사용하지 않고 배터리로 운영하는 경우에 사용한다.


아래 그림에서 (노란색)은 LoRa 디바이스가 Rx 할 수 있는 상태이다. Tx 1회당 2번의 Rx를 할 수 있는데, 첫 번째 Rx 타이밍에 수신한 데이터가 없을 때 두 번째 Rx를 시도 한다.



B Class

A Class가 Up-Link(Tx) 위부의 Class라면 B Class는 Down-Link(Rx)를 고려하고, A Class에 비해 낮은 지연시간의 Class 이다.

B Class는 일정 시간 간격마다 Rx를 수신할 수 있는 상태(노란색)가 되고, 해당 타이밍에 LoRa Gateway로 부터 데이터를 수신할 수 있다.


B Class는 A Class와 달리 Rx 위주의 서비스와, 배터리로 운영하는 경우 고려할 수 있다.

주로 A와 C를 사용한다.






C Class

C Class는 Rx 가능 상태를 유지하기 때문에 타 Class에 비해 최소 지연시간을 갖지만, 가장 많은 전력을 소비한다. 그래서 C Class를 사용하기 위해서는 충분한 전력이 공급되는 상황에서 고려해야 한다.


항상 Rx 가능 상태이기 때문


에 LoRa를 이용한 스마트 플러그, 원격 제어등 액츄에이터 구현에 적합한 Class이다.


Rx1, Rx2, Tx 등등 LoRa 기술 상 이슈로 아래 이미지에서는 노란색 중간중간 비워두었다.




1 ··· 6 7 8 9 10 11 12 ··· 14
블로그 이미지

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

1byte