[英]How do you publish to a MQTT topic in IoT using java?
在Bluemix中,我有一個java_buildpack應用程序,它當前從Message Hub主題中獲取/使用消息,現在我想重新格式化該消息並將其發布到Mqtt客戶端。 我有物聯網平台服務綁定到我的java_buildpack應用程序,我創建了一個設備類型,javaDevice和設備ID,javaDevice01。
這是我的iotf服務的環境變量:
“iotf-service”:[{“name”:“物聯網平台 - 或”,“標簽”:“iotf-service”,“plan”:“iotf-service-free”,“憑證”:{“iotCredentialsIdentifier “:”a2g6k39sl6r5“,”mqtt_host“:”qzfiiy.messaging.internetofthings.ibmcloud.com“,”mqtt_u_port“:1883,”mqtt_s_port“:8883,”base_uri“:” https://qzfiiy.internetofthings.ibmcloud.com :443 / api / v0001 “,”http_host“:”qzfiiy.internetofthings.ibmcloud.com“,”org“:”qzfiiy“,”apiKey“:”xxxxxxxxxxxxxxx“,”apiToken“:”xxxxxxxxxxxxxx“}}
當我創建MqttClient的實例時,我應該傳遞什么:
MqttClient mqttClient = new MqttClient(broker, clientId, persistence);
我以為我在clientId的某個地方讀到它應該是這樣的:
A:qzfiiy:javaDevice:javaDevice01
什么應該傳遞給經紀人? 我是否使用此環境變量 - "mqtt_host": "qzfiiy.messaging.internetofthings.ibmcloud.com",
任何幫助將不勝感激。
謝謝!
如果要作為應用程序連接,請使用應用程序條件。 如果作為設備連接,請使用設備標准(見下文)。
對於DEVICE:使用以下格式的客戶端ID進行身份驗證
d:$org:$type:$id
MQTT客戶端ID必須為d:$ org:$ type:$ id
MQTT用戶名必須是use-token-auth
MQTT密碼必須是身份驗證令牌:身份驗證令牌(例如:MP $ 08VKz!8rXwnR-Q *)
APPLICATION使用以下格式的客戶端ID進行身份驗證:
a:$org:$appId
使用API密鑰建立MQTT連接時,以下情況適用:
MQTT客戶端ID:a:$ org:$ appId
MQTT用戶名必須是API密鑰:a:$ org:apikeyvalue
MQTT密碼必須是身份驗證令牌:APItoken
如果您需要主題,那么如下所示。
對於應用程序,事件主題是iot-2 / type / {device type} / id / {device id} / evt / {event type} / fmt / {format type}
對於應用程序,命令主題是iot-2 / type / {device type} / id / {device id} / cmd / {command type} / fmt / {format type}
對於設備,事件主題是iot-2 / evt / {event type} / fmt / {format type}
對於命令,命令主題為iot-2 / cmd / {command type} / fmt / {format type}
您可以參考文檔以獲取更多信息。 https://iotf.readthedocs.org/en/latest/?cm_mc_uid=41893914391914121143444&cm_mc_sid_50200000=1460668601
您還可以使用封裝所有功能的java客戶端庫並提供包裝API https://github.com/ibm-messaging/iot-java/releases?cm_mc_uid=41893914391914121143444&cm_mc_sid_50200000=1460668601
對於MQTT代理,您需要使用{orgid} .messaging.internetofthings.ibmcloud.com
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.