[英]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.