Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
---
layout: default
title: Developers
group: "navigation"
---
<div>
<h2>Developer Tooling</h2>
<p>
There are various tools developed by the community that are open source and ready to use. They can be used
in different stages of development or development needs and are grouped below.
</p>
<br />
<div class="row center-block">
<div class="col-md-6 text-center">
<a href="#td-tooling"><i class="fas fa-edit fa-4x"></i>
<!-- alternative pen-paintbrush -->
<div class="description">
<h3>TD Tooling</h3>
</div>
</a>
</div>
<div class="col-md-6 text-center">
<a href="#devtools"><i class="fas fa-laptop-code fa-4x"></i>
<div class="description">
<h3>WoT Development Tools</h3>
</div>
</a>
</div>
</div>
<p>&nbsp;</p>
<div class="row center-block">
<div class="col-md-6 text-center">
<a href="#runtime-expose"><i class="fas fa-upload fa-4x"></i>
<div class="description">
<h3>Runtimes for TD Exposers</h3>
</div>
</a>
</div>
<div class="col-md-6 text-center">
<a href="#runtime-consume"><i class="fas fa-download fa-4x"></i>
<div class="description">
<h3>Runtimes for TD Consumers</h3>
</div>
</a>
</div>
</div>
<p>&nbsp;</p>
<div class="row center-block">
<div class="col-md-6 text-center">
<a href="#tdds"><i class="fas fa-database fa-4x"></i>
<div class="description">
<h3>TD Directories</h3>
</div>
</a>
</div>
<div class="col-md-6 text-center">
<a href="#software"><i class="fas fa-puzzle-piece fa-4x"></i>
<!-- server, -->
<div class="description">
<h3>WoT Software and Middleware</h3>
</div>
</a>
</div>
</div>
<p>&nbsp;</p>
<div class="row center-block">
<div class="text-center">
<a href="#others"><i class="fas fa-cubes fa-4x"></i>
<div class="description">
<h3>Others</h3>
<p></p>
</div>
</a>
</div>
</div>
<!--
<p>Alternative</p>
<style type="text/css">
.tg {
border-collapse: collapse;
border-spacing: 0;
}
.tg td {
border-color: black;
border-style: solid;
border-width: 1px;
font-family: Arial, sans-serif;
font-size: 14px;
overflow: hidden;
padding: 10px 5px;
word-break: normal;
}
.tg th {
border-color: black;
border-style: solid;
border-width: 1px;
font-family: Arial, sans-serif;
font-size: 14px;
font-weight: normal;
overflow: hidden;
padding: 10px 5px;
word-break: normal;
}
.tg .tg-vfn0 {
background-color: #efefef;
border-color: #000000;
text-align: left;
vertical-align: top
}
.tg .tg-73oq {
border-color: #000000;
text-align: left;
vertical-align: top
}
</style>
<table class="tg">
<thead>
<tr>
<th class="tg-73oq"></th>
<th class="tg-73oq">TD Tooling<br></th>
<th class="tg-73oq">User Interfaces</th>
<th class="tg-73oq">Development Environment</th>
<th class="tg-73oq">Consumer</th>
<th class="tg-73oq">Exposer</th>
<th class="tg-73oq">TD Directory</th>
<th class="tg-73oq">TD Discovery</th>
<th class="tg-73oq">Gateway Service</th>
<th class="tg-73oq">Testing</th>
<th class="tg-73oq">Simulation</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tg-vfn0">Playground</td>
<td class="tg-vfn0">UI</td>
<td class="tg-vfn0">+<br></td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+<br></td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">Eclipse Edi{TD}or</td>
<td class="tg-73oq">UI</td>
<td class="tg-73oq">+<br></td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">TD-Code</td>
<td class="tg-vfn0">Editor Plugin<br></td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">WoT-JTD</td>
<td class="tg-73oq">Programmatic</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">Eclipse Ditto :: WoT :: Model</td>
<td class="tg-vfn0">Programmatic</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">WoT Application Manager (WAM)</td>
<td class="tg-73oq">-<br></td>
<td class="tg-73oq">-<br></td>
<td class="tg-73oq">+<br></td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">WoT API Development Environment (WADE)</td>
<td class="tg-vfn0">UI</td>
<td class="tg-vfn0">+<br></td>
<td class="tg-vfn0">+<br></td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">+</td>
</tr>
<tr>
<td class="tg-73oq">WoT FXUI</td>
<td class="tg-73oq">-<br></td>
<td class="tg-73oq">+<br></td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">Eclipse Thingweb node-wot</td>
<td class="tg-vfn0">Programmatic</td>
<td class="tg-vfn0">-<br></td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">partially</td>
<td class="tg-vfn0">partially</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">Eclipse Ditto</td>
<td class="tg-73oq">Programmatic</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">SANE WoT Servient</td>
<td class="tg-vfn0">Programmatic</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">WoTPy</td>
<td class="tg-73oq">Programmatic</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">Node-Red Node generator</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">dart_wot</td>
<td class="tg-73oq">?</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">LinkSmart Thing Directory</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">WoTHive Thing Directory</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
<tr>
<td class="tg-vfn0">Siemens-Logilab Thing Directory</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">Shadow Thing</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
</tr>
<tr>
<td class="tg-vfn0">sayWoT!</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">+</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">Test Bench</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">+</td>
<td class="tg-73oq">-<br></td>
</tr>
<tr>
<td class="tg-vfn0">WoT Plugin for AASX Package Explorer</td>
<td class="tg-vfn0">UI</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
<td class="tg-vfn0">-</td>
</tr>
<tr>
<td class="tg-73oq">WoTify</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
<td class="tg-73oq">-</td>
</tr>
</tbody>
</table> -->
<hr>
<h3 id="td-tooling">TD Tooling</h3>
<p>
Tools that allow editing and validation of TDs or that allow parsing them in programming language specific
environments.
</p>
<ul>
<li><a href="http://plugfest.thingweb.io/playground/" target="_blank">Thing Description Playground</a>
- Reference TD Validation suite with additional tools such as OpenAPI generation, linting and more.
</li>
<li><a href="https://eclipse.github.io/editdor/" target="_blank">Eclipse Edi{TD}or</a>
- Web based Editor for easy creation and visualization of Thing Descriptions and Thing Models.
<!-- <li>Try it live <a href="https://eclipse.github.io/editdor/" target="_blank">here</a></li> -->
</li>
<li><a href="https://marketplace.visualstudio.com/items?itemName=arces-wot.td-code" target="_blank">TD code</a>
- Visual Studio Code plugin for TD validation and code snippets.
<!-- See a short presentation about TD Code used together with the <a
href="https://github.com/UniBO-PRISMLab/wam" target="_blank">WoT Application Manager (WAM)</a>:
<a href="WoT%20Application%20Manager.pdf" target="_blank">slides</a> or <a
href="https://youtu.be/bPxIfZo7jns" target="_blank">video</a>. -->
</li>
<li><a href="https://github.com/oeg-upm/wot-jtd" target="_blank">Java API for Thing Descriptions of WoT
(JDTs)</a>
- Java module for creating Java Thing Description ORM from a TD in JSON-LD or RDF triples.
</li>
<li><a href="https://github.com/eclipse/ditto/tree/master/wot/model" target="_blank">Eclipse Ditto :: WoT ::
Model</a>
- Java module for using TDs and TMs.
</li>
<li><a href="https://github.com/sifis-home/wot-td" target="_blank">SIFIS-Home: wot-td</a>
- Rust crate to produce and consume Web of Things Thing Descriptions.
</li>
</ul>
<h3 id="devtools">WoT Development Tools</h3>
<p>Ready-to-use tools that help the development of WoT applications by providing user interfaces and other tooling.</p>
<ul>
<li><a href="https://github.com/UniBO-PRISMLab/wam" target="_blank">WoT Application Manager (WAM)</a>
- CLI tool to quickly set up node-wot application projects. Additional information available at <a
href="WoT%20Application%20Manager.pdf" target="_blank">slides</a> or
<a href="https://youtu.be/bPxIfZo7jns" target="_blank">video</a>.
<!-- See the presentation and video for further information: <a
href="WoT%20Application%20Manager.pdf" target="_blank">slides</a> or
<a href="https://youtu.be/bPxIfZo7jns" target="_blank">video</a> -->
</li>
<li>
<a href="https://github.com/tum-esi/wade" target="_blank">WoT API Development Environment (WADE)</a>
- Desktop application based on node-wot, Vue.js and Electron that allows interaction with Things, profiling,
Mashup
generation.
</li>
<li>
<a href="https://github.com/danielpeintner/wot-fxui" target="_blank">WoT FXUI</a>
- UI for desktop, mobile, browser for interacting with Things based on their TDs.
<!-- <ul>
<li>See <a href="http://plugfest.thingweb.io:8088/test/fullscreen/default" target="_blank">running
Web-UI instance</a></li>
</ul> -->
</li>
</ul>
<h3 id="runtime-expose">Runtime Implementations for TD Exposers</h3>
<p>Software libraries that implement a WoT Runtime so that Things can be built following the WoT paradigms.
</p>
<ul>
<li>
<a href="https://github.com/eclipse/thingweb.node-wot" target="_blank">Eclipse Thingweb node-wot</a>
- W3C Web of Things implementation in Node.js with support for multiple bindings. A website is available at
<a href="http://thingweb.io" target="_blank">Thingweb</a>.
<!-- <ul>
<li><a href="http://plugfest.thingweb.io/webui/" target="_blank">Browsified node-wot</a> (Web UI)</li>
<li>See <a href="http://www.thingweb.io/hands-on.html" target="_blank">hands-on tutorials</a>
and <a href="http://www.thingweb.io/videos.html" target="_blank">videos</a> for node-wot</li>
</ul> -->
</li>
<li><a href="https://www.eclipse.org/ditto/basic-wot-integration.html" target="_blank">WoT Integration for
Eclipse Ditto</a>
- Ditto managed digital twins can be linked to WoT Thing Models from which Ditto can create Thing Descriptions
containing the API descriptions of the twins.
</li>
<li>
<a href="https://github.com/sane-city/wot-servient" target="_blank">SANE WoT Servient</a>
- W3C Web of Things implementation in Java with support for multiple bindings, inspired from node-wot.
</li>
<li>
<a href="https://github.com/agmangas/wot-py" target="_blank">WoTPy</a>
- Experimental W3C Web of Things implementation in Python with support for multiple bindings.
</li>
<li>
<a href="https://github.com/sifis-home/wot-serve" target="_blank">SIFIS-Home: wot-serve</a>
- Rust crate to serve Web of Things Things.
</li>
</ul>
<h3 id="runtime-consume">Runtime Implementations for TD Consumers</h3>
<p>Software libraries that implement a WoT Runtime so that Things can be consumed and custom applications can be built
on top, following the WoT paradigms.</p>
<ul>
<li>
<a href="https://github.com/eclipse/thingweb.node-wot" target="_blank">Eclipse Thingweb node-wot</a>
- W3C Web of Things implementation in Node.js with support for multiple bindings. A website is available at
<a href="http://thingweb.io" target="_blank">Thingweb</a>.
</li>
<li>
<a href="https://github.com/node-red/node-red-nodegen" target="_blank">Node-Red Node generator</a>
- CLI tool to generate WoT Consumer Nodes for <a href="https://nodered.org/" target="_blank">Node-RED</a> from a TD.
Additional information at <a href="wot_nodegen.pptx" target="_blank">slides</a>
or <a href="wot_nodegen.mp4" target="_blank">video</a>.
<!-- <ul>
<li>See a short introduction <a href="wot_nodegen.pptx" target="_blank">slides</a>
or <a href="wot_nodegen.mp4" target="_blank">video</a> for Node Generator</li>
</ul> -->
</li>
<li>
<a href="https://pub.dev/packages/dart_wot" target="_blank">dart_wot</a>
- W3C Web of Things implementation written in Dart with support for HTTP and CoAP.
</li>
<li>
<a href="https://github.com/sane-city/wot-servient" target="_blank">SANE WoT Servient</a>
- W3C Web of Things implementation in Java with support for multiple bindings, inspired from node-wot.
</li>
<li>
<a href="https://github.com/agmangas/wot-py" target="_blank">WoTPy</a>
- Experimental W3C Web of Things implementation in Python with support for multiple bindings.
</li>
</ul>
<h3 id="tdds">TD Directory (TDD) Implementations</h3>
<p>Services that host a Thing Description Directory which implements the W3C WoT Discovery specification.</p>
<ul>
<li>
<a href="https://github.com/linksmart/thing-directory" target="_blank">LinkSmart Thing Directory</a>
- TDD implementation with features such as DNS-SD registration, XPath 3.0 and JSONPath queries, authentication and more.
</li>
<li>
<a href="https://github.com/oeg-upm/wot-hive" target="_blank">WoTHive Thing Directory</a>
- TDD implementation with features such as SPARQL and JSONPath queries, SHACL-based Validation and more.
</li>
<li>
<a href="https://2021.semweb.pro/presentations/siemens-feedback-on-implementing-a-thing-description-repository-using-a-sparql-endpoint/" target="_blank">Siemens-Logilab Thing Directory</a>
- TDD implementation with features such as SPARQL queries, contextual validation and more.
</li>
<li>
<a href="https://github.com/sifis-home/wot-discovery" target="_blank">SIFIS-Home: wot-discovery</a>
- Tiny implementation of WoT Discovery written in Rust.
</li>
<li>
<a href="https://zion.vaimee.it/" target="_blank">Zion</a>
- A scalable Thing Description Directory
</li>
</ul>
<h3 id="software">WoT Software and Middleware</h3>
<p>Ready to use software applications that can be deployed in order to provide a certain functionality in a system, such
as gateway and proxying, simulation, testing services.</p>
<ul>
<li><a href="https://github.com/tum-esi/shadow-thing" target="_blank">Shadow Thing</a>
- CLI based tool for creating and deploying a Thing based on its TD for simulation, proxy or protocol
translation
purposes.
</li>
<li>
<a href="https://www.evosoft.com/en/digitalization-offering/saywot/" target="_blank">sayWoT!</a>
- Industrial-grade implementation that allows integration of devices into Siemens software products.
</li>
<li><a href="https://github.com/tum-esi/testbench" target="_blank">Web of Things Test Bench</a>
- CLI based tool that tests a WoT Thing by executing interactions automatically, based on its TD.
</li>
</ul>
<h3 id="others">Others</h3>
<ul>
<li><a href="https://github.com/admin-shell-io/aasx-package-explorer" target="_blank">WoT Plugin for AASX
Package Explorer</a>
- Plugin to import/export WoT Thing Description into Asset Administration Shell definitions.
</li>
<li><a href="https://wotify.org/" target="_blank">WoTify</a>
- A community based collection of devices that have been WoT-enabled.
</li>
</ul>
</div>