Californium
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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"); } } }