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"); } } }