2015-07-31 2 views
2

Le client nuage KURA MQTT publie des messages concernant la formule suivante (more details):KURA: comment changer le format des messages MQTT

#account-name/#client-id/#API-ID/topic 

Je veux envoyer des messages MQTT avec mon propre format, je ne veux pas envoyer le nom du compte et l'identifiant du client dans le message MQTT.

Comment puis-je faire cela? J'ai déjà essayé de changer la configuration dans l'interface web KURA -> MQTTData transport et j'ai supprimé le contenu de "lwt.topic" mais sans succès.

Répondre

4

Utilisez le DataService directement. Demandez à OSGi d'injecter l'instance dans votre composant.
Exemple de code à utiliser dans votre classe de composant:

public class MyComponent { 
    private DataService m_dataService; 

    public void setDataService(DataService dataService) { 
     m_dataService = dataService; 
    } 

    public void unsetDataService(DataService dataService) { 
     m_dataService = null; 
    } 

    // activate() deactivate() and all required methods 

    public void publish() { 
     String topic = "your/topic"; 
     String payload = "Hello!"; 
     int qos = 0; 
     boolean retain = false; 
     try { 
      m_dataService.publish(topic, payload.getBytes(), qos, retain, 2); 
      s_logger.info("Publish ok"); 
     } catch (Exception e) { 
      s_logger.error("Error while publishing", e); 
     } 
    } 
} 

Dans votre composant OSGI-INF/mycomponent.xml dire OSGi quelles méthodes pour appeler à injecter le DataService en ajoutant les éléments suivants

<reference name="DataService" 
    interface="org.eclipse.kura.data.DataService" 
    bind="setDataService" 
    unbind="unsetDataService" 
    cardinality="1..1" 
    policy="static" /> 

Ensuite, vous pouvez passer le sujet dont vous avez besoin à DataService.publish(...). Les charges utiles doivent être converties en tableaux byte[].