首页 文章

KURA:如何更改MQTT消息格式

提问于
浏览
2

KURA MQTT Cloud 客户端发布关于以下公式(more details)的消息:

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

我想用自己的格式发送MQTT消息,我不想在MQTT消息中发送帐户名和客户端ID .

我怎样才能做到这一点?我已经尝试更改KURA Web界面中的配置 - > MQTTData传输,我删除了“lwt.topic”的内容但没有成功 .

1 回答

  • 4

    直接使用DataService . 请求OSGi将实例注入您的组件 .
    要在组件类中使用的示例代码:

    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);
            }
        }
    }
    

    在你的组件中 OSGI-INF/mycomponent.xml 告诉OSGi通过添加以下内容来调用注入DataService的方法

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

    然后你可以将你需要的主题传递给 DataService.publish(...) . 有效负载必须转换为 byte[] 数组 .

相关问题