파이썬으로 IBM Watson IoT Platform 디바이스 역할하기
앞서, MQTT.fx 라는 툴을 이용하여 MQTT 로 연결해서 실제 디바이스 없이 데이터를 주고 받는 동작을 실험해 보았다.
2020/07/14 - [IT/Cloud] - 초보자 기록 - IBM Watson IoT Platform 사용해 보기 with MQTT.fx
여기서, 한걸음만 더 나가고 싶어서 잠깐 포스팅 추가!!
개발자용 디바이스라고 하면, 일단 라즈베리파이 보드나 아두이노 보드를 많이 떠올릴 것이다.
동작을 테스트할 때 디바이스 쪽을 개발하는 측면에서 보면 실제 보드가 꼭 필요하지만, 클라우드 쪽의 서비스를 개발하는 분들은 가상의 에뮬레이터나 데이터 생성기 정도면 충분하지 않을 까 싶다.
(사실 라즈베리파이 보드는 그냥 PC와 같다고 보면 되니깐, 머 PC로 데이터를 생성해 보내면 그게 그거일듯~~)
아무튼, PC에서 에뮬레이션하기 위해 코드를 작성한다고 치면
실제 앱을 작성해도 되지만 요즘 대세인 듯 한 파이썬 코딩을 간단하게 해서 동작을 시연해 보려고 한다.
위에 언급한 이전 글을 보면 서비스의 생성 및 디바이스를 생성하는 방법이 나와 있으니 참고하고, 그 이후 파이썬에 프로그램할 때 사용한 부분만 추가해 보려고 한다.
아래 그림에서 처럼 꼭 디바이스 생성할 때 최종 화면에서 생성된 디바이스의 토큰 정보는 필수적으로 알고 있어야 하며, 따로 텍스트 파일로 라도 저장해 두길..
이전 포스팅의 화면을 참고용으로 가져왔다.
먼저 이 저장된 정보를 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/
머, 하지만 언제나 공부해야 하는 양은 많다.
다 살펴보기 힘드니 그냥 기초적인 동작 부분만 따로 코딩해서 아래에 공개해 둔다.
시나리오는 그냥 접속해서 데이터 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")
첨부파일로 가져가도 된다.
결과화면은 아래와 같다.
파이썬 코드가 순서대로 수행이 되었고, 중간중간 연결이 되었는지 끊어졌는지 정보는 callback 함수를 통해 출력됨을 볼 수 있다.
당연히 클라우드쪽에 구성한 Watson IoT Platform 에는 받은 데이터의 로그를 볼 수 있었다.
이상으로 제가 해 볼 수 있는 범위의 테스트를 마치며. 세상 누군가에게는 도움이 되는 자료이길
^~^ 오늘을살자.
'IT > 파이썬' 카테고리의 다른 글
파이썬 - Flask 사용법 - 틀 만들기 (2) | 2020.12.18 |
---|---|
파이썬 - PyQt5 QT Designer를 이용하여 버튼 클릭 창 예제 프로젝트 (0) | 2020.12.15 |
파이썬 - 개발 환경 세팅 - 윈도우 (0) | 2020.12.15 |
파이썬 - 네이버 실검 크롤링 - 2020.08.03 확인 (0) | 2020.08.03 |
파이썬 - 데이터 사이언스 - 아나콘다 설치 - 파이썬 설치는 덤! (0) | 2020.05.14 |