2017-05-20 33 views
0

我試圖做一個簡單的實現使用庫拉的DataService的庫拉DataService的簡單實現

這裏是java類我做LampuPintar.java

package org.eclipse.kura.smarthome.lampupintar; 
import org.eclipse.kura.data.DataService; 
import org.osgi.service.component.ComponentContext; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public class LampuPintar { 
    private DataService m_dataservice; 

    private static final Logger s_logger = LoggerFactory.getLogger(LampuPintar.class); 

    private static final String APP_ID = "lampupintar"; 

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

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

    protected void activate(ComponentContext componentContext) { 
     s_logger.info("Bundle " + APP_ID + " has started!"); 
     s_logger.debug(APP_ID + ": This is a debug message."); 
    } 

    protected void deactivate(ComponentContext componentContext) { 
     s_logger.info("Bundle " + APP_ID + " has stopped!"); 
    } 

    public void publish() { 
     String topic = "smarthome/lampupintar"; 
     String payload = "Hello"; 
     int qos = 2; 
     boolean retain = false; 
     for (int i=0; i<20;i++){ 
      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); 
      } 
     } 

    } 
} 

,這是組件定義文件,組件.xml

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" 
    activate="activate" deactivate="deactivate" 
    name="org.eclipse.kura.smarthome.lampupintar"> 
<implementation class="org.eclipse.kura.smarthome.lampupintar.LampuPintar"/> 
<reference bind="setDataService" 
    cardinality="1..1" 
    interface="org.eclipse.kura.data.DataService" 
    name="DataService" 
    policy="static" 
    unbind="unsetDataService"/> 
</scr:component> 

我試過用這些文件做一個項目s,我成功創建了.dp文件並將其安裝到Kura Web UI,但它似乎什麼都沒顯示,也沒有向代理髮送任何內容(我在蚊子代理控制檯中進行了檢查)。

這些代碼有什麼問題?或者從這些代碼錯過的東西,使其完成並正常工作?

謝謝。

回答

0

您是否檢查過日誌文件(/var/log/kura.log和/var/log/kura-console.log)?您是否在日誌中看到您的「發佈正常」消息?你也可以使用'ss'和'ls'命令來檢查你的包與OSGi控制檯(telnet localhost 5002)。這將顯示包是否正確解析。

我還會添加DataServiceListener [1]。這將有助於使用DataService跟蹤事件。

[1] http://download.eclipse.org/kura/docs/api/3.0.0/apidocs/org/eclipse/kura/data/listener/DataServiceListener.html