나는 여기 쿠라 DataService의 간단한 구현
내가 LampuPintar.javapackage 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토 브로커 콘솔에서 확인한 것) 보이지 않는 것 같습니다.
그 코드에 무슨 문제가 있습니까? 또는 무언가는 그 코드에서 완성되어 제대로 작동하도록하지 않습니까?
감사합니다.