dart_wot 0.10.0 copy "dart_wot: ^0.10.0" to clipboard
dart_wot: ^0.10.0 copied to clipboard

outdated

A W3C Web of Things implementation written in Dart. Supports interacting with Things using CoAP and HTTP(S).

Build codecov

dart_wot #

dart_wot is an implementation of the Web of Things Scripting API modelled after the WoT reference implementation node-wot. At the moment, it supports interacting with Things using the Constrained Application Protocol (CoAP) and the Hypertext Transfer Protocol (HTTP).

Features #

You can fetch and consume Thing Descriptions, and read and write properties as well as invoking actions offered by a Thing. Both exposing and discovering Things is not yet supported but will be added in future versions.

Getting started #

To get started, you first need to install the package by adding it to your pubspec.yaml file. You can use dart pub add dart_wot (for a Dart project) or flutter pub add dart_wot (for a Flutter project) to do so.

You can then use the package in your project by adding import 'package:dart_wot/dart_wot.dart' to your source files.

Usage #

Below you can find a very basic example for reading a status from a Thing (using the coap.me test server). To do so, a Thing Description JSON string is first parsed and turned into a ThingDescription object, which is then passed to a WoT runtime created by a Servient with CoAP support.

import 'dart:async';
import 'dart:io';

import 'package:dart_wot/dart_wot.dart';

FutureOr<void> main(List<String> args) async {
  final CoapClientFactory coapClientFactory = CoapClientFactory(null);
  final servient = Servient()..addClientFactory(coapClientFactory);
  final wot = await servient.start();

  final thingDescriptionJson = '''
  {
    "@context": "http://www.w3.org/ns/td",
    "title": "Test Thing",
    "base": "coap://coap.me",
    "security": ["nosec_sc"],
    "securityDefinitions": {
      "nosec_sc": {
        "scheme": "nosec"
      }
    },
    "properties": {
      "status": {
        "forms": [
          {
            "href": "/.well-known/core"
          }
        ]
      }
    }
  }
  ''';

  final thingDescription = ThingDescription(thingDescriptionJson);
  final consumedThing = await wot.consume(thingDescription);
  final status = await consumedThing.readProperty("status", null);
  final value = await status.value();
  print(value);
  exit(0);
}

A more complex example can be found in the example directory.

Additional information #

The package will be extended gradually over the upcoming months. Support for exposing and discovering Things will be added as well as more protocols (especially coaps://) and security schemes.

Contributions are very welcome. You will soon be able to find guidelines for contributing to the package in a CONTRIBUTING file. Until then you can already file issues for pointing out bugs or requesting features. You can also open PRs; these have to adhere the defined coding style and linter rules. Contributions will licensed according to the project licenses (see below).

License #

dart_wot is licensed under the 3-Clause BSD License. See the LICENSE file for more information.

SPDX-License-Identifier: BSD-3-Clause

Note on Third-Party Code #

This software includes material copied from Eclipse Thingweb node-wot (https://github.com/eclipse/thingweb.node-wot). Copyright (c) 2018 Contributors to the Eclipse Foundation

Contribution #

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.

Maintainers #

This project is currently maintained by the following developers:

Name Email Address GitHub Username
Jan Romann jan.romann@uni-bremen.de JKRhb
2
likes
0
pub points
34%
popularity

Publisher

verified publisherthingweb.io

A W3C Web of Things implementation written in Dart. Supports interacting with Things using CoAP and HTTP(S).

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

cbor, coap, http, http_auth, http_parser, typed_data, uuid

More

Packages that depend on dart_wot