공유 구독 사용해 보기 - Watson IoT Platform

처음으로 Watson IoT Platform을 사용해 보자는 분들을 위한 가이드입니다.
Watson IoT Platform 사용하기에서 IoT 앱을 준비했습니다.
Watson IoT Platform에서 공유 구독을 사용해 보세요.

1. Watson IoT Platform 서비스 준비



  • Watson IoT Platform 사용하기을 참조하여 Watson IoT Platform 서비스를 준비합니다.

  • Watson IoT Platform - 디바이스 등록 및 센서 데이터 전송을 참조하여 조직 이름, 장치 유형, 장치 ID, auth token 및 구독자 API 키와 auth token을 제공합니다

  • 2. 파이썬 클라이언트에서 pub/sub 해보기


  • 로컬 터미널의 파이썬 환경에서`python 01 아래 플로우를 복사합니다
  • 게시할 클라이언트(장치 쪽 가정)
  • 공유 구독을 사용할 때 게시자 측 변경은 필요하지 않습니다.

  • 01_dev_pub.py
    import paho.mqtt.client as mqtt
    import random
    import time
    
    org = "6桁の組織ID"
    device_type = "デバイス・タイプ" #device type
    device_id = "デバイスID" #Defined as "Device ID" in Watson IoT Platform
    auth_token = "18桁のauth-token" #auth token
    
    username = "use-token-auth"
    broker = org + ".messaging.internetofthings.ibmcloud.com"
    client = "d:" + org + ":" + device_type + ":" + device_id
    topic = "iot-2/evt/status/fmt/json"
    
    def on_connect(client, userdata, rc):
        print("Connected with result code "+str(rc))
    
    def on_message(client, userdata, msg):
        print(msg.topic+" "+str(msg.payload))
    
    def publish():
        cnt = 1
        while 1:
                temp = random.randrange(250,450)/10.0
                humid = random.randrange(500,1000)/10.0
                print "counter = " + str(cnt) + ", temp = " + str(temp) + ", humid = " + str(humid)
                msg = " {\"d\": {\"Counter\": " + str(cnt) + ",\"Temperature\": " + str(temp) +",\"Humidity\": " + str(humid) + "} }"
                client.publish(topic, msg, 0, True)
                cnt = cnt + 1
                time.sleep(2)
    
    if __name__ == '__main__':
    
        client = mqtt.Client(client_id=client, clean_session=True, protocol=mqtt.MQTTv311)
        client.username_pw_set(username, password=auth_token)
        client.on_connect = on_connect
        client.on_message = on_message
    
        client.connect(broker, 1883, 60)
        publish()
    
    
  • 공유 구독하는 응용 프로그램 클라이언트
  • Watson IoT Platform에서 공유 구독을 사용하려면 아래와 같이 클라이언트 이름을 "A"로 시작하십시오 (다른 설정은 필요하지 않습니다)

  • 02_appl_shared_sub.py
    import paho.mqtt.client as mqtt
    
    org = "6桁の組織ID"
    applId = "アプリ名(「shared_sub_appl」など)"
    api_key = "「a-組織ID-10桁」形式のAPIキー" #API key
    auth_token = "18桁のauth-token値" #auth-token
    
    broker = org + ".messaging.internetofthings.ibmcloud.com"
    # Only "A" was the key. No other change was needed. 17/04/24
    client = "A:" + org + ":" + applId
    topic = "iot-2/type/デバイス・タイプ/id/+/evt/status/fmt/json"
    
    
    def on_connect(client, userdata, rc):
        print("Connected with result code "+str(rc))
    
        client.subscribe(topic)
    
    def on_message(client, userdata, msg):
        print(msg.topic+" "+str(msg.payload))
    
    if __name__ == '__main__':
    
        client = mqtt.Client(client_id=client, clean_session=True, protocol=mqtt.MQTTv311)
        client.username_pw_set(api_key, password=auth_token)
        client.on_connect = on_connect
        client.on_message = on_message
    
        client.connect(broker, 1883, 60)
        client.loop_forever()
    
    

    결과 확인


  • 01_dev_pub.py를 한 인스턴스 실행하고 여러 02_appl_shared_sub.py를 실행하여 공유 구독이 작동하는지 확인합니다
  • 게시 된 01_dev_pub.py의 출력

  • -공유 구독하고 있던 02_appl_shared_sub.py 첫째로부터의 출력


    -공유 구독하고 있던 02_appl_shared_sub.py 두 번째로부터의 출력


    -공유 구독하고 있던 02_appl_shared_sub.py 세 번째로부터의 출력

  • 각 메시지가 특정 구독자에게만 전파되는지 확인할 수 있습니다.
  • 좋은 웹페이지 즐겨찾기