2017-05-20 12 views
0

나는 여기 쿠라 DataService의 간단한 구현

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

    } 
} 

만든 자바 클래스입니다 쿠라의 DataService를 사용하는 간단한 구현을 시도하고이 구성 요소 정의 파일, 구성 요소입니다 .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에 설치했지만 브로커에게 아무 것도 보내지 않았으며 (모스 to토 브로커 콘솔에서 확인한 것) 보이지 않는 것 같습니다.

그 코드에 무슨 문제가 있습니까? 또는 무언가는 그 코드에서 완성되어 제대로 작동하도록하지 않습니까?

감사합니다.

답변

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