Skip to content

Commit

Permalink
prepare Ditto 3.2.0 release
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Jaeckle <thomas.jaeckle@beyonnex.io>
  • Loading branch information
thjaeckle authored and Stanchev Aleksandar committed Mar 13, 2023
1 parent a0fd0f1 commit 7db85d7
Show file tree
Hide file tree
Showing 25 changed files with 284 additions and 53 deletions.
2 changes: 1 addition & 1 deletion documentation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ bundle exec jekyll serve --verbose --unpublished
Validate that the HTML does not contain dead links, etc.:

```bash
htmlproofer --assume-extension --allow-hash-href --disable-external --enforce-https=false --ignore-urls "/http-api-doc.html.*/" src/main/resources/_site/
htmlproofer --assume-extension --allow-hash-href --disable-external --ignore-urls "/http-api-doc.html.*/","http://localhost:4000/feed.xml","http://www.ontology-of-units-of-measure.org/page/om-2" src/main/resources/_site/
```

#### Alternative 2: use Maven (UNIX)
Expand Down
2 changes: 2 additions & 0 deletions documentation/src/main/resources/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ plugins:
docVersions:
- label: "development"
basePath: ""
- label: "3.2"
basePath: "3.2"
- label: "3.1"
basePath: "3.1"
- label: "3.0"
Expand Down
4 changes: 2 additions & 2 deletions documentation/src/main/resources/_data/authors.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
thomas_jaeckle:
name: Thomas Jäckle
email: ditto@jaeckles.de
email: thomas.jaeckle@beyonnex.io
web: https://github.com/thjaeckle

florian_fendt:
Expand All @@ -10,7 +10,7 @@ florian_fendt:

juergen_fickel:
name: Jürgen Fickel
email: juergen.fickel@bosch.io
email: eclipse-foundation@retujo.de
web: https://github.com/jufickel-b

philipp_michalski:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ entries:
- title: Release Notes
output: web
folderitems:
- title: 3.2.0
url: /release_notes_320.html
output: web
- title: 3.1.2
url: /release_notes_312.html
output: web
Expand Down
14 changes: 7 additions & 7 deletions documentation/src/main/resources/_includes/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
<title>{% if page.title %} {% if page.layout == "post" %} {{ page.title }} • {{ site.topnav_title }}{% else %} {{ page.title }} • {{ site.short_title }}{% endif %}{% else %}{{ site.site_title }}{% endif %}</title>

<link rel="stylesheet" href="{{ "css/syntax.css" }}">
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="css/modern-business.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="css/customstyles.css">
<link rel="stylesheet" href="css/boxshadowproperties.css">
<link rel="stylesheet" href="css/theme-ditto.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700">

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/anchor-js/2.0.0/anchor.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/2.0.0/anchor.min.js" crossorigin="anonymous"></script>
<script src="{{ "js/toc.js" }}"></script>
<script src="{{ "js/customscripts.js" }}"></script>

Expand All @@ -36,5 +36,5 @@
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.url }}">

<!-- Eclipse Foundation cookie consent: -->
<link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
<script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
2 changes: 1 addition & 1 deletion documentation/src/main/resources/_includes/topnav.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
<input type="text" id="search-input" placeholder="search...">
<ul id="results-container"></ul>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/simple-jekyll-search/0.0.9/jekyll-search.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/simple-jekyll-search/0.0.9/jekyll-search.js" type="text/javascript"></script>
<script type="text/javascript">
SimpleJekyllSearch.init({
searchInput: document.getElementById('search-input'),
Expand Down
2 changes: 1 addition & 1 deletion documentation/src/main/resources/_layouts/start.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
$('[data-toggle="tooltip"]').tooltip()
})
</script>
<script src="//iot.eclipse.org/assets/js/eclipsefdn.adopters.js"></script>
<script src="https://iot.eclipse.org/assets/js/eclipsefdn.adopters.js"></script>
<script>
eclipseFdnAdopters.getList({
project_id: "iot.ditto",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ For diving deeper into feature definitions, please have a look at [Basic concept

However, nothing can stop you from enforcing types by yourself:

1. Use the [Ditto generator](http://vorto.eclipse.org/#/generators) to generate JSON schema files from your Vorto
1. Use the Ditto generator to generate JSON schema files from your Vorto
model(s).
2. Identify the schema files to be used by the Feature definition identifiers.
3. Validate the JSON representation of your feature using the JSON schema before sending it over the wire.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ or `WebSocket`.
This blog post walks through the steps required to connect Ditto and Hono by adding a connection between the Hono and
Ditto sandboxes at

* [hono.eclipse.org](http://hono.eclipse.org)
* [hono.eclipse.org](https://hono.eclipseprojects.io)
* [ditto.eclipseprojects.io](https://ditto.eclipseprojects.io)


Expand Down Expand Up @@ -79,15 +79,15 @@ the Hono documentation.
First of all, create a new Hono tenant (we chose the tenant name `org.eclipse.ditto`):

```bash
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"tenant-id": "org.eclipse.ditto"}' http://hono.eclipse.org:28080/tenant
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"tenant-id": "org.eclipse.ditto"}' https://hono.eclipseprojects.io:28080/tenant
```

### Register a device

Register a new device in Hono (we chose the device-id `demo-device`):

```bash
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"device-id": "demo-device"}' http://hono.eclipse.org:28080/registration/org.eclipse.ditto
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"device-id": "demo-device"}' https://hono.eclipseprojects.io:28080/registration/org.eclipse.ditto
```

### Add a device credential
Expand All @@ -107,16 +107,16 @@ $ curl -X POST -i -H 'Content-Type: application/json' -d '{
"hash-function" : "sha-512",
"pwd-hash": "'$PWD_HASH'"
}]
}' http://hono.eclipse.org:28080/credentials/org.eclipse.ditto
}' https://hono.eclipseprojects.io:28080/credentials/org.eclipse.ditto
```

### Publish data

You are now able to publish `telemetry` (or also `event`) data via the Hono HTTP adapter:

```bash
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"temp": 23.07}' http://hono.eclipse.org:8080/telemetry
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"hum": 45.85}' http://hono.eclipse.org:8080/telemetry
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"temp": 23.07}' https://hono.eclipseprojects.io:8080/telemetry
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"hum": 45.85}' https://hono.eclipseprojects.io:8080/telemetry
```

However as there is not yet a `consumer` listening for the messages, the Hono HTTP adapter will for example return an
Expand Down Expand Up @@ -736,10 +736,10 @@ Whenever the device now sends telemetry in its own JSON format
Verify that by simulate sending telemetry using the Hono HTTP adapter:

```bash
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"temp": 14.51}' http://hono.eclipse.org:8080/telemetry
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"hum": 52.17}' http://hono.eclipse.org:8080/telemetry
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"temp": 14.51}' https://hono.eclipseprojects.io:8080/telemetry
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"hum": 52.17}' https://hono.eclipseprojects.io:8080/telemetry

$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"temp": 23.07, "hum": 45.85}' http://hono.eclipse.org:8080/telemetry
$ curl -X POST -i -u demo-device-auth@org.eclipse.ditto:demo-device-password -H 'Content-Type: application/json' -d '{"temp": 23.07, "hum": 45.85}' https://hono.eclipseprojects.io:8080/telemetry
```

<br/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ post.
#### Create Hono device
```bash
# setup a tenant
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"tenant-id": "org.eclipse.ditto"}' http://hono.eclipse.org:28080/tenant
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"tenant-id": "org.eclipse.ditto"}' https://hono.eclipseprojects.io:28080/tenant
# create a device
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"device-id": "org.eclipse.ditto:teapot"}' http://hono.eclipse.org:28080/registration/org.eclipse.ditto
$ curl -X POST -i -H 'Content-Type: application/json' -d '{"device-id": "org.eclipse.ditto:teapot"}' https://hono.eclipseprojects.io:28080/registration/org.eclipse.ditto
# add device credentials
$ PWD_HASH=$(echo -n 'teapot' | openssl dgst -binary -sha512 | base64 -w 0)
$ curl -X POST -i -H 'Content-Type: application/json' -d '{
Expand All @@ -56,7 +56,7 @@ $ curl -X POST -i -H 'Content-Type: application/json' -d '{
"hash-function" : "sha-512",
"pwd-hash": "'$PWD_HASH'"
}]
}' http://hono.eclipse.org:28080/credentials/org.eclipse.ditto
}' https://hono.eclipseprojects.io:28080/credentials/org.eclipse.ditto
```

#### Create Ditto policy for digital twin
Expand Down Expand Up @@ -186,7 +186,7 @@ curl -X POST -i -u teapot@org.eclipse.ditto:teapot -H 'hono-ttd: 60' -H 'Content
"path": "/features/water/properties/temperature",
"value": 23
}' \
http://hono.eclipse.org:8080/telemetry
https://hono.eclipseprojects.io:8080/telemetry
```
The request is now open to receive a command for 60 seconds before it is terminated.
Expand Down Expand Up @@ -222,7 +222,7 @@ correlate the request and the response we are now going to send.
### Device sends a command response
We use the header value of `hono-cmd-req-id` to construct the response address:
`http://hono.eclipse.org:8080/control/res/013command-and-controlreplies`
`https://hono.eclipseprojects.io:8080/control/res/013command-and-controlreplies`
Another curl command completes the roundtrip with a response from the simulated device:
Expand All @@ -240,7 +240,7 @@ curl -i -X POST -u teapot@org.eclipse.ditto:teapot \
"value": { "eta": 56},
"status": 200
}' \
http://hono.eclipse.org:8080/control/res/013command-and-controlreplies
https://hono.eclipseprojects.io:8080/control/res/013command-and-controlreplies
```
### Message response is received at Ditto Message API
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
title: "Announcing Eclipse Ditto Release 3.2.0"
published: true
permalink: 2023-03-08-release-announcement-320.html
layout: post
author: thomas_jaeckle
tags: [blog]
hide_sidebar: true
sidebar: false
toc: false
---

The Eclipse Ditto teams is proud to announce the availability of Eclipse Ditto
[3.2.0](https://projects.eclipse.org/projects/iot.ditto/releases/3.2.0).

Version 3.2.0 brings a new **History API**, **Eclipse Hono** connection type, **case-insensitive searches** and
other smaller improvements, e.g. on the Ditto UI and in the JS client.


## Adoption

Companies are willing to show their adoption of Eclipse Ditto publicly:
[https://iot.eclipse.org/adopters/?#iot.ditto](https://iot.eclipse.org/adopters/?#iot.ditto)

When you use Eclipse Ditto it would be great to support the project by putting your logo there.


## Changelog

The main improvements and additions of Ditto 3.2.0 are:

* New **History API** in order to be able to:
* access historical state of things/policies/connections (with either given revision number or timestamp)
* stream persisted events of things/policies via async APIs (WebSocket, Connections) and things also via existing SSE (Server-Sent-Events) API
* configure deletion retention of events in the database for each entity
* Addition of new **Eclipse Hono** connection type for Ditto managed connections
* Option to do **case-insensitive searches** and addition of a new RQL operator to declare case-insensitive like: `ilike`
* UI enhancements:
* Push notifications on the Ditto UI using SSE (Server-Sent-Events), e.g. on thing updates
* Autocomplete functionality for the search slot
* Added configuring `Bearer` auth type for the "devops" authentication
* JavaScript client:
* Support for **"merge" / "patch"** functionality in the **JS client**

The following non-functional enhancements are also included:

None in this release.

The following notable fixes are included:

* Undo creating implicitly created policy as part of thing creation if creation of thing failed

Please have a look at the [3.2.0 release notes](release_notes_320.html) for a more detailed information on the release.


## Artifacts

The new Java artifacts have been published at the [Eclipse Maven repository](https://repo.eclipse.org/content/repositories/ditto/)
as well as [Maven central](https://repo1.maven.org/maven2/org/eclipse/ditto/).

The Ditto JavaScript client release was published on [npmjs.com](https://www.npmjs.com/~eclipse_ditto):
* [@eclipse-ditto/ditto-javascript-client-dom](https://www.npmjs.com/package/@eclipse-ditto/ditto-javascript-client-dom)
* [@eclipse-ditto/ditto-javascript-client-node](https://www.npmjs.com/package/@eclipse-ditto/ditto-javascript-client-node)


The Docker images have been pushed to Docker Hub:
* [eclipse/ditto-policies](https://hub.docker.com/r/eclipse/ditto-policies/)
* [eclipse/ditto-things](https://hub.docker.com/r/eclipse/ditto-things/)
* [eclipse/ditto-things-search](https://hub.docker.com/r/eclipse/ditto-things-search/)
* [eclipse/ditto-gateway](https://hub.docker.com/r/eclipse/ditto-gateway/)
* [eclipse/ditto-connectivity](https://hub.docker.com/r/eclipse/ditto-connectivity/)

<br/>
<br/>
{% include image.html file="ditto.svg" alt="Ditto" max-width=500 %}
--<br/>
The Eclipse Ditto team
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ then be interpreted as the link to an Eclipse Vorto "function block" model.

> Vorto is an open source tool that allows to create and manage technology agnostic, abstract device descriptions,
so called information models. Information models describe the attributes and the capabilities of real world devices.
Source: [http://www.eclipse.org/vorto/](http://www.eclipse.org/vorto/)
Source: [https://www.eclipse.org/vorto/](https://www.eclipse.org/vorto/)

{% include warning.html content="The Eclipse Vorto project is no longer actively maintained, so it can be seen
as feature complete." %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pattern they occur.

Ditto uses Commands, Events,
<a href="#" data-toggle="tooltip" data-original-title="{{site.data.glossary.cqrs}}">CQRS</a> and EventSourcing.
[This page](http://cqrs.nu/Faq) provides a quite good explanation of the basic concepts on all of those aspects:
[This page](https://cqrs.nu/Faq) provides a quite good explanation of the basic concepts on all of those aspects:

### Command

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ To describe geolocations you can use: [W3C Basic Geo (WGS84 lat/long) Vocabulary
```

To describe units you can choose between:
* [QUDT.org](http://www.qudt.org)
* [QUDT.org](https://www.qudt.org)
```json
{
"@context": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ code execution.
### Constraints

Rhino does not fully support EcmaScript 6. Check which language constructs are supported before using
them in a mapping function. See [http://mozilla.github.io/rhino/compat/engines.html](http://mozilla.github.io/rhino/compat/engines.html).
them in a mapping function. See [https://mozilla.github.io/rhino/compat/engines.html](https://mozilla.github.io/rhino/compat/engines.html).

Ditto currently includes Rhino version `1.7.14` and has the `VERSION_ES6` flag enabled.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,13 @@ For AMQP 1.0 sources, when configuring
endpoint are treated in the following way:

For Ditto acknowledgements with successful [status](protocol-specification-acks.html#combined-status-code):
* Acknowledges the AMQP 1.0 message with `accepted` outcome (see [AMQP 1.0 spec: 3.4.2 Accepted](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-accepted))
* Acknowledges the AMQP 1.0 message with `accepted` outcome (see [AMQP 1.0 spec: 3.4.2 Accepted](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-accepted))

For Ditto acknowledgements with mixed successful/failed [status](protocol-specification-acks.html#combined-status-code):
* If some of the aggregated [acknowledgements](basic-acknowledgements.html#acknowledgements-acks) require redelivery (e.g. based on a timeout):
* Negatively acknowledges the AMQP 1.0 message with `modified[delivery-failed]` outcome (see [AMQP 1.0 spec: 3.4.5 Modified](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-modified))
* Negatively acknowledges the AMQP 1.0 message with `modified[delivery-failed]` outcome (see [AMQP 1.0 spec: 3.4.5 Modified](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-modified))
* If none of the aggregated [acknowledgements](basic-acknowledgements.html#acknowledgements-acks) require redelivery:
* Negatively acknowledges the AMQP 1.0 message with `rejected` outcome (see [AMQP 1.0 spec: 3.4.3 Rejected](http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-rejected)) preventing redelivery by the AMQP 1.0 endpoint
* Negatively acknowledges the AMQP 1.0 message with `rejected` outcome (see [AMQP 1.0 spec: 3.4.3 Rejected](https://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-rejected)) preventing redelivery by the AMQP 1.0 endpoint

### Target format

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ Default: empty string

### Configure Last Will message

To notify other clients when the connection is disconnected ungracefully the [Last Will feature](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718028)
To notify other clients when the connection is disconnected ungracefully the [Last Will feature](https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718028)
can be used. The message which will be published, is specified in the connection and stored
in the broker when it connects. The message contains a topic, retained message flag, QoS, and the text payload to be
published. These can be configured in the [Specific Configuration](#specific-configuration) of the connection.
Expand Down

0 comments on commit 7db85d7

Please sign in to comment.