2016-04-14 5 views
1

In Bluemix habe ich eine java_buildpack-Anwendung, die derzeit eine Nachricht von einem Message Hub-Thema abholt/konsumiert und ich möchte diese Nachricht jetzt neu formatieren und sie auf einem Mqtt-Client veröffentlichen. Ich habe den Internet of Things Platform-Service an meine Anwendung "java_buildpack" gebunden und einen Gerätetyp, javaDevice, und die Geräte-ID javaDevice01 erstellt.Wie publizieren Sie mit Java in einem MQTT-Thema im IoT?

Hier ist die Umgebungsvariablen für meinen IOTF-Service:

"IOTF-Service": [{ "name": "Internet der Dinge Platform-oder", "label": "IOTF-Service" , "plan": "iotf-service-free", "Anmeldeinformationen": { "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 " }}

Wenn ich die Instanz des MqttClient schaffen, was soll ich nebenbei werden:

MqttClient mqttClient = new MqttClient(broker, clientId, persistence);

Ich dachte, ich irgendwo für die clientId gelesen, dass es sein sollte:

A:qzfiiy:javaDevice:javaDevice01

Was sollte für Broker übergeben werden? Verwenden Sie diese Umgebungsvariable - "mqtt_host": "qzfiiy.messaging.internetofthings.ibmcloud.com",

Jede Hilfe würde sehr geschätzt werden.

Danke!

Antwort

3

Wenn Sie eine Verbindung als Anwendung herstellen, verwenden Sie die Anwendungskriterien. Wenn Sie eine Verbindung als Gerät herstellen, verwenden Sie die Gerätekriterien (siehe unten).

Für DEVICE: authentifizieren, um eine Client-ID im folgenden Format

d:$org:$type:$id 

MQTT Client-ID d werden müssen: $ org: $ type: $ id

MQTT Benutzername muss use-Token- sein auth

MQTT Passwort muss das Authentifizierungstoken sein: auth-Token (ex: MP $ 08VKz 8rXwnR-Q *)

eine Anwendung authentifiziert in diesem Format eine Client-ID mit:

a:$org:$appId 

Wenn eine MQTT Verbindung herstellen einen API-Schlüssel mit der gilt:

MQTT Client-ID: a: $ org: $ appId

MQTT Benutzername muss die API-Schlüssel sein: a: $ org: apikeyvalue

MQTT Passwort das Authentifizierungstoken sein muss: APItoken

, falls Sie die Themen benötigt, dann die sind wie folgt.

Für Anwendungen, Veranstaltungen Thema ist iot-2/Typ/{Gerätetyp}/id/{device id}/evt/{Ereignistyp}/fmt/{Formattyp}

Für Anwendungen, Befehle Thema ist iot-2/type/{Gerätetyp}/id/{Geräte-ID}/cmd/{Befehlstyp}/fmt/{Formattyp}

Bei Geräten ist das Ereignisthema iot-2/evt/{event Typ}/fmt/{Formattyp}

Bei Befehlen, Befehle Thema ist IOT-2/cmd/{Befehlstyp}/fmt/{Formattyp}

Sie auf das beziehen kann cumentation für weitere Informationen. https://iotf.readthedocs.org/en/latest/?cm_mc_uid=41893914391914121143444&cm_mc_sid_50200000=1460668601

Sie können auch die Java-Client-Bibliothek verwendet werden, die die Funktionalitäten alle APIs und bietet Wrapper https://github.com/ibm-messaging/iot-java/releases?cm_mc_uid=41893914391914121143444&cm_mc_sid_50200000=1460668601

Für MQTT Broker kapselt, müssen Sie {OrgId} .messaging.internetofthings.ibmcloud.com

verwenden