- Notifications
You must be signed in to change notification settings - Fork34
CoAP Java library
License
Apache-2.0, Unknown licenses found
Licenses found
PelionIoT/java-coap
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This repository is under minimal maintenance.There is a more actively developed version available athttps://github.com/open-coap/java-coap - you might want to check that repository out.There are API differences, though.
This library makes it easy to integrate a Java SE enabled device with CoAP based services likeIzuma Networks Device Management.It can also help to emulate an embedded device for prototyping and testing purposes.
The following features are supported by the library:
- Complete CoAP support
- CoRE Link Format processing API
- Constrained RESTful Environments (CoRE) Link FormatRFC 6690
- CoAP server mode
- CoAP client mode
- Coap over tcp, tlsRFC 8323
- excluding: websockets, observations with BERT blocks
- Network transports:
- UDP (plain text)
- TCP (plain text)
- TLS
- LwM2M TLV and JSON data formats
- JRE 8
- JRE 11
- JDK 8
- maven 3.x
Add repository to build file:
<repositories><repository> <id>jitpack.io</id> <url>https://jitpack.io</url></repository></repositories>
Add dependency into yourpom.xml
:
<dependency> <groupId>com.mbed.java-coap</groupId> <artifactId>coap-core</artifactId> <version>{VERSION}</version></dependency>
To initialize a server, you must at minimum define the port number. You must set the server parameters before starting a server.
CoapServer server = CoapServer.builder().transport(5683).build();server.start();
To stop a server, use thestop()
method.
server.stop();
You can add handlers before or while the server is running. There can be several URI paths assigned to the same handler.You can also remove a handler at any time.
CoapHandler handler = new ReadOnlyCoapResource("24");server.addRequestHandler("/temperature", handler);server.removeRequestHandler(handler);
To create a CoAP resource, you must implement aCoapHandler
. There is one abstract helper classCoapResource
that can be extended. At minimum, implement theget()
method.
The following example overridesget()
andput()
and creates a simple CoAP resource:
public class SimpleCoapResource extends CoapResource { private String body="Hello World"; @Override public void get(CoapExchange ex) throws CoapCodeException { ex.setResponseBody("Hello World"); ex.setResponseCode(Code.C205_CONTENT); ex.sendResponse(); } @Override public void put(CoapExchange ex) throws CoapCodeException { body = ex.getRequestBodyString(); ex.setResponseCode(Code.C204_CHANGED); ex.sendResponse(); }}
To make a CoAP request, use the classCoapClient
. It uses fluent API. The following is a simple example on the usage:
CoapClient client = CoapClientBuilder.newBuilder(new InetSocketAddress("localhost",5683)).build();CoapPacket coapResp = client.resource("/s/temp").sync().get();coapResp = client.resource("/a/relay").payload("1", MediaTypes.CT_TEXT_PLAIN).sync().put(); //it is important to close connection in order to release socketclient.close();
Thisexample client demonstrates how to build coap client.
Ubuntu has IP addresses for localhost,127.0.0.1
and127.0.1.1
.This causes problems with CoAP packets, the request and response address does not match.Change both addresses to127.0.0.1
or comment or remove the latter from/etc/hosts
and change hostname to localhost.
To check hostname:
hostname
To change hostname to localhost:
sudo hostname localhost
mvn clean install
mvn clean install -P ci
mvn com.mycila:license-maven-plugin:format
All contributions are Apache 2.0. Only submit contributions where you have authored all of the code. If you do this on work time make sure your employer is OK with this.
Unless specifically indicated otherwise in a file, files are licensed under the Apache 2.0 license,as can be found in:LICENSE
About
CoAP Java library