Пример теплицы Eclipse Kura
Я учусь использовать куру с Coap. Я скачал и скомпилировал пример "GreenHouse". После этого я установил файл dp в Kura с помощью веб-интерфейса и попробовал подключить пример с помощью coap-клиента. Но клиент coap ничего не получил, а сервер coap теплицы не активировался. Я прочитал kura.log и не нашел информацию о методе "активировать" и "деактивировать". Вот код Спасибо за помощь.
Component.xml проекта "org.eclipse.iot.my.sensors.raspberry" выглядит следующим образом:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Raspberrypi
Bundle-SymbolicName: org.eclipse.iot.my.sensors.raspberrypi
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-NativeCode: linux-arm/libdht11sensor.so
Import-Package: org.eclipse.iot.my.sensors,
org.slf4j;version="1.7.21"
Bundle-ClassPath: libs/pi4j-core.jar,
libs/pi4j-device.jar,
libs/pi4j-gpio-extension.jar,
libs/jna-4.2.2.jar
Service-Component: OSGI-INF/component.xml
Bundle-Activator: org.eclipse.iot.my.sensors.raspberrypi.Pi4jMySensorService
Component.xml проекта "org.eclipse.iot.my.sensors.coap" выглядит следующим образом:
<?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.iot.my.coap" enabled="true"
immediate="true">
<implementation class="org.eclipse.iot.my.coap.MyCoapServer"/>
<service>
<provide interface="org.eclipse.iot.my.sensors.SensorChangedListener"/>
</service>
<reference bind="setSensorService" cardinality="1..1" interface="org.eclipse.iot.my.sensors.SensorService" name="SensorService" policy="static" unbind="unsetSensorService"/>
</scr:component>
Активировать и деактивировать прототип можно следующим образом:
protected void activate(ComponentContext componentContext) {
s_logger.info("Activating GreenhouseCoapServer...");
}
protected void deactivate(ComponentContext componentContext)
{
}
Код клиента Coap выглядит следующим образом:
package com.mycoap.client;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.eclipse.californium.core.CoapClient;
import org.eclipse.californium.core.CoapResponse;
import org.eclipse.californium.core.Utils;
public class CoAPTest {
/*
* Application entry point.
*
*/
public static void main(String args[]) {
URI uri = null; // URI parameter of the request
// input URI from command line arguments
try
{
uri = new URI("coap://192.168.1.121:5683/");
} catch (URISyntaxException e)
{
System.err.println("Invalid URI: " + e.getMessage());
System.exit(-1);
}
CoapClient client = new CoapClient(uri);
CoapResponse response = client.get();
if (response!=null)
{
System.out.println(response.getCode());
System.out.println(response.getOptions());
if (args.length > 1)
{
try (FileOutputStream out = new FileOutputStream("coap://192.168.1.121:5683"))
{
out.write(response.getPayload());
}
catch (IOException e)
{
e.printStackTrace();
}
}
else {
System.out.println(response.getResponseText());
System.out.println(System.lineSeparator() + "ADVANCED" + System.lineSeparator());
// access advanced API with access to more details through
// .advanced()
System.out.println(Utils.prettyPrint(response));
}
}
else
{
System.out.println("No response received.");
}
}
}
Результат приведенного выше кода:
Любые советы будут оценены!
С наилучшими пожеланиями LiYi