0.8.13 • Published 22 days ago

@node-wot/binding-coap v0.8.13

Weekly downloads
40
License
EPL-2.0 OR W3C-20...
Repository
github
Last release
22 days ago

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/

0.8.13

22 days ago

0.8.12

3 months ago

0.8.11

4 months ago

0.8.9

7 months ago

0.8.8

8 months ago

0.8.10

6 months ago

0.8.7

11 months ago

0.8.6

12 months ago

0.8.5

1 year ago

0.8.4

1 year ago

0.8.3

1 year ago

0.8.2

2 years ago

0.8.1

2 years ago

0.8.0

2 years ago

0.7.8

3 years ago

0.7.7

3 years ago

0.7.6

3 years ago

0.7.5

3 years ago

0.7.4

3 years ago

0.7.3

4 years ago

0.7.2

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago

0.7.0-SNAPSHOT.6

4 years ago

0.7.0-SNAPSHOT.5

4 years ago

0.7.0-SNAPSHOT.4

4 years ago

0.7.0-SNAPSHOT.3

4 years ago

0.7.0-SNAPSHOT.2

4 years ago

0.6.3-SNAPSHOT.2

5 years ago

0.7.0-SNAPSHOT.1

5 years ago

0.6.2

5 years ago

0.6.2-SNAPSHOT.1

5 years ago

0.6.1

5 years ago

0.6.0

5 years ago

0.5.1

5 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.0

6 years ago

0.3.0-RC.1

6 years ago