본문 바로가기

파이썬으로 IBM Watson IoT Platform 디바이스 역할하기

앞서, MQTT.fx 라는 툴을 이용하여 MQTT 로 연결해서 실제 디바이스 없이 데이터를 주고 받는 동작을 실험해 보았다.

2020/07/14 - [IT/Cloud] - 초보자 기록 - IBM Watson IoT Platform 사용해 보기 with MQTT.fx

 

초보자 기록 - IBM Watson IoT Platform 사용해 보기 with MQTT.fx

IBM Watson IoT Platform 사용해 보기 with MQTT.fx https://www.ibm.com/kr-ko/marketplace/internet-of-things-cloud?mhsrc=ibmsearch_a&mhq=IBM%20Watson%20IoT%20Platform IBM Watson IoT Platform - 개요 -..

ts.devbj.com

여기서, 한걸음만 더 나가고 싶어서 잠깐 포스팅 추가!!

개발자용 디바이스라고 하면, 일단 라즈베리파이 보드나 아두이노 보드를 많이 떠올릴 것이다.

동작을 테스트할 때 디바이스 쪽을 개발하는 측면에서 보면 실제 보드가 꼭 필요하지만, 클라우드 쪽의 서비스를 개발하는 분들은 가상의 에뮬레이터나 데이터 생성기 정도면 충분하지 않을 까 싶다.

(사실 라즈베리파이 보드는 그냥 PC와 같다고 보면 되니깐, 머 PC로 데이터를 생성해 보내면 그게 그거일듯~~)

 

아무튼, PC에서 에뮬레이션하기 위해 코드를 작성한다고 치면

실제 앱을 작성해도 되지만 요즘 대세인 듯 한 파이썬 코딩을 간단하게 해서 동작을 시연해 보려고 한다.

위에 언급한 이전 글을 보면 서비스의 생성 및 디바이스를 생성하는 방법이 나와 있으니 참고하고, 그 이후 파이썬에 프로그램할 때 사용한 부분만 추가해 보려고 한다.

아래 그림에서 처럼 꼭 디바이스 생성할 때 최종 화면에서 생성된 디바이스의 토큰 정보는 필수적으로 알고 있어야 하며, 따로 텍스트 파일로 라도 저장해 두길..

이전 포스팅의 화면을 참고용으로 가져왔다.

IBM Watson IoT Platform - 디바이스 인증정보

 

먼저 이 저장된 정보를 device.yaml 이라는 파일명으로 아래와 같은 형태로 저장해 작업 폴더에 저장을 해 둔다.

device.yaml

그럼 이제 코딩을 위해 IBM Watson IoT Platform 파이썬 라이브러리를 준비한다.

Install the latest version of the library with pip

# pip install wiotp-sdk

(물론 나머지 파이썬 기본 환경은 다 되어 있다고 가정 :) )

IBM 파이썬 라이브러리 문서는 아래 링크를 참고하면 된다.

https://ibm-watson-iot.github.io/iot-python/

 

Python SDK - IBM Watson IoT Platform

Note Support for MQTT with TLS requires at least Python v2.7.9 or v3.4, and openssl v1.0.1 Additional documentation for the library is available in IBM Cloud, but it's a "little" out of date in places: Uninstalling the module is simple.

ibm-watson-iot.github.io

머, 하지만 언제나 공부해야 하는 양은 많다.

다 살펴보기 힘드니 그냥 기초적인 동작 부분만 따로 코딩해서 아래에 공개해 둔다.

시나리오는 그냥 접속해서 데이터 3번 보내고 연결을 종료하는 것이다.

(당연히 device.yaml 은 자신이 저장해 둔 파일을 써야 되겠죠 ^^...)

import wiotp.sdk.device
import time

def myCommandCallback(cmd):
    print("Command received: %s" % cmd.data)

# Configure
myConfig = wiotp.sdk.device.parseConfigFile("device.yaml")
client = wiotp.sdk.device.DeviceClient(config=myConfig, logHandlers=None)
client.commandCallback = myCommandCallback

# Connect
client.connect()
print("Connected")
time.sleep(5)
	
# Send Data
myData={'name' : 'foo', 'cpu' : 60, 'mem' : 50}
client.publishEvent(eventId="status", msgFormat="json", data=myData, qos=0, onPublish=None)
print("Sent data")
time.sleep(5)

# Send Data
myData={'name' : 'foo', 'cpu' : 61, 'mem' : 50}
client.publishEvent(eventId="status", msgFormat="json", data=myData, qos=0, onPublish=None)
print("Sent data")
time.sleep(5)

# Send Data
myData={'name' : 'foo', 'cpu' : 62, 'mem' : 50}
client.publishEvent(eventId="status", msgFormat="json", data=myData, qos=0, onPublish=None)
print("Sent data")
time.sleep(5)

# Disconnect
client.disconnect()
print("Disconnected")

첨부파일로 가져가도 된다.

b.py
0.00MB

결과화면은 아래와 같다.

파이썬 코드가 순서대로 수행이 되었고, 중간중간 연결이 되었는지 끊어졌는지 정보는 callback 함수를 통해 출력됨을 볼 수 있다.

파이썬 실행 결과 화면

당연히 클라우드쪽에 구성한 Watson IoT Platform 에는 받은 데이터의 로그를 볼 수 있었다.

IBM Watson IoT Platform 결과화면

이상으로 제가 해 볼 수 있는 범위의 테스트를 마치며. 세상 누군가에게는 도움이 되는 자료이길

^~^ 오늘을살자.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.