@node-wot/binding-coap
TypeScript icon, indicating that this package has built-in type declarations

0.8.13 • Public • Published

CoAP Protocol Binding of node-wot

W3C WoT Binding Template specification for CoAP can be found here.

Current Maintainer(s): @JKRhb

Protocol specifier

The protocol prefix handled by this binding is coap:// or coaps://.

Getting Started

In the following examples, how to use the CoAP binding of node-wot is shown.

Prerequisites

  • npm install @node-wot/core
  • npm install @node-wot/binding-coap

Client Example

The client example tries to connect to a TestThing via CoAP and read the string property. The Thing Description is located under the following CoAP URI coap://plugfest.thingweb.io:5683/testthing.

node example-client.js

// example-client.js
const { Servient } = require("@node-wot/core");
const { CoapClientFactory } = require("@node-wot/binding-coap");

// create Servient and add CoAP binding
const servient = new Servient();
servient.addClientFactory(new CoapClientFactory());

servient
    .start()
    .then(async (WoT) => {
        try {
            const td = await WoT.requestThingDescription("coap://plugfest.thingweb.io:5683/testthing");
            const thing = await WoT.consume(td);

            // read property
            const read1 = await thing.readProperty("string");
            console.log("string value is: ", await read1.value());
        } catch (err) {
            console.error("Script error:", err);
        }
    })
    .catch((err) => {
        console.error("Start error:", err);
    });

Server Example

The server example produces a thing that allows for setting a property count. The thing is reachable through CoAP.

node example-server.js

// example-server.js
const { Servient } = require("@node-wot/core");
const { CoapServer } = require("@node-wot/binding-coap");

// create Servient add HTTP binding
const servient = new Servient();
servient.addServer(new CoapServer());

servient.start().then((WoT) => {
    WoT.produce({
        title: "MyCounter",
        properties: {
            count: {
                type: "integer",
            },
        },
    }).then((thing) => {
        console.log("Produced " + thing.getThingDescription().title);

        let count = 0;

        // set property handlers (using async-await)
        thing.setPropertyReadHandler("count", async () => count);
        thing.setPropertyWriteHandler("count", async (intOutput) => {
            count = await intOutput.value();
        });

        thing.expose().then(() => {
            console.info(thing.getThingDescription().title + " ready");
            console.info("TD : " + JSON.stringify(thing.getThingDescription()));
        });
    });
});

More Details

See https://github.com/eclipse-thingweb/node-wot/

Readme

Keywords

none

Package Sidebar

Install

npm i @node-wot/binding-coap

Weekly Downloads

71

Version

0.8.13

License

EPL-2.0 OR W3C-20150513

Unpacked Size

117 kB

Total Files

26

Last publish

Collaborators

  • jkrhb
  • cristiano.aguzzi
  • egeko
  • mkovatsc
  • danielpeintner
  • sebastiankb
  • h0ru5