Updated external content (Jenkins build 2309)

pull/2380/head
openHAB Build Server 2024-09-28 21:20:03 +00:00
parent b0b8bd42fe
commit f83465f88b
235 changed files with 2731 additions and 2289 deletions

File diff suppressed because one or more lines are too long

View File

@ -114,6 +114,7 @@ R=RFID
```
transform/ekey_names.map [NO spaces allowed]
```text
-1=Unspecified
1=JohnDoe

View File

@ -23,10 +23,10 @@ The binding will search your Jollyday event definition files in the sub folder `
The binding handles the following Things:
* default holiday data (`holiday`)
* custom holiday file (`custom`)
* daysets (`dayset`)
* weekend (`weekend`)
- default holiday data (`holiday`)
- custom holiday file (`custom`)
- daysets (`dayset`)
- weekend (`weekend`)
## Discovery
@ -38,7 +38,6 @@ There is no configuration at binding level.
## Thing Configuration
### `custom` Thing Configuration
| Name | Type | Description | Default | Required | Advanced |
@ -53,7 +52,6 @@ The file has to use the syntax described here : https://www.openhab.org/docs/con
|-----------------|---------|---------------------------|---------|----------|----------|
| name | text | Name of the dayset used | N/A | yes | no |
## Channels
### `weekend` Channels
@ -94,7 +92,7 @@ The file has to use the syntax described here : https://www.openhab.org/docs/con
## Full Example
### Thing Configuration
### Thing Example
```java
Thing ephemeris:holiday:local "Holidays"
@ -102,7 +100,7 @@ Thing ephemeris:weekend:local "Week-end"
Thing ephemeris:custom:events "Event" [fileName="events.xml"]
```
### Item Configuration
### Item Example
```java
String ToD_Event_Current "Event Today" <calendar> (gEvents) {channel="ephemeris:custom:events:title-today"}

View File

@ -121,11 +121,11 @@ Please note that you have to replace _\<N\>_ with your loadpoint id/number.
Those channels exist:
* 1 per configured loadpoint with `chargerFeatureHeating = false`:
* These channels point to the heating device that is currently active/connected at/to the loadpoint
* Please note that you have to replace _\<N\>_ with your loadpoint id/number
* 1 per configured vehicle:
* Please note that you have to replace _\<ID\>_ with your vehicle id/name
- 1 per configured loadpoint with `chargerFeatureHeating = false`:
- These channels point to the heating device that is currently active/connected at/to the loadpoint
- Please note that you have to replace _\<N\>_ with your loadpoint id/number
- 1 per configured vehicle:
- Please note that you have to replace _\<ID\>_ with your vehicle id/name
| Channel | Type | Read/Write | Description |
|----------------------------------------------------|----------------------|------------|--------------------------------------------------------------------------|
@ -141,11 +141,11 @@ Those channels exist:
Those channels exist:
* 1 per configured loadpoint with `chargerFeatureHeating = true`:
* These channels point to the heating device that is currently active/connected at/to the loadpoint
* Please note that you have to replace _\<N\>_ with your loadpoint id/number
* 1 per configured heating device:
* Please note that you have to replace _\<ID\>_ with your heating device id/name
- 1 per configured loadpoint with `chargerFeatureHeating = true`:
- These channels point to the heating device that is currently active/connected at/to the loadpoint
- Please note that you have to replace _\<N\>_ with your loadpoint id/number
- 1 per configured heating device:
- Please note that you have to replace _\<ID\>_ with your heating device id/name
| Channel | Type | Read/Write | Description |
|---------------------------------------------------------|--------------------|------------|-----------------------------------------------------------------------|

View File

@ -174,6 +174,7 @@ You can retrieve the actions as follows:
```java
val froniusInverterActions = getActions("fronius", "fronius:powerinverter:mybridge:myinverter")
```
:::
::: tab JS

View File

@ -227,7 +227,7 @@ homematic:bridge:NAME
- **bridge** the type, fixed
- **name** the name of the bridge
### Example
### Bridge Configuration Example
#### Minimum configuration
@ -463,7 +463,7 @@ Adds multiple virtual datapoints to the HM-Dis-WM55 and HM-Dis-EP-WM55 devices t
**Note:** The HM-Dis-EP-WM55 has only a black and white display and therefore does not support datapoints for colored lines. In addition, only lines 1-3 can be set.
#### Example
#### Button Example
Display text at line 1,3 and 5 when the bottom button on the display is pressed
@ -749,6 +749,7 @@ The problem can be solved by increasing the `bufferSize` value in the bridge con
openHAB and the CCU are using different values for the same state of a rollershutter.
Examples: HmIP-BROLL, HmIP-FROLL, HmIP-BBL, HmIP-FBL and HmIP-DRBLI4
| | Open | Closed |
| ------- | ---- | ------ |
| openHAB | 0% | 100% |

View File

@ -802,9 +802,9 @@ If you want to dive deeper see [Troubleshooting](#troubleshooting) `feature-capa
In order to be able to analyze problems 3 advanced channels are placed in the vehicle group.
* `feature-capabilities` - showing which feature your vehicle is equipped with
* `command-capabilities` - showing which commands can be sent to your vehicle
* `proto-update` - latest update of your vehicle data
- `feature-capabilities` - showing which feature your vehicle is equipped with
- `command-capabilities` - showing which commands can be sent to your vehicle
- `proto-update` - latest update of your vehicle data
In case you find problems regarding this binding add items to these 3 channels.
The items are reporting Strings in JSON format.

View File

@ -1,128 +0,0 @@
---
id: meteoalerte
label: Meteo Alerte
title: Meteo Alerte - Bindings
type: binding
description: "The Meteo Alerte binding gives alert level regarding major weather related risk factors."
since: 3x
logo: images/addons/meteoalerte.png
install: auto
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Meteo Alerte Binding
The Meteo Alerte binding gives alert level regarding major weather related risk factors.
This binding provides its own icon set and provides appropriate static and dynamic SVG icons (see items examples below).
## Supported Things
There is exactly one supported thing type, which represents the weather alerts for a given department.
It has the `department` id.
Of course, you can add multiple things, e.g. for getting alerts for different locations.
## Binding Configuration
The binding has no configuration options, all configuration is done at Thing level.
## Thing Configuration
The thing has a few configuration parameters:
| Parameter | Description |
|---------------|----------------------------------------------------------------------------------------|
| `department` | Name of the department. |
| refresh | Refresh interval in minutes. Optional, the default value is 1440 minutes (once a day). |
## Channels
The Météo Alerte information that are retrieved is available as these channels:
| Channel ID | Item Type | Description |
|-----------------------|-----------|-----------------------------------------------|
| observation-time | DateTime | Date and time of report validity start |
| end-time | DateTime | Date and time of report validity end |
| comment | String | General comments on alerts for the department |
| vent | Number | Wind alert level (*) |
| pluie-inondation | Number | Rain alert level (*) |
| orage | Number | Storm alert level (*) |
| inondation | Number | Flood alert level (*) |
| neige | Number | Snow alert level (*) |
| canicule | Number | Heat alert level (*) |
| grand-froid | Number | Cold alert level (*) |
| avalanches | Number | Avalanche alert level (*) |
| vague-submersion | Number | Wave submersion alert level (*) |
| pluie-inondation-icon | Image | Pictogram of the Rain alert level |
| vent-icon | Image | Pictogram of the Wind alert level |
| orage-icon | Image | Pictogram of Storm alert level |
| inondation-icon | Image | Pictogram of Flood alert level |
| neige-icon | Image | Pictogram of Snow alert level |
| canicule-icon | Image | Pictogram of Heat alert level |
| grand-froid-icon | Image | Pictogram of Cold alert level |
| avalanches-icon | Image | Pictogram of Avalanche alert level |
| vague-submersion-icon | Image | Pictogram of Wave Submersion alert level |
(*) Each alert level is described by a color :
| Code | Color | Description |
|------|--------|-------------------------------------------|
| 0 | Green | No particular vigilance |
| 1 | Yellow | Be attentive to the weather situation |
| 2 | Orange | Be "very vigilant" in the concerned areas |
| 3 | Red | Absolute vigilance required |
## Provided icon set
This binding has its own IconProvider and makes available the following list of icons
| Icon Name | Dynamic | Illustration |
|---------------------------------|---------|--------------|
| oh:meteoalerte:vent | Yes | ![](src/main/resources/icon/vent.svg) |
| oh:meteoalerte:pluie-inondation | Yes | ![](src/main/resources/icon/pluie-inondation.svg) |
| oh:meteoalerte:orage | Yes | ![](src/main/resources/icon/orage.svg) |
| oh:meteoalerte:inondation | Yes | ![](src/main/resources/icon/inondation.svg) |
| oh:meteoalerte:neige | Yes | ![](src/main/resources/icon/neige.svg) |
| oh:meteoalerte:canicule | Yes | ![](src/main/resources/icon/canicule.svg) |
| oh:meteoalerte:grand-froid | Yes | ![](src/main/resources/icon/grand-froid.svg) |
| oh:meteoalerte:avalanches | Yes | ![](src/main/resources/icon/avalanches.svg) |
| oh:meteoalerte:vague-submersion | Yes | ![](src/main/resources/icon/vague-submersion.svg) |
| oh:meteoalerte:meteo_france | No | ![](src/main/resources/icon/meteo_france.svg) |
## Full Example
meteoalert.things:
```java
Thing meteoalerte:department:yvelines @ "MyCity" [department="YVELINES", refresh=12]
```
meteoalert.items:
```java
Group gMeteoAlert "Alertes Météo" <oh:meteoalerte:meteo_france>
String MA_Dept78 "Département 78 [%s]" <text> (gMeteoAlert) {channel="meteoalerte:department:yvelines:comment"}
Number MA_etat_canicule "Canicule [%s]" <oh:meteoalerte:canicule> (gMeteoAlert) {channel="meteoalerte:department:yvelines:canicule"}
Number MA_etat_grand_froid "Grand Froid [%s]" <oh:meteoalerte:grand-froid> (gMeteoAlert) {channel="meteoalerte:department:yvelines:grand-froid"}
Number MA_etat_pluie_inondation "Pluie-Inondation [%s]" <oh:meteoalerte:pluie-inondation> (gMeteoAlert) {channel="meteoalerte:department:yvelines:pluie-inondation"}
Number MA_etat_neige "Neige [%s]" <oh:meteoalerte:neige> (gMeteoAlert) {channel="meteoalerte:department:yvelines:neige"}
Number MA_etat_vent "Vent [%s]" <oh:meteoalerte:vent> (gMeteoAlert) {channel="meteoalerte:department:yvelines:vent"}
Number MA_etat_inondation "Inondation [%s]" <oh:meteoalerte:inondation> (gMeteoAlert) {channel="meteoalerte:department:yvelines:inondation"}
Number MA_etat_orage "Orage [%s]" <oh:meteoalerte:orage> (gMeteoAlert) {channel="meteoalerte:department:yvelines:orage"}
Number MA_etat_avalanche "Avalanches [%s]" <oh:meteoalerte:avalanches> (gMeteoAlert) {channel="meteoalerte:department:yvelines:avalanches"}
Image MA_icon_canicule "Canicule" <oh:meteoalerte:canicule> (gMeteoAlert) {channel="meteoalerte:department:yvelines:canicule-icon"}
Image MA_icon_grand_froid "Grand Froid" <oh:meteoalerte:grand-froid> (gMeteoAlert) {channel="meteoalerte:department:yvelines:grand-froid-icon"}
Image MA_icon_pluie_inondation "Pluie-Inondation" <oh:meteoalerte:pluie-inondation> (gMeteoAlert) {channel="meteoalerte:department:yvelines:pluie-inondation-icon"}
Image MA_icon_neige "Neige" <oh:meteoalerte:neige> (gMeteoAlert) {channel="meteoalerte:department:yvelines:neige-icon"}
Image MA_icon_vent "Vent" <oh:meteoalerte:vent> (gMeteoAlert) {channel="meteoalerte:department:yvelines:vent-icon"}
Image MA_icon_inondation "Inondation" <oh:meteoalerte:inondation> (gMeteoAlert) {channel="meteoalerte:department:yvelines:inondation-icon"}
Image MA_icon_orage "Orage" <oh:meteoalerte:orage> (gMeteoAlert) {channel="meteoalerte:department:yvelines:orage-icon"}
Image MA_icon_avalanche "Avalanche" <oh:meteoalerte:avalanches> (gMeteoAlert) {channel="meteoalerte:department:yvelines:avalanches-icon"}
DateTime MA_ObservationTS "Timestamp [%1$tH:%1$tM]" <time> (gMeteoAlert) {channel="meteoalerte:department:yvelines:observation-time"}
```

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30"/>
<g transform="matrix(0.095654, 0, 0, 0.103801, 7.65905, -0.7645)" style="">
<g>
<path style="fill:#9B5C5C;" d="M277.259,58.637c-11.695-20.344-30.835-20.344-42.53,0L4.978,432.587 c-11.695,20.342-2.07,36.966,21.398,36.966h459.235c23.468,0,33.093-16.624,21.405-36.966L277.259,58.637z"/>
<path style="fill:#9B5C5C;" d="M277.259,57.683c-11.695-20.328-30.835-20.328-42.53,0l-23.538,59.732l-32.538,31.78L4.978,432.587 c-11.695,20.342-2.07,36.966,21.398,36.966h459.235c23.468,0,33.093-16.624,21.405-36.966l-56.124-91.592l-84.06-104.052 L277.259,57.683z"/>
</g>
<g>
<path style="fill:#CBD0D8;" d="M426.629,226.272c-23.562,0-42.671,19.108-42.671,42.671c0,23.554,19.109,42.646,42.671,42.646 c23.545,0,42.654-19.093,42.654-42.646C469.283,245.381,450.174,226.272,426.629,226.272L426.629,226.272z"/>
<path style="fill:#CBD0D8;" d="M394.63,226.272c0,5.89-4.766,10.671-10.672,10.671c-5.875,0-10.656-4.781-10.656-10.671 c0-5.875,4.781-10.656,10.656-10.656C389.864,215.616,394.63,220.397,394.63,226.272z"/>
<path style="fill:#CBD0D8;" d="M426.629,204.944c0,5.891-4.781,10.672-10.671,10.672c-5.891,0-10.656-4.781-10.656-10.672 s4.766-10.655,10.656-10.655C421.848,194.289,426.629,199.054,426.629,204.944z"/>
<path style="fill:#CBD0D8;" d="M383.958,183.617c0,5.891-4.766,10.672-10.656,10.672s-10.656-4.781-10.656-10.672 s4.766-10.656,10.656-10.656S383.958,177.726,383.958,183.617z"/>
<path style="fill:#CBD0D8;" d="M351.974,151.634c0,5.891-4.766,10.655-10.672,10.655c-5.874,0-10.655-4.765-10.655-10.655 s4.781-10.671,10.655-10.671C347.209,140.963,351.974,145.744,351.974,151.634z"/>
</g>
<path style="fill:#E6E9ED;" d="M 273.368 152.384 C 274.649 151.868 275.993 151.634 277.321 151.634 C 280.992 151.634 284.554 153.54 286.523 156.884 C 286.523 156.884 355.865 257.194 381.786 300.341 C 407.708 343.495 450.892 341.027 450.892 341.027 L 277.259 57.683 C 265.564 37.355 246.424 37.355 234.729 57.683 L 178.653 149.196 C 178.653 149.196 210.879 171.539 225.503 171.539 C 240.126 171.539 273.368 152.384 273.368 152.384 Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30" />
<g fill="#dae1e4">
<circle cx="32" cy="55" r="9" />
<circle cx="32" cy="6" r="6" />
</g>
<circle cx="32" cy="6" r="5" fill="#d20014" />
<path d="m26 6h12v50h-12z" fill="#dae1e4" />
<g fill="#d20014">
<path d="m27 6h10v48.94h-10z" />
<circle cx="32" cy="55" r="8" />
</g>
<g fill="#fff">
<path d="m33 9h5v2h-5z" />
<path d="m33 17h5v2h-5z" />
<path d="m33 25h5v2h-5z" />
<path d="m33 33h5v2h-5z" />
<path d="m33 41h5v2h-5z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 759 B

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30" />
<circle cx="32" cy="6" r="6" fill="#dae1e4" />
<circle cx="32" cy="6" r="5" fill="#c4cacc" />
<path d="m26 6h12v50h-12z" fill="#dae1e4" />
<path d="m27 6h10v48.94h-10z" fill="#c4cacc" />
<circle cx="32" cy="55" r="9" fill="#dae1e4" />
<g fill="#2e7de5">
<circle cx="32" cy="55" r="8" />
<path d="m27 39h10v12h-10z" />
</g>
<g fill="#fff">
<path d="m33 9h5v2h-5z" />
<path d="m33 17h5v2h-5z" />
<path d="m33 25h5v2h-5z" />
<path d="m33 33h5v2h-5z" />
<path d="m33 41h5v2h-5z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 802 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30"/>
<path fill="#F8EFE0" d="M 11.018 52.475 L 11.018 31.819 C 7.317 33.065 4.779 29.687 7.284 26.959 C 7.325 26.916 7.371 26.873 7.425 26.837 L 30.938 10.768 C 31.242 10.522 31.712 10.497 32.05 10.727 L 55.617 26.768 C 55.654 26.793 55.688 26.819 55.72 26.851 C 56.812 27.879 57.084 29.019 56.82 29.983 C 56.692 30.449 56.434 30.88 56.071 31.238 C 55.708 31.596 55.249 31.867 54.735 32.029 C 53.911 32.288 52.931 32.281 51.937 31.869 L 51.937 51.358 C 43.944 54.785 42.3 46.755 42.28 46.918 C 41.461 53.613 28.847 53.227 26.809 48.767 C 26.439 47.958 26.67 47.804 26.141 47.766 C 23.045 47.544 22.868 55.347 11.018 52.475 Z M 51.987 12.422 L 51.987 20.469 L 44.911 16.382 L 44.911 12.422 L 51.987 12.422 Z" style=""/>
<path fill="#D93133" d="M 11.018 31.819 C 10.054 32.144 9.151 32.151 8.401 31.927 C 7.816 31.754 7.322 31.444 6.959 31.043 C 6.596 30.643 6.366 30.156 6.295 29.618 C 6.188 28.785 6.472 27.843 7.284 26.959 C 7.325 26.916 7.371 26.873 7.425 26.837 L 30.938 10.768 C 31.242 10.522 31.712 10.497 32.05 10.727 L 55.617 26.768 C 55.654 26.793 55.688 26.819 55.72 26.851 C 56.812 27.879 57.084 29.019 56.82 29.983 C 56.692 30.449 56.434 30.88 56.071 31.238 C 55.708 31.596 55.249 31.867 54.735 32.029 C 53.911 32.288 52.931 32.281 51.937 31.869 L 49.63 30.982 C 49.63 30.618 33.464 19.43 31.679 18.213 C 29.788 19.473 13.326 30.571 13.326 31.04 L 11.018 31.819 Z M 51.987 12.422 L 51.987 20.469 L 44.911 16.382 L 44.911 12.422 L 51.987 12.422 Z" style=""/>
<path fill="#313A58" d="M 31.595 25.496 C 33.228 25.496 34.711 26.081 35.784 27.021 C 36.861 27.963 37.526 29.076 37.526 30.503 L 37.526 35.325 L 25.662 35.325 L 25.662 30.503 C 25.662 29.073 26.33 27.961 27.404 27.021 C 28.479 26.081 29.963 25.496 31.595 25.496 Z" style=""/>
<path fill="#ABB9BC" d="M 32.111 31.421 L 32.111 34.426 L 36.496 34.426 L 36.496 31.421 L 32.111 31.421 Z M 32.111 26.424 L 32.111 30.517 L 36.496 30.517 L 36.496 30.505 C 36.496 29.326 35.945 28.439 35.056 27.661 C 34.282 26.983 33.252 26.529 32.111 26.424 Z M 31.079 30.517 L 31.079 26.424 C 29.936 26.531 28.909 26.983 28.134 27.661 C 27.245 28.439 26.694 29.326 26.694 30.505 L 26.694 30.517 L 31.079 30.517 Z M 31.079 34.423 L 31.079 31.421 L 26.694 31.421 L 26.694 34.426 L 31.079 34.426 L 31.079 34.423 Z" style=""/>
<path fill="#313A58" d="M 51.92 31.732 L 49.64 30.959 L 49.64 52.389 L 51.92 52.389 L 51.92 31.732 Z M 10.908 31.819 L 13.189 31.046 L 13.189 52.476 L 10.908 52.476 L 10.908 31.819 Z" style=""/>
<path d="M 11.097 51.603 C 13.269 52.586 15.988 52.276 18.451 51.315 C 21.367 50.176 23.866 48.168 24.668 46.318 C 24.9 45.781 25.509 45.54 26.029 45.779 C 26.259 45.885 26.444 46.075 26.547 46.312 C 27.432 48.152 28.886 49.487 30.554 50.246 C 31.623 50.733 32.775 50.983 33.918 50.978 C 35.051 50.973 36.18 50.717 37.211 50.195 C 38.688 49.446 39.974 48.13 40.802 46.195 C 41.031 45.656 41.641 45.412 42.163 45.649 C 42.416 45.764 42.614 45.978 42.711 46.245 C 43.106 47.121 43.54 47.869 44.009 48.496 C 45.11 49.969 46.402 50.756 47.805 50.981 C 49.259 51.215 50.874 50.868 52.56 50.07 C 53.763 49.501 55 48.701 56.239 47.714 L 57.499 49.397 C 56.142 50.478 54.77 51.363 53.416 52.004 C 51.373 52.971 49.365 53.383 47.49 53.082 C 45.567 52.773 43.824 51.731 42.377 49.796 C 42.148 49.488 41.933 49.17 41.734 48.842 C 40.756 50.32 39.505 51.399 38.116 52.103 C 36.799 52.772 35.361 53.098 33.918 53.104 C 32.484 53.109 31.046 52.799 29.722 52.197 C 28.122 51.468 26.677 50.311 25.588 48.764 C 24.183 50.57 21.811 52.279 19.178 53.307 C 16.265 54.444 12.989 54.782 10.273 53.553 L 11.097 51.603 Z" style="fill: rgb(30, 130, 255);"/>
<path d="M 10.92 57.018 C 13.092 58.001 15.811 57.691 18.274 56.73 C 21.19 55.591 23.689 53.583 24.491 51.733 C 24.723 51.196 25.332 50.955 25.852 51.194 C 26.082 51.3 26.267 51.49 26.37 51.727 C 27.255 53.567 28.709 54.902 30.377 55.661 C 31.446 56.148 32.598 56.398 33.741 56.393 C 34.874 56.388 36.003 56.132 37.034 55.61 C 38.511 54.861 39.797 53.545 40.625 51.61 C 40.854 51.071 41.464 50.827 41.986 51.064 C 42.239 51.179 42.437 51.393 42.534 51.66 C 42.929 52.536 43.363 53.284 43.832 53.911 C 44.933 55.384 46.225 56.171 47.628 56.396 C 49.082 56.63 50.697 56.283 52.383 55.485 C 53.586 54.916 54.823 54.116 56.062 53.129 L 57.322 54.812 C 55.965 55.893 54.593 56.778 53.239 57.419 C 51.196 58.386 49.188 58.798 47.313 58.497 C 45.39 58.188 43.647 57.146 42.2 55.211 C 41.971 54.903 41.756 54.585 41.557 54.257 C 40.579 55.735 39.328 56.814 37.939 57.518 C 36.622 58.187 35.184 58.513 33.741 58.519 C 32.307 58.524 30.869 58.214 29.545 57.612 C 27.945 56.883 26.5 55.726 25.411 54.179 C 24.006 55.985 21.634 57.694 19.001 58.722 C 16.088 59.859 12.812 60.197 10.096 58.968 L 10.92 57.018 Z" style="fill: rgb(30, 130, 255);"/>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,67 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="55" height="63">
<defs>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="prefix__e">
<feMorphology radius="2" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1" />
<feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1" />
<feGaussianBlur stdDeviation="1.5" in="shadowOffsetOuter1" result="shadowBlurOuter1" />
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1" />
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowBlurOuter1" />
</filter>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="prefix__g">
<feMorphology radius="1.08" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1" />
<feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1" />
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1" />
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1" />
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowBlurOuter1" />
</filter>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="prefix__i">
<feMorphology radius="1.44" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1" />
<feOffset dy="1" in="shadowSpreadOuter1" result="shadowOffsetOuter1" />
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1" />
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1" />
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" in="shadowBlurOuter1" />
</filter>
<path
d="M22.528 23C20.887 23 11 38.241 11 44.803c0 5.174 2.987 10.572 11.528 10.572 7.82 0 11.528-5.346 11.528-10.572C34.056 38.158 24.169 23 22.528 23z"
id="prefix__a" />
<path
d="M10.125 5C9.253 5 4 13.238 4 16.785c0 2.797 1.587 5.715 6.125 5.715 4.155 0 6.125-2.89 6.125-5.715C16.25 13.193 10.997 5 10.125 5z"
id="prefix__b" />
<path
d="M35.313 0C34.129 0 27 11.122 27 15.91c0 3.776 2.154 7.715 8.313 7.715 5.64 0 8.312-3.901 8.312-7.715 0-4.849-7.129-15.91-8.313-15.91z"
id="prefix__c" />
<mask id="prefix__f" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="27.056"
height="36.375">
<path fill="#fff" d="M9 21h27.056v36.375H9z" />
<use xlink:href="#prefix__a" />
</mask>
<mask id="prefix__h" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-1.08" y="-1.08"
width="14.41" height="19.66">
<path fill="#fff" d="M2.92 3.92h14.41v19.66H2.92z" />
<use xlink:href="#prefix__b" />
</mask>
<mask id="prefix__j" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-1.44" y="-1.44"
width="19.505" height="26.505">
<path fill="#fff" d="M25.56-1.44h19.505v26.505H25.56z" />
<use xlink:href="#prefix__c" />
</mask>
<rect id="prefix__d" x="-8.105" y="28.395" width="67" height="4" rx="2" />
</defs>
<g transform="translate(2 2)" fill="none" fill-rule="evenodd">
<use height="100%" width="100%" xlink:href="#prefix__a" fill="#000" filter="url(#prefix__e)" />
<use height="100%" width="100%" xlink:href="#prefix__a" fill="#55a4ff" fill-opacity=".3" />
<use height="100%" width="100%" xlink:href="#prefix__a" mask="url(#prefix__f)" stroke="#fff" stroke-width="4" />
</g>
<g transform="translate(2 2)" fill="none" fill-rule="evenodd">
<use height="100%" width="100%" xlink:href="#prefix__b" fill="#000" filter="url(#prefix__g)" />
<use height="100%" width="100%" xlink:href="#prefix__b" fill="#55a4ff" fill-opacity=".3" />
<use height="100%" width="100%" xlink:href="#prefix__b" mask="url(#prefix__h)" stroke="#fff"
stroke-width="2.16" />
</g>
<g transform="translate(2 2)" fill="none" fill-rule="evenodd">
<use height="100%" width="100%" xlink:href="#prefix__c" fill="#000" filter="url(#prefix__i)" />
<use height="100%" width="100%" xlink:href="#prefix__c" fill="#55a4ff" fill-opacity=".3" />
<use height="100%" width="100%" xlink:href="#prefix__c" mask="url(#prefix__j)" stroke="#fff"
stroke-width="2.88" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" height="600" width="600" data-name="Calque 1">
<path fill="#005892" d="M0 0h600v600H0z" />
<rect x="220.481" y="111.57" width="159.038" height="159.038" rx="12.759" ry="12.759" fill="#fff" />
<path fill="#005891" d="M334.557 134.05l17.013 17.697-24.152 6.152z" />
<path
d="M357.95 191.089a57.646 57.646 0 00-10.178-32.81l-5.164 1.974a56.05 56.05 0 0110.253 30.836 53.165 53.165 0 01-45.57 52.329 210.152 210.152 0 01-1.747-104.81 55.443 55.443 0 0119.747 6l1.291-4.861a57.57 57.57 0 00-19.747-6.152 150.684 150.684 0 018.127-22.025h-7.595a164.05 164.05 0 00-7.595 21.645 57.95 57.95 0 000 115.823h1.975c1.975 7.063 4.253 14.278 7.063 21.646h7.063c-2.886-7.595-5.392-15.19-7.595-22.254a57.95 57.95 0 0049.671-57.341z"
fill="#005891" />
<path d="M298.633 130.405h-7.063" fill="#fff" />
<g fill="#fff">
<path
d="M123.418 315.342h22.025l14.582 44.126 14.05-44.126h22.102l7.975 76.48H182.05l-3.266-38.278-11.317 38.279h-15.873l-11.317-38.279-4.48 38.279H114zM268.405 372.608h-34.709v-10.254h26.279V346.33H233.24v-11.544h35.164v-19.443h-56.278v76.48h56.278zM403.975 372.608H369.19v-10.254h26.278V346.33h-26.734v-11.544h35.24v-19.443H347.62v76.48h56.355zM297.038 391.823h21.19v-57.038h18.76v-19.443h-59.165v19.443h19.215zM448.101 314.658a37.975 37.975 0 1037.975 37.975 37.975 37.975 0 00-37.975-37.975zm0 57.494a19.443 19.443 0 1119.443-19.443 19.443 19.443 0 01-19.443 19.443zM134.962 464.127h23.696v-14.81h-23.696v-14.963h30.684v-18.607H114v72.607h20.962zM213.57 458.81s10.936-1.215 10.936-21.19a19.519 19.519 0 00-18.835-21.873h-34.86v72.607h17.695V461.62h6.532l11.165 26.734h20.886zm-11.848-11.544h-13.52v-17.469h13.52a9.494 9.494 0 010 17.469zM274.025 415.747h-16.253l-27.418 72.607h20.735l5.392-13.519h19.975l4.557 13.52h19.822zm-15.19 45.114l6.988-19.52 6.987 19.52zM321.494 449.316l26.05 39.038h16.785v-72.607h-18.911v42.456l-24.152-42.456h-18.38v72.607h18.608zM418.253 465.038a18.38 18.38 0 11-.987-26.43l11.848-13.292a36.076 36.076 0 100 53.773zM486 470.127h-33.038v-9.722h24.987V445.14h-25.443v-10.936H486V415.67h-53.544v72.76H486z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30" />
<path
d="m32 2.5c.98 0 1.76.79 1.76 1.76v8.25l2.82-4.09c.35-.5.9-.77 1.47-.76.34 0 .68.11.98.31.8.55 1.01 1.65.45 2.45l-5.73 8.31v3.56 6.66l8.85-5.11 4.33-9.11c.42-.88 1.47-1.25 2.35-.84.33.16.59.4.76.7.29.49.33 1.1.07 1.65l-2.13 4.49 7.15-4.13c.85-.49 1.92-.2 2.41.65.49.85.2 1.92-.65 2.41l-7.15 4.13 4.96.4c.61.05 1.12.4 1.4.89.17.3.25.64.22 1.01-.08.97-.92 1.69-1.9 1.62l-10.06-.8-8.84 5.09 5.77 3.33 3.08 1.78 10.06-.8c.97-.08 1.82.64 1.9 1.62.03.36-.05.71-.22 1.01-.28.49-.79.84-1.4.89l-4.96.4 7.15 4.13c.85.49 1.13 1.56.65 2.41-.49.85-1.56 1.13-2.41.64l-7.15-4.13 2.13 4.49c.26.55.22 1.17-.07 1.65-.17.29-.43.54-.76.69-.88.42-1.93.05-2.35-.83l-4.33-9.11-8.85-5.11v6.66 3.56l5.73 8.31c.55.8.35 1.9-.45 2.45-.3.21-.64.31-.98.31-.57.01-1.12-.26-1.47-.76l-2.82-4.09v8.25c0 .98-.79 1.76-1.76 1.76-.98 0-1.76-.79-1.76-1.76v-8.25l-2.82 4.09c-.35.5-.9.77-1.47.76-.34 0-.68-.11-.98-.31-.8-.55-1.01-1.65-.45-2.45l5.73-8.31v-3.56-6.66l-5.77 3.33-3.08 1.78-4.33 9.11c-.42.88-1.47 1.25-2.35.83-.33-.16-.59-.4-.76-.69-.29-.49-.33-1.1-.07-1.65l2.14-4.49-7.15 4.13c-.85.49-1.92.2-2.41-.64-.49-.85-.2-1.92.64-2.41l7.15-4.13-4.96-.4c-.61-.05-1.12-.4-1.4-.89-.17-.3-.25-.64-.22-1.01.08-.97.92-1.69 1.9-1.62l10.06.8 3.08-1.78 5.75-3.33-8.85-5.11-10.06.8c-.97.08-1.82-.64-1.9-1.62-.03-.36.05-.71.22-1.01.28-.49.79-.84 1.4-.89l4.96-.4-7.15-4.11c-.85-.49-1.13-1.56-.64-2.41.49-.85 1.56-1.13 2.41-.65l7.15 4.13-2.14-4.49c-.26-.55-.22-1.17.07-1.65.17-.29.43-.54.76-.7.88-.42 1.93-.05 2.35.84l4.33 9.11 8.85 5.11v-6.66-3.56l-5.73-8.31c-.55-.8-.35-1.9.45-2.45.3-.21.64-.31.98-.31.57-.01 1.12.26 1.47.76l2.82 4.09v-8.25c.01-.97.79-1.76 1.77-1.76"
fill="#dae1e4" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30"/>
<g transform="matrix(0.109429, 0, 0, 0.095795, 3.683853, 5.87504)" style="">
<polygon style="fill:#FFDA44;" points="225.584 244.867 174.304 380.884 268.543 380.884 209.837 509.421 367.316 333.616 271.782 333.616 303.985 244.867"/>
<polygon style="fill:#CCA400;" points="304.519 244.867 226.118 244.867 207.482 294.3 286.581 294.3"/>
<path style="fill:#B8D6FD;" d="M 459.559 266.555 C 488.522 266.555 512.001 243.077 512.001 214.113 C 512.001 185.149 488.523 161.671 459.559 161.671 C 450.829 161.671 442.605 163.816 435.364 167.589 C 428.157 153.316 416.099 141.917 401.341 135.574 C 401.341 135.443 401.351 135.316 401.351 135.185 C 401.351 62.632 342.535 3.817 269.982 3.817 C 209.899 3.817 159.273 44.169 143.634 99.239 C 109.041 105.309 81.724 132.452 75.398 166.956 C 68.464 163.574 60.675 161.671 52.44 161.671 C 23.479 161.672 0 185.15 0 214.114 C 0 243.078 23.479 266.556 52.442 266.556 L 459.559 266.556 L 459.559 266.555 Z"/>
<path style="opacity:0.41;fill:#6AB3EA;enable-background:new ;" d="M 458.404 160.434 C 449.674 160.434 441.45 162.579 434.209 166.352 C 427.002 152.079 414.944 140.68 400.186 134.337 C 400.186 134.206 400.196 134.079 400.196 133.948 C 400.196 61.395 341.38 2.58 268.827 2.58 C 257.171 2.58 245.875 4.105 235.117 6.955 C 291.333 21.84 332.772 73.052 332.772 133.95 C 332.772 134.081 332.763 134.208 332.762 134.339 C 347.519 140.681 359.578 152.081 366.785 166.354 C 374.026 162.58 382.25 160.436 390.98 160.436 C 419.943 160.436 443.422 183.914 443.422 212.878 C 443.422 241.841 419.944 265.32 390.98 265.32 L 458.404 265.32 C 487.367 265.32 510.846 241.841 510.846 212.878 C 510.846 183.912 487.367 160.434 458.404 160.434 Z"/>
<g style="opacity:0.41;">
<path style="fill:#6AB3EA;" d="M258.252,34.812c0,3.364-2.216,6.456-5.612,7.421c-40.109,11.389-68.121,48.482-68.121,90.201 c0,4.264-3.455,7.718-7.718,7.718s-7.718-3.455-7.718-7.718c0-48.587,32.626-91.785,79.341-105.052 c4.1-1.165,8.369,1.216,9.534,5.316C258.157,33.404,258.252,34.114,258.252,34.812z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30"/>
<path fill="#F8EFE0" d="M 11.018 52.475 L 11.018 31.819 C 7.317 33.065 4.779 29.687 7.284 26.959 C 7.325 26.916 7.371 26.873 7.425 26.837 L 30.938 10.768 C 31.242 10.522 31.712 10.497 32.05 10.727 L 55.617 26.768 C 55.654 26.793 55.688 26.819 55.72 26.851 C 56.812 27.879 57.084 29.019 56.82 29.983 C 56.692 30.449 56.434 30.88 56.071 31.238 C 55.708 31.596 55.249 31.867 54.735 32.029 C 53.911 32.288 52.931 32.281 51.937 31.869 L 51.937 51.358 C 43.944 54.785 42.3 46.755 42.28 46.918 C 41.461 53.613 28.847 53.227 26.809 48.767 C 26.439 47.958 26.67 47.804 26.141 47.766 C 23.045 47.544 22.868 55.347 11.018 52.475 Z M 51.987 12.422 L 51.987 20.469 L 44.911 16.382 L 44.911 12.422 L 51.987 12.422 Z" style=""/>
<path fill="#D93133" d="M 11.018 31.819 C 10.054 32.144 9.151 32.151 8.401 31.927 C 7.816 31.754 7.322 31.444 6.959 31.043 C 6.596 30.643 6.366 30.156 6.295 29.618 C 6.188 28.785 6.472 27.843 7.284 26.959 C 7.325 26.916 7.371 26.873 7.425 26.837 L 30.938 10.768 C 31.242 10.522 31.712 10.497 32.05 10.727 L 55.617 26.768 C 55.654 26.793 55.688 26.819 55.72 26.851 C 56.812 27.879 57.084 29.019 56.82 29.983 C 56.692 30.449 56.434 30.88 56.071 31.238 C 55.708 31.596 55.249 31.867 54.735 32.029 C 53.911 32.288 52.931 32.281 51.937 31.869 L 49.63 30.982 C 49.63 30.618 33.464 19.43 31.679 18.213 C 29.788 19.473 13.326 30.571 13.326 31.04 L 11.018 31.819 Z M 51.987 12.422 L 51.987 20.469 L 44.911 16.382 L 44.911 12.422 L 51.987 12.422 Z" style=""/>
<path fill="#313A58" d="M 31.595 25.496 C 33.228 25.496 34.711 26.081 35.784 27.021 C 36.861 27.963 37.526 29.076 37.526 30.503 L 37.526 35.325 L 25.662 35.325 L 25.662 30.503 C 25.662 29.073 26.33 27.961 27.404 27.021 C 28.479 26.081 29.963 25.496 31.595 25.496 Z" style=""/>
<path fill="#ABB9BC" d="M 32.111 31.421 L 32.111 34.426 L 36.496 34.426 L 36.496 31.421 L 32.111 31.421 Z M 32.111 26.424 L 32.111 30.517 L 36.496 30.517 L 36.496 30.505 C 36.496 29.326 35.945 28.439 35.056 27.661 C 34.282 26.983 33.252 26.529 32.111 26.424 Z M 31.079 30.517 L 31.079 26.424 C 29.936 26.531 28.909 26.983 28.134 27.661 C 27.245 28.439 26.694 29.326 26.694 30.505 L 26.694 30.517 L 31.079 30.517 Z M 31.079 34.423 L 31.079 31.421 L 26.694 31.421 L 26.694 34.426 L 31.079 34.426 L 31.079 34.423 Z" style=""/>
<path fill="#313A58" d="M 51.92 31.732 L 49.64 30.959 L 49.64 52.389 L 51.92 52.389 L 51.92 31.732 Z M 10.908 31.819 L 13.189 31.046 L 13.189 52.476 L 10.908 52.476 L 10.908 31.819 Z" style=""/>
<path d="M 11.097 51.603 C 13.269 52.586 15.988 52.276 18.451 51.315 C 21.367 50.176 23.866 48.168 24.668 46.318 C 24.9 45.781 25.509 45.54 26.029 45.779 C 26.259 45.885 26.444 46.075 26.547 46.312 C 27.432 48.152 28.886 49.487 30.554 50.246 C 31.623 50.733 32.775 50.983 33.918 50.978 C 35.051 50.973 36.18 50.717 37.211 50.195 C 38.688 49.446 39.974 48.13 40.802 46.195 C 41.031 45.656 41.641 45.412 42.163 45.649 C 42.416 45.764 42.614 45.978 42.711 46.245 C 43.106 47.121 43.54 47.869 44.009 48.496 C 45.11 49.969 46.402 50.756 47.805 50.981 C 49.259 51.215 50.874 50.868 52.56 50.07 C 53.763 49.501 55 48.701 56.239 47.714 L 57.499 49.397 C 56.142 50.478 54.77 51.363 53.416 52.004 C 51.373 52.971 49.365 53.383 47.49 53.082 C 45.567 52.773 43.824 51.731 42.377 49.796 C 42.148 49.488 41.933 49.17 41.734 48.842 C 40.756 50.32 39.505 51.399 38.116 52.103 C 36.799 52.772 35.361 53.098 33.918 53.104 C 32.484 53.109 31.046 52.799 29.722 52.197 C 28.122 51.468 26.677 50.311 25.588 48.764 C 24.183 50.57 21.811 52.279 19.178 53.307 C 16.265 54.444 12.989 54.782 10.273 53.553 L 11.097 51.603 Z" style="fill: rgb(30, 130, 255);"/>
<path d="M 8.218 34.7 C 8.218 34.7 8.173 34.7 8.13 34.7 C 8.041 34.7 7.997 34.7 7.953 34.64 L 7.908 34.64 C 6.888 34.399 6.046 33.017 5.958 31.515 L 5.958 31.034 C 6.003 30.794 6.046 30.494 6.091 30.192 C 6.18 30.013 6.268 29.772 6.357 29.532 L 6.667 28.93 C 7.376 27.789 7.953 26.648 8.351 25.445 C 8.794 26.888 9.504 28.15 10.08 29.111 C 10.124 29.231 10.213 29.411 10.346 29.592 C 10.434 29.832 10.567 30.133 10.701 30.373 C 10.745 30.553 10.789 30.854 10.834 31.094 L 10.834 31.455 C 10.834 31.515 10.834 31.575 10.834 31.635 C 10.834 31.635 10.834 31.695 10.834 31.695 L 10.834 31.756 L 10.834 31.815 C 10.701 33.138 9.903 34.399 8.928 34.64 L 8.883 34.64 C 8.839 34.64 8.794 34.7 8.706 34.7 C 8.661 34.7 8.618 34.7 8.618 34.7 L 8.218 34.7" fill="#1e82ff" style=""/>
<path d="M 17.152 21.924 C 17.152 21.924 17.107 21.924 17.064 21.924 C 16.975 21.924 16.931 21.924 16.887 21.864 L 16.842 21.864 C 15.822 21.623 14.98 20.241 14.892 18.739 L 14.892 18.258 C 14.937 18.018 14.98 17.718 15.025 17.416 C 15.114 17.237 15.202 16.996 15.291 16.756 L 15.601 16.154 C 16.31 15.013 16.887 13.872 17.285 12.669 C 17.728 14.112 18.438 15.374 19.014 16.335 C 19.058 16.455 19.147 16.635 19.28 16.816 C 19.368 17.056 19.501 17.357 19.635 17.597 C 19.679 17.777 19.723 18.078 19.768 18.318 L 19.768 18.679 C 19.768 18.739 19.768 18.799 19.768 18.859 C 19.768 18.859 19.768 18.919 19.768 18.919 L 19.768 18.98 L 19.768 19.039 C 19.635 20.362 18.837 21.623 17.862 21.864 L 17.817 21.864 C 17.773 21.864 17.728 21.924 17.64 21.924 C 17.595 21.924 17.552 21.924 17.552 21.924 L 17.152 21.924" fill="#1e82ff" style=""/>
<path d="M 42.51 27.949 C 42.51 27.949 42.465 27.949 42.422 27.949 C 42.333 27.949 42.289 27.949 42.245 27.889 L 42.2 27.889 C 41.18 27.648 40.338 26.266 40.25 24.764 L 40.25 24.283 C 40.295 24.043 40.338 23.743 40.383 23.441 C 40.472 23.262 40.56 23.021 40.649 22.781 L 40.959 22.179 C 41.668 21.038 42.245 19.897 42.643 18.694 C 43.086 20.137 43.796 21.399 44.372 22.36 C 44.416 22.48 44.505 22.66 44.638 22.841 C 44.726 23.081 44.859 23.382 44.993 23.622 C 45.037 23.802 45.081 24.103 45.126 24.343 L 45.126 24.704 C 45.126 24.764 45.126 24.824 45.126 24.884 C 45.126 24.884 45.126 24.944 45.126 24.944 L 45.126 25.005 L 45.126 25.064 C 44.993 26.387 44.195 27.648 43.22 27.889 L 43.175 27.889 C 43.131 27.889 43.086 27.949 42.998 27.949 C 42.953 27.949 42.91 27.949 42.91 27.949 L 42.51 27.949" fill="#1e82ff" style=""/>
<path d="M 30.168 12.518 C 30.168 12.518 30.123 12.518 30.08 12.518 C 29.991 12.518 29.947 12.518 29.903 12.458 L 29.858 12.458 C 28.838 12.217 27.996 10.835 27.908 9.333 L 27.908 8.852 C 27.953 8.612 27.996 8.312 28.041 8.01 C 28.13 7.831 28.218 7.59 28.307 7.35 L 28.617 6.748 C 29.326 5.607 29.903 4.466 30.301 3.263 C 30.744 4.706 31.454 5.968 32.03 6.929 C 32.074 7.049 32.163 7.229 32.296 7.41 C 32.384 7.65 32.517 7.951 32.651 8.191 C 32.695 8.371 32.739 8.672 32.784 8.912 L 32.784 9.273 C 32.784 9.333 32.784 9.393 32.784 9.453 C 32.784 9.453 32.784 9.513 32.784 9.513 L 32.784 9.574 L 32.784 9.633 C 32.651 10.956 31.853 12.217 30.878 12.458 L 30.833 12.458 C 30.789 12.458 30.744 12.518 30.656 12.518 C 30.611 12.518 30.568 12.518 30.568 12.518 L 30.168 12.518" fill="#1e82ff" style=""/>
<path d="M 54.328 36.78 C 54.328 36.78 54.283 36.78 54.24 36.78 C 54.151 36.78 54.107 36.78 54.063 36.72 L 54.018 36.72 C 52.998 36.479 52.156 35.097 52.068 33.595 L 52.068 33.114 C 52.113 32.874 52.156 32.574 52.201 32.272 C 52.29 32.093 52.378 31.852 52.467 31.612 L 52.777 31.01 C 53.486 29.869 54.063 28.728 54.461 27.525 C 54.904 28.968 55.614 30.23 56.19 31.191 C 56.234 31.311 56.323 31.491 56.456 31.672 C 56.544 31.912 56.677 32.213 56.811 32.453 C 56.855 32.633 56.899 32.934 56.944 33.174 L 56.944 33.535 C 56.944 33.595 56.944 33.655 56.944 33.715 C 56.944 33.715 56.944 33.775 56.944 33.775 L 56.944 33.836 L 56.944 33.895 C 56.811 35.218 56.013 36.479 55.038 36.72 L 54.993 36.72 C 54.949 36.72 54.904 36.78 54.816 36.78 C 54.771 36.78 54.728 36.78 54.728 36.78 L 54.328 36.78" fill="#1e82ff" style=""/>
<path d="M 10.92 57.018 C 13.092 58.001 15.811 57.691 18.274 56.73 C 21.19 55.591 23.689 53.583 24.491 51.733 C 24.723 51.196 25.332 50.955 25.852 51.194 C 26.082 51.3 26.267 51.49 26.37 51.727 C 27.255 53.567 28.709 54.902 30.377 55.661 C 31.446 56.148 32.598 56.398 33.741 56.393 C 34.874 56.388 36.003 56.132 37.034 55.61 C 38.511 54.861 39.797 53.545 40.625 51.61 C 40.854 51.071 41.464 50.827 41.986 51.064 C 42.239 51.179 42.437 51.393 42.534 51.66 C 42.929 52.536 43.363 53.284 43.832 53.911 C 44.933 55.384 46.225 56.171 47.628 56.396 C 49.082 56.63 50.697 56.283 52.383 55.485 C 53.586 54.916 54.823 54.116 56.062 53.129 L 57.322 54.812 C 55.965 55.893 54.593 56.778 53.239 57.419 C 51.196 58.386 49.188 58.798 47.313 58.497 C 45.39 58.188 43.647 57.146 42.2 55.211 C 41.971 54.903 41.756 54.585 41.557 54.257 C 40.579 55.735 39.328 56.814 37.939 57.518 C 36.622 58.187 35.184 58.513 33.741 58.519 C 32.307 58.524 30.869 58.214 29.545 57.612 C 27.945 56.883 26.5 55.726 25.411 54.179 C 24.006 55.985 21.634 57.694 19.001 58.722 C 16.088 59.859 12.812 60.197 10.096 58.968 L 10.92 57.018 Z" style="fill: rgb(30, 130, 255);"/>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30"/>
<path d="M 10.382 37.307 C 12.554 38.29 15.273 37.98 17.736 37.019 C 20.652 35.88 23.151 33.872 23.953 32.022 C 24.185 31.485 24.794 31.244 25.314 31.483 C 25.544 31.589 25.729 31.779 25.832 32.016 C 26.717 33.856 28.171 35.191 29.839 35.95 C 30.908 36.437 32.06 36.687 33.203 36.682 C 34.336 36.677 35.465 36.421 36.496 35.899 C 37.973 35.15 39.259 33.834 40.087 31.899 C 40.316 31.36 40.926 31.116 41.448 31.353 C 41.701 31.468 41.899 31.682 41.996 31.949 C 42.391 32.825 42.825 33.573 43.294 34.2 C 44.395 35.673 45.687 36.46 47.09 36.685 C 48.544 36.919 50.159 36.572 51.845 35.774 C 53.048 35.205 54.285 34.405 55.524 33.418 L 56.784 35.101 C 55.427 36.182 54.055 37.067 52.701 37.708 C 50.658 38.675 48.65 39.087 46.775 38.786 C 44.852 38.477 43.109 37.435 41.662 35.5 C 41.433 35.192 41.218 34.874 41.019 34.546 C 40.041 36.024 38.79 37.103 37.401 37.807 C 36.084 38.476 34.646 38.802 33.203 38.808 C 31.769 38.813 30.331 38.503 29.007 37.901 C 27.407 37.172 25.962 36.015 24.873 34.468 C 23.468 36.274 21.096 37.983 18.463 39.011 C 15.55 40.148 12.274 40.486 9.558 39.257 L 10.382 37.307 Z" style="fill: rgb(30, 130, 255);"/>
<path d="M 10.205 42.722 C 12.377 43.705 15.096 43.395 17.559 42.434 C 20.475 41.295 22.974 39.287 23.776 37.437 C 24.008 36.9 24.617 36.659 25.137 36.898 C 25.367 37.004 25.552 37.194 25.655 37.431 C 26.54 39.271 27.994 40.606 29.662 41.365 C 30.731 41.852 31.883 42.102 33.026 42.097 C 34.159 42.092 35.288 41.836 36.319 41.314 C 37.796 40.565 39.082 39.249 39.91 37.314 C 40.139 36.775 40.749 36.531 41.271 36.768 C 41.524 36.883 41.722 37.097 41.819 37.364 C 42.214 38.24 42.648 38.988 43.117 39.615 C 44.218 41.088 45.51 41.875 46.913 42.1 C 48.367 42.334 49.982 41.987 51.668 41.189 C 52.871 40.62 54.108 39.82 55.347 38.833 L 56.607 40.516 C 55.25 41.597 53.878 42.482 52.524 43.123 C 50.481 44.09 48.473 44.502 46.598 44.201 C 44.675 43.892 42.932 42.85 41.485 40.915 C 41.256 40.607 41.041 40.289 40.842 39.961 C 39.864 41.439 38.613 42.518 37.224 43.222 C 35.907 43.891 34.469 44.217 33.026 44.223 C 31.592 44.228 30.154 43.918 28.83 43.316 C 27.23 42.587 25.785 41.43 24.696 39.883 C 23.291 41.689 20.919 43.398 18.286 44.426 C 15.373 45.563 12.097 45.901 9.381 44.672 L 10.205 42.722 Z" style="fill: rgb(30, 130, 255);"/>
<path d="M 32.307 33.157 C 30.008 33.038 27.346 31.638 25.776 29.76 C 25.48 29.421 25.206 29.064 24.956 28.688 C 23.585 30.561 21.153 32.357 18.438 33.424 C 15.546 34.563 12.297 34.903 9.61 33.677 L 10.301 32.03 C 12.342 32.962 14.845 32.775 17.183 31.979 C 17.253 28.669 18.202 25.534 19.838 22.875 C 21.336 20.442 23.646 18.223 26.281 16.786 C 29.429 15.07 33.861 14.165 36.905 16.582 C 40.064 19.088 39.596 23.333 36.462 25.669 C 35.744 26.203 34.894 26.543 34.027 26.631 C 33.319 26.702 32.602 26.606 31.934 26.309 C 31.263 26.011 30.648 25.518 30.154 24.801 C 29.581 23.968 29.17 22.827 29.031 21.336 C 28.992 20.904 29.296 20.523 29.711 20.48 C 30.125 20.44 30.493 20.757 30.532 21.188 C 30.643 22.376 30.953 23.26 31.383 23.885 C 31.708 24.357 32.102 24.676 32.525 24.866 C 32.954 25.056 33.42 25.116 33.885 25.069 C 34.48 25.009 35.072 24.769 35.582 24.39 C 37.883 22.674 38.346 19.7 35.99 17.83 C 26.886 12.683 22.711 27.316 31.469 31.199 C 32.079 31.342 32.703 31.412 33.329 31.411 C 34.495 31.407 35.656 31.142 36.717 30.6 C 38.239 29.821 39.562 28.459 40.413 26.455 C 40.605 26 41.116 25.793 41.554 25.994 C 41.766 26.091 41.931 26.272 42.013 26.498 C 42.418 27.404 42.863 28.177 43.343 28.823 C 44.48 30.357 45.818 31.177 47.274 31.413 C 48.771 31.655 50.429 31.298 52.154 30.475 C 53.379 29.893 54.635 29.073 55.89 28.065 L 56.947 29.488 C 55.592 30.576 54.222 31.465 52.872 32.109 C 50.847 33.075 48.86 33.487 47.01 33.188 C 45.117 32.881 43.402 31.847 41.976 29.924 C 41.694 29.542 41.434 29.145 41.197 28.733 C 40.211 30.324 38.919 31.474 37.476 32.212 C 36.175 32.876 34.753 33.201 33.329 33.207 C 32.988 33.209 32.647 33.192 32.307 33.157 Z" style="fill: rgb(30, 130, 255);"/>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30" />
<path
d="m61.55 22.14c-3.06-.84-7.3-2.16-9.33-3.51-3.39-2.25-4.77-2.26-7.12-3.02-2.35-.76-4.78-2.08-4.78-2.08s-2.57-2.17-6.5-2.77c-3.92-.6-5.65-2.61-5.65-2.61s-.6-1.38-2.2-1.96c-2.54-1.01-6.25 2.29-8.28 7.38-2.03 5.09-1.61 10.04.94 11.05 0 0 6.32 2.52 10.66 2.08 4.34-.44 7.8.39 7.8.39s3.64.85 7.37.58c3.72-.27 6.09.62 6.09.62s2.41.67 10.18.27c.31-.43.57-.91.77-1.43.67-1.69.64-3.47.05-4.99z"
fill="#db5336" stroke="#db5336" stroke-miterlimit="10" />
<ellipse transform="matrix(-.929-.37.37-.929 37.3113 37.9507)" cx="22.3" cy="15.4" rx="4.96" ry="9.92"
fill="#ca2a14" />
<g fill="#fff">
<path
d="m61.55 22.14c-1.77-.48-3.92-1.13-5.82-1.84.77 1.74.88 3.69.16 5.5-.46 1.15-1.2 2.1-2.12 2.84 1.58.07 3.84.09 6.97-.07.31-.43.57-.91.77-1.43.66-1.7.63-3.48.04-5" />
<path
d="m50.1 17.36c-1.98-1.03-3.21-1.17-5-1.75-.5-.16-1.01-.35-1.49-.54 1.27 2.47 1.49 5.53.35 8.41-.67 1.68-1.73 3.09-3.01 4.15 1.08.08 2.29.12 3.51.03 1.07-.08 2.02-.06 2.84.01 1.21-.93 2.19-2.2 2.8-3.73.89-2.21.82-4.56 0-6.58" />
<path
d="m37.81 12c-1.06-.5-2.42-1-3.99-1.24-.84-.13-1.57-.32-2.22-.54 1.6 2.52 1.73 6.77.05 10.99-.89 2.24-2.16 4.14-3.59 5.53.42 0 .83-.01 1.23-.05 1.8-.18 3.45-.15 4.76-.04 1.75-1.09 3.32-2.98 4.29-5.4 1.4-3.53 1.1-7.14-.53-9.25" />
<path
d="m24.53 15.02c-1.09 2.73-1.32 5.44-.8 7.43 1.21-1.31 2.34-3.11 3.18-5.22 1.08-2.72 1.47-5.4 1.2-7.46-1.4 1.19-2.7 3.02-3.58 5.25" />
</g>
<g fill="none" stroke="#1a171b" stroke-miterlimit="10">
<path d="m13.55 10.5 4.7 2.19" />
<path d="m13.55 10.5 13.28-3.87" />
<path d="m13.55 10.5 8.74 13.45" />
<path d="M 13.55,10.5 7,9" />
</g>
<path d="M4.5,59.5V9c0-1.38,1.12-2.5,2.5-2.5S9.5,7.62,9.5,9c0,1.21-0.86,2.22-2,2.45V59.5H4.5z" fill="#8b96ac" />
<path
d="m7 7c1.1 0 2 0.9 2 2s-0.9 2-2 2v48h-2v-50c0-1.1 0.9-2 2-2m0-1c-1.65 0-3 1.35-3 3v51h4v-48.17c1.16-0.41 2-1.52 2-2.83 0-1.65-1.35-3-3-3z"
fill="#676b72" />
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,146 @@
---
id: meteofrance
label: Meteo France
title: Meteo France - Bindings
type: binding
description: "This binding provides information made available by Meteo France:"
since: 3x
install: manual
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Meteo France Binding
This binding provides information made available by Meteo France:
* Alert level regarding major weather related risk factors (`vigilance` Thing)
* Rain intensity forecasts (`rain-forecast`Thing)
This binding provides its own icon set and provides appropriate static and dynamic SVG icons (see items examples below).
## Discovery
Once a bridge with the API key has been created, appropriate departments can be auto discovered based on system location.
## Binding Configuration
The binding has no configuration options, all configuration is done at Bridge and Thing level.
## Bridge Configuration
The `api` bridge has only one configuration parameter :
| Parameter | Description |
|-----------|-------------------------------------------------------|
| apikey | Data-platform token to access the service. Mandatory. |
To obtain an API key, you must create an account on https://portail-api.meteofrance.fr/web/fr/
Inside the API Portal, create an application on "Bulletin Vigilance" and generate they API key (set duration to 0).
## Thing Configuration
The `vigilance` thing has these configuration parameters:
| Parameter | Description |
|------------|-------------------------------------------------------------------------|
| department | Code of the department (two digits). |
| refresh | Refresh interval in minutes. Optional, the default value is 60 minutes. |
The `rain-forecast` thing has this configuration parameters:
| Parameter | Description |
|-----------|--------------------------------------------------------------|
| location | Geo coordinates to be considered by the service. |
## Channels
The information that are retrieved is available as these channels:
| Channel ID | Item Type | Description |
|-----------------------|-----------|-----------------------------------------------|
| observation-time | DateTime | Date and time of report validity start |
| end-time | DateTime | Date and time of report validity end |
| comment | String | General comments on alerts for the department |
| vent | Number | Wind alert level (*) |
| pluie-inondation | Number | Rain alert level (*) |
| orage | Number | Storm alert level (*) |
| inondation | Number | Flood alert level (*) |
| neige | Number | Snow alert level (*) |
| canicule | Number | Heat alert level (*) |
| grand-froid | Number | Cold alert level (*) |
| avalanches | Number | Avalanche alert level (*) |
| vague-submersion | Number | Wave submersion alert level (*) |
| pluie-inondation-icon | Image | Pictogram of the Rain alert level |
| vent-icon | Image | Pictogram of the Wind alert level |
| orage-icon | Image | Pictogram of Storm alert level |
| inondation-icon | Image | Pictogram of Flood alert level |
| neige-icon | Image | Pictogram of Snow alert level |
| canicule-icon | Image | Pictogram of Heat alert level |
| grand-froid-icon | Image | Pictogram of Cold alert level |
| avalanches-icon | Image | Pictogram of Avalanche alert level |
| vague-submersion-icon | Image | Pictogram of Wave Submersion alert level |
(*) Each alert level has an associated color and description:
| Code | Color | Description |
|------|--------|-------------------------------------------|
| 0 | Green | No particular vigilance |
| 1 | Yellow | Be attentive to the weather situation |
| 2 | Orange | Be "very vigilant" in the concerned areas |
| 3 | Red | Absolute vigilance required |
## Provided icon set
This binding has its own IconProvider and makes available the following list of icons
| Icon Name | Dynamic | Illustration |
|---------------------------------|---------|--------------|
| oh:meteofrance:vent | Yes | ![](doc/images/vent.svg) |
| oh:meteofrance:pluie-inondation | Yes | ![](doc/images/pluie-inondation.svg) |
| oh:meteofrance:orage | Yes | ![](doc/images/orage.svg) |
| oh:meteofrance:inondation | Yes | ![](doc/images/inondation.svg) |
| oh:meteofrance:neige | Yes | ![](doc/images/neige.svg) |
| oh:meteofrance:canicule | Yes | ![](doc/images/canicule.svg) |
| oh:meteofrance:grand-froid | Yes | ![](doc/images/grand-froid.svg) |
| oh:meteofrance:avalanches | Yes | ![](doc/images/avalanches.svg) |
| oh:meteofrance:vague-submersion | Yes | ![](doc/images/vague-submersion.svg) |
| oh:meteofrance:meteo_france | No | ![](doc/images/meteo_france.svg) |
| oh:meteofrance:intensity | Yes | ![](doc/images/intensity.svg) |
## Full Example
meteoalert.things:
```java
Thing meteofrance:department:yvelines @ "MyCity" [department="78", refresh=12]
```
meteoalert.items:
```java
Group gMeteoAlert "Alertes Météo" <oh:meteofrance:meteo_france>
String MA_Dept78 "Département 78 [%s]" <text> (gMeteoAlert) {channel="meteofrance:department:yvelines:comment"}
Number MA_etat_canicule "Canicule [%s]" <oh:meteofrance:canicule> (gMeteoAlert) {channel="meteofrance:department:yvelines:canicule"}
Number MA_etat_grand_froid "Grand Froid [%s]" <oh:meteofrance:grand-froid> (gMeteoAlert) {channel="meteofrance:department:yvelines:grand-froid"}
Number MA_etat_pluie_inondation "Pluie-Inondation [%s]" <oh:meteofrance:pluie-inondation> (gMeteoAlert) {channel="meteofrance:department:yvelines:pluie-inondation"}
Number MA_etat_neige "Neige [%s]" <oh:meteofrance:neige> (gMeteoAlert) {channel="meteofrance:department:yvelines:neige"}
Number MA_etat_vent "Vent [%s]" <oh:meteofrance:vent> (gMeteoAlert) {channel="meteofrance:department:yvelines:vent"}
Number MA_etat_inondation "Inondation [%s]" <oh:meteofrance:inondation> (gMeteoAlert) {channel="meteofrance:department:yvelines:inondation"}
Number MA_etat_orage "Orage [%s]" <oh:meteofrance:orage> (gMeteoAlert) {channel="meteofrance:department:yvelines:orage"}
Number MA_etat_avalanche "Avalanches [%s]" <oh:meteofrance:avalanches> (gMeteoAlert) {channel="meteofrance:department:yvelines:avalanches"}
Image MA_icon_canicule "Canicule" <oh:meteofrance:canicule> (gMeteoAlert) {channel="meteofrance:department:yvelines:canicule-icon"}
Image MA_icon_grand_froid "Grand Froid" <oh:meteofrance:grand-froid> (gMeteoAlert) {channel="meteofrance:department:yvelines:grand-froid-icon"}
Image MA_icon_pluie_inondation "Pluie-Inondation" <oh:meteofrance:pluie-inondation> (gMeteoAlert) {channel="meteofrance:department:yvelines:pluie-inondation-icon"}
Image MA_icon_neige "Neige" <oh:meteofrance:neige> (gMeteoAlert) {channel="meteofrance:department:yvelines:neige-icon"}
Image MA_icon_vent "Vent" <oh:meteofrance:vent> (gMeteoAlert) {channel="meteofrance:department:yvelines:vent-icon"}
Image MA_icon_inondation "Inondation" <oh:meteofrance:inondation> (gMeteoAlert) {channel="meteofrance:department:yvelines:inondation-icon"}
Image MA_icon_orage "Orage" <oh:meteofrance:orage> (gMeteoAlert) {channel="meteofrance:department:yvelines:orage-icon"}
Image MA_icon_avalanche "Avalanche" <oh:meteofrance:avalanches> (gMeteoAlert) {channel="meteofrance:department:yvelines:avalanches-icon"}
DateTime MA_ObservationTS "Timestamp [%1$tH:%1$tM]" <time> (gMeteoAlert) {channel="meteofrance:department:yvelines:observation-time"}
```

View File

@ -129,15 +129,15 @@ Basic parameters
Advanced parameters
| Parameter | Required | Type | Default if omitted | Description |
| ------------------------------- | -------- | ------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `timeBetweenTransactionsMillis` | | integer | `60` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
| `timeBetweenReconnectMillis` | | integer | `0` | How long to wait to before trying to establish a new connection after the previous one has been disconnected. In milliseconds. |
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
| `reconnectAfterMillis` | | integer | `0` | The connection is kept open at least the time specified here. Value of zero means that connection is disconnected after every MODBUS transaction. In milliseconds. |
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means that system/OS default is respected. In milliseconds. |
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
| Parameter | Required | Type | Default if omitted | Description |
|---------------------------------|----------|---------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `timeBetweenTransactionsMillis` | | integer | `60` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
| `timeBetweenReconnectMillis` | | integer | `0` | How long to wait to before trying to establish a new connection after the previous one has been disconnected. In milliseconds. |
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
| `reconnectAfterMillis` | | integer | `0` | The connection is kept open at least the time specified here. Value of zero means that connection is disconnected after every MODBUS transaction. In milliseconds. |
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means that system/OS default is respected. In milliseconds. |
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
**Note:** Advanced parameters must be equal for all `tcp` things sharing the same `host` and `port`.
@ -151,29 +151,29 @@ Similarly, with some slower devices on might need to increase the values.
Basic parameters
| Parameter | Type | Required | Default if omitted | Description | |
| --------- | ------- | -------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- |
| port | text | ✓ | | Serial port to use, for example `"/dev/ttyS0"` or `"COM1"` | |
| id | integer | | `1` | Slave id. Also known as station address or unit identifier. See [Wikipedia](https://en.wikipedia.org/wiki/Modbus) and [simplymodbus](https://www.simplymodbus.ca/index.html) articles for more information | |
| baud | integer | ✓ | | Baud of the connection. Valid values are: `75`, `110`, `300`, `1200`, `2400`, `4800`, `9600`, `19200`, `38400`, `57600`, `115200`. | |
| stopBits | text | ✓ | | Stop bits. Valid values are: `"1.0"`, `"1.5"`, `"2.0"`. | |
| parity | text | ✓ | | Parity. Valid values are: `"none"`, `"even"`, `"odd"`. | |
| dataBits | integer | ✓ | | Data bits. Valid values are: `5`, `6`, `7` and `8`. | |
| encoding | text | | `"rtu"` | Encoding. Valid values are: `"ascii"`, `"rtu"`, `"bin"`. | |
| echo | boolean | | `false` | Flag for setting the RS485 echo mode. This controls whether we should try to read back whatever we send on the line, before reading the response. Valid values are: `true`, `false`. | |
| Parameter | Type | Required | Default if omitted | Description | |
|-----------|---------|----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| port | text | ✓ | | Serial port to use, for example `"/dev/ttyS0"` or `"COM1"` | |
| id | integer | | `1` | Slave id. Also known as station address or unit identifier. See [Wikipedia](https://en.wikipedia.org/wiki/Modbus) and [simplymodbus](https://www.simplymodbus.ca/index.html) articles for more information | |
| baud | integer | ✓ | | Baud of the connection. Valid values are: `75`, `110`, `300`, `1200`, `2400`, `4800`, `9600`, `19200`, `38400`, `57600`, `115200`. | |
| stopBits | text | ✓ | | Stop bits. Valid values are: `"1.0"`, `"1.5"`, `"2.0"`. | |
| parity | text | ✓ | | Parity. Valid values are: `"none"`, `"even"`, `"odd"`. | |
| dataBits | integer | ✓ | | Data bits. Valid values are: `5`, `6`, `7` and `8`. | |
| encoding | text | | `"rtu"` | Encoding. Valid values are: `"ascii"`, `"rtu"`, `"bin"`. | |
| echo | boolean | | `false` | Flag for setting the RS485 echo mode. This controls whether we should try to read back whatever we send on the line, before reading the response. Valid values are: `true`, `false`. | |
Advanced parameters
| Parameter | Required | Type | Default if omitted | Description |
| ------------------------------- | -------- | ------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `receiveTimeoutMillis` | | integer | `1500` | Timeout for read operations. In milliseconds. |
| `flowControlIn` | | text | `"none"` | Type of flow control for receiving. Valid values are: `"none"`, `"xon/xoff in"`, `"rts/cts in"`. |
| `flowControlOut` | | text | `"none"` | Type of flow control for sending. Valid values are: `"none"`, `"xon/xoff out"`, `"rts/cts out"`. |
| `timeBetweenTransactionsMillis` | | integer | `35` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means thatsystem/OS default is respected. In milliseconds. |
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
| Parameter | Required | Type | Default if omitted | Description |
|---------------------------------|----------|---------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `receiveTimeoutMillis` | | integer | `1500` | Timeout for read operations. In milliseconds. |
| `flowControlIn` | | text | `"none"` | Type of flow control for receiving. Valid values are: `"none"`, `"xon/xoff in"`, `"rts/cts in"`. |
| `flowControlOut` | | text | `"none"` | Type of flow control for sending. Valid values are: `"none"`, `"xon/xoff out"`, `"rts/cts out"`. |
| `timeBetweenTransactionsMillis` | | integer | `35` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means thatsystem/OS default is respected. In milliseconds. |
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
With the exception of `id` parameters should be equal for all `serial` things sharing the same `port`.
@ -189,9 +189,9 @@ With low baud rates and/or long read requests (that is, many items polled), ther
You must give each of your bridge Things a reference (thing ID) that is unique for this binding.
| Parameter | Type | Required | Default if omitted | Description |
| ------------- | ------- | -------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|---------------|---------|----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `start` | integer | | `0` | Address of the first register, coil, or discrete input to poll. Input as zero-based index number. |
| `length` | integer | ✓ | (-) | Number of registers, coils or discrete inputs to read. Note that protocol limits max length, depending on type |
| `length` | integer | ✓ | (-) | Number of registers, coils or discrete inputs to read. Note that protocol limits max length, depending on type |
| `type` | text | ✓ | (-) | Type of modbus items to poll. This matches directly to Modbus request type or function code (FC). Valid values are: `"coil"` (FC01), `"discrete"` (FC02), `"holding"`(FC03), `"input"` (FC04). |
| `refresh` | integer | | `500` | Poll interval in milliseconds. Use zero to disable automatic polling. |
| `maxTries` | integer | | `3` | Maximum tries when reading. <br /><br />Number of tries when reading data, if some of the reading fail. For single try, enter 1. |
@ -375,14 +375,14 @@ Note that value types less than 16 bits are not supported on write to holding re
See [Full examples](#full-examples) section for practical examples.
#### `bit`:
#### `bit`
- a single bit is read from the registers
- address is given as `X.Y`, where `Y` is between 0...15 (inclusive), representing bit of the register `X`
- index `Y=0` refers to the least significant bit
- index `Y=1` refers to the second least significant bit, etc.
#### `int8`:
#### `int8`
- a byte (8 bits) from the registers is interpreted as signed integer
- address is given as `X.Y`, where `Y` is between 0...1 (inclusive), representing byte of the register `X`
@ -390,42 +390,42 @@ See [Full examples](#full-examples) section for practical examples.
- index `Y=1` refers to high byte
- it is assumed that each high and low byte is encoded in most significant bit first order
#### `uint8`:
#### `uint8`
- same as `int8` except value is interpreted as unsigned integer
#### `int16`:
#### `int16`
- register with index is interpreted as 16 bit signed integer.
- it is assumed that register is encoded in most significant bit first order
#### `uint16`:
#### `uint16`
- same as `int16` except value is interpreted as unsigned integer
#### `int32`:
#### `int32`
- registers `index` and `(index + 1)` are interpreted as signed 32bit integer
- it assumed that the first register contains the most significant 16 bits
- it is assumed that each register is encoded in most significant bit first order
#### `uint32`:
#### `uint32`
- same as `int32` except value is interpreted as unsigned integer
#### `float32`:
#### `float32`
- registers `index` and `(index + 1)` are interpreted as signed 32bit floating point number
- it assumed that the first register contains the most significant 16 bits
- it is assumed that each register is encoded in most significant bit first order
#### `int64`:
#### `int64`
- registers `index`, `(index + 1)`, `(index + 2)`, `(index + 3)` are interpreted as signed 64bit integer.
- it assumed that the first register contains the most significant 16 bits
- it is assumed that each register is encoded in most significant bit first order
#### `uint64`:
#### `uint64`
- same as `int64` except value is interpreted as unsigned integer
@ -437,27 +437,27 @@ To resolve this the binding supports a second set of valuetypes that have the wo
If you get strange values using the `int32`, `uint32`, `float32`, `int64`, or `uint64` valuetypes then just try the `int32_swap`, `uint32_swap`, `float32_swap`, `int64_swap`, or `uint64_swap` valuetype, depending upon what your data type is.
#### `int32_swap`:
#### `int32_swap`
- registers `index` and `(index + 1)` are interpreted as signed 32bit integer
- it assumed that the first register contains the least significant 16 bits
- it is assumed that each register is encoded in most significant bit first order (Big Endian)
#### `uint32_swap`:
#### `uint32_swap`
- same as `int32_swap` except value is interpreted as unsigned integer
#### `float32_swap`:
#### `float32_swap`
- registers `index` and `(index + 1)` are interpreted as signed 32bit floating point number
- it assumed that the first register contains the least significant 16 bits
- it is assumed that each register is encoded in most significant bit first order (Big Endian)
#### `int64_swap`:
#### `int64_swap`
- same as `int64` but registers swapped, that is, registers (index + 3), (index + 2), (index + 1), (index + 1) are interpreted as signed 64bit integer
#### `uint64_swap`:
#### `uint64_swap`
- same as `uint64` except value is interpreted as unsigned integer

View File

@ -468,7 +468,6 @@ A Home is the Thing holding various modules and devices. They can hold two areas
Depending on the way it is configured the behaviour will be adapted and available channels can vary.
**Home Configuration**
The Home thing has the following configuration elements:
| Parameter | Type | Required | Description |
@ -480,9 +479,9 @@ The Home thing has the following configuration elements:
At least one of these parameter must be filled - at most two :
* id or securityId
* id or energyId
* securityId and energyId
- id or securityId
- id or energyId
- securityId and energyId
(1) this parameter is kept for backward compatibility.

View File

@ -1,6 +1,5 @@
# NibeGW Hardware and Compiling hints
## RS-485 Modules
For settting up a NibeGW you need a RS485 module.
@ -8,8 +7,8 @@ While ProDiNo already have RS-485 support included, you need a separate module f
Most cheap modules out there are compatible with 5V voltage and therefore compatible with Arduino based hardware.
Mostly you will get one of two commonly used designs:
* Modules based on Max1348 chip, which has 2 pins on the Arduino side (RXD, TXD) + VCC + GND
* Modules based on Max485 chip, which has 4 pins on the Arduino side (RO, RE, DE, DI) + VCC + GND
- Modules based on Max1348 chip, which has 2 pins on the Arduino side (RXD, TXD) + VCC + GND
- Modules based on Max485 chip, which has 4 pins on the Arduino side (RO, RE, DE, DI) + VCC + GND
Both types of modules work fine with NibeGW.
The difference between the two is, that the Max485 chip needs to be switched between RX mode and TX mode manually while the Max1348 chip do this automatically.
@ -45,7 +44,6 @@ No special configuration is needed, NibeGW supports this shield out of the box.
ProDiNo already have Ethernet included, so there's no need for a separate Ethernet Shield.
Also the ProDiNo Ethernet is supported by NibeGW out of the box.
## Arduino Uno
Arduino Uno has only one serial port which is shared with USB.
@ -54,7 +52,7 @@ Furthermore do not use the USB port while Arduino is communicating with the Nibe
For compiling NibeGW, you have to make the following changes to the code:
#### Config.h:
### Config.h
Comment out support for all special boards:
@ -74,7 +72,7 @@ Comment out debugging on the serial console:
Adjust the settings for your ethernet connection, target ip and ports and modbus module to simulate.
Leave the serial configuration untouched - it is fine for Arduino Uno.
#### NibeGW.h:
### NibeGW.h
Enable support for HARDWARE_SERIAL:
@ -83,12 +81,12 @@ Enable support for HARDWARE_SERIAL:
#define HARDWARE_SERIAL
```
## ProDiNo ESP32 Ethernet v1
## ProDiNo ESP32 Ethernet v1
NibeGW default settings are valid for ProDiNo ESP32 Ethernet v1 board.
Dynamic configuration is enabled by default.
### Config.h:
### Config.h
```c
//#define PRODINO_BOARD
@ -96,7 +94,7 @@ Dynamic configuration is enabled by default.
//#define TRANSPORT_ETH_ENC28J6A0
```
### NibeGW.h:
### NibeGW.h
```c
#define HARDWARE_SERIAL_WITH_PINS
@ -110,12 +108,10 @@ Install [ProDinoESP32](https://github.com/kmpelectronics/ProDinoESP32) library (
NibeGW code is compatible with ESP32 v2.0.x board library by Espressif Systems.
Install correct ESP32 library via Arduino IDE board manager.
## ProDiNo Ethernet V2
Todo
## Debugging
Debugging messages are available by connecting to port 23 to your NibeGW via telnet.
@ -155,8 +151,9 @@ When dynamic configuration is enabled (only ESP32 boards), NibeGW can be configu
Also OTA firmware update is supported.
The following libraries are required:
* Bleeper (tested with version 1.1.0)
* ElegantOTA (tested with version 2.2.9)
- Bleeper (tested with version 1.1.0)
- ElegantOTA (tested with version 2.2.9)
Dynamic configuration mode is loaded if input 0 is ON during boot.
When dynamic configuration mode is activated, login to the 'Bleeper' Wi-Fi access point.

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 380.6 380.6" width="380.6" height="380.6" xmlns="http://www.w3.org/2000/svg">
<defs>
<style type="text/css">
.st0{fill:#1A98D5;}
</style>
</defs>
<path class="st0" d="M 236.072 302.465 C 239.076 304.128 246.015 306.704 253.334 306.704 C 266.873 306.704 271.062 299.249 270.956 293.659 C 270.829 284.249 261.013 280.211 250.817 280.211 L 244.936 280.211 L 244.936 273.378 L 250.817 273.378 C 258.496 273.378 268.185 269.961 268.185 261.995 C 268.185 256.606 264.229 251.855 254.519 251.855 C 248.278 251.855 242.291 254.23 238.949 256.313 L 236.199 249.681 C 240.261 247.105 248.172 244.51 256.571 244.51 C 271.908 244.51 278.868 252.367 278.868 260.552 C 278.868 267.477 274.066 273.378 264.483 276.393 L 264.483 276.594 C 274.066 278.256 281.851 284.45 281.851 293.878 C 281.851 304.639 272.141 314.067 253.461 314.067 C 244.724 314.067 237.045 311.692 233.216 309.518 L 236.072 302.465 Z" style=""/>
<g>
<path class="st0" d="M325.8,190.3c0-33.7-12.2-64.6-32.4-88.4c0,2.6,0,5.1,0,7.7c-0.2,0.6-0.5,1.2-0.6,1.9 c-2.2,12.2-8.7,21.5-19.4,27.8c-14.8,8.7-34.5,6.2-46.8-5.8c-0.5-0.4-1.6-0.7-2.2-0.4c-11.9,5.9-23.8,11.8-35.7,17.8 c-9.7,4.9-19.5,9.7-29.2,14.6c-13,6.5-26.1,13-39.1,19.6c-0.6,0.3-1,1.3-1.1,2c-0.1,3.2-0.1,6.4,0,9.7c0,0.7,0.5,1.6,1.1,2 c2.4,1.4,4.9,2.6,7.3,3.8c18.9,9.5,37.9,18.9,56.8,28.4c13.3,6.6,26.6,13.3,39.9,19.9c0.5,0.3,1.6,0.1,2-0.3 c7.6-7.3,16.6-10.9,27.1-11c18.1-0.2,33.9,11.8,38.4,29.4c0.5,1.8,0.9,3.6,1.4,5.4c0,1.5,0,3,0,4.5 C313.6,254.9,325.8,224,325.8,190.3z"/>
<path class="st0" d="M228.2,308.6c-10.4-9.2-14.8-20.9-13.4-34.6c0.1-1.1-0.1-1.7-1.2-2.2c-11.4-5.6-22.7-11.4-34.1-17 c-23.3-11.6-46.5-23.2-69.8-34.9c-0.9-0.5-1.5-0.4-2.3,0.3c-1.7,1.6-3.5,3.2-5.4,4.5c-8.8,5.6-18.3,7.7-28.7,6 c-6.5-1.1-12.6-3.9-17.7-7.9c14.6,60,68.6,104.5,133.1,104.5c19,0,37.1-3.9,53.5-10.8C237.1,314.9,232.4,312.3,228.2,308.6z"/>
<path class="st0" d="M62.7,156.6c15.3-7.6,32.3-4.7,44.8,7c0.8,0.7,1.3,0.8,2.2,0.3c14.4-7.2,28.9-14.4,43.3-21.6 c20.1-10,40.1-20.1,60.2-30.1c1.3-0.7,1.6-1.4,1.5-2.8c-2.2-20.4,11.1-38.1,29.6-42.6c0.8-0.2,1.6-0.4,2.4-0.6 c-17.6-8.2-37.3-12.9-58-12.9C123,53.4,68.1,99.7,54.9,161.6C57.2,159.7,59.8,158,62.7,156.6z"/>
</g>
<path class="st0" d="M 190.3 32.1 C 211.7 32.1 232.4 36.3 251.9 44.5 C 270.7 52.5 287.7 63.9 302.2 78.4 C 316.7 92.9 328.2 109.9 336.1 128.7 C 344.3 148.2 348.5 168.9 348.5 190.3 C 348.5 211.7 344.3 232.4 336.1 251.9 C 328.1 270.7 316.7 287.7 302.2 302.2 C 287.7 316.7 270.7 328.2 251.9 336.1 C 232.4 344.3 211.7 348.5 190.3 348.5 C 168.9 348.5 148.2 344.3 128.7 336.1 C 109.9 328.1 92.9 316.7 78.4 302.2 C 63.9 287.7 52.4 270.7 44.5 251.9 C 36.3 232.4 32.1 211.7 32.1 190.3 C 32.1 168.9 36.3 148.2 44.5 128.7 C 52.5 109.9 63.9 92.9 78.4 78.4 C 92.9 63.9 109.9 52.4 128.7 44.5 C 148.2 36.3 168.9 32.1 190.3 32.1 M 190.3 0 C 85.2 0 0 85.2 0 190.3 C 0 295.4 85.2 380.6 190.3 380.6 C 295.4 380.6 380.6 295.4 380.6 190.3 C 380.6 85.2 295.4 0 190.3 0 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<ellipse style="stroke-width: 0px; stroke: rgb(0, 0, 0); fill:#3d3c3c;" cx="32" cy="32" rx="30" ry="30"/>
<circle class="cls-1" cx="32.141" cy="31.8" r="17" style="fill: #b3b3b3;"/>
<line class="cls-2" x1="32.141" x2="32.141" y1="4.8" y2="10.8" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<line class="cls-2" x1="32.141" x2="32.141" y1="52.8" y2="58.8" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<line class="cls-2" x1="59.141" x2="53.141" y1="31.8" y2="31.8" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<line class="cls-2" x1="11.141" x2="5.141" y1="31.8" y2="31.8" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<line class="cls-2" x1="51.231" x2="46.991" y1="12.71" y2="16.95" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<line class="cls-2" x1="17.291" x2="13.051" y1="46.65" y2="50.89" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<line class="cls-2" x1="51.231" x2="46.991" y1="50.89" y2="46.65" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<line class="cls-2" x1="17.291" x2="13.051" y1="16.95" y2="12.71" style="fill: none; stroke: #b3b3b3; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 3px;"/>
<path class="cls-3" d="M 24.931 27.55 L 24.931 33.5 C 24.931 35.28 25.601 36.18 26.801 36.18 C 28.001 36.18 28.701 35.32 28.701 33.5 L 28.701 27.55 L 31.031 27.55 L 31.031 33.34 C 31.031 36.53 29.421 38.04 26.731 38.04 C 24.041 38.04 22.591 36.6 22.591 33.31 L 22.591 27.55 L 24.931 27.55 Z" style="fill: rgb(255, 255, 255);"/>
<path class="cls-3" d="M 35.491 37.88 L 32.141 27.55 L 34.741 27.55 L 36.001 31.92 C 36.351 33.15 36.671 34.33 36.921 35.61 C 37.181 34.37 37.501 33.14 37.851 31.96 L 39.171 27.55 L 41.651 27.55 L 38.211 37.88 L 35.491 37.88 Z" style="fill: rgb(255, 255, 255);"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,50 @@
<svg version="1.2" width="52.876" height="26.86mm" viewBox="13400 10314 1399 2686" preserveAspectRatio="xMidYMid"
fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
<defs class="prefix__ClipPathGroup">
<clipPath id="prefix__a" clipPathUnits="userSpaceOnUse">
<path d="M13400 10314h1399v2686h-1399z" />
</clipPath>
</defs>
<g class="prefix__SlideGroup">
<g class="prefix__Slide" clip-path="url(#prefix__a)">
<g class="prefix__Page">
<g class="prefix__com_sun_star_drawing_ClosedBezierShape">
<path class="prefix__BoundingBox" fill="none" d="M13400 10314h1400v2687h-1400z" />
<path fill="#143A79"
d="M13607 10314h986c114 0 206 93 206 207v2272c0 114-92 207-206 207h-986c-114 0-207-93-207-207v-2272c0-114 93-207 207-207z" />
</g>
<g class="prefix__com_sun_star_drawing_ClosedBezierShape">
<path class="prefix__BoundingBox" fill="none" d="M13616 10459h459v551h-459z" />
<path fill="#FFF"
d="M13616 10820c0 113 101 189 228 189 129 0 230-76 230-189v-361h-98v352c0 75-58 115-132 115s-131-40-131-115v-352h-97v361z" />
</g>
<g class="prefix__com_sun_star_drawing_PolyPolygonShape">
<path class="prefix__BoundingBox" fill="none" d="M14118 10459h503v546h-503z" />
<path fill="#FFF" d="M14332 11004h76l212-545h-103l-146 415h-2l-146-415h-104l213 545z" />
</g>
<g class="prefix__com_sun_star_drawing_PolyPolygonShape">
<path class="prefix__BoundingBox" fill="none" d="M13630 11065h32v217h-32z" />
<path fill="#FFF" d="M13630 11281h31v-216h-31v216z" />
</g>
<g class="prefix__com_sun_star_drawing_PolyPolygonShape">
<path class="prefix__BoundingBox" fill="none" d="M13748 11065h154v217h-154z" />
<path fill="#FFF" d="M13748 11281h30v-153h1l93 153h29v-216h-31v154l-93-154h-29v216z" />
</g>
<g class="prefix__com_sun_star_drawing_ClosedBezierShape">
<path class="prefix__BoundingBox" fill="none" d="M13987 11065h146v217h-146z" />
<path fill="#FFF"
d="M13988 11281h69c30 0 51-16 63-36 9-15 12-23 12-72 0-45 0-53-11-72-14-24-36-36-62-36h-71v216zm30-186h37c17 0 27 5 36 20 9 11 10 21 10 59 0 40-1 46-8 57-8 13-20 19-38 19h-37v-155z" />
</g>
<g class="prefix__com_sun_star_drawing_PolyPolygonShape">
<path class="prefix__BoundingBox" fill="none" d="M14212 11065h132v217h-132z" />
<path fill="#FFF" d="M14212 11281h131v-31h-100v-63h85v-29h-85v-63h100v-30h-131v216z" />
</g>
<g class="prefix__com_sun_star_drawing_PolyPolygonShape">
<path class="prefix__BoundingBox" fill="none" d="M14391 11065h161v217h-161z" />
<path fill="#FFF"
d="M14515 11281h36l-63-111 59-105h-36l-41 75-40-75h-35l58 105-62 111h35l44-80 45 80z" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -81,11 +81,11 @@ Thing can be extended with as many SafeExposure channels as needed for each skin
This binding has its own IconProvider and makes available the following list of icons
| Icon Name | Dynamic | Illustration |
|--------------------|---------|--------------|
| oh:openuv:ozone | No | ![](src/main/resources/icon/ozone.svg) |
| oh:openuv:uv-alarm | Yes | ![](src/main/resources/icon/uv-alarm.svg) |
| oh:openuv:uv-index | Yes | ![](src/main/resources/icon/uv-index.svg) |
| Icon Name | Dynamic | Illustration |
|--------------------|---------|----------------------------|
| oh:openuv:ozone | No | ![](doc/icon/ozone.svg) |
| oh:openuv:uv-alarm | Yes | ![](doc/icon/uv-alarm.svg) |
| oh:openuv:uv-index | Yes | ![](doc/icon/uv-index.svg) |
## Examples

View File

@ -67,11 +67,11 @@ The Thing has a few configuration parameters:
Some notes:
* The control protocol of these players is undocumented and may not work consistently in all situations
* The UHD models only support playback elapsed time (not title total time or chapter information) reporting
* The time and chapter information is only available when playing a Blu-ray disc (not DVD or CD)
* There are reports in forum postings that not all commands work on all of the older models (i.e.: Power does not work on DMP-BDT110)
* Not all status information is available from all BD models (i.e.: playback elapsed time not reported by some models)
- The control protocol of these players is undocumented and may not work consistently in all situations
- The UHD models only support playback elapsed time (not title total time or chapter information) reporting
- The time and chapter information is only available when playing a Blu-ray disc (not DVD or CD)
- There are reports in forum postings that not all commands work on all of the older models (i.e.: Power does not work on DMP-BDT110)
- Not all status information is available from all BD models (i.e.: playback elapsed time not reported by some models)
## Channels

View File

@ -28,40 +28,40 @@ Examples:
Currently binding supports the following panels: EVO192, EVO48(not tested), EVO96(not tested)
## Supported things
## Supported Things
| Thing | Thing Type | Description |
|------------|------------|----------------------------------------------------------------|
| ip150 | Bridge | The bridge is used to communicate with IP150 ethernet module attached to Paradox security system.|
| panel | Thing | This is representation of Paradox panel. Has the general information about the main panel module, i.e. serial number, firmware/hardware/software versions, panel type, etc...|
| partition | Thing | The partition is grouped aggregation of multiple zones. It's also referred in Paradox Babyware as "Area". |
| zone | Thing | Paradox zone. Can be anything - magnetic, motion or any other opened/closed sensor. State channel is contact, "low battery" and "is tampered" channels are switch, label is String |
| Thing | Thing Type | Description |
|-----------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ip150 | Bridge | The bridge is used to communicate with IP150 ethernet module attached to Paradox security system. |
| panel | Thing | This is representation of Paradox panel. Has the general information about the main panel module, i.e. serial number, firmware/hardware/software versions, panel type, etc... |
| partition | Thing | The partition is grouped aggregation of multiple zones. It's also referred in Paradox Babyware as "Area". |
| zone | Thing | Paradox zone. Can be anything - magnetic, motion or any other opened/closed sensor. State channel is contact, "low battery" and "is tampered" channels are switch, label is String |
## Things configuration
### IP150 bridge parameters
### IP150 Bridge Parameters
| Parameter | Description |
|-------------------|----------------------------------------|
| refresh | Value is in seconds. Defines the refresh interval when the binding polls from paradox system. Optional parameter. Default 5 seconds.|
| ip150Password | The password to your IP150 (not your panel PIN). Mandatory parameter. |
| pcPassword | The panel programming code 3012 setting. Optional parameter. Default value is 0000.|
| ipAddress | IP address or hostname of your IP150. If hostname is used must be resolvable by OpenHAB. Mandatory parameter. |
| port | The port used for data communication. Optional parameter. Default value is 10000.|
| Parameter | Description |
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
| refresh | Value is in seconds. Defines the refresh interval when the binding polls from paradox system. Optional parameter. Default 5 seconds. |
| ip150Password | The password to your IP150 (not your panel PIN). Mandatory parameter. |
| pcPassword | The panel programming code 3012 setting. Optional parameter. Default value is 0000. |
| ipAddress | IP address or hostname of your IP150. If hostname is used must be resolvable by OpenHAB. Mandatory parameter. |
| port | The port used for data communication. Optional parameter. Default value is 10000. |
| panelType | If parameter is passed, auto-discovery of panel type will be skipped. Provide string - EVO48, EVO96, EVO192, etc... Optional parameter. |
| reconnectWaitTime | Value is in seconds. The time to wait before a reconnect occurs after socket timeout. Optional parameter. Default value is 30 seconds.|
| maxPartitions | Sets maximum partitions to use during refresh. If not set, maximum allowed amount from panelType will be used. Optional parameter. |
| maxZones | Sets maximum zones to use during refresh. If not set, maximum allowed amount from panelType will be used. Optional parameter.|
| encrypt | Sets if encryption has to be used. Optional parameter. Default value is false |
| reconnectWaitTime | Value is in seconds. The time to wait before a reconnect occurs after socket timeout. Optional parameter. Default value is 30 seconds. |
| maxPartitions | Sets maximum partitions to use during refresh. If not set, maximum allowed amount from panelType will be used. Optional parameter. |
| maxZones | Sets maximum zones to use during refresh. If not set, maximum allowed amount from panelType will be used. Optional parameter. |
| encrypt | Sets if encryption has to be used. Optional parameter. Default value is false |
### IP150 bridge channels
### IP150 Bridge Channels
| Channel | Description |
|---------------------|------------------------------------------------|
|communicationCommand | Possible values [LOGOUT, LOGIN, RESET] |
|communicationState | Shows the communication status to Paradox. Different from Bridge status. Bridge may be online and able to receive commands but communication may be offline due to various reasons. Possible values [Offline, Online] |
#### Communication command channel allowed values
#### Communication Command Values
| Value | Description |
|--------|------------------------------------------------------------------------------------|
@ -69,14 +69,14 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
| LOGIN | Creates socket if necessary, connects to paradox system and uses the logon data from the thing parameters to connect.|
| RESET | Does logout and then login with recreation of communicator objects inside the code.|
### Entities (zones, partitions) configuration parameters:
### Entities (zones, partitions) Configuration
| Value | Description |
|-------------------|------------------------------------------------------------------------------------|
| id | The numeric ID of the zone/partition |
| disarmEnabled | Optional boolean flag. Valid for partitions. When set to true the command DISARM will be allowed for the partition where the flag is enabled. CAUTION: Enabling DISARM command can be dangerous. If attacker can gain access to your openHAB (via API or UI), this command can be used to disarm your armed partition (area) |
### Panel channels:
### Panel Channels
| Channel | Type | Description |
|--------------------------|----------------------------|-------------------------------------------------------------------------------------------|
@ -86,7 +86,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
| batteryVoltage | Number:ElectricPotential | Battery Voltage |
| panelTime | DateTime | Panel internal time (Timezone is set to default zone of the Java virtual machine) |
### Partition channels:
### Partition Channels
| Channel | Type | Description |
|--------------------------|---------|-----------------------------------------------------------------------------------------------|
@ -111,14 +111,15 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
| allZonesClosed | Contact | All zones in partition are currently closed |
| command | String | Command to be send to partition. Can be (ARM, DISARM, FORCE_ARM, INSTANT_ARM, STAY_ARM, BEEP) |
### Partition detailed state possible values:
### Partition Detailed State Values
| Overall state value | Detailed state value (depending on the sub-state) |
|--------------------------|----------------------------------------------------------------------------------------------|
| InAlarm | Silent Alarm, Audible Alarm, Fire Alarm, In Alarm (if none of the first three) |
| Armed | Away Armed, Stay Armed, NoEntry Armed, Armed (if none of the first three) |
| Disarmed | Disarmed |
### Zone channels:
### Zone Channels
| Channel | Type | Description |
|------------------------------------|---------|--------------------------------------------------------------------------------|
@ -135,8 +136,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
| generatedAlarm | Switch | Zone has generated an alarm |
| command | String | Command for zone. Can be (BYPASS, CLEAR_BYPASS) |
## Example things configuration
## Example Things Configuration
```java
Bridge paradoxalarm:ip150:ip150 [refresh=5, panelType="EVO192", ip150Password="********", pcPassword="0000", ipAddress=XXX.XXX.XXX.XXX", port=10000, reconnectWaitTime=10, maxPartitions=4, maxZones=50, encrypt=true ] {
@ -155,7 +155,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
}
```
## Example items configuration
## Example Items Configuration
```java
//Groups
@ -184,7 +184,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
Contact CorridorFl1_MUC_state "Corridor Fl1 window: [%s]" (Floor1MUC) { channel = "paradoxalarm:zone:ip150:MagneticSensorWindow1:opened" }
```
## Example sitemap configuration
## Example Sitemap Configuration
```java
Text label="Security" icon="lock" {

View File

@ -26,20 +26,18 @@ In case of changing water levels the corresponding warning level is lowered or r
|---------------------|---------------------------------------------------------------------------------|---------|
| Measurement Station | Station providing water level measurements | station |
## Discovery
In case your home location coordinates are set the discovery will recognize all measurement stations within a radius of 50 km.
Found Things are added in your Inbox.
## Thing Configuration
Thing configuration contains 3 sections
* [Station selection](station_selection)
* [Warning Levels of selected station](warning_levels)
* [Refresh rate](configuration_parameters)
- [Station selection](station_selection)
- [Warning Levels of selected station](warning_levels)
- [Refresh rate](configuration_parameters)
### Station selection
@ -53,8 +51,8 @@ Configure a station manually using [list of all available stations](https://pege
Each station has specific warning levels
* Warning Levels 1 (*lowest*) to 3 (*highest*)
* Flooding Levels
- Warning Levels 1 (*lowest*) to 3 (*highest*)
- Flooding Levels
Unfortunately these levels cannot be queried automatically.
Please select your [federal state](https://www.hochwasserzentralen.de/) and check if which levels they provide.
@ -77,7 +75,6 @@ If you cannot evaluate warning or flooding levels leave the parameter empty.
## Channels
| channel id | type | description |
|----------------------|----------------------|--------------------------------|
| timestamp | DateTime | Last Measurement |
@ -89,21 +86,21 @@ If you cannot evaluate warning or flooding levels leave the parameter empty.
Possible values:
* 1 : Rising
* 0 : Steady
* -1 : Lowering
- 1 : Rising
- 0 : Steady
- -1 : Lowering
### Warning
Current warning according to configuration
* 0 : No Warning
* 1 : Warning level 1
* 2 : Warning Level 2
* 3 : Warning Level 3
* 4 : Decade Flooding
* 5 : Century Flooding
* 6 : Extreme Flooding
- 0 : No Warning
- 1 : Warning level 1
- 2 : Warning Level 2
- 3 : Warning Level 3
- 4 : Decade Flooding
- 5 : Century Flooding
- 6 : Extreme Flooding
## Full Example
@ -130,8 +127,6 @@ Number Lahn_Giessen_Trend "Water Level Trend Lahn Giessen"
Number Lahn_Giessen_Warning "Warning Level Lahn Giessen" {channel="pegelonline:station:giessen:warning"}
```
## Links
[PegelOnline API Documentation](https://www.pegelonline.wsv.de/webservice/dokuRestapi#caching)

View File

@ -19,15 +19,15 @@ This binding can read information from multiple PLEX players connected to a PLEX
It can be used for multiple scenarios:
* Drive light changes based on player status. For instances turn off the lights when movie starts playing and turn them back on when movie is stopped/paused
* Create a page that displays currently played media of one or more player connected to the server.
* Send social media messages when player plays new media
* Inform what the end time of the currently played media is
- Drive light changes based on player status. For instances turn off the lights when movie starts playing and turn them back on when movie is stopped/paused
- Create a page that displays currently played media of one or more player connected to the server.
- Send social media messages when player plays new media
- Inform what the end time of the currently played media is
The binding can also control `PLAY/PAUSE/NEXT/PREVIOUS` the players which can be used for:
* Start playing some music when someone enters a room
* Pause the movie when motion is detected
- Start playing some music when someone enters a room
- Pause the movie when motion is detected
## Supported Things

View File

@ -63,6 +63,11 @@ Two different actions available:
- `sendPushbulletNote(String recipient, String messsage)`
- `sendPushbulletNote(String recipient, String title, String messsage)`
- `sendPushbulletLink(String recipient, String url)`
- `sendPushbulletLink(String recipient, String title, String messsage, String url)`
- `sendPushbulletFile(String recipient, String content)`
- `sendPushbulletFile(String recipient, String title, String messsage, String content)`
- `sendPushbulletFile(String recipient, String title, String messsage, String content, String fileName)`
Since there is a separate rule action instance for each `bot` thing, this needs to be retrieved through `getActions(scope, thingUID)`.
The first parameter always has to be `pushbullet` and the second is the full Thing UID of the bot that should be used.
@ -71,11 +76,25 @@ Once this action instance is retrieved, you can invoke the action method on it.
The recipient can either be an email address, a channel tag or `null`.
If it is not specified or properly formatted, the note will be broadcast to all of the user account's devices.
The file content can be an image URL, a local file path or an Image item state.
The file name is used in the upload link and how it appears in the push message for non-image content.
If it is not specified, it is automatically determined from the image URL or file path.
For Image item state content, it defaults to `image.jpg`.
For the `sendPushbulletNote` action, parameter `message` is required.
Likewise, for `sendPushbulletLink`, `url` and for `sendPushbulletFile`, `content` parameters are required.
Any other parameters for these actions are optional and can be set to `null`.
Examples:
```java
val actions = getActions("pushbullet", "pushbullet:bot:r2d2")
val result = actions.sendPushbulletNote("someone@example.com", "R2D2 talks here...", "This is the pushed note.")
actions.sendPushbulletNote("someone@example.com", "Note Example", "This is the pushed note.")
actions.sendPushbulletLink("someone@example.com", "Link Example", "This is the pushed link", "https://example.com")
actions.sendPushbulletFile("someone@example.com", "File Example", "This is the pushed file", "https://example.com/image.png")
actions.sendPushbulletFile("someone@example.com", null, null, "/path/to/somefile.pdf", "document.pdf")
actions.sendPushbulletFile("someone@example.com", ImageItem.state.toFullString)
```
## Full Example

View File

@ -38,8 +38,8 @@ You can reach it via [https://pushover.net/apps/clone/openHAB](https://pushover.
| `title` | text | The default title of a message (default: `openHAB`). |
| `format` | text | The default format (`none`, `html` or `monospace`) of a message (default: `none`). |
| `sound` | text | The notification sound on target device (default: `default`) (see [supported notification sounds](https://pushover.net/api#sounds)). This list will be populated dynamically during runtime with 21 different sounds plus user-defined [custom sounds](https://blog.pushover.net/posts/2021/3/custom-sounds). |
| `retry` | integer | The retry parameter specifies how often (in seconds) the Pushover servers will send the same emergency-priority notification to the user (default: `300`). **advanced** |
| `expire` | integer | The expire parameter specifies how long (in seconds) your emergency-priority notification will continue to be retried (default: `3600`). **advanced** |
| `retry` | integer | The retry parameter specifies how often (in seconds) the Pushover servers will send the same emergency-priority notification to the user (default: `300`). **advanced** |
| `expire` | integer | The expire parameter specifies how long (in seconds) your emergency-priority notification will continue to be retried (default: `3600`). **advanced** |
| `timeout` | integer | The timeout parameter specifies maximum number of seconds a request to Pushover can take. **advanced** |
## Channels
@ -89,6 +89,7 @@ For priority `2` only, the action returns a `String` value (the `receipt`) if th
For other priorities, the action always returns an empty `String`.
- `cancelPriorityMessage(String receipt)` - This method is used to cancel an emergency priority message.
The action returns a `Boolean` value to indicate if the message was cancelled successfully or not.
## Full Example

View File

@ -31,17 +31,19 @@ Basic operation does not require any special configuration.
The binding has the following configuration options, which can be set for "binding:samsungtv":
| Parameter | Name | Description | Required |
|-----------------------|---------------------------|---------------------------------------------------------------|-----------|
| hostName | Host Name | Network address of the Samsung TV | yes |
| port | TCP Port | TCP port of the Samsung TV | no |
| macAddress | MAC Address | MAC Address of the Samsung TV | no |
| refreshInterval | Refresh Interval | States how often a refresh shall occur in milliseconds | no |
| protocol | Remote Control Protocol | The type of remote control protocol | yes |
| webSocketToken | Websocket Token | Security token for secure websocket connection | no |
| subscription | Subscribe to UPNP | Reduces polling on UPNP devices | no |
| smartThingsApiKey | Smartthings PAT | Smartthings Personal Access Token | no |
| smartThingsDeviceId | Smartthings Device ID | Smartthings Device ID for this TV | no |
| Parameter | Name | Description | Required |
|------------------------|---------------------------|---------------------------------------------------------------|-----------|
| hostName | Host Name | Network address of the Samsung TV | yes |
| port | TCP Port | TCP port of the Samsung TV | no |
| macAddress | MAC Address | MAC Address of the Samsung TV | no |
| refreshInterval | Refresh Interval | States how often a refresh shall occur in milliseconds | no |
| protocol | Remote Control Protocol | The type of remote control protocol | yes |
| webSocketToken | Websocket Token | Security token for secure websocket connection | no |
| subscription | Subscribe to UPNP | Reduces polling on UPNP devices, default false | no |
| orientationKey | Orientation Key | Key press to send to rotate auto-rotation mount | no |
| smartThingsApiKey | Smartthings PAT | Smartthings Personal Access Token | no |
| smartThingsDeviceId | Smartthings Device ID | Smartthings Device ID for this TV | no |
| smartThingsSubscription| Smarththings Subscription | Reduces polling on Smartthings channels, default true | no |
## Thing Configuration
@ -104,6 +106,7 @@ TVs support the following channels:
| artJson | String | RW | Send/receive commands from the TV art websocket Channel |
| artBrightness | Dimmer | RW | ArtMode Brightness |
| artColorTemperature | Number | RW | ArtMode Color temperature Minnimum value is -5 and maximum 5 |
| artOrientation | Switch | RW | TV orientation, Landscape (OFF) or Portrait (ON) |
**NOTE:** channels: brightness, contrast, sharpness, colorTemperature don't work on newer TV's.
**NOTE:** channels: sourceName, sourceId, programTitle, channelName and stopBrowser may need additional configuration.
@ -233,6 +236,7 @@ Currently known working commands for 2021 and earlier TV's are:
get_api_version
get_artmode_status
set_artmode_status "value" on or off
get_current_rotation "current_rotation_status" 1 is landscape, 2 is Portrait
get_auto_rotation_status
set_auto_rotation_status "type" is "slideshow" pr 'shuffelslideshow", "value" is off or duration in minutes "category_id" is a string representing the category
get_device_info
@ -259,6 +263,7 @@ Currently known working commands for 2022 and later TV's are:
api_version
get_artmode_status
set_artmode_status "value" on or off
get_current_rotation "current_rotation_status" 1 is landscape, 2 is Portrait
get_slideshow_status
set_slideshow_status "type" is "slideshow" pr 'shuffelslideshow", "value" is off or duration in minutes "category_id" is a string representing the category
get_device_info
@ -318,6 +323,17 @@ You can use a `Setpoint` contol for this item in your `sitemap` eg:
Setpoint item=TV_ArtColorTemperature minValue=-5 maxValue=5 step=1 visibility=[TV_ArtMode==ON]
```
### artOrientation:
`artOrientation` is a Switch channel, it reports the current orientation of the TV, OFF for Landscape, and ON for Portrait. This channel is polled. If you send an ON or OFF command to this channel, then the binding will send a long (4s) press of the key defined in the configuration for orientationKey.
For 2023- TV's `orientationKey` should be KEY_MULTI_VIEW (default), for 2024+ TV's this should be KEY_HOME.
```java
Switch item=TV_ArtOrientation mappings[OFF="Landscape", ON="Portrait"]
```
**NOTE:** You should only send commands to the `artOrientation` channel if you have the auto-rotation mount paired to the TV.
## Full Example
### samsungtv.things
@ -349,6 +365,7 @@ Image TV_ArtImage "Current Art" (gLivingRoomTV)
String TV_ArtJson "Art Json [%s]" (gLivingRoomTV) { channel="samsungtv:tv:livingroom:artJson" }
Dimmer TV_ArtBri "Art Brightness [%d%%]" (gLivingRoomTV) { channel="samsungtv:tv:livingroom:artBrightness" }
Number TV_ArtCT "Art CT [%d]" (gLivingRoomTV) { channel="samsungtv:tv:livingroom:artColorTemperature" }
Switch TV_ArtOrient "Art Orientation [%s]" (gLivingRoomTV) { channel="samsungtv:tv:livingroom:artOrientation" }
```
## WOL
@ -356,11 +373,11 @@ Number TV_ArtCT "Art CT [%d]" (gLivingRoomTV)
Wake on Lan is supported by Samsung TVs after 2016. The binding will attempt to use WOL to turn on a TV, if `power` (or `artMode`) is commanded ON.
This only works on TV's after 2016, and has some quirks.
* Does not work on TV's <2016
* Does not work on hardwired ethernet connected TV's **if you have a soundbar connected via ARC/eARC**
* Works on WiFi connected TV's (with or without soundbar)
* May need to enable this function on the TV
* May have to wait up to 1 minute before turning TV back on, as TV does not power down immediately (and so doesn't respond to WOL)
- Does not work on TV's <2016
- Does not work on hardwired ethernet connected TV's **if you have a soundbar connected via ARC/eARC**
- Works on WiFi connected TV's (with or without soundbar)
- May need to enable this function on the TV
- May have to wait up to 1 minute before turning TV back on, as TV does not power down immediately (and so doesn't respond to WOL)
You will have to experiment to see if it works for you. If not, you can power on the TV using IR (if you have a Harmony Hub, or GC iTach or similar).
@ -544,6 +561,11 @@ You can now link the `sourceName`, `sourceId`, `channel` and `channelName` chann
**NOTE:** You may not get anything for `channelName`, as most TVs dont report it. You can only send commands to `channel`, `sourceName` and `sourceId`, `channelName` is read only.
## Smartthings Subscriptions
Smartthings Subscriptions are supported. This is a feature which reduces the polling of Smartthings channels (on by default).
If the Smarthings channels only update with the Smartthings app open, turn subscription off, and the channels will be polled instead. Channels are only polled when the TV is ON.
## UPnP Subscriptions
UPnP Subscriptions are supported. This is an experimental feature which reduces the polling of UPnP services (off by default).

View File

@ -21,16 +21,15 @@ All supported values and devices were discovered while playing with my own energ
## Supported devices
* Solarwatt Energymanager; ie. the DIN rail mounted device in your house distribution.
- Solarwatt Energymanager; ie. the DIN rail mounted device in your house distribution.
## Not supported by this binding
* Solarwatt Manager/Manager Flex; ie. the black square device that is wall mounted.
- Solarwatt Manager/Manager Flex; ie. the black square device that is wall mounted.
The Solarwatt Manager already contains an OpenHAB installation which can be connected to
other installations via [Remote openHAB Binding](https://www.openhab.org/addons/bindings/remoteopenhab/).
## Supported Things
| Thing Type ID | Devices |

View File

@ -142,6 +142,7 @@ Dimmer PhilipsSomneo_Alarm1Volume "Volume"
```
transform/somneorepeatday.js
```javascript
(function(i) {
if (i == 254) {

View File

@ -28,10 +28,10 @@ The binding does not support auto discovery.
As a minimum, the hostname is needed:
* hostname - The hostname of the Tesla Powerwall 2. Defaults to powerwall to avoid SSL certificate issues
* email - the email of the local account on the Powerwall that the installer provided
* password - the password of the local account on the Powerwall that the installer provided
* refresh - The frequency with which to refresh information from the Tesla Powerwall2 specified in seconds. Defaults to 10 seconds.
- hostname - The hostname of the Tesla Powerwall 2. Defaults to powerwall to avoid SSL certificate issues
- email - the email of the local account on the Powerwall that the installer provided
- password - the password of the local account on the Powerwall that the installer provided
- refresh - The frequency with which to refresh information from the Tesla Powerwall2 specified in seconds. Defaults to 10 seconds.
## Channels

View File

@ -94,11 +94,12 @@ The control outlet supports the `power` channel.
A blind or curtain supports, beside `battery_level` and `battery_low` channels, a `positon` channel.
An air purifier supports:
* `fan_mode` and `fan_speed` channels, which allows for control of the fan and reading of the current speed.
* `disable_led` and `lock_button` channels, to respectively disable the LED's and lock the button on the physical device.
* `air_quality_pm25` and `air_quality_rating` channels, which reads the particulate matter 2.5μm and corresponding indication of air quality (similar to Tradfri app rating).
* `filter_check_next` and `filter_check_alarm` channels, which represents the remaining number of minutes until the next filter check and whether it is time to do the filter check now. Filter check must be completed through the TRÅDFRI app (or on the hardware buttons in case of replacement).
* a `filter_uptime` channel, which represents the current time since last filter change.
- `fan_mode` and `fan_speed` channels, which allows for control of the fan and reading of the current speed.
- `disable_led` and `lock_button` channels, to respectively disable the LED's and lock the button on the physical device.
- `air_quality_pm25` and `air_quality_rating` channels, which reads the particulate matter 2.5μm and corresponding indication of air quality (similar to Tradfri app rating).
- `filter_check_next` and `filter_check_alarm` channels, which represents the remaining number of minutes until the next filter check and whether it is time to do the filter check now. Filter check must be completed through the TRÅDFRI app (or on the hardware buttons in case of replacement).
- a `filter_uptime` channel, which represents the current time since last filter change.
Refer to the matrixes above.

View File

@ -184,9 +184,9 @@ Bridge velbus:bridge:1 [ port="COM1", reconnectionInterval="15" ]
Adding Velbus modules to your openHAB configuration follows the conventions of your preferred configuration method.
* **UI-based configuration:** Invoke a manual scan from the Things menu in order to start the [discovery process](#discovery).
- **UI-based configuration:** Invoke a manual scan from the Things menu in order to start the [discovery process](#discovery).
Discovered modules can be found in the inbox.
* **Textual `.thing` configuration** can declare Velbus modules either in a standalone fashion (a bridge is still required):
- **Textual `.thing` configuration** can declare Velbus modules either in a standalone fashion (a bridge is still required):
```java
Thing velbus:<thingType>:<bridgeId>:<thingId> "Label" @ "Location" [ CH1="Kitchen Light", CH2="Living Light" ]

View File

@ -18,28 +18,27 @@ This binding integrates [Warmup](https://www.warmup.co.uk) Wifi enabled Thermost
Devices known to work with the binding:
* [Warmup 4iE](https://www.warmup.co.uk/thermostats/smart/4ie-underfloor-heating)
* [Warmup Element](https://www.warmup.co.uk/thermostats/smart/element-wifi-thermostat)
- [Warmup 4iE](https://www.warmup.co.uk/thermostats/smart/4ie-underfloor-heating)
- [Warmup Element](https://www.warmup.co.uk/thermostats/smart/element-wifi-thermostat)
Device expected to work with the binding:
* [Warmup 6iE](https://www.warmup.co.uk/thermostats/smart/6ie-underfloor-heating)
- [Warmup 6iE](https://www.warmup.co.uk/thermostats/smart/6ie-underfloor-heating)
Devices which might work with the binding:
* Other similar looking devices marketed under different brands, mentioned in the API
* [Laticrete](https://laticrete.com/)
* [Rointe](https://rointe.com/)
* [Porcelanosa](https://www.porcelanosa.com/)
* Equus
* [Savant](https://www.savant.com/)
- Other similar looking devices marketed under different brands, mentioned in the API
- [Laticrete](https://laticrete.com/)
- [Rointe](https://rointe.com/)
- [Porcelanosa](https://www.porcelanosa.com/)
- Equus
- [Savant](https://www.savant.com/)
Any Warmup device must be registered at <https://my.warmup.com/> prior to usage, or connected through the [MyHeating app](https://www.warmup.co.uk/thermostats/smart/myheating-app).
This API is not known to be documented publicly.
The binding api implementation has been derived from the implementations at <https://github.com/alyc100/SmartThingsPublic/blob/master/devicetypes/alyc100/warmup-4ie.src/warmup-4ie.groovy> and <https://github.com/alex-0103/warmup4IE/blob/master/warmup4ie/warmup4ie.py>, and enhanced by inspecting the [GraphQL endpoint](https://apil.warmup.com/graphql).
## Supported Things
The Warmup binding supports the following thing types:
@ -52,8 +51,7 @@ The Warmup binding supports the following thing types:
|----------|-------|------------------------------------------------------------------------------------------------|
| `room` | Room | A room containing an individual Warmup WiFi connected device which controls a heating circuit. |
### Room
**Room**
The device is optimised for controlling underfloor heating (electric or hydronic), although it can also control central heating circuits.
The device reports the temperature from one of two thermostats, either a floor temperature probe or the air temperature at the device.
It appears to be possible to configure two devices in a primary / secondary configuration, but it is not clear how this might be represented by the API and hasn't been implemented.
@ -64,7 +62,7 @@ Once credentials are successfully added to the bridge, any rooms (devices) detec
## Thing Configuration
### My Warmup Account
### `my-warmup` Bridge Configuration
| config parameter | type | description | required | default |
|------------------|---------|-------------------------------------------------|----------|---------|
@ -72,7 +70,7 @@ Once credentials are successfully added to the bridge, any rooms (devices) detec
| password | String | Password for my.warmup.com | true | |
| refreshInterval | Integer | Interval in seconds between automatic refreshes | true | 300 |
### Room
### `room` Thing Configuration
Rooms are configured automatically with a Serial Number on discovery, or can be added manually using the "Device Number" from the device, excluding the last 3 characters. Changing the target temperature results in a temporary override to that temperature, for the duration configured on the thing. This defaults to 60 minutes.
@ -147,6 +145,7 @@ getActions("warmup", "warmup:room:my_warmup:my_room").setOverride(18 | °C, 10 |
```javascript
actions.get("warmup", "warmup:room:my_warmup:my_room").setOverride(Quantity("18 °C"), Quantity("10 min"));
```
:::
::::

View File

@ -11,21 +11,26 @@ and a json based protocol for newer receivers.
The http port 80 on the receiver is used with http POST requests for retrieving and changing the device state. The actual url is http://HOST/YamahaRemoteControl/ctrl.
An example for retrieving data:
```xml
<?xml version="1.0" encoding="utf-8"?>
<YAMAHA_AV cmd="GET">
<ZONE><Basic_Status>GetParam</Basic_Status><ZONE>
</YAMAHA_AV>
```
where ZONE is Main_Zone, Zone_2, Zone_3 or Zone_4.
An example for changing the state of the receiver:
```xml
<YAMAHA_AV cmd="PUT">
<ZONE><Power_Control><Power>On</Power></Power_Control><ZONE>
</YAMAHA_AV>
```
### XML Structure
System
Config
Model_Name
@ -149,14 +154,16 @@ An example for changing the state of the receiver:
List_Control
List_Info
### XML Descriptor
The AVR provides an XML file that describes features and commands available using this URL:
```
http://<Your_Yamaha_ID>/YamahaRemoteControl/desc.xml
```
Or this URL:
```
http://<Your_Yamaha_ID>/YamahaRemoteControl/UnitDesc.xml
```
@ -164,14 +171,14 @@ http://<Your_Yamaha_ID>/YamahaRemoteControl/UnitDesc.xml
As Yamaha introduces new models there may be variations between XML structure.
In an attempt to improve the add-on maintenance and troubleshooting selected model's `desc.xml`' has been collected from community users:
* [HTR-4069](desc_HTR-4069.xml)
* [RX-A2000](desc_RX-A2000.xml)
* [RX-A3070](desc_RX-A3070.xml)
* [RX-S601D](desc_RX-S601D.xml)
* [RX-V479](desc_RX-V479.xml)
* [RX-V583](desc_RX-V583.xml)
* [RX-V675](desc_RX-V675.xml)
* [RX-V3900](desc_RX-V3900.xml)
- [HTR-4069](desc_HTR-4069.xml)
- [RX-A2000](desc_RX-A2000.xml)
- [RX-A3070](desc_RX-A3070.xml)
- [RX-S601D](desc_RX-S601D.xml)
- [RX-V479](desc_RX-V479.xml)
- [RX-V583](desc_RX-V583.xml)
- [RX-V675](desc_RX-V675.xml)
- [RX-V3900](desc_RX-V3900.xml)
### Key differences between models

View File

@ -16,7 +16,7 @@ If you are running on Linux, then you probably need to add the user 'openhab' to
##### Configuration via UI (recommended)
After you have installed the binding, you can add a coordinator via the UI, by navigating to **Settings** > **Things** and clicking on the blue `+` button in the bottom right corner. Then choose the coordinator that matches your dongle. Make sure you check the **Show advanced** box, there are some important settings that otherwise stay hidden. Please refer to the sections [Serial port Configuration](#serial-port-configuration) and [Coordinator Configuration](coordinator-configuration) below for information about the settings for a coordinator.
After you have installed the binding, you can add a coordinator via the UI, by navigating to **Settings** > **Things** and clicking on the blue `+` button in the bottom right corner. Then choose the coordinator that matches your dongle. Make sure you check the **Show advanced** box, there are some important settings that otherwise stay hidden. Please refer to the sections [Serial port Configuration](#serial-port-configuration) and [Coordinator Configuration](#coordinator-configuration) below for information about the settings for a coordinator.
##### Configuration via config file
@ -494,7 +494,6 @@ In order for a report to be sent to the binding, or to another device, a "bindin
Polling may be used by the binding to request data from the device. Polling is normally only used if reporting doesn't work for some reason. This may happen if the reporting table in a device is full - if the binding detects this, it will increase the polling rate.
## Device Firmware Updates
A *Firmware Provider*, backed by the [Koenkk OTA](https://github.com/Koenkk/zigbee-OTA) repository on GitHub can be used to upgrade device firmware. This *Firmware Provider* provides firmware to the openHAB firmware management system. Since there is no information linking firmware to a device, Zigbee devices must ask for a firmware update, and when this happens, the *Firmware Provider* will use the information in this request to check to see if there is firmware available, and if there is it will download this to a local file in the *Userdata* folder. It will also advise the openHAB firmware management system that there is firmware available to upload, and the user can manage this appropriately.
@ -505,8 +504,6 @@ Firmware files downloaded from the repository are checked for integrity against
Currently the openHAB main UI doesn't support the firmware management system, so this must be performed using the console.
## When things don't appear to be working
When things don't appear to be working as expected you should check the logs to try and find what is happening. Debug logging can be enabled with the following Karaf commands -:

View File

@ -31,7 +31,7 @@ If you are running on Linux, then you probably need to add the user 'openhab' to
##### Configuration via UI (recommended)
After you have installed the binding, you can add a coordinator via the UI, by navigating to **Settings** > **Things** and clicking on the blue `+` button in the bottom right corner. Then choose the coordinator that matches your dongle. Make sure you check the **Show advanced** box, there are some important settings that otherwise stay hidden. Please refer to the sections [Serial port Configuration](#serial-port-configuration) and [Coordinator Configuration](coordinator-configuration) below for information about the settings for a coordinator.
After you have installed the binding, you can add a coordinator via the UI, by navigating to **Settings** > **Things** and clicking on the blue `+` button in the bottom right corner. Then choose the coordinator that matches your dongle. Make sure you check the **Show advanced** box, there are some important settings that otherwise stay hidden. Please refer to the sections [Serial port Configuration](#serial-port-configuration) and [Coordinator Configuration](#coordinator-configuration) below for information about the settings for a coordinator.
##### Configuration via config file
@ -509,7 +509,6 @@ In order for a report to be sent to the binding, or to another device, a "bindin
Polling may be used by the binding to request data from the device. Polling is normally only used if reporting doesn't work for some reason. This may happen if the reporting table in a device is full - if the binding detects this, it will increase the polling rate.
## Device Firmware Updates
A *Firmware Provider*, backed by the [Koenkk OTA](https://github.com/Koenkk/zigbee-OTA) repository on GitHub can be used to upgrade device firmware. This *Firmware Provider* provides firmware to the openHAB firmware management system. Since there is no information linking firmware to a device, Zigbee devices must ask for a firmware update, and when this happens, the *Firmware Provider* will use the information in this request to check to see if there is firmware available, and if there is it will download this to a local file in the *Userdata* folder. It will also advise the openHAB firmware management system that there is firmware available to upload, and the user can manage this appropriately.
@ -520,8 +519,6 @@ Firmware files downloaded from the repository are checked for integrity against
Currently the openHAB main UI doesn't support the firmware management system, so this must be performed using the console.
## When things don't appear to be working
When things don't appear to be working as expected you should check the logs to try and find what is happening. Debug logging can be enabled with the following Karaf commands -:

View File

@ -62,7 +62,7 @@ HomeKit integration supports following accessory types:
- install homekit addon via UI
- add metadata to an existing item (see [UI based configuration](#UI-based-Configuration))
- add metadata to an existing item (see [UI based configuration](#ui-based-configuration))
- scan QR code from UI->Settings->HomeKit Integration
@ -91,7 +91,6 @@ HomeKit integration supports following accessory types:
Add metadata to more items or fine-tune your configuration using further settings
## Global Configuration
You can define HomeKit settings either via mainUI or via `$OPENHAB_CONF/services/homekit.cfg`.
@ -168,7 +167,6 @@ In order to add metadata to an item:
- click on "Save"
### Textual configuration
```java
@ -532,9 +530,11 @@ String thermostat_target_mode "Thermostat Target Mode"
In addition, thermostat can have thresholds for cooling and heating modes.
When a thermostat is configured with all three of TargetTemperature, HeatingThresholdTemperature, and CoolingThresholdTemperature, Home will set the characteristics as follows:
* TargetTemperature is used when the thermostat is in HEAT or COOL TargetHeatingCoolingMode.
* CoolingThresholdThemperature and HeatingThresholdTemperature are _only_ used in AUTO TargetHeatingCoolingMode.
* In AUTO TargetHeatingCoolingMode, TargetTemperature will be set to the average of CoolingThresholdThemperature and HeatingThresholdTemperature.
- TargetTemperature is used when the thermostat is in HEAT or COOL TargetHeatingCoolingMode.
- CoolingThresholdThemperature and HeatingThresholdTemperature are *only* used in AUTO TargetHeatingCoolingMode.
- In AUTO TargetHeatingCoolingMode, TargetTemperature will be set to the average of CoolingThresholdThemperature and HeatingThresholdTemperature.
Example with thresholds:
```java
@ -743,6 +743,7 @@ Enum mappings can have multiple values for a single key.
These must be an array, not a comma separated string.
If the characteristic can be set by HomeKit, the first value will be used when sending the command to the linked item.
Such a mapping can be configured manually in MainUI on HomeKit metadata in the Code editor:
```yaml
value: "Lock"
config:
@ -753,23 +754,27 @@ config:
- UNLOCK
- UNLOCKED
```
Or in a `.items` file:
```java
String MyLock "My Lock" { homekit="Lock"[SECURE="LOCK","LOCKED", UNSECURE="UNLOCK","UNLOCKED"] }
```
All accessories support the following characteristics that can be set via metadata or linked to a String item:
* Name (defaults to item's label)
* Manufacturer (defaults to "none")
* Model (defaults to "none")
* SerialNumber (defaults to item's name)
* FirmwareRevision (defaults to "none")
* HardwareRevision (defaults to not present)
- Name (defaults to item's label)
- Manufacturer (defaults to "none")
- Model (defaults to "none")
- SerialNumber (defaults to item's name)
- FirmwareRevision (defaults to "none")
- HardwareRevision (defaults to not present)
Note that even though these characteristics can be linked to an item, they are not dynamic and cannot be updated once the Home app reads their initial values.
All accessories also support the following optional characteristic that can be linked to a Switch item:
* Identify (receives `ON` command when the user wishes to identify the accessory)
- Identify (receives `ON` command when the user wishes to identify the accessory)
| Accessory Tag | Mandatory Characteristics | Optional Characteristics | Supported openHAB item types | Description | Configuration Options | Valid Enum Values |
|-----------------------------|-----------------------------|-----------------------------|------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
@ -1088,7 +1093,7 @@ In order to overcome this limitation, you can instruct openHAB to expose multipl
You will need to manually add each additional bridge in the Home app, since the QR Code in settings will only be for the primary bridge; however the same PIN is still used.
In order to assign a particular accessory to a different bridge, set the `instance` metadata parameter:
```
```java
Switch kitchen_light {homekit="Lighting" [instance=2]}
```
@ -1097,7 +1102,7 @@ If you reference an instance that doesn't exist, then that accessory won't be ex
For complex items, only the root group needs to be tagged for the specific instance:
```
```java
Group gSecuritySystem "Security System Group" {homekit="SecuritySystem" [instance=2]}
String security_current_state "Security Current State" (gSecuritySystem) {homekit="SecuritySystem.CurrentSecuritySystemState"}
String security_target_state "Security Target State" (gSecuritySystem) {homekit="SecuritySystem.TargetSecuritySystemState"}
@ -1124,14 +1129,14 @@ Depending on the openHAB installation method, you should modify `start.sh`, `sta
If you encounter any issues with the add-on and need support, it may be important to get detailed logs of your device's communication with openHAB.
In order to get logs from the underlying library used to implement the HomeKit protocol, enable trace logging using the following commands at [the console](https://www.openhab.org/docs/administration/console.html):
```
```shell
openhab> log:set TRACE io.github.hapjava
openhab> log:tail io.github.hapjava
```
In order to enable detailed logs of openHAB HomeKit binding
```
```shell
openhab> log:set TRACE org.openhab.io.homekit.internal
openhab> log:tail org.openhab.io.homekit.internal
```
@ -1174,12 +1179,12 @@ You can verify this with [Discovery DNS iOS app](https://apps.apple.com/us/app/d
There are various reasons this may happen.
Try the following:
* In [openhab-cli](https://www.openhab.org/docs/administration/console.html), run `openhab:homekit clearPairings`.
- In [openhab-cli](https://www.openhab.org/docs/administration/console.html), run `openhab:homekit clearPairings`.
Try again.
* In the HomeKit settings, change the port, setupId, and pin.
- In the HomeKit settings, change the port, setupId, and pin.
Save the settings, then re-open the settings so as to refresh the QR code.
Re-add the device.
* Remove HomeKit state in `${OPENHAB_USERDATA}/jsondb/homekit.json`, and HomeKit config in `${OPENHAB_USERDATA}/config/org/openhab/homekit.config`.
- Remove HomeKit state in `${OPENHAB_USERDATA}/jsondb/homekit.json`, and HomeKit config in `${OPENHAB_USERDATA}/config/org/openhab/homekit.config`.
Restart openHAB.
Reboot iPhone.
Try again.

View File

@ -23,16 +23,16 @@ This service is independent of the also available Hue binding!
Currently the following Hue functionality is supported:
* Lights: Maps to items
* Groups: Maps to group items
* Rooms: Maps to group items with a specific tag
* Scenes: Maps to rules (new rule engine) that are tagged with "scene"
* Rules: Maps to rules (new rule engine) that are tagged with "hueemulation_rule"
* Schedule: Maps to rules (new rule engine) that are tagged with "hueemulation_schedule"
- Lights: Maps to items
- Groups: Maps to group items
- Rooms: Maps to group items with a specific tag
- Scenes: Maps to rules (new rule engine) that are tagged with "scene"
- Rules: Maps to rules (new rule engine) that are tagged with "hueemulation_rule"
- Schedule: Maps to rules (new rule engine) that are tagged with "hueemulation_schedule"
You can create / modify and remove groups, rooms, scenes, rules and schedules from within Hue compatible devices and apps.
## Discovery:
## Discovery
As soon as the service is enabled, it will announce the presence of an (emulated) HUE bridge of the second generation (square bridge).
Hue bridges are using the Universal Plug and Play (UPnP) protocol for discovery.
@ -50,22 +50,22 @@ Group type items require the "Huelight" tag to be exposed as devices instead of
This service can emulate 3 different devices:
* An OSRAM SMART+ Plug,
* a dimmable white color Philips A19 bulb and
* an a Philips Gen 3 LCT010 extended color bulb.
- An OSRAM SMART+ Plug,
- a dimmable white color Philips A19 bulb and
- an a Philips Gen 3 LCT010 extended color bulb.
The exposed Hue-type depends on some criteria:
* If the item has the category "ColorLight": It will be exposed as a color bulb
* If the item has the category "Light": It will be exposed as a switch.
- If the item has the category "ColorLight": It will be exposed as a color bulb
- If the item has the category "Light": It will be exposed as a switch.
This initial type determination is overridden if the item is tagged.
The following default tags are setup:
* "Switchable": Item will be exposed as an OSRAM SMART+ Plug
* "Lighting": Item will be exposed as a dimmable white bulb
* "ColorLighting": Item will be exposed as a color bulb
- "Switchable": Item will be exposed as an OSRAM SMART+ Plug
- "Lighting": Item will be exposed as a dimmable white bulb
- "ColorLighting": Item will be exposed as a color bulb
It is the responsibility of binding developers to categories and default tag their available *Channels*, so that linked Items are automatically exposed with this service.
@ -84,14 +84,14 @@ The following configurations can be adjusted.
Pairing can be turned on and off:
```
```ini
org.openhab.hueemulation:pairingEnabled=false
```
You can define a pairing timeout in seconds.
After that timeout, the `pairingEnabled` is automatically set to `false`.
```
```ini
org.openhab.hueemulation:pairingTimeout=60
```
@ -100,7 +100,7 @@ Enable the following option in combination with pairing to create a new API key
Necessary for Amazon Echos and other devices where the API key cannot be reset.
After a new installation of openHAB or a configuration pruning the old API keys are gone but Amazon Echos will keep trying with their old, invalid keys.
```
```ini
org.openhab.hueemulation:createNewUserOnEveryEndpoint=false
```
@ -109,13 +109,13 @@ If the following option is enabled in combination with the pairing mode, the ser
This option resets automatically after pairing mode has been switched off by the timeout.
```
```ini
org.openhab.hueemulation:temporarilyEmulateV1bridge=false
```
Permanent V1 bridge emulation (no obvious reason to enable that):
```
```ini
org.openhab.hueemulation:permanentV1bridge=false
```
@ -127,7 +127,7 @@ Usually you do not want to set this option, but change the primary address confi
This option allows you to override what addresses are used for the announcement.
You can have multiple comma separated entries.
```
```ini
org.openhab.hueemulation:discoveryIp=192.168.1.100,::FFFF:A9DB:0D85
```
@ -136,7 +136,7 @@ You need to tell the service which item tag corresponds to which emulated bulb t
One of the comma separated tags must match for the item to be exposed.
Can be empty to match an item based on other criteria.
```
```ini
org.openhab.hueemulation:restrictToTagsSwitches=Switchable
org.openhab.hueemulation:restrictToTagsWhiteLights=Lighting
org.openhab.hueemulation:restrictToTagsColorLights=ColorLighting
@ -145,7 +145,7 @@ org.openhab.hueemulation:restrictToTagsColorLights=ColorLighting
The above default assignment means that every item that has the tag "Switchable" will be emulated as a Zigbee Switch.
If you want your switches to be exposed as lights instead (because your Amazon Echo does not support switches for example), you want to have:
```
```ini
org.openhab.hueemulation:restrictToTagsSwitches=NONE
org.openhab.hueemulation:restrictToTagsWhiteLights=Lighting,Switchable
org.openhab.hueemulation:restrictToTagsColorLights=ColorLighting
@ -154,7 +154,7 @@ org.openhab.hueemulation:restrictToTagsColorLights=ColorLighting
The service tries to expose as much items as possible (greedy), based on some criteria as explained in the section above.
If you want to exclude items, you need to tag them. Define the tags with the following option:
```
```ini
org.openhab.hueemulation:ignoreItemsWithTags=internal
```
@ -166,9 +166,9 @@ You want this tag for all items that are purely used for rules, as proxy items e
Some devices like Amazon Echo, Google Home and all Philips devices (TVs, Apps) expect a Hue bridge to run on port 80.
You must either
* port forward your openHAB installation to port 80,
- port forward your openHAB installation to port 80,
(`iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080`)
* install a reverse proxy on port 80, for example nginx with the following configuration:
- install a reverse proxy on port 80, for example nginx with the following configuration:
```
server {
@ -183,9 +183,9 @@ You must either
}
```
* or let openHAB run on port 80 (the entire java process requires elevated privileges).
- or let openHAB run on port 80 (the entire java process requires elevated privileges).
* For Amazon Echo the pairing process may fail due to a 302 response from openHAB, this can be resolved by using a reverse proxy to change the request url from `/api` to `/api/`, for example nginx with the following configuration:
- For Amazon Echo the pairing process may fail due to a 302 response from openHAB, this can be resolved by using a reverse proxy to change the request url from `/api` to `/api/`, for example nginx with the following configuration:
```
server {
@ -213,14 +213,14 @@ Please assign "ColorLighting" and "Switchable" to the `WhiteLights` type as expl
Also note that Amazon Echos are stubborn as.
You might need to remove all former recognized devices multiple times and perform the search via different Echos and also the web or mobile application.
It might help to (temporarly) lower the emulated bridge version in the configuration as described above,
It might help to (temporarly) lower the emulated bridge version in the configuration as described above.
## Text configuration example
The item label will be used as the Hue device name. Please be aware that textual defined items are generally a bad idea.
In this case renaming items in Hue compatible Apps will fail.
```
```java
Switch TestSwitch "Kitchen Switch" [ "Switchable" ] {channel="..."}
Color TestColorBulb "Bathroom" [ "ColorLighting" ] {channel="..."}
Dimmer TestDimmer "Hallway" [ "Lighting" ] {channel="..."}

View File

@ -17,8 +17,8 @@ install: auto
The metrics service provides:
* an additional REST endpoint to retrieve openHAB core metrics from. This can be used as scrape target for pull-based monitoring systems like [Prometheus](https://prometheus.io/).
* optionally configurable services to export openHAB core metrics to push-based monitoring systems like [InfluxDB](https://www.influxdata.com/).
- an additional REST endpoint to retrieve openHAB core metrics from. This can be used as scrape target for pull-based monitoring systems like [Prometheus](https://prometheus.io/).
- optionally configurable services to export openHAB core metrics to push-based monitoring systems like [InfluxDB](https://www.influxdata.com/).
## Provided metrics
@ -30,11 +30,11 @@ Currently the following metrics are provided:
- openHAB rule runs (per rule)
- openHAB threadpool stats (per scheduler)
- JVM stats including metrics of
- class loader
- memory
- GarbageCollector
- OS (system load, CPU)
- thread metrics
- class loader
- memory
- GarbageCollector
- OS (system load, CPU)
- thread metrics
## Configuration

View File

@ -29,10 +29,10 @@ This integration compliments the NEEO binding by exposing a brain's devices to a
The openHAB NEEO Integration will provide the following:
* Automatic discovery of NEEO brains on the network and automatic registering of the openHAB as an SDK.
* A NEEO dashboard tile that will show the status of NEEO Brain connections and provide the ability to customize the mapping between openHAB things/item and NEEO device/capabilities.
* Discovery of openHAB things on the NEEO app.
* Full two-way communcation between openHAB and brain.
- Automatic discovery of NEEO brains on the network and automatic registering of the openHAB as an SDK.
- A NEEO dashboard tile that will show the status of NEEO Brain connections and provide the ability to customize the mapping between openHAB things/item and NEEO device/capabilities.
- Discovery of openHAB things on the NEEO app.
- Full two-way communcation between openHAB and brain.
Item changes in openHAB will appear in NEEO and vice-versa.
@ -40,10 +40,10 @@ Item changes in openHAB will appear in NEEO and vice-versa.
If searching for openHAB devices on the NEEO Brain is always returning nothing, here are a few tips to solve the issue:
1. Read sections IP Address and openHAB Primary Address below.
2. Make sure the openHAB primary address is set to an address that is reachable from the NEEO Brain (see openHAB Primary Address section below).
3. Make sure your firewall is not blocking access to the openHAB server
4. Your search criteria has included too many openHAB devices (especially if "Expose ALL" setting has been turned on).
1. Read sections IP Address and openHAB Primary Address below.
2. Make sure the openHAB primary address is set to an address that is reachable from the NEEO Brain (see openHAB Primary Address section below).
3. Make sure your firewall is not blocking access to the openHAB server
4. Your search criteria has included too many openHAB devices (especially if "Expose ALL" setting has been turned on).
The NEEO brain has an (unknown) size limit to the amount of items that can be returned for a search and you may be going beyond that limit.
Narrow your search to a specific item to see if you were hitting that search limit.

View File

@ -22,16 +22,16 @@ openHAB Cloud service hosted by the [openHAB Foundation](https://www.openhabfoun
The openHAB Cloud service (and thus the connector to it) is useful for different use cases:
* It allows remote access to local openHAB instances without having to expose ports to the Internet or to require a complex VPN setup.
* It serves as a connector to Firebase Cloud Messaging (FCM) for pushing notifications to mobile phone apps.
* It provides integrations with 3rd party services that require OAuth2 authentication, such as Amazon Alexa or Google Home applications.
- It allows remote access to local openHAB instances without having to expose ports to the Internet or to require a complex VPN setup.
- It serves as a connector to Firebase Cloud Messaging (FCM) for pushing notifications to mobile phone apps.
- It provides integrations with 3rd party services that require OAuth2 authentication, such as Amazon Alexa or Google Home applications.
## Installation via UI
* Open the openHAB web UI and login as an administrator.
* Click on Add-on Store, followed by System Integrations.
* Use the Install button to install the openHAB Cloud Connector.
* Register your session (https://myopenhab.org/) using UUID and Secret.
- Open the openHAB web UI and login as an administrator.
- Click on Add-on Store, followed by System Integrations.
- Use the Install button to install the openHAB Cloud Connector.
- Register your session (https://myopenhab.org/) using UUID and Secret.
## UUID and Secret
@ -72,7 +72,7 @@ This is also not required for remote access through the cloud service to functio
Alternatively, you can configure the settings in the file `conf/services/openhabcloud.cfg`:
```
```ini
############################## openHAB Cloud Connector #############################
# The URL of the openHAB Cloud service to connect to.
@ -149,8 +149,8 @@ To specify media attachments and actions, there is another variant of the `sendN
- `sendNotification(emailAddress, message, icon, tag, title, referenceId, onClickAction, mediaAttachmentUrl, actionButton1, actionButton2, actionButton3)`
- `sendBroadcastNotification(message, icon, tag, title, referenceId, onClickAction, mediaAttachmentUrl, actionButton1, actionButton2, actionButton3)`
The additional parameter for these variants have the following meaning:
- `tag` : A user supplied tag to group messages for removing using the `hideNotificationByTag` action or grouping messages when displayed in the app. This renames the `severity` parameter, both are functionally identical.
- `title`: The title of the notification. Defaults to "openHAB" inside the Android and iOS apps.
- `referenceId`: A user supplied id to both replace existing messages when pushed, and later remove messages with the `hideNotificationByReferenceId` actions.
@ -213,6 +213,7 @@ then
sendNotification("me@email.com", "Front door was opened!")
end
```
:::
::: tab JS

View File

@ -20,9 +20,9 @@ Query functionality is also fully supported.
Features:
* Writing/reading information to relational database systems
* Configurable database table names
* Automatic table creation
- Writing/reading information to relational database systems
- Configurable database table names
- Automatic table creation
## Disclaimer
@ -50,8 +50,8 @@ Please also note possible [Free Tier](https://aws.amazon.com/free/) benefits.
<!-- markdownlint-disable-next-line no-emphasis-as-heading -->
**Login to AWS web console**
* [Sign up](https://aws.amazon.com/) for Amazon AWS.
* Select the AWS region in the [AWS console](https://console.aws.amazon.com/) using [these instructions](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.html#select-region). Note the region identifier in the URL (e.g. `https://eu-west-1.console.aws.amazon.com/console/home?region=eu-west-1` means that region id is `eu-west-1`).
- [Sign up](https://aws.amazon.com/) for Amazon AWS.
- Select the AWS region in the [AWS console](https://console.aws.amazon.com/) using [these instructions](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.html#select-region). Note the region identifier in the URL (e.g. `https://eu-west-1.console.aws.amazon.com/console/home?region=eu-west-1` means that region id is `eu-west-1`).
<!-- markdownlint-disable-next-line no-emphasis-as-heading -->
**Create policy controlling permissions for AWS user**
@ -71,9 +71,8 @@ For users with old table schema, one can use pre-existing policy `AmazonDynamoDB
5. Open _JSON_ tab and input the below policy code.
6. Make the below the changes to the policy JSON `Resource` section
* Modify the AWS account id from `055251986555` to to the one you have on clipboard (see step 2 above)
* If you are on some other region than `eu-west-1`, change the entry accordingly
- Modify the AWS account id from `055251986555` to to the one you have on clipboard (see step 2 above)
- If you are on some other region than `eu-west-1`, change the entry accordingly
```json
{
@ -282,4 +281,3 @@ Eclipse instructions
```
The `--add-opens` parameter is necessary also with the local temporary DynamoDB server, otherwise the mockito will fail at runtime with (`java.base does not "opens java.lang" to unnamed module`).

View File

@ -280,9 +280,9 @@ Issues than can be identified and possibly fixed:
### For Developers
* Clearly separated source files for the database-specific part of openHAB logic.
* Code duplication by similar services is prevented.
* Integrating a new SQL and JDBC enabled database is fairly simple.
- Clearly separated source files for the database-specific part of openHAB logic.
- Code duplication by similar services is prevented.
- Integrating a new SQL and JDBC enabled database is fairly simple.
### Performance Tests
@ -297,28 +297,28 @@ Not necessarily representative of the performance you may experience.
| postgresql | 8.147 | 7.072 | 6.895 | - | ext. Server VM |
| sqlite | 2.406 | 1.249 | 1.137 | 0.28 MB | local embedded |
* Each test ran about 20 Times every 30 seconds.
* openHAB 1.x has ready started for about a Minute.
* the data in seconds for the evaluation are from the console output.
- Each test ran about 20 Times every 30 seconds.
- openHAB 1.x has ready started for about a Minute.
- the data in seconds for the evaluation are from the console output.
Used a script like this:
```
```java
var count = 0;
rule "DB STRESS TEST"
when
Time cron "30 * * * * ?"
Time cron "30 * * * * ?"
then
if( count = 24) count = 0
count = count+1
if( count > 3 && count < 23){
for( var i=500; i>1; i=i-1){
postUpdate( NUMBERITEM, i)
SWITCHITEM.previousState().state
postUpdate( DIMMERITEM, OFF)
NUMBERITEM.changedSince( now().minusMinutes(1))
postUpdate( DIMMERITEM, ON)
}
}
if( count = 24) count = 0
count = count+1
if( count > 3 && count < 23){
for( var i=500; i>1; i=i-1){
postUpdate( NUMBERITEM, i)
SWITCHITEM.previousState().state
postUpdate( DIMMERITEM, OFF)
NUMBERITEM.changedSince( now().minusMinutes(1))
postUpdate( DIMMERITEM, ON)
}
}
end
```

View File

@ -105,5 +105,5 @@ Please note: This profile is a one-way transformation, i.e. only values from a d
## Further Reading
* [Manual](http://man7.org/linux/man-pages/man1/date.1.html) and [tutorial](https://linode.com/docs/tools-reference/tools/use-the-date-command-in-linux/) for date.
* [Manual](http://man7.org/linux/man-pages/man1/numfmt.1.html) and [tutorial](https://www.pixelbeat.org/docs/numfmt.html) for numfmt.
- [Manual](http://man7.org/linux/man-pages/man1/date.1.html) and [tutorial](https://linode.com/docs/tools-reference/tools/use-the-date-command-in-linux/) for date.
- [Manual](http://man7.org/linux/man-pages/man1/numfmt.1.html) and [tutorial](https://www.pixelbeat.org/docs/numfmt.html) for numfmt.

View File

@ -79,6 +79,6 @@ commandTransformation = "JINJA:{\"msgtype\":\"m.text\", \"body\":\"{{value}}\"}"
## Further Reading
* Wikipedia on [Jinja](https://en.wikipedia.org/wiki/Jinja_(template_engine).
* Home assistant [discovery](https://www.home-assistant.io/docs/mqtt/discovery/).
* Home assistant [templating](https://www.home-assistant.io/docs/configuration/templating/).
- Wikipedia on [Jinja](https://en.wikipedia.org/wiki/Jinja_(template_engine).
- Home assistant [discovery](https://www.home-assistant.io/docs/mqtt/discovery/).
- Home assistant [templating](https://www.home-assistant.io/docs/configuration/templating/).

View File

@ -77,5 +77,5 @@ This profile is a one-way transformation; only values from a device toward the i
## Further Reading
* An extended [introduction](https://www.w3schools.com/js/js_json_intro.asp) can be found at W3School.
* As JsonPath transformation is based on [Jayway](https://github.com/json-path/JsonPath), using an [online validator](https://jsonpath.herokuapp.com/) which also uses Jayway will give the most similar results.
- An extended [introduction](https://www.w3schools.com/js/js_json_intro.asp) can be found at W3School.
- As JsonPath transformation is based on [Jayway](https://github.com/json-path/JsonPath), using an [online validator](https://jsonpath.herokuapp.com/) which also uses Jayway will give the most similar results.

View File

@ -62,13 +62,13 @@ A simple xpath query to fetch the Azimut value does not work as it does not addr
There are two ways to address the namespace.
* Simple path which may not work in complex XML.
* With full qualified path.
- Simple path which may not work in complex XML.
- With full qualified path.
The XPath
* `[name()='PTZStatus']/*[name()='AbsoluteHigh']/*[name()='azimuth']/`
* `/*[local-name()='PTZStatus' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']/*[local-name()='AbsoluteHigh' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']/*[local-name()='azimuth' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']`
- `[name()='PTZStatus']/*[name()='AbsoluteHigh']/*[name()='azimuth']/`
- `/*[local-name()='PTZStatus' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']/*[local-name()='AbsoluteHigh' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']/*[local-name()='azimuth' and namespace-uri()='http://www.hikvision.com/ver20/XMLSchema']`
returns
@ -78,14 +78,14 @@ returns
### In Setup
**.items**
#### .items
```csv
```java
String Temperature_xml "Temperature [XPATH(/*[name()='PTZStatus']/*[name()='AbsoluteHigh']/*[name()='azimuth']/):%s °C]" {...}
Number Temperature "Temperature [%.1f °C]"
```
**.rules**
### .rules
```php
rule "Convert XML to Item Type Number"
@ -130,6 +130,6 @@ Please note: This profile is a one-way transformation, i.e. only values from a d
## Further Reading
* An [introduction](https://www.w3schools.com/xml/xpath_intro.asp) to XPath at W3School
* An informative explanation of [common mistakes](https://qxf2.com/blog/common-xpath-mistakes/).
* Online validation tools like [this](https://www.freeformatter.com/xpath-tester.html) to check the syntax.
- An [introduction](https://www.w3schools.com/xml/xpath_intro.asp) to XPath at W3School
- An informative explanation of [common mistakes](https://qxf2.com/blog/common-xpath-mistakes/).
- Online validation tools like [this](https://www.freeformatter.com/xpath-tester.html) to check the syntax.

View File

@ -23,9 +23,9 @@ To organize the various transformations one should use subfolders.
General transformation rule summary:
* The directive `xsl:output` defines how the output document should be structured.
* The directive `xsl:template` specifies matching attributes for the XML node to find.
* The `xsl:template` tag contains the rule which specifies what should be done.
- The directive `xsl:output` defines how the output document should be structured.
- The directive `xsl:template` specifies matching attributes for the XML node to find.
- The `xsl:template` tag contains the rule which specifies what should be done.
The Rule uses XPath to gather the XML node information.
For more information have a look at the [XPath transformation](https://docs.openhab.org/addons/transformations/xpath/readme.html) .
@ -45,9 +45,9 @@ A simple but complete XSLT transformation looks like in the following example, w
**transform/helloworld.xsl**
* `xsl:output`: transform incoming document into another XML-like document, without indentation.
* `xsl:template`: `match="/"` "any type of node", so the whole document.
* The `xsl` rule does `select` the node `/root/node` and extracts the `value-of` attribute `val`.
- `xsl:output`: transform incoming document into another XML-like document, without indentation.
- `xsl:template`: `match="/"` "any type of node", so the whole document.
- The `xsl` rule does `select` the node `/root/node` and extracts the `value-of` attribute `val`.
```xml
<?xml version='1.0' encoding='UTF-8'?>
@ -71,16 +71,16 @@ This example has a namespace defined, as you would find in real world applicatio
**input XML**
* The tag `<PTZStatus>` contains an attribute `xmlns=` which defines the namespace `http://www.hikvision.com/ver20/XMLSchema`.
- The tag `<PTZStatus>` contains an attribute `xmlns=` which defines the namespace `http://www.hikvision.com/ver20/XMLSchema`.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<PTZStatus version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<AbsoluteHigh>
<elevation>0</elevation>
<azimuth date="Fri, 18 Dec 2009 9:38 am PST" >450</azimuth>
<absoluteZoom>10</absoluteZoom>
</AbsoluteHigh>
<AbsoluteHigh>
<elevation>0</elevation>
<azimuth date="Fri, 18 Dec 2009 9:38 am PST" >450</azimuth>
<absoluteZoom>10</absoluteZoom>
</AbsoluteHigh>
</PTZStatus>
```
@ -90,11 +90,11 @@ In the rule, the tag `<xsl:stylesheet>` has to have an attribute `xmlns:xsl="htt
This attribute has to be the same as the namespace for the input document.
In the rule each step traversed along the path to the next tag has to be prepended with the `xmlns` namespace, here defined as `h`.
* `xsl:output` transform incoming document into another XML-like document, no indentation, **without XML**.
* `xsl:template`: `match="/"` whole document.
* Full path to node `azimuth` reading out `date` attribute.
* Add a linebreak by setting `&#10;` as text.
* Search for node `azimuth` by prepending `//` and get the `text`.
- `xsl:output` transform incoming document into another XML-like document, no indentation, **without XML**.
- `xsl:template`: `match="/"` whole document.
- Full path to node `azimuth` reading out `date` attribute.
- Add a linebreak by setting `&#10;` as text.
- Search for node `azimuth` by prepending `//` and get the `text`.
```xml
<?xml version="1.0" encoding="UTF-8"?>
@ -134,7 +134,7 @@ Please note: This profile is a one-way transformation, i.e. only values from a d
## Further Reading
* Extended introduction and more [examples](https://en.wikipedia.org/wiki/XSLT#XSLT_examples) at Wikipedia.
* A good [introduction](https://www.w3schools.com/xml/xsl_intro.asp) and [tutorial](https://www.w3schools.com/xml/xsl_transformation.asp) at W3School.
* An informative [tutorial](https://www.ibm.com/developerworks/library/x-xsltmistakes/) of common mistakes.
* Online XSL transformer tools like [this](https://www.freeformatter.com/xsl-transformer.html) to check the syntax.
- Extended introduction and more [examples](https://en.wikipedia.org/wiki/XSLT#XSLT_examples) at Wikipedia.
- A good [introduction](https://www.w3schools.com/xml/xsl_intro.asp) and [tutorial](https://www.w3schools.com/xml/xsl_transformation.asp) at W3School.
- An informative [tutorial](https://www.ibm.com/developerworks/library/x-xsltmistakes/) of common mistakes.
- Online XSL transformer tools like [this](https://www.freeformatter.com/xsl-transformer.html) to check the syntax.

View File

@ -23,15 +23,15 @@ You can find pricing information on the [documentation page](https://cloud.googl
Before you can integrate this service with your Google Cloud Speech-to-Text, you must have a Google API Console project:
* Select or create a GCP project. [link](https://console.cloud.google.com/cloud-resource-manager)
* Make sure that billing is enabled for your project. [link](https://cloud.google.com/billing/docs/how-to/modify-project)
* Enable the Cloud Speech-to-Text API. [link](https://console.cloud.google.com/apis/dashboard)
* Set up authentication:
* Go to the "APIs & Services" -> "Credentials" page in the GCP Console and your project. [link](https://console.cloud.google.com/apis/credentials)
* From the "Create credentials" drop-down list, select "OAuth client ID".
* Select application type "Web application" and enter a name into the "Name" field.
* Add "https://www.google.com" to the "Authorized redirect URIs".
* Click Create. A pop-up appears, showing your "client ID" and "client secret".
- Select or create a GCP project. [link](https://console.cloud.google.com/cloud-resource-manager)
- Make sure that billing is enabled for your project. [link](https://cloud.google.com/billing/docs/how-to/modify-project)
- Enable the Cloud Speech-to-Text API. [link](https://console.cloud.google.com/apis/dashboard)
- Set up authentication:
- Go to the "APIs & Services" -> "Credentials" page in the GCP Console and your project. [link](https://console.cloud.google.com/apis/credentials)
- From the "Create credentials" drop-down list, select "OAuth client ID".
- Select application type "Web application" and enter a name into the "Name" field.
- Add "https://www.google.com" to the "Authorized redirect URIs".
- Click Create. A pop-up appears, showing your "client ID" and "client secret".
## Configuration
@ -39,9 +39,9 @@ Before you can integrate this service with your Google Cloud Speech-to-Text, you
Using your favorite configuration UI to edit **Settings / Other Services - Google Cloud Speech-to-Text** and set:
* **Client Id** - Google Cloud Platform OAuth 2.0-Client Id.
* **Client Secret** - Google Cloud Platform OAuth 2.0-Client Secret.
* **Authorization Code** - This code is used once for retrieving the Google Cloud Platform access and refresh tokens.
- **Client Id** - Google Cloud Platform OAuth 2.0-Client Id.
- **Client Secret** - Google Cloud Platform OAuth 2.0-Client Secret.
- **Authorization Code** - This code is used once for retrieving the Google Cloud Platform access and refresh tokens.
**Please go to your browser ...**
[https://accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/cloud-platform&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=<clientId>](https://accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/cloud-platform&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=<clientId>) (replace `<clientId>` by your Client Id)
**... to generate an authorization code and paste it here**.
@ -53,17 +53,17 @@ Using your favorite configuration UI to edit **Settings / Other Services - Googl
Using your favorite configuration UI to edit **Settings / Other Services - Google Cloud Speech-to-Text**:
* **Single Utterance Mode** - When enabled Google Cloud Platform is responsible for detecting when to stop listening after a single utterance. (Recommended)
* **Max Transcription Seconds** - Max seconds to wait to force stop the transcription.
* **Max Silence Seconds** - Only works when singleUtteranceMode is disabled, max seconds without getting new transcriptions to stop listening.
* **Refresh Supported Locales** - Try loading supported locales from the documentation page.
- **Single Utterance Mode** - When enabled Google Cloud Platform is responsible for detecting when to stop listening after a single utterance. (Recommended)
- **Max Transcription Seconds** - Max seconds to wait to force stop the transcription.
- **Max Silence Seconds** - Only works when singleUtteranceMode is disabled, max seconds without getting new transcriptions to stop listening.
- **Refresh Supported Locales** - Try loading supported locales from the documentation page.
### Messages Configuration
Using your favorite configuration UI to edit **Settings / Other Services - Google Cloud Speech-to-Text**:
* **No Results Message** - Message to be told when no results. (Empty for disabled)
* **Error Message** - Message to be told when an error has happened. (Empty for disabled)
- **No Results Message** - Message to be told when no results. (Empty for disabled)
- **Error Message** - Message to be told when an error has happened. (Empty for disabled)
### Configuration via a text file
@ -71,7 +71,7 @@ In case you would like to setup the service via a text file, create a new file i
Its contents should look similar to:
```
```ini
org.openhab.voice.googlestt:clientId=ID
org.openhab.voice.googlestt:clientSecret=SECRET
org.openhab.voice.googlestt:authcode=XXXXX
@ -87,12 +87,12 @@ org.openhab.voice.googlestt:errorMessage="Sorry, something went wrong"
You can setup your preferred default Speech-to-Text in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **Google Cloud** as **Speech-to-Text**.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **Google Cloud** as **Speech-to-Text**.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultSTT=googlestt
```

View File

@ -25,9 +25,9 @@ You can find pricing information on the [documentation page](https://cloud.googl
<!-- MarkdownTOC -->
* [Obtaining Credentials](#obtaining-credentials)
* [Configuration](#configuration)
* [Voice Configuration](#default-text-to-speech-and-voice-configuration)
- [Obtaining Credentials](#obtaining-credentials)
- [Configuration](#configuration)
- [Voice Configuration](#default-text-to-speech-and-voice-configuration)
<!-- /MarkdownTOC -->
@ -51,24 +51,24 @@ Before you can integrate this service with your Google Cloud Text-to-Speech, you
Using your favorite configuration UI to edit **Settings / Other Services - Google Cloud Text-to-Speech** and set:
* **Client Id** - Google Cloud Platform OAuth 2.0-Client Id.
* **Client Secret** - Google Cloud Platform OAuth 2.0-Client Secret.
* **Authorization Code** - This code is used once for retrieving the Google Cloud Platform access and refresh tokens.
- **Client Id** - Google Cloud Platform OAuth 2.0-Client Id.
- **Client Secret** - Google Cloud Platform OAuth 2.0-Client Secret.
- **Authorization Code** - This code is used once for retrieving the Google Cloud Platform access and refresh tokens.
1. Go to `OAuth consent screen` ([link](https://console.cloud.google.com/apis/credentials/consent)) and set the `publishing status` to `production` to activate the created project.
2. Wait a few minutes. The step before takes some time to go live. Sometimes it is necessary to wait a few hours, so you can try after some minutes, if it doesn't work, try again the next day.
3. Go to your browser and access the following URL to generate an authorization code
[https://accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/cloud-platform&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=<clientId>](https://accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/cloud-platform&access_type=offline&prompt=consent&include_granted_scopes=true&response_type=code&redirect_uri=https://www.google.com&client_id=CLIENTID) (replace `CLIENTID` at the end by your Client Id)
4. After your browser has been redirected to https://www.google.com, the authorization code will be set in the browser URL as value of the "code" URL query parameter (e.g. `https://www.google.com/?code=XXXXXXXXXX&scope=https://www.googleapis.com/auth/cloud-platform` --> `XXXXXXXXXX`)
5. After initial authorization, this code is not needed anymore. It is recommended to clear this configuration parameter afterwards.
* **Pitch** - The pitch of selected voice, up to 20 semitones.
* **Volume Gain** - The volume of the output between 16dB and -96dB.
* **Speaking Rate** - The speaking rate can be 4x faster or slower than the normal rate.
- **Pitch** - The pitch of selected voice, up to 20 semitones.
- **Volume Gain** - The volume of the output between 16dB and -96dB.
- **Speaking Rate** - The speaking rate can be 4x faster or slower than the normal rate.
In case you would like to setup the service via a text file, create a new file in `$OPENHAB_ROOT/conf/services` named `googletts.cfg`
Its contents should look similar to:
```
```ini
org.openhab.voice.googletts:clientId=ID
org.openhab.voice.googletts:clientSecret=SECRET
org.openhab.voice.googletts:authcode=XXXXX
@ -81,18 +81,20 @@ org.openhab.voice.googletts:speakingRate=1
You can setup your preferred default Text-to-Speech and default voice in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **Google Cloud** as **Default Text-to-Speech**.
* Choose your preferred **Default Voice** for your setup.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **Google Cloud** as **Default Text-to-Speech**.
- Choose your preferred **Default Voice** for your setup.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultTTS=googletts
org.openhab.voice:defaultVoice=googletts:XXX
```
You can see the available voices by entering `voice voices` in the karaf console
```shell
openhab> voice voices
...

View File

@ -54,14 +54,14 @@ mactts:Yuna Yuna (ko_KR)
You can setup your preferred default Text-to-Speech and default voice in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **macOS TTS** as **Default Text-to-Speech**.
* Choose your preferred **Default Voice** for your setup.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **macOS TTS** as **Default Text-to-Speech**.
- Choose your preferred **Default Voice** for your setup.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultTTS=mactts
org.openhab.voice:defaultVoice=mactts:Alex
```

View File

@ -38,14 +38,14 @@ marytts:bits1hsmm bits1-hsmm (de)
You can setup your preferred default Text-to-Speech and default voice in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **MaryTTS** as **Default Text-to-Speech**.
* Choose your preferred **Default Voice** for your setup.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **MaryTTS** as **Default Text-to-Speech**.
- Choose your preferred **Default Voice** for your setup.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultTTS=marytts
org.openhab.voice:defaultVoice=marytts:cmuslthsmm
```
@ -62,4 +62,3 @@ The log messages of Mary TTS are not bundled with the openHAB log messages in th
## Caching
The MaryTTS service uses the openHAB TTS cache to cache audio files produced from the most recent queries in order to reduce traffic, improve performance and reduce number of requests.

View File

@ -31,16 +31,16 @@ It supports a subset of SSML, and if you want to use it, be sure to start your t
Using your favorite configuration UI to edit **Settings / Other Services - Mimic Text-to-Speech** and set:
* **url** - Mimic URL. Default to `http://localhost:59125`
* **speakingRate** - Controls how fast the voice speaks the text. A value of 1 is the speed of the training dataset. Less than 1 is faster, and more than 1 is slower.
* **audioVolatility** - The amount of noise added to the generated audio (0-1). Can help mask audio artifacts from the voice model. Multi-speaker models tend to sound better with a lower amount of noise than single speaker models.
* **phonemeVolatility** - The amount of noise used to generate phoneme durations (0-1). Allows for variable speaking cadance, with a value closer to 1 being more variable. Multi-speaker models tend to sound better with a lower amount of phoneme variability than single speaker models.
- **url** - Mimic URL. Default to `http://localhost:59125`
- **speakingRate** - Controls how fast the voice speaks the text. A value of 1 is the speed of the training dataset. Less than 1 is faster, and more than 1 is slower.
- **audioVolatility** - The amount of noise added to the generated audio (0-1). Can help mask audio artifacts from the voice model. Multi-speaker models tend to sound better with a lower amount of noise than single speaker models.
- **phonemeVolatility** - The amount of noise used to generate phoneme durations (0-1). Allows for variable speaking cadance, with a value closer to 1 being more variable. Multi-speaker models tend to sound better with a lower amount of phoneme variability than single speaker models.
In case you would like to setup the service via a text file, create a new file in `$OPENHAB_ROOT/conf/services` named `mimictts.cfg`
Its contents should look similar to:
```
```ini
org.openhab.voice.mimictts:url=http://localhost:59125
org.openhab.voice.mimictts:speakingRate=1
org.openhab.voice.mimictts:audioVolatility=0.667
@ -51,14 +51,14 @@ org.openhab.voice.mimictts:phonemeVolatility=0.8
You can setup your preferred default Text-to-Speech and default voice in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **Mimic** as **Default Text-to-Speech**.
* Choose your preferred **Default Voice** for your setup.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **Mimic** as **Default Text-to-Speech**.
- Choose your preferred **Default Voice** for your setup.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultTTS=mimictts
org.openhab.voice:defaultVoice=mimictts:fr_FR_siwis_low
```

View File

@ -19,7 +19,7 @@ The Pico Text-to-Speech (TTS) service uses the TTS binary from SVOX for producin
You manually need to install the pico2wave binary in order for this service to work correctly. You can,
e.g., install it with apt-get on an Ubuntu system:
```
```bash
sudo apt-get install libttspico-utils
```
@ -48,14 +48,14 @@ Italian (it-IT)
You can setup your preferred default Text-to-Speech and default voice in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **PicoTTS** as **Default Text-to-Speech**.
* Choose your preferred **Default Voice** for your setup.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **PicoTTS** as **Default Text-to-Speech**.
- Choose your preferred **Default Voice** for your setup.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultTTS=picotts
org.openhab.voice:defaultVoice=picotts:frFR
```

View File

@ -21,9 +21,9 @@ This voice service allows you to use the open source library [Piper](https://git
The add-on is compatible with the following platforms:
* linux (armv7l, aarch64, x86_64, min GLIBC version 2.31)
* macOS (x86_64 min version 11.0, aarch64 min version 13.0)
* win64 (x86_64 min version Windows 10).
- linux (armv7l, aarch64, x86_64, min GLIBC version 2.31)
- macOS (x86_64 min version 11.0, aarch64 min version 13.0)
- win64 (x86_64 min version Windows 10).
## Configuration
@ -51,7 +51,7 @@ Models that support multiples speakers are shown as multiple voices in openHAB.
Use your favorite configuration UI to edit **Settings / Other Services - Piper Text-to-Speech**:
* **Preload model** - Keep last voice model used loaded in memory, these way it can be reused on next execution if the voice option matches.
- **Preload model** - Keep last voice model used loaded in memory, these way it can be reused on next execution if the voice option matches.
### Configuration via a text file
@ -67,10 +67,10 @@ org.openhab.voice.pipertts:preloadModel=true
You can setup your preferred default Speech-to-Text in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **Piper** as **Text-to-Speech**.
* Set your **Default Voice**.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **Piper** as **Text-to-Speech**.
- Set your **Default Voice**.
In case you would like to set up these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:

View File

@ -25,11 +25,11 @@ You can find pricing information on the [documentation page](https://aws.amazon.
## Obtaining Credentials
* Sign up for Amazon Web Services (AWS). [link](https://portal.aws.amazon.com/billing/signup)
- Sign up for Amazon Web Services (AWS). [link](https://portal.aws.amazon.com/billing/signup)
When you sign up for AWS, your account is automatically signed up for all services in AWS, including Amazon Polly.
* Create an IAM User. [link](https://docs.aws.amazon.com/polly/latest/dg/setting-up.html)
- Create an IAM User. [link](https://docs.aws.amazon.com/polly/latest/dg/setting-up.html)
Services in AWS, such as Amazon Polly, require that you provide credentials when you access them so that the service can determine whether you have permissions to access the resources owned by that service.
Within the AWS console, you can create access keys for your AWS account to access the Polly API.
@ -40,10 +40,10 @@ To use the service you will need the **access key**, **secret key** and **server
The following settings can be edited in UI (**Settings / Other Services - Polly Text-to-Speech**):
* **Access Key** - The AWS credentials access key (required).
* **Secret Key** - The AWS credentials secret key (required).
* **Service Region** - The service region used for accessing Polly (required). To reduce latency select the region closest to you. E.g. "eu-west-1" (see [regions](https://docs.aws.amazon.com/general/latest/gr/rande.html#pol_region))
* **Audio Format** - Allows for overriding the system default audio format.
- **Access Key** - The AWS credentials access key (required).
- **Secret Key** - The AWS credentials secret key (required).
- **Service Region** - The service region used for accessing Polly (required). To reduce latency select the region closest to you. E.g. "eu-west-1" (see [regions](https://docs.aws.amazon.com/general/latest/gr/rande.html#pol_region))
- **Audio Format** - Allows for overriding the system default audio format.
Use "default" to select the system default audio format.
The default audio format can be overriden with the value "mp3" or "ogg".
@ -52,7 +52,7 @@ In case you would like to setup the service via a text file, create a new file i
Its contents should look similar to:
```
```ini
org.openhab.voice.pollytts:accessKey=ACCESS_KEY
org.openhab.voice.pollytts:secretKey=SECRET_KEY
org.openhab.voice.pollytts:serviceRegion=eu-west-1
@ -63,14 +63,14 @@ org.openhab.voice.pollytts:audioFormat=default
You can setup your preferred default Text-to-Speech and default voice in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **PollyTTS** as **Default Text-to-Speech**.
* Choose your preferred **Default Voice** for your setup.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **PollyTTS** as **Default Text-to-Speech**.
- Choose your preferred **Default Voice** for your setup.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultTTS=pollytts
org.openhab.voice:defaultVoice=pollytts:Joanne
```
@ -81,7 +81,7 @@ The PolyTTS service uses the openHAB TTS cache to cache audio files produced fro
## Rule Examples
```
```java
say("Hello there")
say("Hello there", "pollytts:Joanne", "enhancedjavasound")
say("" + item.state, "pollytts:Joey", "enhancedjavasound")

View File

@ -44,13 +44,13 @@ https://api.voicerss.org/?key=API_KEY&hl=de-de&f=44khz_16bit_mono&src=Hallo%20We
The following settings can be edited in UI (**Settings / Other Services - VoiceRSS Text-to-Speech**):
* **VoiceRSS API Key** - The API Key to get access to https://www.voicerss.org.
- **VoiceRSS API Key** - The API Key to get access to https://www.voicerss.org.
In case you would like to setup the service via a text file, create a new file in `$OPENHAB_ROOT/conf/services` named `voicerss.cfg`
Its contents should look similar to:
```
```ini
org.openhab.voice.voicerss:apiKey=1234567890
```
@ -58,115 +58,115 @@ org.openhab.voice.voicerss:apiKey=1234567890
It supports the following voices (depending on language):
* Oda (Arabic - Egypt)
* Salim (Arabic - Saudi Arabia)
* Dimo (Bulgarian)
* Rut (Catalan)
* Luli (Chinese - China)
* Shu (Chinese - China)
* Chow (Chinese - China)
* Wang (Chinese - China)
* Jia (Chinese - Hong Kong)
* Xia (Chinese - Hong Kong)
* Chen (Chinese - Hong Kong)
* Akemi (Chinese - Taiwan)
* Lin (Chinese - Taiwan)
* Lee (Chinese - Taiwan)
* Nikola (Croatian)
* Josef (Czech)
* Freja (Danish)
* Daan (Dutch - Belgium)
* Lotte (Dutch - Netherlands)
* Bram (Dutch - Netherlands)
* Zoe (English - Australia)
* Isla (English - Australia)
* Evie (English - Australia)
* Jack (English - Australia)
* Rose (English - Canada)
* Clara (English - Canada)
* Emma (English - Canada)
* Mason (English - Canada)
* Alice (English - Great Britain)
* Nancy (English - Great Britain)
* Lily (English - Great Britain)
* Harry (English - Great Britain)
* Eka (English - India)
* Jai (English - India)
* Ajit (English - India)
* Oran (English - Ireland)
* Linda (English - United States)
* Amy (English - United States)
* Mary (English - United States)
* John (English - United States)
* Mike (English - United States)
* Aada (Finnish)
* Emile (French - Canada)
* Olivia (French - Canada)
* Logan (French - Canada)
* Felix (French - Canada)
* Bette (French - France)
* Iva (French - France)
* Zola (French - France)
* Axel (French - France)
* Theo (French - Switzerland)
* Lukas (German - Austria)
* Hanna (German - Germany)
* Lina (German - Germany)
* Jonas (German - Germany)
* Tim (German - Switzerland)
* Neo (Greek)
* Rami (Hebrew)
* Puja (Hindi)
* Kabir (Hindi)
* Mate (Hungarian)
* Intan (Indonesian)
* Bria (Italian)
* Mia (Italian)
* Pietro (Italian)
* Hina (Japanese)
* Airi (Japanese)
* Fumi (Japanese)
* Akira (Japanese)
* Nari (Korean)
* Aqil (Malay)
* Marte (Norwegian)
* Erik (Norwegian)
* Julia (Polish)
* Jan (Polish)
* Marcia (Portuguese - Brazil)
* Ligia (Portuguese - Brazil)
* Yara (Portuguese - Brazil)
* Dinis (Portuguese - Brazil)
* Leonor (Portuguese - Portugal)
* Doru (Romanian)
* Olga (Russian)
* Marina (Russian)
* Peter (Russian)
* Beda (Slovak)
* Vid (Slovenian)
* Juana (Spanish - Mexico)
* Silvia (Spanish - Mexico)
* Teresa (Spanish - Mexico)
* Jose (Spanish - Mexico)
* Camila (Spanish - Spain)
* Sofia (Spanish - Spain)
* Luna (Spanish - Spain)
* Diego (Spanish - Spain)
* Molly (Swedish)
* Hugo (Swedish)
* Sai (Tamil)
* Ukrit (Thai)
* Omer (Turkish)
* Chi (Vietnamese)
- Oda (Arabic - Egypt)
- Salim (Arabic - Saudi Arabia)
- Dimo (Bulgarian)
- Rut (Catalan)
- Luli (Chinese - China)
- Shu (Chinese - China)
- Chow (Chinese - China)
- Wang (Chinese - China)
- Jia (Chinese - Hong Kong)
- Xia (Chinese - Hong Kong)
- Chen (Chinese - Hong Kong)
- Akemi (Chinese - Taiwan)
- Lin (Chinese - Taiwan)
- Lee (Chinese - Taiwan)
- Nikola (Croatian)
- Josef (Czech)
- Freja (Danish)
- Daan (Dutch - Belgium)
- Lotte (Dutch - Netherlands)
- Bram (Dutch - Netherlands)
- Zoe (English - Australia)
- Isla (English - Australia)
- Evie (English - Australia)
- Jack (English - Australia)
- Rose (English - Canada)
- Clara (English - Canada)
- Emma (English - Canada)
- Mason (English - Canada)
- Alice (English - Great Britain)
- Nancy (English - Great Britain)
- Lily (English - Great Britain)
- Harry (English - Great Britain)
- Eka (English - India)
- Jai (English - India)
- Ajit (English - India)
- Oran (English - Ireland)
- Linda (English - United States)
- Amy (English - United States)
- Mary (English - United States)
- John (English - United States)
- Mike (English - United States)
- Aada (Finnish)
- Emile (French - Canada)
- Olivia (French - Canada)
- Logan (French - Canada)
- Felix (French - Canada)
- Bette (French - France)
- Iva (French - France)
- Zola (French - France)
- Axel (French - France)
- Theo (French - Switzerland)
- Lukas (German - Austria)
- Hanna (German - Germany)
- Lina (German - Germany)
- Jonas (German - Germany)
- Tim (German - Switzerland)
- Neo (Greek)
- Rami (Hebrew)
- Puja (Hindi)
- Kabir (Hindi)
- Mate (Hungarian)
- Intan (Indonesian)
- Bria (Italian)
- Mia (Italian)
- Pietro (Italian)
- Hina (Japanese)
- Airi (Japanese)
- Fumi (Japanese)
- Akira (Japanese)
- Nari (Korean)
- Aqil (Malay)
- Marte (Norwegian)
- Erik (Norwegian)
- Julia (Polish)
- Jan (Polish)
- Marcia (Portuguese - Brazil)
- Ligia (Portuguese - Brazil)
- Yara (Portuguese - Brazil)
- Dinis (Portuguese - Brazil)
- Leonor (Portuguese - Portugal)
- Doru (Romanian)
- Olga (Russian)
- Marina (Russian)
- Peter (Russian)
- Beda (Slovak)
- Vid (Slovenian)
- Juana (Spanish - Mexico)
- Silvia (Spanish - Mexico)
- Teresa (Spanish - Mexico)
- Jose (Spanish - Mexico)
- Camila (Spanish - Spain)
- Sofia (Spanish - Spain)
- Luna (Spanish - Spain)
- Diego (Spanish - Spain)
- Molly (Swedish)
- Hugo (Swedish)
- Sai (Tamil)
- Ukrit (Thai)
- Omer (Turkish)
- Chi (Vietnamese)
### Default Text-to-Speech and Voice Configuration
You can setup your preferred default Text-to-Speech and default voice in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **VoiceRSS** as **Default Text-to-Speech**.
* Choose your preferred **Default Voice** for your setup.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **VoiceRSS** as **Default Text-to-Speech**.
- Choose your preferred **Default Voice** for your setup.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:

View File

@ -26,11 +26,11 @@ More to come.
This add-on uses an underling binary to work.
The following platforms are supported:
* linux-aarch64
* linux-armv7l
* linux-x86_64
* osx
* win64
- linux-aarch64
- linux-armv7l
- linux-x86_64
- osx
- win64
**On Linux this binary requires the package libatomic to be installed (apt install libatomic1).**
@ -46,17 +46,17 @@ You should unzip the contained folder into '\<openHAB userdata\>/vosk/' and rena
Use your favorite configuration UI to edit **Settings / Other Services - Vosk Speech-to-Text**:
* **Preload Model** - Keep language model loaded.
* **Single Utterance Mode** - When enabled recognition stops listening after a single utterance.
* **Max Transcription Seconds** - Max seconds to wait to force stop the transcription.
* **Max Silence Seconds** - Only works when singleUtteranceMode is disabled, max seconds without getting new transcriptions to stop listening.
- **Preload Model** - Keep language model loaded.
- **Single Utterance Mode** - When enabled recognition stops listening after a single utterance.
- **Max Transcription Seconds** - Max seconds to wait to force stop the transcription.
- **Max Silence Seconds** - Only works when singleUtteranceMode is disabled, max seconds without getting new transcriptions to stop listening.
### Messages Configuration
Use your favorite configuration UI to edit **Settings / Other Services - Vosk Speech-to-Text**:
* **No Results Message** - Message to be told when no results.
* **Error Message** - Message to be told when an error has happened.
- **No Results Message** - Message to be told when no results.
- **Error Message** - Message to be told when an error has happened.
### Configuration via a text file
@ -77,12 +77,12 @@ org.openhab.voice.voskstt:errorMessage="Sorry, something went wrong"
You can setup your preferred default Speech-to-Text in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **Vosk** as **Speech-to-Text**.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **Vosk** as **Speech-to-Text**.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultSTT=voskstt
```

View File

@ -23,8 +23,8 @@ You can find pricing information on [this page](https://www.ibm.com/cloud/watson
Before you can use this add-on, you should create a Speech-to-Text instance in the IBM Cloud service.
* Go to the following [link](https://cloud.ibm.com/catalog/services/speech-to-text) and create the instance in your desired region.
* After the instance is created you should be able to view its url and api key.
- Go to the following [link](https://cloud.ibm.com/catalog/services/speech-to-text) and create the instance in your desired region.
- After the instance is created you should be able to view its url and api key.
## Configuration
@ -32,22 +32,22 @@ Before you can use this add-on, you should create a Speech-to-Text instance in t
Use your favorite configuration UI to edit **Settings / Other Services - IBM Watson Speech-to-Text** and set:
* **Api Key** - Api key for Speech-to-Text instance created on IBM Cloud.
* **Instance Url** - Url for Speech-to-Text instance created on IBM Cloud.
- **Api Key** - Api key for Speech-to-Text instance created on IBM Cloud.
- **Instance Url** - Url for Speech-to-Text instance created on IBM Cloud.
### Speech to Text Configuration
Use your favorite configuration UI to edit **Settings / Other Services - IBM Watson Speech-to-Text**:
* **Prefer Multimedia Model** - Prefer multimedia to telephony [models](https://cloud.ibm.com/docs/speech-to-text?topic=speech-to-text-models-ng). Multimedia models are intended for audio that has a minimum sampling rate of 16 kHz, while telephony models are intended for audio that has a minimum sampling rate of 8 kHz.
* **Background Audio Suppression** - Use the parameter to suppress side conversations or background noise.
* **Speech Detector Sensitivity** - Use the parameter to suppress word insertions from music, coughing, and other non-speech events.
* **Single Utterance Mode** - When enabled recognition stops listening after a single utterance.
* **Max Silence Seconds** - The time in seconds after which, if only silence (no speech) is detected in the audio, the connection is closed.
* **Opt Out Logging** - By default, all IBM Watson™ services log requests and their results. Logging is done only to improve the services for future users. The logged data is not shared or made public.
* **No Results Message** - Message to be told when no results.
* **Smart Formatting** - If true, the service converts dates, times, series of digits and numbers, phone numbers, currency values, and internet addresses into more readable. (Not available for all locales)
* **Redaction** - If true, the service redacts, or masks, numeric data from final transcripts. (Not available for all locales)
- **Prefer Multimedia Model** - Prefer multimedia to telephony [models](https://cloud.ibm.com/docs/speech-to-text?topic=speech-to-text-models-ng). Multimedia models are intended for audio that has a minimum sampling rate of 16 kHz, while telephony models are intended for audio that has a minimum sampling rate of 8 kHz.
- **Background Audio Suppression** - Use the parameter to suppress side conversations or background noise.
- **Speech Detector Sensitivity** - Use the parameter to suppress word insertions from music, coughing, and other non-speech events.
- **Single Utterance Mode** - When enabled recognition stops listening after a single utterance.
- **Max Silence Seconds** - The time in seconds after which, if only silence (no speech) is detected in the audio, the connection is closed.
- **Opt Out Logging** - By default, all IBM Watson™ services log requests and their results. Logging is done only to improve the services for future users. The logged data is not shared or made public.
- **No Results Message** - Message to be told when no results.
- **Smart Formatting** - If true, the service converts dates, times, series of digits and numbers, phone numbers, currency values, and internet addresses into more readable. (Not available for all locales)
- **Redaction** - If true, the service redacts, or masks, numeric data from final transcripts. (Not available for all locales)
### Configuration via a text file
@ -55,7 +55,7 @@ In case you would like to setup the service via a text file, create a new file i
Its contents should look similar to:
```
```ini
org.openhab.voice.watsonstt:apiKey=******
org.openhab.voice.watsonstt:instanceUrl=https://api.***.speech-to-text.watson.cloud.ibm.com/instances/*****
org.openhab.voice.watsonstt:backgroundAudioSuppression=0.5
@ -73,12 +73,12 @@ org.openhab.voice.watsonstt:errorMessage="Sorry, something went wrong"
You can setup your preferred default Speech-to-Text in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **Watson** as **Speech-to-Text**.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **Watson** as **Speech-to-Text**.
In case you would like to setup these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultSTT=watsonstt
```

View File

@ -36,9 +36,9 @@ You can find here the used [whisper.cpp Java wrapper](https://github.com/GiviMAD
The following platforms are supported:
* Windows10 x86_64
* Debian GLIBC x86_64/arm64 (min GLIBC version 2.31 / min Debian version Focal)
* macOS x86_64/arm64 (min version v11.0)
- Windows10 x86_64
- Debian GLIBC x86_64/arm64 (min GLIBC version 2.31 / min Debian version Focal)
- macOS x86_64/arm64 (min version v11.0)
The native binaries for those platforms are included in this add-on provided with the openHAB distribution.
@ -72,8 +72,8 @@ Before you can use this service you should configure your model.
You can download them from the sources provided by the [whisper.cpp](https://github.com/ggerganov/whisper.cpp) author:
* https://huggingface.co/ggerganov/whisper.cpp
* https://ggml.ggerganov.com
- https://huggingface.co/ggerganov/whisper.cpp
- https://ggml.ggerganov.com
You should place the downloaded .bin model in '\<openHAB userdata\>/whisper/' so the add-ons can find them.
@ -122,49 +122,48 @@ Use your favorite configuration UI to edit the Whisper settings:
General options.
* **Model Name** - Model name. The 'ggml-' prefix and '.bin' extension are optional here but required on the filename. (ex: tiny.en -> ggml-tiny.en.bin)
* **Preload Model** - Keep whisper model loaded.
* **Single Utterance Mode** - When enabled recognition stops listening after a single utterance.
* **Min Transcription Seconds** - Forces min audio duration passed to whisper, in seconds.
* **Max Transcription Seconds** - Max seconds for force trigger the transcription, without wait for detect silence.
* **Initial Silence Seconds** - Max seconds without any voice activity to abort the transcription.
* **Max Silence Seconds** - Max consecutive silence seconds to trigger the transcription.
* **Remove Silence** - Remove start and end silence from the audio to transcribe.
- **Model Name** - Model name. The 'ggml-' prefix and '.bin' extension are optional here but required on the filename. (ex: tiny.en -> ggml-tiny.en.bin)
- **Preload Model** - Keep whisper model loaded.
- **Single Utterance Mode** - When enabled recognition stops listening after a single utterance.
- **Min Transcription Seconds** - Forces min audio duration passed to whisper, in seconds.
- **Max Transcription Seconds** - Max seconds for force trigger the transcription, without wait for detect silence.
- **Initial Silence Seconds** - Max seconds without any voice activity to abort the transcription.
- **Max Silence Seconds** - Max consecutive silence seconds to trigger the transcription.
- **Remove Silence** - Remove start and end silence from the audio to transcribe.
### Voice Activity Detection Configuration
Configure VAD options.
* **Audio Step** - Audio processing step in seconds for the voice activity detection.
* **Voice Activity Detection Mode** - Selected VAD Mode.
* **Voice Activity Detection Sensitivity** - Percentage in range 0-1 of voice activity in one second to consider it as voice.
* **Voice Activity Detection Step** - VAD detector internal step in ms (only allows 10, 20 or 30). (Audio Step / Voice Activity Detection Step = number of vad executions per audio step).
- **Audio Step** - Audio processing step in seconds for the voice activity detection.
- **Voice Activity Detection Mode** - Selected VAD Mode.
- **Voice Activity Detection Sensitivity** - Percentage in range 0-1 of voice activity in one second to consider it as voice.
- **Voice Activity Detection Step** - VAD detector internal step in ms (only allows 10, 20 or 30). (Audio Step / Voice Activity Detection Step = number of vad executions per audio step).
### Whisper Configuration
Configure whisper options.
* **Threads** - Number of threads used by whisper. (0 to use host max threads)
* **Sampling Strategy** - Sampling strategy used.
* **Beam Size** - Beam Size configuration for sampling strategy Bean Search.
* **Greedy Best Of** - Best Of configuration for sampling strategy Greedy.
* **Speed Up** - Speed up audio by x2. (Reduced accuracy)
* **Audio Context** - Overwrite the audio context size. (0 to use whisper default context size)
* **Temperature** - Temperature threshold.
* **Initial Prompt** - Initial prompt for whisper.
* **OpenVINO Device** - Initialize OpenVINO encoder. (built-in binaries do not support OpenVINO, this has no effect)
* **Use GPU** - Enables GPU usage. (built-in binaries do not support GPU usage, this has no effect)
- **Threads** - Number of threads used by whisper. (0 to use host max threads)
- **Sampling Strategy** - Sampling strategy used.
- **Beam Size** - Beam Size configuration for sampling strategy Bean Search.
- **Greedy Best Of** - Best Of configuration for sampling strategy Greedy.
- **Speed Up** - Speed up audio by x2. (Reduced accuracy)
- **Audio Context** - Overwrite the audio context size. (0 to use whisper default context size)
- **Temperature** - Temperature threshold.
- **Initial Prompt** - Initial prompt for whisper.
- **OpenVINO Device** - Initialize OpenVINO encoder. (built-in binaries do not support OpenVINO, this has no effect)
- **Use GPU** - Enables GPU usage. (built-in binaries do not support GPU usage, this has no effect)
### Grammar Configuration
Configure the grammar options.
* **Grammar** - Grammar to use in GBNF format (whisper.cpp BNF variant).
* **Use Grammar** - Enable grammar usage.
* **Grammar penalty** - Penalty for non grammar tokens.
#### Grammar Example:
- **Grammar** - Grammar to use in GBNF format (whisper.cpp BNF variant).
- **Use Grammar** - Enable grammar usage.
- **Grammar penalty** - Penalty for non grammar tokens.
#### Grammar Example
```gbnf
# Grammar should define a root expression that should end with a dot.
@ -197,14 +196,14 @@ timer ::= [0-9]+
### Messages Configuration
* **No Results Message** - Message to be told on no results.
* **Error Message** - Message to be told on exception.
- **No Results Message** - Message to be told on no results.
- **Error Message** - Message to be told on exception.
### Developer Configuration
* **Create WAV Record** - Create wav audio file on each whisper execution, also creates a '.prop' file containing the transcription.
* **Record Sample Format** - Change the record sample format. (allows i16 or f32)
* **Enable Whisper Log** - Emit whisper.cpp library logs as add-on debug logs.
- **Create WAV Record** - Create wav audio file on each whisper execution, also creates a '.prop' file containing the transcription.
- **Record Sample Format** - Change the record sample format. (allows i16 or f32)
- **Enable Whisper Log** - Emit whisper.cpp library logs as add-on debug logs.
You can find [here](https://github.com/givimad/whisper-finetune-oh) information on how to fine-tune a model using the generated records.
@ -214,7 +213,7 @@ In case you would like to set up the service via a text file, create a new file
Its contents should look similar to:
```
```ini
org.openhab.voice.whisperstt:modelName=tiny
org.openhab.voice.whisperstt:initSilenceSeconds=0.3
org.openhab.voice.whisperstt:removeSilence=true
@ -251,12 +250,12 @@ org.openhab.voice.whisperstt:grammarLines=
You can select your preferred default Speech-to-Text in the UI:
* Go to **Settings**.
* Edit **System Services - Voice**.
* Set **Whisper** as **Speech-to-Text**.
- Go to **Settings**.
- Edit **System Services - Voice**.
- Set **Whisper** as **Speech-to-Text**.
In case you would like to set up these settings via a text file, you can edit the file `runtime.cfg` in `$OPENHAB_ROOT/conf/services` and set the following entries:
```
```ini
org.openhab.voice:defaultSTT=whisperstt
```

View File

@ -1,329 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="meteoalerte"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="department">
<label>Alertes Département</label>
<description>Fournit les niveaux d'alerte météo pour un département.</description>
<channels>
<channel id="vague-submersion" typeId="vague-submersion"/>
<channel id="vent" typeId="vent"/>
<channel id="pluie-inondation" typeId="pluie-inondation"/>
<channel id="orage" typeId="orage"/>
<channel id="inondation" typeId="inondation"/>
<channel id="neige" typeId="neige"/>
<channel id="canicule" typeId="canicule"/>
<channel id="grand-froid" typeId="grand-froid"/>
<channel id="avalanches" typeId="avalanches"/>
<channel id="vague-submersion-icon" typeId="condition-icon">
<label>Icône Vague Submersion</label>
</channel>
<channel id="vent-icon" typeId="condition-icon">
<label>Icône Vent</label>
</channel>
<channel id="pluie-inondation-icon" typeId="condition-icon">
<label>Icône Pluie Inondation</label>
</channel>
<channel id="orage-icon" typeId="condition-icon">
<label>Icône Orage</label>
</channel>
<channel id="inondation-icon" typeId="condition-icon">
<label>Icône Inondation</label>
</channel>
<channel id="neige-icon" typeId="condition-icon">
<label>Icône Neige</label>
</channel>
<channel id="canicule-icon" typeId="condition-icon">
<label>Icône Canicule</label>
</channel>
<channel id="grand-froid-icon" typeId="condition-icon">
<label>Icône Grand Froid</label>
</channel>
<channel id="avalanches-icon" typeId="condition-icon">
<label>Icône Avalanches</label>
</channel>
<channel id="comment" typeId="comment"/>
<channel id="observation-time" typeId="timestamp">
<label>Début de validité</label>
</channel>
<channel id="end-time" typeId="timestamp">
<label>Fin de validité</label>
</channel>
</channels>
<properties>
<property name="thingTypeVersion">1</property>
</properties>
<config-description>
<parameter name="department" type="text" required="true">
<label>Département</label>
<description>Nom du département</description>
<options>
<option value="AIN">Ain</option>
<option value="AISNE">Aisne</option>
<option value="ALLIER">Allier</option>
<option value="ALPES-DE-HAUTE-PROVENCE">Alpes de Haute Provence</option>
<option value="ALPES-MARITIMES">Alpes Maritimes</option>
<option value="ARDECHE">Ardèche</option>
<option value="ARDENNES">Ardennes</option>
<option value="ARIEGE">Ariège</option>
<option value="AUBE">Aube</option>
<option value="AUDE">Aude</option>
<option value="AVEYRON">Aveyron</option>
<option value="BAS-RHIN">Bas-Rhin</option>
<option value="BOUCHES-DU-RHONE">Bouches du Rhône</option>
<option value="CALVADOS">Calvados</option>
<option value="CANTAL">Cantal</option>
<option value="CHARENTE">Charente</option>
<option value="CHARENTE-MARITIME">Charente Maritime</option>
<option value="CHER">Cher</option>
<option value="CORREZE">Corrèze</option>
<option value="CORSE-DU-SUD">Corse du Sud</option>
<option value="COTE-D'OR">Côte D'Or</option>
<option value="COTES-D'ARMOR">Côtes D'Armor</option>
<option value="CREUSE">Creuse</option>
<option value="DEUX-SEVRES">Deux Sèvres</option>
<option value="DORDOGNE">Dordogne</option>
<option value="DOUBS">Doubs</option>
<option value="DROME">Drôme</option>
<option value="ESSONNE">Essonne</option>
<option value="EURE">Eure</option>
<option value="EURE-ET-LOIR">Eure et Loir</option>
<option value="FINISTERE">Finistère</option>
<option value="GARD">Gard</option>
<option value="GERS">Gers</option>
<option value="GIRONDE">Gironde</option>
<option value="HAUT-RHIN">Haut-Rhin</option>
<option value="HAUTE-CORSE">Haute Corse</option>
<option value="HAUTE-GARONNE">Haute Garonne</option>
<option value="HAUTE-LOIRE">Haute Loire</option>
<option value="HAUTE-MARNE">Haute Marne</option>
<option value="HAUTE-SAONE">Haute Saône</option>
<option value="HAUTE-SAVOIE">Haute Savoie</option>
<option value="HAUTE-VIENNE">Haute Vienne</option>
<option value="HAUTES-ALPES">Hautes Alpes</option>
<option value="HAUTES-PYRENEES">Hautes Pyrénées</option>
<option value="HAUTS-DE-SEINE">Hauts de Seine</option>
<option value="HERAULT">Hérault</option>
<option value="ILLE-ET-VILAINE">Ille et Vilaine</option>
<option value="INDRE">Indre</option>
<option value="INDRE-ET-LOIRE">Indre et Loire</option>
<option value="ISERE">Isère</option>
<option value="JURA">Jura</option>
<option value="LANDES">Landes</option>
<option value="LOIR-ET-CHER">Loir et Cher</option>
<option value="LOIRE">Loire</option>
<option value="LOIRE-ATLANTIQUE">Loire Atlantique</option>
<option value="LOIRET">Loiret</option>
<option value="LOT">Lot</option>
<option value="LOT-ET-GARONNE">Lot et Garonne</option>
<option value="LOZERE">Lozère</option>
<option value="MAINE-ET-LOIRE">Maine et Loire</option>
<option value="MANCHE">Manche</option>
<option value="MARNE">Marne</option>
<option value="MAYENNE">Mayenne</option>
<option value="MEURTHE-ET-MOSELLE">Meurthe et Moselle</option>
<option value="MEUSE">Meuse</option>
<option value="MORBIHAN">Morbihan</option>
<option value="MOSELLE">Moselle</option>
<option value="NIEVRE">Nièvre</option>
<option value="NORD">Nord</option>
<option value="OISE">Oise</option>
<option value="ORNE">Orne</option>
<option value="PARIS">Paris</option>
<option value="PAS-DE-CALAIS">Pas de Calais</option>
<option value="PUY-DE-DOME">Puy de Dôme</option>
<option value="PYRENEES-ATLANTIQUES">Pyrénées Atlantiques</option>
<option value="PYRENEES-ORIENTALES">Pyrénées Orientales</option>
<option value="RHONE">Rhône</option>
<option value="SAONE-ET-LOIRE">Saône et Loire</option>
<option value="SARTHE">Sarthe</option>
<option value="SAVOIE">Savoie</option>
<option value="SEINE-ET-MARNE">Seine et Marne</option>
<option value="SEINE-MARITIME">Seine Maritime</option>
<option value="SEINE-SAINT-DENIS">Seine Saint Denis</option>
<option value="SOMME">Somme</option>
<option value="TARN">Tarn</option>
<option value="TARN-ET-GARONNE">Tarn et Garonne</option>
<option value="TERRITOIRE DE BELFORT">Territoire de Belfort</option>
<option value="VAL-D'OISE">Val D'Oise</option>
<option value="VAL-DE-MARNE">Val de Marne</option>
<option value="VAR">Var</option>
<option value="VAUCLUSE">Vaucluse</option>
<option value="VENDEE">Vendée</option>
<option value="VIENNE">Vienne</option>
<option value="VOSGES">Vosges</option>
<option value="YONNE">Yonne</option>
<option value="YVELINES">Yvelines</option>
</options>
<limitToOptions>true</limitToOptions>
</parameter>
<parameter name="refresh" type="integer" min="1" required="true" unit="min">
<label>Fréquence de rafraichissement</label>
<description>Période d'actualisation des données en minutes.</description>
<default>1440</default>
</parameter>
</config-description>
</thing-type>
<channel-type id="vent">
<item-type>Number</item-type>
<label>Vent</label>
<description>Niveau d'alerte aux évènements éoliens</description>
<category>oh:meteoalerte:vent</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="orage">
<item-type>Number</item-type>
<label>Orage</label>
<description>Niveau d'alerte aux évènements orageux</description>
<category>oh:meteoalerte:orage</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="inondation">
<item-type>Number</item-type>
<label>Inondation</label>
<description>Niveau d'alerte aux inondations</description>
<category>oh:meteoalerte:inondation</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="neige">
<item-type>Number</item-type>
<label>Neige</label>
<description>Niveau d'alerte aux évènements neigeux</description>
<category>oh:meteoalerte:neige</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="canicule">
<item-type>Number</item-type>
<label>Canicule</label>
<description>Niveau d'alerte aux fortes températures</description>
<category>oh:meteoalerte:canicule</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="grand-froid">
<item-type>Number</item-type>
<label>Grand Froid</label>
<description>Niveau d'alerte aux températures négatives</description>
<category>oh:meteoalerte:grand-froid</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="avalanches">
<item-type>Number</item-type>
<label>Avalanches</label>
<description>Niveau d'alerte aux avalanches</description>
<category>oh:meteoalerte:avalanches</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="vague-submersion">
<item-type>Number</item-type>
<label>Vague Submersion</label>
<description>Niveau d'alerte aux vagues submersion</description>
<category>oh:meteoalerte:vague-submersion</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="pluie-inondation">
<item-type>Number</item-type>
<label>Pluie Inondation</label>
<description>Niveau d'alerte aux inondations causées par les précipitations</description>
<category>oh:meteoalerte:pluie-inondation</category>
<state readOnly="true">
<options>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>
<channel-type id="comment">
<item-type>String</item-type>
<label>Commentaire</label>
<category>text</category>
<state readOnly="true" pattern="%s"/>
</channel-type>
<channel-type id="timestamp" advanced="true">
<item-type>DateTime</item-type>
<label>Heure d'observation</label>
<category>time</category>
<state readOnly="true"/>
</channel-type>
<channel-type id="condition-icon">
<item-type>Image</item-type>
<label>Pictogramme</label>
<description>Pictogramme associé au niveau d'alerte.</description>
<state readOnly="true"/>
</channel-type>
</thing:thing-descriptions>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="meteofrance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<bridge-type id="api">
<label>Météo-France API Portal</label>
<description>
Bridge to the Météo-France API Portal. In order to receive the data, you must register an account on
https://portail-api.meteofrance.fr/devportal/apis and get your API token.
</description>
<config-description>
<parameter name="apikey" type="text" required="true">
<label>API Key</label>
<description>Data-platform token to access the service</description>
<context>password</context>
</parameter>
</config-description>
</bridge-type>
</thing:thing-descriptions>

View File

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="meteofrance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<channel-type id="rain-intensity">
<item-type>Number</item-type>
<label>Intensity</label>
<description>Rain intensity level</description>
<category>oh:meteofrance:intensity</category>
<state readOnly="true">
<options>
<option value="0">Dry Weather</option>
<option value="1">Light Rain</option>
<option value="2">Moderate Rain</option>
<option value="3">Heavy Rain</option>
</options>
</state>
</channel-type>
<channel-type id="vent">
<item-type>Number</item-type>
<label>Wind</label>
<description>Wind event alert level</description>
<category>oh:meteofrance:vent</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="orage">
<item-type>Number</item-type>
<label>Storm</label>
<description>Storm alert level</description>
<category>oh:meteofrance:orage</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="inondation">
<item-type>Number</item-type>
<label>Flood</label>
<description>Flood alert level</description>
<category>oh:meteofrance:inondation</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="neige">
<item-type>Number</item-type>
<label>Snow</label>
<description>Snow event alert level</description>
<category>oh:meteofrance:neige</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="canicule">
<item-type>Number</item-type>
<label>Heat Wave</label>
<description>High temperature alert level</description>
<category>oh:meteofrance:canicule</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="grand-froid">
<item-type>Number</item-type>
<label>Extreme Cold</label>
<description>Negative temperature alert level</description>
<category>oh:meteofrance:grand-froid</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="avalanches">
<item-type>Number</item-type>
<label>Avalanches</label>
<description>Avalanche alert level</description>
<category>oh:meteofrance:avalanches</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="vague-submersion">
<item-type>Number</item-type>
<label>Wave Submersion</label>
<description>Submersion wave alert level</description>
<category>oh:meteofrance:vague-submersion</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="pluie-inondation">
<item-type>Number</item-type>
<label>Rain Flood</label>
<description>Flood caused by rainfall alert level</description>
<category>oh:meteofrance:pluie-inondation</category>
<state readOnly="true">
<options>
<option value="0">No special vigilance</option>
<option value="1">Be attentive</option>
<option value="2">Be very vigilant</option>
<option value="3">Absolute vigilance</option>
</options>
</state>
</channel-type>
<channel-type id="comment">
<item-type>String</item-type>
<label>Comment</label>
<category>text</category>
<state readOnly="true" pattern="%s"/>
</channel-type>
<channel-type id="timestamp" advanced="true">
<item-type>DateTime</item-type>
<label>Observation Timestamp</label>
<category>time</category>
<state readOnly="true"/>
</channel-type>
<channel-type id="condition-icon">
<item-type>Image</item-type>
<label>Icon</label>
<description>Pictogram associated with the alert level.</description>
<state readOnly="true"/>
</channel-type>
</thing:thing-descriptions>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="meteofrance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="rain-forecast">
<supported-bridge-type-refs>
<bridge-type-ref id="api"/>
</supported-bridge-type-refs>
<label>Precipitation Forecast</label>
<description>Provides precipitation forecast for the next hour</description>
<channels>
<channel id="update-time" typeId="timestamp"/>
<channel id="intensity" typeId="rain-intensity"/>
</channels>
<representation-property>location</representation-property>
<config-description>
<parameter name="location" type="text" required="true">
<label>Location</label>
<context>location</context>
<description>Your geo coordinates separated with comma (e.g. "37.8,-122.4,177").</description>
</parameter>
</config-description>
</thing-type>
</thing:thing-descriptions>

View File

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="meteofrance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="vigilance">
<supported-bridge-type-refs>
<bridge-type-ref id="api"/>
</supported-bridge-type-refs>
<label>Department Awareness</label>
<description>Provides weather alert levels for a department.</description>
<channels>
<channel id="vague-submersion" typeId="vague-submersion"/>
<channel id="vent" typeId="vent"/>
<channel id="pluie-inondation" typeId="pluie-inondation"/>
<channel id="orage" typeId="orage"/>
<channel id="inondation" typeId="inondation"/>
<channel id="neige" typeId="neige"/>
<channel id="canicule" typeId="canicule"/>
<channel id="grand-froid" typeId="grand-froid"/>
<channel id="avalanches" typeId="avalanches"/>
<channel id="vague-submersion-icon" typeId="condition-icon">
<label>Wave Submersion Icon</label>
</channel>
<channel id="vent-icon" typeId="condition-icon">
<label>Wind Icon</label>
</channel>
<channel id="pluie-inondation-icon" typeId="condition-icon">
<label>Rain Flood Icon</label>
</channel>
<channel id="orage-icon" typeId="condition-icon">
<label>Storm Icon</label>
</channel>
<channel id="inondation-icon" typeId="condition-icon">
<label>Flood Icon</label>
</channel>
<channel id="neige-icon" typeId="condition-icon">
<label>Snow Icon</label>
</channel>
<channel id="canicule-icon" typeId="condition-icon">
<label>Heat Wave Icon</label>
</channel>
<channel id="grand-froid-icon" typeId="condition-icon">
<label>Extreme Cold Icon</label>
</channel>
<channel id="avalanches-icon" typeId="condition-icon">
<label>Avalanche Icon</label>
</channel>
<channel id="comment" typeId="comment"/>
<channel id="observation-time" typeId="timestamp">
<label>Start of Validity</label>
</channel>
<channel id="end-time" typeId="timestamp">
<label>End of Validity</label>
</channel>
</channels>
<representation-property>department</representation-property>
<config-description>
<parameter name="department" type="text" required="true">
<label>Department</label>
<description>Name of the department</description>
<options>
<option value="01">Ain</option>
<option value="02">Aisne</option>
<option value="03">Allier</option>
<option value="04">Alpes de Haute Provence</option>
<option value="06">Alpes Maritimes</option>
<option value="07">Ardèche</option>
<option value="08">Ardennes</option>
<option value="09">Ariège</option>
<option value="10">Aube</option>
<option value="11">Aude</option>
<option value="12">Aveyron</option>
<option value="67">Bas-Rhin</option>
<option value="13">Bouches du Rhône</option>
<option value="14">Calvados</option>
<option value="15">Cantal</option>
<option value="16">Charente</option>
<option value="17">Charente Maritime</option>
<option value="18">Cher</option>
<option value="19">Corrèze</option>
<option value="2A">Corse du Sud</option>
<option value="21">Côte D'Or</option>
<option value="22">Côtes D'Armor</option>
<option value="23">Creuse</option>
<option value="79">Deux Sèvres</option>
<option value="24">Dordogne</option>
<option value="25">Doubs</option>
<option value="26">Drôme</option>
<option value="91">Essonne</option>
<option value="27">Eure</option>
<option value="28">Eure et Loir</option>
<option value="29">Finistère</option>
<option value="30">Gard</option>
<option value="32">Gers</option>
<option value="33">Gironde</option>
<option value="68">Haut-Rhin</option>
<option value="2B">Haute Corse</option>
<option value="31">Haute Garonne</option>
<option value="43">Haute Loire</option>
<option value="52">Haute Marne</option>
<option value="70">Haute Saône</option>
<option value="74">Haute Savoie</option>
<option value="87">Haute Vienne</option>
<option value="05">Hautes Alpes</option>
<option value="65">Hautes Pyrénées</option>
<option value="92">Hauts de Seine</option>
<option value="34">Hérault</option>
<option value="35">Ille et Vilaine</option>
<option value="36">Indre</option>
<option value="37">Indre et Loire</option>
<option value="38">Isère</option>
<option value="39">Jura</option>
<option value="40">Landes</option>
<option value="41">Loir et Cher</option>
<option value="42">Loire</option>
<option value="44">Loire Atlantique</option>
<option value="45">Loiret</option>
<option value="46">Lot</option>
<option value="47">Lot et Garonne</option>
<option value="48">Lozère</option>
<option value="49">Maine et Loire</option>
<option value="50">Manche</option>
<option value="51">Marne</option>
<option value="53">Mayenne</option>
<option value="54">Meurthe et Moselle</option>
<option value="55">Meuse</option>
<option value="56">Morbihan</option>
<option value="57">Moselle</option>
<option value="58">Nièvre</option>
<option value="59">Nord</option>
<option value="60">Oise</option>
<option value="61">Orne</option>
<option value="75">Paris</option>
<option value="62">Pas de Calais</option>
<option value="63">Puy de Dôme</option>
<option value="64">Pyrénées Atlantiques</option>
<option value="66">Pyrénées Orientales</option>
<option value="69">Rhône</option>
<option value="71">Saône et Loire</option>
<option value="72">Sarthe</option>
<option value="73">Savoie</option>
<option value="77">Seine et Marne</option>
<option value="76">Seine Maritime</option>
<option value="93">Seine Saint Denis</option>
<option value="80">Somme</option>
<option value="81">Tarn</option>
<option value="82">Tarn et Garonne</option>
<option value="90">Territoire de Belfort</option>
<option value="95">Val D'Oise</option>
<option value="94">Val de Marne</option>
<option value="83">Var</option>
<option value="84">Vaucluse</option>
<option value="85">Vendée</option>
<option value="86">Vienne</option>
<option value="88">Vosges</option>
<option value="89">Yonne</option>
<option value="78">Yvelines</option>
</options>
<limitToOptions>true</limitToOptions>
</parameter>
<parameter name="refresh" type="integer" min="1" required="true" unit="min">
<label>Refresh Rate</label>
<description>Data refresh period in minutes.</description>
<default>60</default>
</parameter>
</config-description>
</thing-type>
</thing:thing-descriptions>

View File

@ -22,8 +22,8 @@
</parameter>
<parameter name="token" type="text" required="true">
<label>Token</label>
<description>Token as obtained from the server</description>
<label>Access Token</label>
<description>Access token obtained from the account settings page</description>
</parameter>
<parameter name="apiUrlBase" type="text" required="true">

View File

@ -140,6 +140,12 @@
maximum 5.</description>
</channel-type>
<channel-type id="artworkorientation">
<item-type>Switch</item-type>
<label>Artwork Orientation</label>
<description>TV orientation, Landcape or Portrait</description>
</channel-type>
<channel-type id="sourceapp" advanced="true">
<item-type>String</item-type>
<label>Application</label>

View File

@ -32,10 +32,11 @@
<channel id="artJson" typeId="artworkjson"/>
<channel id="artBrightness" typeId="artworkbrightness"/>
<channel id="artColorTemperature" typeId="artworkcolortemperature"/>
<channel id="artOrientation" typeId="artworkorientation"/>
</channels>
<properties>
<property name="thingTypeVersion">1</property>
<property name="thingTypeVersion">2</property>
</properties>
<representation-property>hostName</representation-property>

View File

@ -55,7 +55,7 @@ There's no genuine reason why this wouldn't work. The openHABian image is really
<a id="befair"></a>
#### and on fairness
What you must not do, though, is to mess with the system, OS packages and config and expect anyone to help you with that. Let's clearly state this as well: when you deliberately decide to make manual changes to the OS software packages and configuration (i.e. outside of openhabian-config), you will be on your own.
Your setup is untested, and no-one but you knows about your changes. openHABian maintainers are really committed to providing you with a fine user experience, but this takes enormous efforts in testing and is only possible with a fixed set of hardware. You don't get to see this as a user.
Your setup is untested, and no-one but you knows about your changes. openHABian maintainers are really committed to providing you with a fine user experience, but this takes enormous efforts in testing and is only possible with a fixed set of hardware and software parameters. You don't get to see this as a user.
So if you choose to deviate from the standard openHABian installation (e.g. you change your box to run off SSD) and run into problems thereafter, please be fair: don't waste maintainer's or anyone's time by asking for help or information on your issues on the forum. Thank you !