{"id":13341743,"url":"https://github.com/eclipse-thingweb/dart_wot","last_synced_at":"2025-08-24T08:30:35.021Z","repository":{"id":36950761,"uuid":"422606704","full_name":"eclipse-thingweb/dart_wot","owner":"eclipse-thingweb","description":"Framework to build Web of Things applications in Dart and Flutter.","archived":false,"fork":false,"pushed_at":"2024-12-12T21:39:14.000Z","size":1257,"stargazers_count":15,"open_issues_count":11,"forks_count":3,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-12-12T22:28:49.332Z","etag":null,"topics":["coap","dart","flutter","internetofthings","iot","web-of-things","wot"],"latest_commit_sha":null,"homepage":"https://thingweb.io","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-thingweb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-29T14:31:17.000Z","updated_at":"2024-12-12T18:55:01.000Z","dependencies_parsed_at":"2023-11-20T11:30:52.966Z","dependency_job_id":"b775974c-d58f-45cd-8991-fe770afe5dee","html_url":"https://github.com/eclipse-thingweb/dart_wot","commit_stats":null,"previous_names":["eclipse-thingweb/dart_wot","namib-project/dart_wot"],"tags_count":62,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-thingweb%2Fdart_wot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-thingweb%2Fdart_wot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-thingweb%2Fdart_wot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-thingweb%2Fdart_wot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-thingweb","download_url":"https://codeload.github.com/eclipse-thingweb/dart_wot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230785871,"owners_count":18279937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coap","dart","flutter","internetofthings","iot","web-of-things","wot"],"created_at":"2024-07-29T19:25:43.750Z","updated_at":"2024-12-22T02:16:35.045Z","avatar_url":"https://github.com/eclipse-thingweb.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![pub package](https://img.shields.io/pub/v/dart_wot.svg)](https://pub.dev/packages/dart_wot)\n[![Build](https://github.com/eclipse-thingweb/dart_wot/actions/workflows/ci.yml/badge.svg)](https://github.com/eclipse-thingweb/dart_wot/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/eclipse-thingweb/dart_wot/branch/main/graph/badge.svg?token=76OBNOVL60)](https://codecov.io/gh/eclipse-thingweb/dart_wot)\n[![style: lint](https://img.shields.io/badge/style-lint-4BC0F5.svg)](https://pub.dev/packages/lint)\n[![Adopters](https://img.shields.io/badge/Show%20Adopters%20and%20Users-%2331b8a3ff?logoColor=31b8a3ff)](#adopters)\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/eclipse-thingweb/thingweb/main/brand/logos/dart_wot_for_dark_bg.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/eclipse-thingweb/thingweb/main/brand/logos/dart_wot.svg\"\u003e\n  \u003cimg title=\"Thingweb dart_wot \" alt=\"Thingweb dart_wot logo\" src=\"https://raw.githubusercontent.com/eclipse-thingweb/thingweb/main/brand/logos/dart_wot.svg\" width=\"300\"\u003e\n\u003c/picture\u003e\n\n# dart_wot\n\ndart_wot is an implementation of the\nWeb of Things [Scripting API](https://w3c.github.io/wot-scripting-api/) modelled\nafter the WoT reference implementation\n[node-wot](https://github.com/eclipse-thingweb/node-wot).\nAt the moment, it supports interacting with Things using the Constrained Application\nProtocol (CoAP), the Hypertext Transfer Protocol (HTTP), and the MQTT protocol.\n\n## Features\n\nYou can consume Thing Descriptions and interact with a Thing based on its\nexposed Properties, Actions, and Events.\nDiscovery support is currently limited to the \"direct\" method (i.e. fetching a\nTD using a single URL).\nExposing Things is not yet supported but will be added in future versions.\n\nUsing the Protocol Interfaces in the `core` package, you can add support for\nadditional protocols in your own application or library. The main requirement\nfor this to work is the existence of a URI scheme for the given protocol.\n\n## Getting started\n\nTo get started, you first need to install the package by adding it to your\n`pubspec.yaml` file.\nYou can use `dart pub add dart_wot` (for a Dart project) or\n`flutter pub add dart_wot` (for a Flutter project) to do so.\n\nYou can then use the package in your project by adding\n`import 'package:dart_wot/dart_wot.dart'` to your source files.\n\n## Usage\n\nBelow you can find a basic example for incrementing and reading the value of a\ncounter Thing, which is part of the\n[Thingweb Online Things](https://www.thingweb.io/services).\n\nIn the example, we first create a WoT runtime using a `Servient` with CoAP and\nHTTP support.\nWith the runtime, we then retrieve a TD (using the `requestThingDescription()`\nmethod) and consume it (using the `consume()` method), creating a\n`ConsumedThing` object,\nAfterward, the actual interactions with the counter are performed by calling the\n`invokeAction()` and `readProperty()` methods on the `ConsumedThing`.\n\n```dart\nimport \"package:dart_wot/binding_coap.dart\";\nimport \"package:dart_wot/binding_http.dart\";\nimport \"package:dart_wot/core.dart\";\n\nFuture\u003cvoid\u003e main(List\u003cString\u003e args) async {\n  final servient = Servient.create(\n    clientFactories: [\n      CoapClientFactory(),\n      HttpClientFactory(),\n    ],\n  );\n  final wot = await servient.start();\n\n  final url = Uri.parse(\"coap://plugfest.thingweb.io/counter\");\n  print(\"Requesting TD from $url ...\");\n  final thingDescription = await wot.requestThingDescription(url);\n\n  final consumedThing = await wot.consume(thingDescription);\n  print(\n    \"Successfully retrieved and consumed TD with title \"\n    '\"${thingDescription.title}\"!',\n  );\n\n  print(consumedThing.thingDescription.events);\n  final subscription = await consumedThing.subscribeEvent(\"change\", print);\n\n  print(\"Incrementing counter ...\");\n  await consumedThing.invokeAction(\"increment\");\n\n  final status = await consumedThing.readProperty(\"count\");\n  final value = await status.value();\n  print(\"New counter value: $value\");\n\n  await subscription.stop();\n}\n```\n\nMore complex examples can be found in the `example` directory.\n\n## License\n\n`dart_wot` is licensed under the 3-Clause BSD License.\nSee the `LICENSE` file for more information.\n\n    SPDX-License-Identifier: BSD-3-Clause\n\n## Acknowledgements\n\n`dart_wot` was inspired by Eclipse Thingweb\n[node-wot](https://github.com/eclipse/thingweb.node-wot), a W3C Web of Things\nimplementation for the Node.js ecosystem.\n\n## Contribution\n\nPlease refer to our [contribution guidelines](CONTRIBUTING.md) for more details.\n\n## Adopters\n\nIf you are using Eclipse Thingweb dart_wot within your organization, please\nsupport us by adding your logo to the\n[Eclipse IoT adopters list](https://iot.eclipse.org/adopters/#iot.thingweb).\nTo do so, simply open an issue at\n[the Eclipse Gitlab](https://gitlab.eclipse.org/eclipsefdn/it/api/eclipsefdn-project-adopters/-/issues/new?issuable_template=adopter_request)\nby providing the name of your organization, its logo, and a link to your\norganization or team.\nYou should be affiliated with that organization for the issue to be implemented.\n\n## Maintainers\n\nThis project is currently maintained by the following developers:\n\n|    Name    |     Email Address    |                GitHub Username               |\n|:----------:|:--------------------:|:--------------------------------------------:|\n| Jan Romann | jan.romann@uni-bremen.de | [JKRhb](https://github.com/JKRhb) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-thingweb%2Fdart_wot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-thingweb%2Fdart_wot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-thingweb%2Fdart_wot/lists"}