Californium
Jump to navigation
Jump to search
Californium is a CoAP framework in Java for Stronger IoT devices
- http://people.inf.ethz.ch/mkovatsc/californium.php
- https://github.com/eclipse/Californium
- OSGi bundle (embedding a CoAP server) publishing Ressource services https://github.com/eclipse/californium/tree/master/californium-osgi
Presentation at EclipseCon 2014 Toulouse : http://goo.gl/LLQ03w
Presentation at PhD Summer school on SmartCities 2014 (more detailed) : http://goo.gl/anfy5w
Examples
Server example
// author : Matthias Kovatsch
package step2;
import org.eclipse.californium.core.CoapResource;
import org.eclipse.californium.core.CoapServer;
import org.eclipse.californium.core.server.resources.CoapExchange;
import static org.eclipse.californium.core.coap.CoAP.ResponseCode.*;
public class HelloWorld2 {
public static void main(String[] args) {
// binds on UDP port 5683
CoapServer server = new CoapServer();
// "hello"
server.add(new HelloResource());
// "subpath/Another"
CoapResource path = new CoapResource("subpath");
path.add(new AnotherResource());
server.add(path);
// "removeme!, "time", "writeme!"
server.add(new RemovableResource(), new TimeResource(), new WritableResource());
server.start();
}
public static class HelloResource extends CoapResource {
public HelloResource() {
// resource identifier
super("Hello");
// set display name
getAttributes().setTitle("Hello-World Resource");
}
@Override
public void handleGET(CoapExchange exchange) {
exchange.respond("Hello world!");
}
}
public static class AnotherResource extends CoapResource {
public AnotherResource() {
// resource identifier
super("Another");
// set display name
getAttributes().setTitle("Another Hello-World Resource");
}
@Override
public void handleGET(CoapExchange exchange) {
exchange.respond("Fun with CoAP!");
}
}
public static class RemovableResource extends CoapResource {
public RemovableResource() {
super("removeme!");
}
@Override
public void handleDELETE(CoapExchange exchange) {
delete();
exchange.respond(DELETED);
}
}
public static class TimeResource extends CoapResource {
public TimeResource() {
super("time");
}
@Override
public void handleGET(CoapExchange exchange) {
exchange.respond(String.valueOf(System.currentTimeMillis()));
}
}
public static class WritableResource extends CoapResource {
public String value = "to be replaced";
public WritableResource() {
super("writeme!");
}
@Override
public void handleGET(CoapExchange exchange) {
exchange.respond(value);
}
@Override
public void handlePUT(CoapExchange exchange) {
byte[] payload = exchange.getRequestPayload();
try {
value = new String(payload, "UTF-8");
exchange.respond(CHANGED, value);
} catch (Exception e) {
e.printStackTrace();
exchange.respond(BAD_REQUEST, "Invalid String");
}
}
}
}
Client example
// author : Matthias Kovatsch
package step3;
import org.eclipse.californium.core.CoapClient;
import org.eclipse.californium.core.CoapResponse;
public class HelloWorldClient {
public static void main(String[] args) {
CoapClient client = new CoapClient("coap://localhost/Hello");
CoapResponse response = client.get();
if (response!=null) {
System.out.println( response.getCode() );
System.out.println( response.getOptions() );
System.out.println( response.getResponseText() );
} else {
System.out.println("Request failed");
}
}
}