Updated external content (Jenkins build 72)

pull/1325/head
openHAB Build Server 2020-11-12 10:28:01 +00:00
parent 4ace0975e1
commit 0cbe63d185
17 changed files with 710 additions and 95 deletions

File diff suppressed because one or more lines are too long

View File

@ -27,7 +27,8 @@ The binding currently supports weather data from these weather stations.
| Account | bridge |
| WS-0900-IP | ws0900ip |
| WS-1400-IP / WS-1401-IP | ws1400ip |
| WS-2902A | ws2902a |
| WS-2902A / WS2902C | ws2902a |
| WS-2902B | ws2902b |
| WS-8482 | ws8482 |
| WS-0265 | ws0265 |
@ -249,16 +250,20 @@ Adding support for a new weather station type involves changes to the source cod
Define a new `ThingTypeUID` for the new station and add it to the `SUPPORTED_THING_TYPES_UIDS` Collection.
Add a channel group for the new station.
#### Create OH-INF/thing/\<station-model\>.xml
Add thing type and channel group specific to the data elements supported by this weather station.
Modeling this after an existing thing type that shares many of the channels is the easiest starting point.
You can determine the weather data elements returned for the weather station by putting the binding into debug mode and reviewing the JSON object returned by the Ambient Weather API.
#### Create Processor Class AmbientWeather<StationModel>Processor
#### Create Processor Class <StationModel>Processor
Add a class in `org.openhab.binding.ambientweather.internal.processor` that defines the channels supported by this station type.
Add the following two methods.
Again, the easiest approach is to model this class after a class for a similar weather station type.
##### Method: processInfoUpdate
@ -269,6 +274,6 @@ Updates the channels for station name and location.
Updates channels for weather data.
#### Update AmbientWeatherProcessorFactory.java
#### Update ProcessorFactory.java
Add new Processor class definition to `AmbientWeatherProcessorFactory.java`, and add a new case to the switch statement to return the new processor.
Add new Processor class definition to `ProcessorFactory.java`, and add a new case to the switch statement to return the new processor.

View File

@ -0,0 +1,161 @@
---
id: http
label: HTTP
title: HTTP - Bindings
type: binding
description: "This binding allows using HTTP to bring external data into openHAB or execute HTTP requests on commands."
since: 3x
logo: images/addons/http.png
install: auto
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# HTTP Binding
This binding allows using HTTP to bring external data into openHAB or execute HTTP requests on commands.
## Supported Things
Only one thing named `url` is available.
It can be extended with different channels.
## Thing Configuration
| parameter | optional | default | description |
|-------------------|----------|---------|-------------|
| `baseURL` | no | - | The base URL for this thing. Can be extended in channel-configuration. |
| `refresh` | no | 30 | Time in seconds between two refresh calls for the channels of this thing. |
| `timeout` | no | 3000 | Timeout for HTTP requests in ms. |
| `username` | yes | - | Username for authentication (advanced parameter). |
| `password` | yes | - | Password for authentication (advanced parameter). |
| `authMode` | no | BASIC | Authentication mode, `BASIC` or `DIGEST` (advanced parameter). |
| `commandMethod` | no | GET | Method used for sending commands `GET`, `PUT`, `POST`. |
| `contentType` | yes | - | MIME content-type of the command requests. Only used for `PUT` and `POST`. |
| `encoding` | yes | - | Encoding to be used if no encoding is found in responses (advanced parameter). |
| `headers` | yes | - | Additional headers that are sent along with the request. Format is "header=value".|
| `ignoreSSLErrors` | no | false | If set to true ignores invalid SSL certificate errors. This is potentially dangerous.|
*Note:* optional "no" means that you have to configure a value unless a default is provided and you are ok with that setting.
## Channels
Each item type has its own channel-type.
Depending on the channel-type, channels have different configuration options.
All channel-types (except `image`) have `stateExtension`, `commandExtension`, `stateTransformation`, `commandTransformation` and `mode` parameters.
The `image` channel-type supports `stateExtension` only.
| parameter | optional | default | description |
|-------------------------|----------|-------------|-------------|
| `stateExtension` | yes | - | Appended to the `baseURL` for requesting states. |
| `commandExtension` | yes | - | Appended to the `baseURL` for sending commands. If empty, same as `stateExtension`. |
| `stateTransformation ` | yes | - | One or more transformation applied to received values before updating channel. |
| `commandTransformation` | yes | - | One or more transformation applied to channel value before sending to a remote. |
| `mode` | no | `READWRITE` | Mode this channel is allowed to operate. `READ` means receive state, `WRITE` means send commands. |
Transformations need to be specified in the same format as
Some channels have additional parameters.
When concatenating the `baseURL` and `stateExtions` or `commandExtension` the binding checks if a proper URL part separator (`/`, `&` or `?`) is present and adds a `/` if missing.
### Value Transformations (`stateTransformation`, `commandTransformation`)
Transformations can be used if the supplied value (or the required value) is different from what openHAB internal types require.
Here are a few examples to unwrap an incoming value via `stateTransformation` from a complex response:
| Received value | Tr. Service | Transformation |
|---------------------------------------------------------------------|-------------|-------------------------------------------|
| `{device: {status: { temperature: 23.2 }}}` | JSONPATH | `JSONPATH:$.device.status.temperature` |
| `<device><status><temperature>23.2</temperature></status></device>` | XPath | `XPath:/device/status/temperature/text()` |
| `THEVALUE:23.2°C` | REGEX | `REGEX::(.*?)°` |
Transformations can be chained by separating them with the mathematical intersection character "∩".
Please note that the values will be discarded if one transformation fails (e.g. REGEX did not match).
The same mechanism works for commands (`commandTransformation`) for outgoing values.
### `color`
| parameter | optional | default | description |
|-------------------------|----------|-------------|-------------|
| `onValue` | yes | - | A special value that represents `ON` |
| `offValue` | yes | - | A special value that represents `OFF` |
| `increaseValue` | yes | - | A special value that represents `INCREASE` |
| `decreaseValue` | yes | - | A special value that represents `DECREASE` |
| `step` | no | 1 | The amount the brightness is increased/decreased on `INCREASE`/`DECREASE` |
| `colorMode` | no | RGB | Mode for color values: `RGB` or `HSB` |
All values that are not `onValue`, `offValue`, `increaseValue`, `decreaseValue` are interpreted as color value (according to the color mode) in the format `r,g,b` or `h,s,v`.
### `contact`
| parameter | optional | default | description |
|-------------------------|----------|-------------|-------------|
| `openValue` | no | - | A special value that represents `OPEN` |
| `closedValue` | no | - | A special value that represents `CLOSED` |
### `dimmer`
| parameter | optional | default | description |
|-------------------------|----------|-------------|-------------|
| `onValue` | yes | - | A special value that represents `ON` |
| `offValue` | yes | - | A special value that represents `OFF` |
| `increaseValue` | yes | - | A special value that represents `INCREASE` |
| `decreaseValue` | yes | - | A special value that represents `DECREASE` |
| `step` | no | 1 | The amount the brightness is increased/decreased on `INCREASE`/`DECREASE` |
All values that are not `onValue`, `offValue`, `increaseValue`, `decreaseValue` are interpreted as brightness 0-100% and need to be numeric only.
### `player`
| parameter | optional | default | description |
|-------------------------|----------|-------------|-------------|
| `play` | yes | - | A special value that represents `PLAY` |
| `pause` | yes | - | A special value that represents `PAUSE` |
| `next` | yes | - | A special value that represents `NEXT` |
| `previous` | yes | - | A special value that represents `PREVIOUS` |
| `fastforward` | yes | - | A special value that represents `FASTFORWARD` |
| `rewind` | yes | - | A special value that represents `REWIND` |
### `rollershutter`
| parameter | optional | default | description |
|-------------------------|----------|-------------|-------------|
| `upValue` | yes | - | A special value that represents `UP` |
| `downValue` | yes | - | A special value that represents `DOWN` |
| `stopValue` | yes | - | A special value that represents `STOP` |
| `moveValue` | yes | - | A special value that represents `MOVE` |
All values that are not `upValue`, `downValue`, `stopValue`, `moveValue` are interpreted as position 0-100% and need to be numeric only.
### `switch`
| parameter | optional | default | description |
|-------------------------|----------|-------------|-------------|
| `onValue` | no | - | A special value that represents `ON` |
| `offValue` | no | - | A special value that represents `OFF` |
**Note:** Special values need to be exact matches, i.e. no leading or trailing characters and comparison is case-sensitive.
## URL Formatting
After concatenation of the `baseURL` and the `commandExtension` or the `stateExtension` (if provided) the URL is formatted using the [java.util.Formatter](http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html).
The URL is used as format string and two parameters are added:
- the current date (referenced as `%1$`)
- the transformed command (referenced as `%2$`)
After the parameter reference the format needs to be appended.
See the link above for more information about the available format parameters (e.g. to use the string representation, you need to append `s` to the reference).
When sending an OFF command on 2020-07-06, the URL
```
http://www.domain.org/home/lights/23871/?status=%2$s&date=%1$tY-%1$tm-%1$td
```
is transformed to
```
http://www.domain.org/home/lights/23871/?status=OFF&date=2020-07-06
```

View File

@ -214,27 +214,27 @@ Sample things file:
Bridge insteon:network:home [port="/dev/ttyUSB0"] {
Thing device 22F8A8 [address="22.F8.A8", productKey="F00.00.15"] {
Channels:
Type switch : keypadButtonA [ group=3 ]
Type switch : keypadButtonB [ group=4 ]
Type switch : keypadButtonC [ group=5 ]
Type switch : keypadButtonD [ group=6 ]
Type keypadButtonA : keypadButtonA [ group=3 ]
Type keypadButtonB : keypadButtonB [ group=4 ]
Type keypadButtonC : keypadButtonC [ group=5 ]
Type keypadButtonD : keypadButtonD [ group=6 ]
}
Thing device 238D93 [address="23.8D.93", productKey="F00.00.12"]
Thing device 238F55 [address="23.8F.55", productKey="F00.00.11"] {
Channels:
Type dimmer : dimmer [related="23.B0.D9+23.8F.C9"]
Type dimmer : dimmer [related="23.B0.D9+23.8F.C9"]
}
Thing device 238FC9 [address="23.8F.C9", productKey="F00.00.11"] {
Channels:
Type dimmer : dimmer [related="23.8F.55+23.B0.D9"]
Type dimmer : dimmer [related="23.8F.55+23.B0.D9"]
}
Thing device 23B0D9 [address="23.B0.D9", productKey="F00.00.11"] {
Channels:
Type dimmer : dimmer [related="23.8F.55+23.8F.C9"]
Type dimmer : dimmer [related="23.8F.55+23.8F.C9"]
}
Thing device 243141 [address="24.31.41", productKey="F00.00.11"] {
Channels:
Type dimmer : dimmer [dimmermax=60]
Type dimmer : dimmer [dimmermax=60]
}
}
```
@ -344,11 +344,11 @@ The below example sets a maximum level of 70% for dim 1 and 60% for dim 2:
Bridge insteon:network:home [port="/dev/ttyUSB0"] {
Thing device AABBCC [address="AA.BB.CC", productKey="F00.00.11"] {
Channels:
Type dimmer : dimmer [dimmermax=70]
Type dimmer : dimmer [dimmermax=70]
}
Thing device AABBCD [address="AA.BB.CD", productKey="F00.00.15"] {
Channels:
Type dimmer : loadDimmer [dimmermax=60]
Type loadDimmer : loadDimmer [dimmermax=60]
}
}
```
@ -591,10 +591,10 @@ To make the buttons available, add the following:
Bridge insteon:network:home [port="/dev/ttyUSB0"] {
Thing device AABBCC [address="AA.BB.CC", productKey="F00.00.15"] {
Channels:
Type switch : keypadButtonA [ group="0xf3" ]
Type switch : keypadButtonB [ group="0xf4" ]
Type switch : keypadButtonC [ group="0xf5" ]
Type switch : keypadButtonD [ group="0xf6" ]
Type keypadButtonA : keypadButtonA [ group="0xf3" ]
Type keypadButtonB : keypadButtonB [ group="0xf4" ]
Type keypadButtonC : keypadButtonC [ group="0xf5" ]
Type keypadButtonD : keypadButtonD [ group="0xf6" ]
}
}
```
@ -762,7 +762,7 @@ The format is `broadcastOnOff#X` where X is the group that you want to be able t
Bridge insteon:network:home [port="/dev/ttyUSB0"] {
Thing device AABBCC [address="AA.BB.CC", productKey="0x000045"] {
Channels:
Type switch : broadcastOnOff#2
Type broadcastOnOff : broadcastOnOff#2
}
}
@ -817,7 +817,7 @@ A typical example would be a switch configured to broadcast to a group, and one
Bridge insteon:network:home [port="/dev/ttyUSB0"] {
Thing device AABBCC [address="AA.BB.CC", productKey="0x000045"] {
Channels:
Type switch : broadcastOnOff#3 [related="AA.BB.DD"]
Type broadcastOnOff : broadcastOnOff#3 [related="AA.BB.DD"]
}
Thing device AABBDD [address="AA.BB.DD", productKey="F00.00.11"]
}

View File

@ -54,7 +54,8 @@ Instructions given for Firefox :
4. Clic on "Suivant".
5. In the login page, prefilled with your mail address, enter your Enedis account password and click on "Connexion à Espace Client Enedis".
6. You will be directed to your Enedis account environment. Get back to previous page in you browser.
7. Open the developper tool window (F12) and select "Stockage" tab. In the "Cookies" entry, select "https://mon-compte-enedis.fr". You should see an entry named "internalAuthId", copy this value in your Openhab configuration.
7. Disconnect from your Enedis account
8. Repeat steps 1, 2. You should arrive directly on step 5, then open the developer tool window (F12) and select "Stockage" tab. In the "Cookies" entry, select "https://mon-compte-enedis.fr". You'll find an entry named "internalAuthId", copy this value in your Openhab configuration.
## Channels

View File

@ -44,15 +44,15 @@ The Météo Alerte information that are retrieved is available as these channels
| 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 | String | Wind alert level (*) |
| pluie-inondation | String | Rain alert level (*) |
| orage | String | Storm alert level (*) |
| inondation | String | Flood alert level (*) |
| neige | String | Snow alert level (*) |
| canicule | String | Heat alert level (*) |
| grand-froid | String | Cold alert level (*) |
| avalanches | String | Avalanche alert level (*) |
| vague-submersion | String | Wave submersion alert level (*) |
| 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 |
@ -86,14 +86,14 @@ meteoalert.items:
```
Group gMeteoAlert "Alertes Météo" <weather>
String MA_Dept78 "Département 78 [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:comment"}
String MA_etat_canicule "Canicule [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:canicule"}
String MA_etat_grand_froid "Grand Froid [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:grand-froid"}
String MA_etat_pluie_inondation "Pluie-Inondation [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:pluie-inondation"}
String MA_etat_neige "Neige [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:neige"}
String MA_etat_vent "Vent [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:vent"}
String MA_etat_inondation "Inondation [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:inondation"}
String MA_etat_orage "Orage [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:orage"}
String MA_etat_avalanche "Avalanches [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:avalanches"}
Number MA_etat_canicule "Canicule [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:canicule"}
Number MA_etat_grand_froid "Grand Froid [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:grand-froid"}
Number MA_etat_pluie_inondation "Pluie-Inondation [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:pluie-inondation"}
Number MA_etat_neige "Neige [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:neige"}
Number MA_etat_vent "Vent [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:vent"}
Number MA_etat_inondation "Inondation [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:inondation"}
Number MA_etat_orage "Orage [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:orage"}
Number MA_etat_avalanche "Avalanches [%s]" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:avalanches"}
Image MA_icon_canicule "Canicule" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:canicule-icon"}
Image MA_icon_grand_froid "Grand Froid" <aqi> (gMeteoAlert) {channel="meteoalerte:department:yvelines:grand-froid-icon"}

View File

@ -148,6 +148,7 @@ or in case of unknown models include the model information of a similar device t
| Mi Smart Pedestal Fan | miio:basic | [zhimi.fan.v3](#zhimi-fan-v3) | Yes | |
| Xiaomi Mi Smart Pedestal Fan | miio:basic | [zhimi.fan.sa1](#zhimi-fan-sa1) | Yes | |
| Xiaomi Mi Smart Pedestal Fan | miio:basic | [zhimi.fan.za1](#zhimi-fan-za1) | Yes | |
| Xiaomi Mi Smart Pedestal Fan | miio:basic | [zhimi.fan.za3](#zhimi-fan-za3) | Yes | |
| Xiaomi Mi Smart Pedestal Fan | miio:basic | [zhimi.fan.za4](#zhimi-fan-za4) | Yes | |
| Xiaomi Mijia Smart Tower Fan | miio:basic | [dmaker.fan.1c](#dmaker-fan-1c) | Yes | |
| Xiaomi Mijia Smart Tower Fan | miio:basic | [dmaker.fan.p5](#dmaker-fan-p5) | Yes | |
@ -362,6 +363,9 @@ After validation, please share the logfile and json files on the openHAB forum o
Things using the basic handler (miio:basic things) are driven by json 'database' files.
This instructs the binding which channels to create, which properties and actions are associated with the channels etc.
The conf/misc/miio (e.g. in Linux `/opt/openhab2/conf/misc/miio/`) is scanned for database files and will be used for your devices.
During the start of the binding the exact path used in your system will be printed in the debug log.
Watch for a line containing `Started miio basic devices local databases watch service. Watching for database files at path: …`
If this folder is created after the start of the binding, you may need to restart the binding (or openHAB) to be able to use the local files.
Note that local database files take preference over build-in ones, hence if a json file is local and in the database the local file will be used.
For format, please check the current database files in openHAB GitHub.
@ -1106,6 +1110,23 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
| acPower | Switch | AC Power | |
| move | String | Move Direction | |
### Xiaomi Mi Smart Pedestal Fan (<a name="zhimi-fan-za3">zhimi.fan.za3</a>) Channels
| Channel | Type | Description | Comment |
|------------------|---------|-------------------------------------|------------|
| power | Switch | Power | |
| angleEnable | Switch | Rotation | |
| usedhours | Number | Run Time | |
| angle | Number | Angle | |
| poweroffTime | Number | Timer | |
| buzzer | Number | Buzzer | |
| led_b | Number | LED | |
| child_lock | Switch | Child Lock | |
| speedLevel | Number | Speed Level | |
| speed | Number | Speed | |
| naturalLevel | Number | Natural Level | |
| move | String | Move Direction | |
### Xiaomi Mi Smart Pedestal Fan (<a name="zhimi-fan-za4">zhimi.fan.za4</a>) Channels
| Channel | Type | Description | Comment |
@ -1836,7 +1857,7 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
|------------------|---------|-------------------------------------|------------|
| power | Switch | Power | If this channel does not respond to on/off replace the model with chuangmi.plug.v3old in the config or upgrade firmware |
| usb | Switch | USB | |
| temperature | Number | Temperature | |
| temperature | Number:Temperature | Temperature | |
| led | Switch | Wifi LED | |
### Mi Power-plug (<a name="chuangmi-plug-m3">chuangmi.plug.m3</a>) Channels
@ -1861,7 +1882,7 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
|------------------|---------|-------------------------------------|------------|
| power | Switch | Power | If this channel does not respond to on/off replace the model with chuangmi.plug.v3old in the config or upgrade firmware |
| usb | Switch | USB | |
| temperature | Number | Temperature | |
| temperature | Number:Temperature | Temperature | |
| led | Switch | Wifi LED | |
### Mi Smart Plug (<a name="chuangmi-plug-hmi208">chuangmi.plug.hmi208</a>) Channels
@ -1870,7 +1891,7 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
|------------------|---------|-------------------------------------|------------|
| power | Switch | Power | If this channel does not respond to on/off replace the model with chuangmi.plug.v3old in the config or upgrade firmware |
| usb | Switch | USB | |
| temperature | Number | Temperature | |
| temperature | Number:Temperature | Temperature | |
| led | Switch | Wifi LED | |
### Qing Mi Smart Power Strip v1 (<a name="qmi-powerstrip-v1">qmi.powerstrip.v1</a>) Channels
@ -3133,13 +3154,13 @@ e.g. `smarthome:send actionCommand 'upd_timer["1498595904821", "on"]'` would ena
| Channel | Type | Description | Comment |
|------------------|---------|-------------------------------------|------------|
| power | Switch | Power | |
| target_temperature | Number | Target Temperature | |
| target_temperature | Number:Temperature | Target Temperature | |
| brightness | Number | Brightness | |
| buzzer | Switch | Buzzer Status | |
| relative_humidity | Number | Relative Humidity | |
| childlock | Switch | Child Lock | |
| HWSwitch | Switch | HW Switch | |
| temperature | Number | Temperature | |
| temperature | Number:Temperature | Temperature | |
| usedhours | Number | Run Time | |
@ -3979,6 +4000,26 @@ Switch acPower "AC Power" (G_fan) {channel="miio:basic:fan:acPower"}
String move "Move Direction" (G_fan) {channel="miio:basic:fan:move"}
```
### Xiaomi Mi Smart Pedestal Fan (zhimi.fan.za3) item file lines
note: Autogenerated example. Replace the id (fan) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
```java
Group G_fan "Xiaomi Mi Smart Pedestal Fan" <status>
Switch power "Power" (G_fan) {channel="miio:basic:fan:power"}
Switch angleEnable "Rotation" (G_fan) {channel="miio:basic:fan:angleEnable"}
Number usedhours "Run Time" (G_fan) {channel="miio:basic:fan:usedhours"}
Number angle "Angle" (G_fan) {channel="miio:basic:fan:angle"}
Number poweroffTime "Timer" (G_fan) {channel="miio:basic:fan:poweroffTime"}
Number buzzer "Buzzer" (G_fan) {channel="miio:basic:fan:buzzer"}
Number led_b "LED" (G_fan) {channel="miio:basic:fan:led_b"}
Switch child_lock "Child Lock" (G_fan) {channel="miio:basic:fan:child_lock"}
Number speedLevel "Speed Level" (G_fan) {channel="miio:basic:fan:speedLevel"}
Number speed "Speed" (G_fan) {channel="miio:basic:fan:speed"}
Number naturalLevel "Natural Level" (G_fan) {channel="miio:basic:fan:naturalLevel"}
String move "Move Direction" (G_fan) {channel="miio:basic:fan:move"}
```
### Xiaomi Mi Smart Pedestal Fan (zhimi.fan.za4) item file lines
note: Autogenerated example. Replace the id (fan) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
@ -4873,7 +4914,7 @@ note: Autogenerated example. Replace the id (plug) in the channel with your own.
Group G_plug "Mi Power-plug v3" <status>
Switch power "Power" (G_plug) {channel="miio:basic:plug:power"}
Switch usb "USB" (G_plug) {channel="miio:basic:plug:usb"}
Number temperature "Temperature" (G_plug) {channel="miio:basic:plug:temperature"}
Number:Temperature temperature "Temperature" (G_plug) {channel="miio:basic:plug:temperature"}
Switch led "Wifi LED" (G_plug) {channel="miio:basic:plug:led"}
```
@ -4907,7 +4948,7 @@ note: Autogenerated example. Replace the id (plug) in the channel with your own.
Group G_plug "Mi Smart Plug" <status>
Switch power "Power" (G_plug) {channel="miio:basic:plug:power"}
Switch usb "USB" (G_plug) {channel="miio:basic:plug:usb"}
Number temperature "Temperature" (G_plug) {channel="miio:basic:plug:temperature"}
Number:Temperature temperature "Temperature" (G_plug) {channel="miio:basic:plug:temperature"}
Switch led "Wifi LED" (G_plug) {channel="miio:basic:plug:led"}
```
@ -4919,7 +4960,7 @@ note: Autogenerated example. Replace the id (plug) in the channel with your own.
Group G_plug "Mi Smart Plug" <status>
Switch power "Power" (G_plug) {channel="miio:basic:plug:power"}
Switch usb "USB" (G_plug) {channel="miio:basic:plug:usb"}
Number temperature "Temperature" (G_plug) {channel="miio:basic:plug:temperature"}
Number:Temperature temperature "Temperature" (G_plug) {channel="miio:basic:plug:temperature"}
Switch led "Wifi LED" (G_plug) {channel="miio:basic:plug:led"}
```
@ -6440,13 +6481,13 @@ note: Autogenerated example. Replace the id (heater) in the channel with your ow
```java
Group G_heater "Zhimi Heater" <status>
Switch power "Power" (G_heater) {channel="miio:basic:heater:power"}
Number target_temperature "Target Temperature" (G_heater) {channel="miio:basic:heater:target_temperature"}
Number:Temperature target_temperature "Target Temperature" (G_heater) {channel="miio:basic:heater:target_temperature"}
Number brightness "Brightness" (G_heater) {channel="miio:basic:heater:brightness"}
Switch buzzer "Buzzer Status" (G_heater) {channel="miio:basic:heater:buzzer"}
Number relative_humidity "Relative Humidity" (G_heater) {channel="miio:basic:heater:relative_humidity"}
Switch childlock "Child Lock" (G_heater) {channel="miio:basic:heater:childlock"}
Switch HWSwitch "HW Switch" (G_heater) {channel="miio:basic:heater:HWSwitch"}
Number temperature "Temperature" (G_heater) {channel="miio:basic:heater:temperature"}
Number:Temperature temperature "Temperature" (G_heater) {channel="miio:basic:heater:temperature"}
Number usedhours "Run Time" (G_heater) {channel="miio:basic:heater:usedhours"}
```

View File

@ -19,9 +19,9 @@ The Telegram binding allows sending and receiving messages to and from Telegram
# Prerequisites
As described in the Telegram Bot API, this is the manual procedure needed in order to get the necessary information.
As described in the Telegram Bot API (https://core.telegram.org/bots#6-botfather), this is the manual procedure needed in order to get the necessary information.
1. Create the Bot and get the Token
1. Create a new Bot and get the Token
- On a Telegram client open a chat with BotFather.
- Send `/newbot` to BotFather and fill in all the needed information. The authentication token that is given will be needed in the next steps.
@ -47,13 +47,15 @@ Note bots may work or not at any time so eventually you need to try another one.
- `https://api.telegram.org/bot<token>/sendMessage?chat_id=<chatId>&text=testing`
- Your Telegram-bot should send you a message with the text: `testing`
**Notice:** By default your bot will only receive messages that either start with the '/' symbol or mention the bot by username (or if you talk to it directly). However, if you add your bot to a group you must either talk to BotFather and send the command "/setprivacy" and then disable it or you give admin rights to your bot in that group. Otherwise you will not be able to receive those messages.
**Notice:** By default your bot will only receive messages that either start with the '/' symbol or mention the bot by username (or if you talk to it directly).
However, if you add your bot to a group you must either talk to BotFather and send the command "/setprivacy" and then disable it or you give admin rights to your bot in that group.
Otherwise you will not be able to receive those messages.
## Supported Things
**telegramBot** - A Telegram Bot that can send and receive messages.
The Telegram binding supports the following things which origin from the latest message sent to the Telegram bot:
The Telegram binding supports the following things which originate from the last message sent to the Telegram bot:
* message text or URL
* message date
@ -62,22 +64,22 @@ The Telegram binding supports the following things which origin from the latest
* chat id (used to identify the chat of the last message)
* reply id (used to identify an answer from a user of a previously sent message by the binding)
Please note that the things cannot be used to send messages.
Please note that the binding channels cannot be used to send messages.
In order to send a message, an action must be used instead.
## Thing Configuration
**telegramBot** parameters:
| Property | Default | Required | Description |
|-------------------------|---------|:--------:|----------------------------------------------------------------------------------------------|
| `chatIds` | | Yes | Comma-separated list of chat ids |
| `botToken` | | Yes | authentication token |
| `parseMode` | None | No | Support for formatted messages, values: Markdown or HTML. |
| `proxyHost` | None | No | Proxy host for telegram binding. |
| `proxyPort` | None | No | Proxy port for telegram binding. |
| `proxyType` | SOCKS5 | No | Type of proxy server for telegram binding (SOCKS5 or HTTP). Default: SOCKS5 |
| `longPollingTime` | 25 | No | Timespan for long polling the telegram API |
| Property | Default | Required | Description |
|-|-|-|-|
| `chatIds` | | Yes | A list of chatIds that are entered one per line in the UI, or are comma separated values when using textual config. |
| `botToken` | | Yes | Authentication token that looks like 1122334455:AABBCCDDEEFFGG1122334455667788 |
| `parseMode` | None | No | Support for formatted messages, values: Markdown or HTML. |
| `proxyHost` | None | No | Proxy host for telegram binding. |
| `proxyPort` | None | No | Proxy port for telegram binding. |
| `proxyType` | SOCKS5 | No | Type of proxy server for telegram binding (SOCKS5 or HTTP). |
| `longPollingTime` | 25 | No | Timespan in seconds for long polling the telegram API. |
By default chat ids are bi-directionally, i.e. they can send and receive messages.
They can be prefixed with an access modifier:
@ -99,7 +101,6 @@ telegram.thing (multiple chat ids, one bi-directional chat (ID1), one outbound-o
Thing telegram:telegramBot:Telegram_Bot [ chatIds="ID1",">ID2", botToken="TOKEN" ]
```
telegram.thing (markdown format):
```
@ -118,7 +119,6 @@ or HTTP proxy server
Thing telegram:telegramBot:Telegram_Bot [ chatIds="ID", botToken="TOKEN", proxyHost="localhost", proxyPort="8123", proxyType="HTTP" ]
```
## Channels
| Channel Type ID | Item Type | Description |
@ -138,7 +138,7 @@ If the message did contain an audio, photo, video or voice, the URL to retrieve
## Rule Actions
This binding includes a rule action, which allows to send Telegram messages from within rules.
This binding includes a number of rule actions, which allow the sending of Telegram messages from within rules.
```
val telegramAction = getActions("telegram","telegram:telegramBot:<uid>")
@ -165,8 +165,18 @@ These actions will send a message to all chat ids configured for this bot.
| sendTelegram(String format, Object... args) | Sends a formatted message (See https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html for more information).
| sendTelegramQuery(String message, String replyId, String... buttons) | Sends a question to the user that can be answered via the defined buttons. The replyId can be freely choosen and is sent back with the answer. Then, the id is required to identify what question has been answered (e.g. in case of multiple open questions). The final result looks like this: ![Telegram Inline Keyboard](doc/queryExample.png). |
| sendTelegramAnswer(String replyId, String message) | Sends a message after the user has answered a question. You should *always* call this method after you received an answer. It will remove buttons from the specific question and will also stop the progress bar displayed at the client side. If no message is necessary, just pass `null` here. |
| sendTelegramPhoto(String photoURL, String caption) | Sends a picture. The URL can be specified using the http, https, and file protocols or a base64 encoded image (simple base64 data or data URI scheme). |
| sendTelegramPhoto(String photoURL, String caption) | Sends a picture. Can be one of the URL formats, see the Note below, or a base64 encoded image (simple base64 data or data URI scheme). |
| sendTelegramPhoto(String photoURL, String caption, String username, String password) | Sends a picture which is downloaded from a username/password protected http/https address. |
| sendTelegramAnimation(String animationURL, String caption) | Send animation files either GIF or H.264/MPEG-4 AVC video without sound. |
| sendTelegramVideo(String videoURL, String caption) | Send MP4 video files up to 50MB. |
**Note:** In actions that require a file URL, the following formats are acceptable:
+ http://foo.com/bar.jpg
+ https://foo.com/bar.jpg
+ file://c:\\foo\\bar.jpg
+ c:\\foo\\bar.jpg
+ /etc/openhab/html/bar.jpg
### Actions to send messages to a particular chat
@ -351,5 +361,4 @@ then
telegramAction.sendTelegramAnswer(telegramReplyId.state.toString, "Ok, I'll leave them *on*.")
}
end
```
```

View File

@ -37,7 +37,10 @@ Of course, you can add multiple Things, e.g. for getting measures for different
## Discovery
This binding does not handle auto-discovery.
You can discover stations based upon the system location.
Select Vigicrues binding and click scan in order to discover new stations.
The first scan will proceed with stations located in a radius of 10 km.
This radius will increase by 10 km at each new scan.
## Binding Configuration
@ -55,13 +58,31 @@ The thing has a few configuration parameters:
## Channels
Once created, at first initialization, the thing will discover its capabilities (available data) using the webservices apis.
Channels will be presented depending upon actual available data.
The VigiCrues information that retrieved are made available with these channels:
| Channel ID | Item Type | Description |
|------------------|---------------------------|-------------------------------|
| observation-time | DateTime | Date and time of measurement |
| flow | Number:VolumetricFlowRate | Volume of water per time unit |
| height | Number:Length | Water height of the river |
| Channel ID | Item Type | Description |
|------------------|---------------------------|------------------------------------------------------------|
| observation-time | DateTime | Date and time of measurement |
| flow | Number:VolumetricFlowRate | Volume of water per time unit |
| height | Number:Length | Water height of the river |
| relative-height | Number:Dimensionless | Current water level toward lowest historical flood |
| relative-flow | Number:Dimensionless | Current water flow tower lowest historical flood |
| alert (*) | Number | Flooding alert level of the portion related to the station |
| alert-icon | Image | Pictogram associated to the alert level |
| short-comment | String | Description of the alert level |
| comment | String | Detailed informations regarding the ongoing event |
(*) Each alert level is described by a color :
| Code | Color | Description |
|------|--------|-------------------------------------------|
| 0 | Green | No particular vigilance |
| 1 | Yellow | Be attentive to the flooding situation |
| 2 | Orange | Be "very vigilant" in the concerned areas |
| 3 | Red | Absolute vigilance required |
## Full Example

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="ambientweather"
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">
<!-- Ambient Weather WS-2902B -->
<thing-type id="ws2902b">
<supported-bridge-type-refs>
<bridge-type-ref id="bridge"/>
</supported-bridge-type-refs>
<label>WS-2902B</label>
<description>Ambient Weather Station WS-2902B</description>
<channel-groups>
<channel-group id="station" typeId="station">
<label>Weather Station</label>
<description></description>
</channel-group>
<channel-group id="weatherDataWs2902b" typeId="weatherDataWs2902b">
<label>Weather Data</label>
<description></description>
</channel-group>
<channel-group id="indoorSensor" typeId="indoorSensor">
<label>Indoor Sensor</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor1" typeId="remoteSensor">
<label>Remote Sensor 1</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor2" typeId="remoteSensor">
<label>Remote Sensor 2</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor3" typeId="remoteSensor">
<label>Remote Sensor 3</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor4" typeId="remoteSensor">
<label>Remote Sensor 4</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor5" typeId="remoteSensor">
<label>Remote Sensor 5</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor6" typeId="remoteSensor">
<label>Remote Sensor 6</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor7" typeId="remoteSensor">
<label>Remote Sensor 7</label>
<description></description>
</channel-group>
<channel-group id="remoteSensor8" typeId="remoteSensor">
<label>Remote Sensor 8</label>
<description></description>
</channel-group>
</channel-groups>
<config-description-ref uri="thing-type:ambientweather:station"/>
</thing-type>
<!-- Channel group type specific to WS-2902B -->
<channel-group-type id="weatherDataWs2902b">
<label>Weather Data</label>
<description>Weather Data</description>
<channels>
<channel id="observationTime" typeId="observationTime"/>
<channel id="batteryIndicator" typeId="batteryIndicator"/>
<channel id="temperature" typeId="temperature"/>
<channel id="dewPoint" typeId="dewPoint"/>
<channel id="feelingTemperature" typeId="feelingTemperature"/>
<channel id="relativeHumidity" typeId="relativeHumidity"/>
<channel id="pressureAbsolute" typeId="pressure"/>
<channel id="pressureRelative" typeId="pressure"/>
<channel id="pressureTrend" typeId="pressureTrend"/>
<channel id="windDirectionDegrees" typeId="windDirectionDegrees"/>
<channel id="windDirection" typeId="windDirection"/>
<channel id="windSpeed" typeId="windSpeed"/>
<channel id="windGust" typeId="windGust"/>
<channel id="windGustMaxDaily" typeId="windGustMaxDaily"/>
<channel id="rainHourlyRate" typeId="rainHourlyRate"/>
<channel id="rainDay" typeId="rainDay"/>
<channel id="rainWeek" typeId="rainWeek"/>
<channel id="rainMonth" typeId="rainMonth"/>
<channel id="rainYear" typeId="rainYear"/>
<channel id="rainTotal" typeId="rainTotal"/>
<channel id="rainEvent" typeId="rainEvent"/>
<channel id="rainLastTime" typeId="rainLastTime"/>
<channel id="solarRadiation" typeId="solarRadiation"/>
<channel id="uvIndex" typeId="uvIndex"/>
<channel id="uvDanger" typeId="uvDanger"/>
</channels>
</channel-group-type>
</thing:thing-descriptions>

View File

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="http"
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="url"
extensible="color,contact,datetime,dimmer,image,location,number,rollershutter,string,switch">
<label>HTTP URL Thing</label>
<description>Represents a base URL and all associated requests.</description>
<config-description>
<parameter name="baseURL" type="text" required="true">
<label>Base URL</label>
<description>The URL set here can be extended in the channel configuration.</description>
<context>url</context>
</parameter>
<parameter name="refresh" type="integer" unit="s" min="1">
<label>Refresh Time</label>
<description>Time between two refreshes of all channels</description>
<default>30</default>
</parameter>
<parameter name="timeout" type="integer" unit="ms" min="0">
<label>Timeout</label>
<description>The timeout in ms for each request</description>
<default>3000</default>
</parameter>
<parameter name="username" type="text">
<label>Username</label>
<description>Basic Authentication username</description>
<advanced>true</advanced>
</parameter>
<parameter name="password" type="text">
<label>Password</label>
<description>Basic Authentication password</description>
<context>password</context>
<advanced>true</advanced>
</parameter>
<parameter name="authMode" type="text">
<label>Authentication Mode</label>
<options>
<option value="BASIC">Basic Authentication</option>
<option value="DIGEST">Digest Authentication</option>
</options>
<default>BASIC</default>
<limitToOptions>true</limitToOptions>
<advanced>true</advanced>
</parameter>
<parameter name="commandMethod" type="text">
<label>Command Method</label>
<description>HTTP method (GET,POST, PUT) for sending commands.</description>
<options>
<option value="GET">GET</option>
<option value="POST">POST</option>
<option value="PUT">PUT</option>
</options>
<limitToOptions>true</limitToOptions>
<default>GET</default>
<advanced>true</advanced>
</parameter>
<parameter name="contentType" type="text">
<label>Content Type</label>
<description>The MIME content type. Only used for `POST` and `PUT`.</description>
<options>
<option value="application/json">application/json</option>
<option value="application/xml">application/xml</option>
<option value="text/html">text/html</option>
<option value="text/plain">text/plain</option>
<option value="text/xml">text/xml</option>
</options>
<advanced>true</advanced>
</parameter>
<parameter name="encoding" type="text">
<label>Fallback Encoding</label>
<description>Fallback Encoding text received by this thing's channels.</description>
<advanced>true</advanced>
</parameter>
<parameter name="headers" type="text" multiple="true">
<label>Headers</label>
<description>Additional headers send along with the request</description>
<advanced>true</advanced>
</parameter>
<parameter name="ignoreSSLErrors" type="boolean">
<label>Ignore SSL Errors</label>
<description>If set to true ignores invalid SSL certificate errors. This is potentially dangerous.</description>
<default>false</default>
<advanced>true</advanced>
</parameter>
</config-description>
</thing-type>
<channel-type id="color">
<item-type>Color</item-type>
<label>Color Channel</label>
<config-description-ref uri="channel-type:http:channel-config-color"/>
</channel-type>
<channel-type id="contact">
<item-type>Contact</item-type>
<label>Contact Channel</label>
<config-description-ref uri="channel-type:http:channel-config-contact"/>
</channel-type>
<channel-type id="datetime">
<item-type>DateTime</item-type>
<label>DateTime Channel</label>
<config-description-ref uri="channel-type:http:channel-config"/>
</channel-type>
<channel-type id="dimmer">
<item-type>Dimmer</item-type>
<label>Dimmer Channel</label>
<config-description-ref uri="channel-type:http:channel-config-dimmer"/>
</channel-type>
<channel-type id="image">
<item-type>Image</item-type>
<label>Image Channel</label>
<config-description-ref uri="channel-type:http:channel-config-image"/>
</channel-type>
<channel-type id="location">
<item-type>Location</item-type>
<label>Location Channel</label>
<config-description-ref uri="channel-type:http:channel-config"/>
</channel-type>
<channel-type id="number">
<item-type>Number</item-type>
<label>Number Channel</label>
<config-description-ref uri="channel-type:http:channel-config"/>
</channel-type>
<channel-type id="player">
<item-type>Player</item-type>
<label>Player Channel</label>
<config-description-ref uri="channel-type:http:channel-config-player"/>
</channel-type>
<channel-type id="rollershutter">
<item-type>Rollershutter</item-type>
<label>Rollershutter Channel</label>
<config-description-ref uri="channel-type:http:channel-config-rollershutter"/>
</channel-type>
<channel-type id="string">
<item-type>String</item-type>
<label>String Channel</label>
<config-description-ref uri="channel-type:http:channel-config"/>
</channel-type>
<channel-type id="switch">
<item-type>Switch</item-type>
<label>Switch Channel</label>
<config-description-ref uri="channel-type:http:channel-config-switch"/>
</channel-type>
</thing:thing-descriptions>

View File

@ -138,56 +138,67 @@
<channel-type id="bottomOutlet">
<item-type>Switch</item-type>
<label>Bottom Outlet</label>
<config-description-ref uri="channel-type:insteon:switch"/>
</channel-type>
<channel-type id="buttonA">
<item-type>Switch</item-type>
<label>Button A</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="buttonB">
<item-type>Switch</item-type>
<label>Button B</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="buttonC">
<item-type>Switch</item-type>
<label>Button C</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="buttonD">
<item-type>Switch</item-type>
<label>Button D</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="buttonE">
<item-type>Switch</item-type>
<label>Button E</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="buttonF">
<item-type>Switch</item-type>
<label>Button F</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="buttonG">
<item-type>Switch</item-type>
<label>Button G</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="buttonH">
<item-type>Switch</item-type>
<label>Button H</label>
<config-description-ref uri="channel-type:insteon:button"/>
</channel-type>
<channel-type id="broadcastOnOff">
<item-type>Switch</item-type>
<label>Broadcast On/Off</label>
<config-description-ref uri="channel-type:insteon:switch"/>
</channel-type>
<channel-type id="contact">
<item-type>Contact</item-type>
<label>Contact</label>
<config-description-ref uri="channel-type:insteon:contact"/>
</channel-type>
<channel-type id="coolSetPoint">
@ -198,6 +209,7 @@
<channel-type id="dimmer">
<item-type>Dimmer</item-type>
<label>Dimmer</label>
<config-description-ref uri="channel-type:insteon:dimmer"/>
</channel-type>
<channel-type id="fan">
@ -218,41 +230,49 @@
<channel-type id="fastOnOffButtonA">
<item-type>Switch</item-type>
<label>Fast On/Off Button A</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="fastOnOffButtonB">
<item-type>Switch</item-type>
<label>Fast On/Off Button B</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="fastOnOffButtonC">
<item-type>Switch</item-type>
<label>Fast On/Off Button C</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="fastOnOffButtonD">
<item-type>Switch</item-type>
<label>Fast On/Off Button D</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="fastOnOffButtonE">
<item-type>Switch</item-type>
<label>Fast On/Off Button E</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="fastOnOffButtonF">
<item-type>Switch</item-type>
<label>Fast On/Off Button F</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="fastOnOffButtonG">
<item-type>Switch</item-type>
<label>Fast On/Off Button G</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="fastOnOffButtonH">
<item-type>Switch</item-type>
<label>Fast On/Off Button H</label>
<config-description-ref uri="channel-type:insteon:keypad-button-fastonoff"/>
</channel-type>
<channel-type id="heatSetPoint">
@ -288,41 +308,49 @@
<channel-type id="keypadButtonA">
<item-type>Switch</item-type>
<label>Keypad Button A</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="keypadButtonB">
<item-type>Switch</item-type>
<label>Keypad Button B</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="keypadButtonC">
<item-type>Switch</item-type>
<label>Keypad Button C</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="keypadButtonD">
<item-type>Switch</item-type>
<label>Keypad Button D</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="keypadButtonE">
<item-type>Switch</item-type>
<label>Keypad Button E</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="keypadButtonF">
<item-type>Switch</item-type>
<label>Keypad Button F</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="keypadButtonG">
<item-type>Switch</item-type>
<label>Keypad Button G</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="keypadButtonH">
<item-type>Switch</item-type>
<label>Keypad Button H</label>
<config-description-ref uri="channel-type:insteon:keypad-button"/>
</channel-type>
<channel-type id="kWh">
@ -348,6 +376,7 @@
<channel-type id="lightDimmer">
<item-type>Dimmer</item-type>
<label>Light Dimmer</label>
<config-description-ref uri="channel-type:insteon:dimmer"/>
</channel-type>
<channel-type id="lightLevel">
@ -363,16 +392,19 @@
<channel-type id="loadDimmer">
<item-type>Dimmer</item-type>
<label>Load Dimmer</label>
<config-description-ref uri="channel-type:insteon:dimmer"/>
</channel-type>
<channel-type id="loadSwitch">
<item-type>Switch</item-type>
<label>Load Switch</label>
<config-description-ref uri="channel-type:insteon:switch"/>
</channel-type>
<channel-type id="loadSwitchFastOnOff">
<item-type>Switch</item-type>
<label>Load Switch Fast On/Off</label>
<config-description-ref uri="channel-type:insteon:switch"/>
</channel-type>
<channel-type id="loadSwitchManualChange">
@ -393,41 +425,49 @@
<channel-type id="manualChangeButtonA">
<item-type>Number</item-type>
<label>Manual Change Button A</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="manualChangeButtonB">
<item-type>Number</item-type>
<label>Manual Change Button B</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="manualChangeButtonC">
<item-type>Number</item-type>
<label>Manual Change Button C</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="manualChangeButtonD">
<item-type>Number</item-type>
<label>Manual Change Button D</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="manualChangeButtonE">
<item-type>Number</item-type>
<label>Manual Change Button E</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="manualChangeButtonF">
<item-type>Number</item-type>
<label>Manual Change Button F</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="manualChangeButtonG">
<item-type>Number</item-type>
<label>Manual Change Button G</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="manualChangeButtonH">
<item-type>Number</item-type>
<label>Manual Change Button H</label>
<config-description-ref uri="channel-type:insteon:keypad-button-manualchange"/>
</channel-type>
<channel-type id="notification">
@ -463,6 +503,7 @@
<channel-type id="switch">
<item-type>Switch</item-type>
<label>Switch</label>
<config-description-ref uri="channel-type:insteon:switch"/>
</channel-type>
<channel-type id="systemMode">
@ -488,6 +529,7 @@
<channel-type id="topOutlet">
<item-type>Switch</item-type>
<label>Top Outlet</label>
<config-description-ref uri="channel-type:insteon:switch"/>
</channel-type>
<channel-type id="update">

View File

@ -43,8 +43,13 @@
<channel id="yesterday" typeId="consumption">
<label>Yesterday Consumption</label>
</channel>
<channel id="power" typeId="power"/>
<channel id="timestamp" typeId="timestamp"/>
<channel id="power" typeId="power">
<label>Maximum power usage yesterday</label>
</channel>
<channel id="timestamp" typeId="timestamp">
<label>Peak Timestamp</label>
<description>Maximum power usage timestamp</description>
</channel>
</channels>
</channel-group-type>
@ -55,7 +60,7 @@
<label>This Week Consumption</label>
</channel>
<channel id="lastWeek" typeId="consumption">
<label>Maximum power usage yesterday</label>
<label>Last Week Consumption</label>
</channel>
</channels>
</channel-group-type>
@ -88,21 +93,21 @@
<item-type>Number:Energy</item-type>
<label>Total Consumption</label>
<description>Consumption at given time interval</description>
<state readOnly="true" pattern="%.3f %unit%"></state>
<category>energy</category>
<state readOnly="true" pattern="%.3f %unit%"/>
</channel-type>
<channel-type id="power">
<item-type>Number:Power</item-type>
<label>Peak Power</label>
<description>Maximum power usage yesterday</description>
<state readOnly="true" pattern="%.3f %unit%"></state>
<state readOnly="true" pattern="%.3f %unit%"/>
</channel-type>
<channel-type id="timestamp">
<item-type>DateTime</item-type>
<label>Peak Timestamp</label>
<description>Maximum power usage timestamp</description>
<state readOnly="true">
</state>
<label>Timestamp</label>
<category>time</category>
<state readOnly="true"/>
</channel-type>
</thing:thing-descriptions>

View File

@ -185,14 +185,14 @@
</thing-type>
<channel-type id="alert-level">
<item-type>String</item-type>
<item-type>Number</item-type>
<label>Alerte</label>
<state readOnly="true">
<options>
<option value="GREEN">Vert</option>
<option value="YELLOW">Jaune</option>
<option value="ORANGE">Orange</option>
<option value="RED">Rouge</option>
<option value="0">Vert</option>
<option value="1">Jaune</option>
<option value="2">Orange</option>
<option value="3">Rouge</option>
</options>
</state>
</channel-type>

View File

@ -154,6 +154,11 @@
<label>Temperature</label>
<state pattern="%.1f" readOnly="true"/>
</channel-type>
<channel-type id="temperatureC">
<item-type>Number:Temperature</item-type>
<label>Temperature</label>
<state readOnly="true" pattern="%.1f %unit%"/>
</channel-type>
<channel-type id="humidity">
<item-type>Number</item-type>
<label>Humidity</label>

View File

@ -35,6 +35,7 @@
<channels>
<channel id="UVIndex" typeId="UVIndex"/>
<channel id="Alert" typeId="Alert"/>
<channel id="UVColor" typeId="UVColor"/>
<channel id="UVMax" typeId="UVMax"/>
<channel id="UVMaxTime" typeId="UVMaxTime"/>
@ -66,14 +67,14 @@
<item-type>Number</item-type>
<label>UV Index</label>
<description>UV Index</description>
<state readOnly="true" pattern="%.2f/16" min="0" max="16"/>
<state readOnly="true" pattern="%d/16" min="0" max="16"/>
</channel-type>
<channel-type id="UVMax" advanced="true">
<item-type>Number</item-type>
<label>UV Max</label>
<description>Max UV Index for the day (at solar noon)</description>
<state readOnly="true" pattern="%.2f/16" min="0" max="16"/>
<state readOnly="true" pattern="%d/16" min="0" max="16"/>
</channel-type>
<channel-type id="Ozone">
@ -86,7 +87,8 @@
<channel-type id="OzoneTime" advanced="true">
<item-type>DateTime</item-type>
<label>Ozone Observation Time</label>
<description>Latest OMI ozone update time</description>
<description>Latest OMI ozone update timestamp.</description>
<category>time</category>
<state readOnly="true" pattern="%1$tF %1$tR"/>
</channel-type>
@ -94,20 +96,22 @@
<item-type>DateTime</item-type>
<label>UV Max Time</label>
<description>Max UV Index time (solar noon)</description>
<category>time</category>
<state readOnly="true" pattern="%1$tF %1$tR"/>
</channel-type>
<channel-type id="UVTime" advanced="true">
<item-type>DateTime</item-type>
<label>UV Time</label>
<description>UV Index time</description>
<description>UV Index timestamp.</description>
<category>time</category>
<state readOnly="true" pattern="%1$tF %1$tR"/>
</channel-type>
<channel-type id="UVColor" advanced="true">
<item-type>Color</item-type>
<label>UV Color</label>
<description>Color associated to given UV Index.</description>
<label>UV Alert Color</label>
<description>Color associated to given UV Index alert level.</description>
<state readOnly="true"/>
</channel-type>
@ -147,4 +151,18 @@
<description>Triggers when current UV Index reaches maximum of the day</description>
</channel-type>
<channel-type id="Alert">
<item-type>Number</item-type>
<label>UV Alert</label>
<state readOnly="true">
<options>
<option value="0">Low</option>
<option value="1">Medium</option>
<option value="2">High</option>
<option value="3">Very high</option>
<option value="4">Extreme</option>
</options>
</state>
</channel-type>
</thing:thing-descriptions>

View File

@ -12,10 +12,28 @@
<channels>
<channel id="height" typeId="height"/>
<channel id="relative-height" typeId="gauge">
<label>Relative Height</label>
<description>Current height toward historical floods.</description>
</channel>
<channel id="flow" typeId="flow"/>
<channel id="relative-flow" typeId="gauge">
<label>Relative Flow</label>
<description>Current flow toward historic floods.</description>
</channel>
<channel id="alert" typeId="alert-level"/>
<channel id="alert-icon" typeId="alert-icon"/>
<channel id="short-comment" typeId="comment">
<label>Info Qualification</label>
</channel>
<channel id="comment" typeId="comment">
<label>Situation</label>
</channel>
<channel id="observation-time" typeId="observation-time"/>
</channels>
<representation-property>id</representation-property>
<config-description>
<parameter name="id" type="text" required="true">
<label>Identifiant</label>
@ -32,6 +50,7 @@
<channel-type id="flow">
<item-type>Number:VolumetricFlowRate</item-type>
<label>Current Flow</label>
<category>flow</category>
<state readOnly="true" pattern="%.2f %unit%"/>
</channel-type>
@ -39,6 +58,7 @@
<item-type>DateTime</item-type>
<label>Observation Time</label>
<description>Observation date and time</description>
<category>time</category>
<state readOnly="true"/>
</channel-type>
@ -48,4 +68,36 @@
<description>Water level in the river</description>
<state readOnly="true" pattern="%.2f %unit%"/>
</channel-type>
<channel-type id="gauge">
<item-type>Number:Dimensionless</item-type>
<label>Relative Measure</label>
<state readOnly="true" pattern="%.2f %unit%"/>
</channel-type>
<channel-type id="alert-level">
<item-type>Number</item-type>
<label>Alerte</label>
<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>
<state readOnly="true" pattern="%s"/>
</channel-type>
<channel-type id="alert-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>