Updated external content (Jenkins build 2197)
parent
42aaa23319
commit
2a219369e9
File diff suppressed because one or more lines are too long
|
@ -634,7 +634,6 @@ For example, a way to determine if today is a weekend, a public holiday, someone
|
|||
Additional information can be found on the [Ephemeris Actions Docs](https://www.openhab.org/docs/configuration/actions.html#ephemeris) as well as the [Ephemeris JavaDoc](https://www.openhab.org/javadoc/latest/org/openhab/core/model/script/actions/ephemeris).
|
||||
|
||||
```javascript
|
||||
// Example
|
||||
var weekend = actions.Ephemeris.isWeekend();
|
||||
```
|
||||
|
||||
|
@ -725,16 +724,6 @@ myTimer.reschedule(now.plusSeconds(5));
|
|||
|
||||
See [openhab-js : actions.ScriptExecution](https://openhab.github.io/openhab-js/actions.ScriptExecution.html) for complete documentation.
|
||||
|
||||
#### Semantics Actions
|
||||
|
||||
See [openhab-js : actions.Semantics](https://openhab.github.io/openhab-js/actions.html#.Semantics) for complete documentation.
|
||||
|
||||
#### Thing Actions
|
||||
|
||||
It is possible to get the actions for a Thing using `actions.Things.getActions(bindingId, thingUid)`, e.g. `actions.Things.getActions('network', 'network:pingdevice:pc')`.
|
||||
|
||||
See [openhab-js : actions.Things](https://openhab.github.io/openhab-js/actions.html#.Things) for complete documentation.
|
||||
|
||||
#### Transformation Actions
|
||||
|
||||
openHAB provides various [data transformation services](https://www.openhab.org/addons/#transform) which can translate between technical and human-readable values.
|
||||
|
@ -753,20 +742,57 @@ See [openhab-js : actions.Voice](https://openhab.github.io/openhab-js/actions.ht
|
|||
|
||||
#### Cloud Notification Actions
|
||||
|
||||
Note: Optional action if [openHAB Cloud Connector](https://www.openhab.org/addons/integrations/openhabcloud/) is installed.
|
||||
Requires the [openHAB Cloud Connector](https://www.openhab.org/addons/integrations/openhabcloud/) to be installed.
|
||||
|
||||
Notification actions may be placed in rules to send alerts to mobile devices registered with an [openHAB Cloud instance](https://github.com/openhab/openhab-cloud) such as [myopenHAB.org](https://myopenhab.org/).
|
||||
|
||||
For available actions have a look at the [Cloud Notification Actions Docs](https://www.openhab.org/docs/configuration/actions.html#cloud-notification-actions).
|
||||
There are three different types of notifications:
|
||||
|
||||
- Broadcast Notifications: Sent to all registered devices and shown as notification on these devices.
|
||||
- Standard Notifications: Sent to the registered devices of the specified user and shown as notification on his devices.
|
||||
- Log Notifications: Only shown in the notification log, e.g. inside the Android and iOS Apps.
|
||||
|
||||
To send these three types of notifications, use the `notificationBuilder(message)` method of the `actions` namespace.
|
||||
It returns a new `NotificationBuilder` object, which by default sends a broadcast notification and provides the following methods:
|
||||
|
||||
- `.logOnly()`: Send a log notification only.
|
||||
- `.withIcon(icon)`: Sets the icon of the notification.
|
||||
- `.withSeverity(link)`: Sets the severity of the notification.
|
||||
- `.withTitle(title)`: Sets the title of the notification.
|
||||
- `.addUserId(emailAddress)`: By adding the email address(es) of specific openHAB Cloud user(s), the notification is only sent to this (these) user(s).
|
||||
- `.withOnClickAction(action)`: Sets the action to be performed when the notification is clicked.
|
||||
- `.withMediaAttachmentUrl(mediaAttachmentUrl)`: Sets the URL of a media attachment to be displayed with the notification. This URL must be reachable by the push notification client.
|
||||
- `.addActionButton(title, action)`: Adds an action button to the notification. Please note that due to Android and iOS limitations, only three action buttons are supported.
|
||||
- `.send()`: Sends the notification.
|
||||
|
||||
The syntax for the `action` parameter is described in [openHAB Cloud Connector: Action Syntax](https://www.openhab.org/addons/integrations/openhabcloud/#action-syntax).
|
||||
|
||||
```javascript
|
||||
// Example
|
||||
actions.NotificationAction.sendNotification('<email>', '<message>'); // to a single myopenHAB user identified by e-mail
|
||||
actions.NotificationAction.sendBroadcastNotification('<message>'); // to all myopenHAB users
|
||||
// Send a simple broadcast notification
|
||||
actions.notificationBuilder('Hello World!').send();
|
||||
// Send a broadcast notification with icon, severity and title
|
||||
actions.notificationBuilder('Hello World!')
|
||||
.withIcon('f7:bell_fill').withSeverity('important').withTitle('Important Notification').send();
|
||||
// Send a broadcast notification with icon, severity, title, media attachment URL and actions
|
||||
actions.notificationBuilder('Hello World!')
|
||||
.withIcon('f7:bell_fill').withSeverity('important').withTitle('Important Notification').
|
||||
.withOnClickAction('ui:navigate:/page/my_floorplan_page').withMediaAttachmentUrl('http://example.com/image.jpg')
|
||||
.addActionButton('Turn Kitchen Light ON=command:KitchenLights:ON').addActionButton('Turn Kitchen Light OFF=command:KitchenLights:OFF').send();
|
||||
|
||||
// Send a simple standard notification to two specific users
|
||||
actions.notificationBuilder('Hello World!').addUserId('florian@example.com').addUserId('florian@example.org').send();
|
||||
// Send a standard notification with icon, severity and title to two specific users
|
||||
actions.notificationBuilder('Hello World!').addUserId('florian@example.com').addUserId('florian@example.org')
|
||||
.withIcon('f7:bell_fill').withSeverity('important').withTitle('Important notification').send();
|
||||
|
||||
// Sends a simple log notification
|
||||
actions.notificationBuilder('Hello World!').logOnly().send();
|
||||
// Sends a simple log notification with icon and severity
|
||||
actions.notificationBuilder('Hello World!').logOnly()
|
||||
.withIcon('f7:bell_fill').withSeverity('important').send();
|
||||
```
|
||||
|
||||
Replace `<email>` with the e-mail address of the user.
|
||||
Replace `<message>` with the notification text.
|
||||
See [openhab-js : actions.NotificationBuilder](https://openhab.github.io/openhab-js/actions.html#.notificationBuilder) for complete documentation.
|
||||
|
||||
### Cache
|
||||
|
||||
|
@ -1197,7 +1223,7 @@ Operations and conditions can also optionally take functions:
|
|||
|
||||
```javascript
|
||||
rules.when().item("F1_light").changed().then(event => {
|
||||
console.log(event);
|
||||
console.log(event);
|
||||
}).build("Test Rule", "My Test Rule");
|
||||
```
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ There is one bridge (`deconz`) that manages the connection to the deCONZ softwar
|
|||
These sensors are supported:
|
||||
|
||||
| Device type | Resource Type | Thing type |
|
||||
|-----------------------------------|-----------------------------------|------------------------|
|
||||
| --------------------------------- | --------------------------------- | ---------------------- |
|
||||
| Presence Sensor | ZHAPresence, CLIPPresence | `presencesensor` |
|
||||
| Power Sensor | ZHAPower, CLIPPower | `powersensor` |
|
||||
| Consumption Sensor | ZHAConsumption | `consumptionsensor` |
|
||||
|
@ -48,7 +48,7 @@ These sensors are supported:
|
|||
Additionally, lights, window coverings (blinds), door locks and thermostats are supported:
|
||||
|
||||
| Device type | Resource Type | Thing type |
|
||||
|--------------------------------------|-----------------------------------------------|-------------------------|
|
||||
| ------------------------------------ | --------------------------------------------- | ----------------------- |
|
||||
| Dimmable Light | Dimmable light, Dimmable plug-in unit | `dimmablelight` |
|
||||
| On/Off Light | On/Off light, On/Off plug-in unit, Smart plug | `onofflight` |
|
||||
| Color Temperature Light | Color temperature light | `colortemperaturelight` |
|
||||
|
@ -76,7 +76,7 @@ If your device is not discovered, please check the DEBUG log for unknown devices
|
|||
These configuration parameters are available:
|
||||
|
||||
| Parameter | Description | Type | Default |
|
||||
|------------------|-------------------------------------------------------------------------------------------------------------------------|---------|---------|
|
||||
| ---------------- | ----------------------------------------------------------------------------------------------------------------------- | ------- | ------- |
|
||||
| host | Host address (hostname / ip) of deCONZ interface | string | n/a |
|
||||
| httpPort | Port of deCONZ HTTP interface | string | 80 |
|
||||
| port | Port of deCONZ Websocket (optional, can be filled automatically) **(Advanced)** | string | n/a |
|
||||
|
@ -140,7 +140,7 @@ Bridge deconz:deconz:homeserver [ host="192.168.0.10", apikey="ABCDEFGHIJ" ]
|
|||
The sensor devices support some of the following channels:
|
||||
|
||||
| Channel Type ID | Item Type | Access Mode | Description | Thing types |
|
||||
|-----------------------|--------------------------|-------------|-------------------------------------------------------------------------------------------|---------------------------------------------------|
|
||||
| --------------------- | ------------------------ | ----------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
||||
| airquality | String | R | Airquality as string | airqualitysensor |
|
||||
| airqualityppb | Number:Dimensionless | R | Airquality (in parts-per-billion) | airqualitysensor |
|
||||
| alarm | Switch | R | Status of an alarm: `ON` = alarm was triggered; `OFF` = no alarm | alarmsensor |
|
||||
|
@ -190,14 +190,14 @@ The `last_seen` channel is added when it is available AND the `lastSeenPolling`
|
|||
Other devices support
|
||||
|
||||
| Channel Type ID | Item Type | Access Mode | Description | Thing types |
|
||||
|-------------------|----------------------|:-----------:|---------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
|
||||
| brightness | Dimmer | R/W | Brightness of the light | `dimmablelight`, `colortemperaturelight` |
|
||||
| ----------------- | -------------------- | :---------: | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
||||
| brightness | Dimmer | R/W | Brightness of the light | `dimmablelight`, `colortemperaturelight` |
|
||||
| switch | Switch | R/W | State of a ON/OFF device | `onofflight` |
|
||||
| color | Color | R/W | Color of an multi-color light | `colorlight`, `extendedcolorlight`, `lightgroup` |
|
||||
| color_temperature | Number | R/W | Color temperature in Kelvin. The value range is determined by each individual light | `colortemperaturelight`, `extendedcolorlight`, `lightgroup` |
|
||||
| effect | String | R/W | Effect selection. Allowed commands are set dynamically | `colorlight` |
|
||||
| effectSpeed | Number | W | Effect Speed | `colorlight` |
|
||||
| lock | Switch | R/W | Lock (ON) or unlock (OFF) the doorlock | `doorlock` |
|
||||
| lock | Switch | R/W | Lock (ON) or unlock (OFF) the doorlock | `doorlock` |
|
||||
| ontime | Number:Time | W | Timespan for which the light is turned on | all lights |
|
||||
| position | Rollershutter | R/W | Position of the blind | `windowcovering` |
|
||||
| heatsetpoint | Number:Temperature | R/W | Target Temperature in °C | `thermostat` |
|
||||
|
@ -207,7 +207,7 @@ Other devices support
|
|||
| alert | String | W | Turn alerts on. Allowed commands are `none`, `select` (short blinking), `lselect` (long blinking) | `warningdevice`, `lightgroup`, `dimmablelight`, `colorlight`, `extendedcolorlight`, `colortemperaturelight` |
|
||||
| all_on | Switch | R | All lights in group are on | `lightgroup` |
|
||||
| any_on | Switch | R | Any light in group is on | `lightgroup` |
|
||||
| scene | String | W | Recall a scene. Allowed commands are set dynamically | `lightgroup` |
|
||||
| scene | String | W | Recall a scene. Allowed commands are set dynamically | `lightgroup` |
|
||||
|
||||
**NOTE:** For groups `color` and `color_temperature` are used for sending commands to the group.
|
||||
Their state represents the last command send to the group, not necessarily the actual state of the group.
|
||||
|
@ -217,7 +217,7 @@ Their state represents the last command send to the group, not necessarily the a
|
|||
The dimmer switch additionally supports trigger channels.
|
||||
|
||||
| Channel Type ID | Description | Thing types |
|
||||
|-----------------|--------------------------|----------------------|
|
||||
| --------------- | ------------------------ | -------------------- |
|
||||
| buttonevent | Event for switch pressed | switch, colorcontrol |
|
||||
| gestureevent | Event for gestures | switch |
|
||||
|
||||
|
@ -226,7 +226,7 @@ Both will be added during runtime if supported by the switch.
|
|||
`gestureevent` can trigger one of the following events:
|
||||
|
||||
| Gesture | Event |
|
||||
|----------------------------------|-------|
|
||||
| -------------------------------- | ----- |
|
||||
| GESTURE_NONE | 0 |
|
||||
| GESTURE_SHAKE | 1 |
|
||||
| GESTURE_DROP | 2 |
|
||||
|
@ -244,13 +244,13 @@ Thing actions can be used to manage the network and its content.
|
|||
The `deconz` thing supports a thing action to allow new devices to join the network:
|
||||
|
||||
| Action name | Input Value | Return Value | Description |
|
||||
|------------------------|----------------------|--------------|----------------------------------------------------------------------------------------------------------------|
|
||||
| ---------------------- | -------------------- | ------------ | -------------------------------------------------------------------------------------------------------------- |
|
||||
| `permitJoin(duration)` | `duration` (Integer) | - | allows new devices to join for `duration` seconds. Allowed values are 1-240, default is 120 if no value given. |
|
||||
|
||||
The `lightgroup` thing supports thing actions for managing scenes:
|
||||
|
||||
| Action name | Input Value | Return Value | Description |
|
||||
|---------------------|-----------------|--------------|-------------------------------------------------------------------------------------------|
|
||||
| ------------------- | --------------- | ------------ | ----------------------------------------------------------------------------------------- |
|
||||
| `createScene(name)` | `name` (String) | `newSceneId` | Creates a new scene with the name `name` and returns the new scene's id (if successfull). |
|
||||
| `deleteScene(id)` | `id` (Integer) | - | Deletes the scene with the given id. |
|
||||
| `storeScene(id)` | `id` (Integer) | - | Store the current group's state as scene with the given id. |
|
||||
|
@ -320,20 +320,10 @@ then
|
|||
end
|
||||
```
|
||||
|
||||
# Thing Actions Example
|
||||
## Thing Actions Example
|
||||
|
||||
:::: tabs
|
||||
|
||||
::: tab JavaScript
|
||||
|
||||
```javascript
|
||||
deconzActions = actions.get("deconz", "deconz:lightgroup:00212E040ED9:5");
|
||||
retVal = deconzActions.createScene("TestScene");
|
||||
deconzActions.storeScene(retVal["newSceneId"]);
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab DSL
|
||||
|
||||
```java
|
||||
|
@ -344,6 +334,26 @@ end
|
|||
|
||||
:::
|
||||
|
||||
::: tab JavaScript
|
||||
|
||||
```javascript
|
||||
deconzActions = actions.get("deconz", "deconz:lightgroup:00212E040ED9:5");
|
||||
retVal = deconzActions.createScene("TestScene");
|
||||
deconzActions.storeScene(retVal["newSceneId"]);
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
deconz_thing = things["deconz:lightgroup:00212E040ED9:5"]
|
||||
retval = deconz_thing.create_scene("TestScene")
|
||||
deconz_thing.store_scene(retval["newSceneId"])
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
### Troubleshooting
|
||||
|
|
|
@ -205,19 +205,19 @@ The next `ON` command uses these values instead of the default (or configuration
|
|||
|
||||
## Channels
|
||||
|
||||
| Type-ID | Thing | Item | Description |
|
||||
|-----------------|---------------------|----------------------|----------------------------------------------------|
|
||||
|brightness |dimmer, tunablewhite |Switch, Dimmer | controls the brightness |
|
||||
|color |color |Switch, Dimmer, Color | allows to set the color and brightness |
|
||||
|color_temperature|tunablewhite |Number | allows to set the color temperature |
|
||||
|brightness_r |color |Switch, Dimmer | controls the brightness of the red channel |
|
||||
|brightness_g |color |Switch, Dimmer | controls the brightness of the green channel |
|
||||
|brightness_b |color |Switch, Dimmer | controls the brightness of the blue channel |
|
||||
|brightness_cw |tunablewhite |Switch, Dimmer | controls the brightness of the cool white channel |
|
||||
|brightness_ww |tunablewhite |Switch, Dimmer | controls the brightness of the warm white channel |
|
||||
|control |chaser |String | allows to change the chaser steps |
|
||||
|switch |chaser |Switch | turns the chaser ON or OFF |
|
||||
|mute |(all bridges) |Switch | mutes the DMX output of the bridge |
|
||||
| Type-ID | Thing | Item | Description |
|
||||
| ----------------- | -------------------- | --------------------- | ------------------------------------------------- |
|
||||
| brightness | dimmer, tunablewhite | Switch, Dimmer | controls the brightness |
|
||||
| color | color | Switch, Dimmer, Color | allows to set the color and brightness |
|
||||
| color_temperature | tunablewhite | Number | allows to set the color temperature |
|
||||
| brightness_r | color | Switch, Dimmer | controls the brightness of the red channel |
|
||||
| brightness_g | color | Switch, Dimmer | controls the brightness of the green channel |
|
||||
| brightness_b | color | Switch, Dimmer | controls the brightness of the blue channel |
|
||||
| brightness_cw | tunablewhite | Switch, Dimmer | controls the brightness of the cool white channel |
|
||||
| brightness_ww | tunablewhite | Switch, Dimmer | controls the brightness of the warm white channel |
|
||||
| control | chaser | String | allows to change the chaser steps |
|
||||
| switch | chaser | Switch | turns the chaser ON or OFF |
|
||||
| mute | (all bridges) | Switch | mutes the DMX output of the bridge |
|
||||
|
||||
_Note:_ the string send to the control channel of chaser things has to be formatted like the `steps` configuration of the chaser thing.
|
||||
If the new string is invalid, the old configuration will be used.
|
||||
|
@ -231,19 +231,19 @@ There is a separate instance for each bridge, which can be retrieved e.g. throug
|
|||
|
||||
::: tab DSL
|
||||
|
||||
```php
|
||||
```java
|
||||
val dmxActions = getActions("dmx","dmx:sacn-bridge:mydmxbridge")
|
||||
```
|
||||
|
||||
where the first parameter always has to be `dmx` and the second is the full Thing UID of the bridge that should be used.
|
||||
Once this action instance is retrieved, you can invoke the `sendFade(String channels, String fade, Boolean resumeAfter)` method on it:
|
||||
|
||||
```php
|
||||
```java
|
||||
dmxActions.sendFade("1:41/3","10000:255,255,255:-1", false)
|
||||
```
|
||||
|
||||
The parameters are the same as in a chaser thing configuration.
|
||||
Defining more than one step in `fadeString` is supported, too.
|
||||
Defining more than one step in `fadeString` is supported.
|
||||
|
||||
:::
|
||||
|
||||
|
@ -252,11 +252,22 @@ Defining more than one step in `fadeString` is supported, too.
|
|||
The first parameter always has to be `dmx` and the second is the full Thing UID of the bridge that should be used.
|
||||
|
||||
```javascript
|
||||
actions.get("dmx","dmx:sacn-bridge:mydmxbridge").sendFade("1:41/3","10000:255,255,255:-1", false);
|
||||
actions.get("dmx","dmx:sacn-bridge:mydmxbridge").sendFade("1:41/3", "10000:255,255,255:-1", false);
|
||||
```
|
||||
|
||||
The sendFade parameters are the same as in a chaser thing configuration.
|
||||
Defining more than one step in `fadeString` is supported, too.
|
||||
Defining more than one step in `fadeString` is supported.
|
||||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
things["dmx:sacn-bridge:mydmxbridge"].send_fade("1:41/3", "10000:255,255,255:-1", false)
|
||||
```
|
||||
|
||||
The `send_fade` parameters are the same as in a chaser thing configuration.
|
||||
Defining more than one step in `fadeString` is supported.
|
||||
|
||||
:::
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ All channels are available for thing type `service`.
|
|||
### `service` Thing Configuration
|
||||
|
||||
| Name | Type | Description | Default | Required |
|
||||
|-----------------------|---------|----------------------------------------------------------------------|---------------|----------|
|
||||
| --------------------- | ------- | -------------------------------------------------------------------- | ------------- | -------- |
|
||||
| priceArea | text | Price area for spot prices (same as bidding zone) | | yes |
|
||||
| currencyCode | text | Currency code in which to obtain spot prices | DKK | no |
|
||||
| gridCompanyGLN | integer | Global Location Number of the Grid Company | | no |
|
||||
|
@ -63,11 +63,11 @@ It will not impact channels, see [Electricity Tax](#electricity-tax) for further
|
|||
### Channel Group `electricity`
|
||||
|
||||
| Channel | Type | Description |
|
||||
|--------------------------|--------------------------|----------------------------------------------------------------------------------------|
|
||||
| ------------------------ | ------------------------ | -------------------------------------------------------------------------------------- |
|
||||
| spot-price | Number:EnergyPrice | Spot price in DKK or EUR per kWh |
|
||||
| grid-tariff | Number:EnergyPrice | Grid tariff in DKK per kWh. Only available when `gridCompanyGLN` is configured |
|
||||
| system-tariff | Number:EnergyPrice | System tariff in DKK per kWh |
|
||||
| transmission-grid-tariff | Number:EnergyPrice | Transmission grid tariff in DKK per kWh |
|
||||
| transmission-grid-tariff | Number:EnergyPrice | Transmission grid tariff in DKK per kWh |
|
||||
| electricity-tax | Number:EnergyPrice | Electricity tax in DKK per kWh |
|
||||
| reduced-electricity-tax | Number:EnergyPrice | Reduced electricity tax in DKK per kWh. For electric heating customers only |
|
||||
| co2-emission-prognosis | Number:EmissionIntensity | Estimated prognosis for CO₂ emission following the day-ahead market in g/kWh |
|
||||
|
@ -119,6 +119,35 @@ rules.when()
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
rule "Calculate total price" do
|
||||
channel "energidataservice:service:energidataservice:electricity#event", triggered: "DAY_AHEAD_AVAILABLE"
|
||||
run do
|
||||
# Persistence methods will call LocalDate#to_zoned_date_time which converts it
|
||||
# to a ZonedDateTime in the default system zone, with 00:00 as its time portion
|
||||
start = LocalDate.now
|
||||
spot_prices = SpotPrice.all_states_between(start, start + 2.days)
|
||||
|
||||
next unless spot_prices # don't proceed if the persistence result is nil
|
||||
|
||||
time_series = TimeSeries.new # the default policy is replace
|
||||
spot_prices.each do |spot_price|
|
||||
total_price = spot_price.state +
|
||||
GridTariff.persisted_state(spot_price.timestamp).state +
|
||||
SystemTariff.persisted_state(spot_price.timestamp).state +
|
||||
TransmissionGridTariff.persisted_state(spot_price.timestamp).state +
|
||||
ElectricityTax.persisted_state(spot_price.timestamp).state
|
||||
time_series.add(spot_price.timestamp, total_price)
|
||||
end
|
||||
TotalPrice.persist(time_series)
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
#### Currencies
|
||||
|
@ -163,12 +192,12 @@ The tariffs are downloaded using pre-configured filters for the different [Grid
|
|||
If your company is not in the list, or the filters are not working, they can be manually overridden.
|
||||
To override filters, the channel `grid-tariff` has the following configuration parameters:
|
||||
|
||||
| Name | Type | Description | Default | Required | Advanced |
|
||||
|-----------------|---------|----------------------------------------------------------------------------------------------------------------------------------|---------|----------|----------|
|
||||
| chargeTypeCodes | text | Comma-separated list of charge type codes | | no | yes |
|
||||
| notes | text | Comma-separated list of notes | | no | yes |
|
||||
| start | text | Query start date parameter expressed as either YYYY-MM-DD or dynamically as one of `StartOfDay`, `StartOfMonth` or `StartOfYear` | | no | yes |
|
||||
| offset | text | Query start date offset expressed as an ISO 8601 duration | | no | yes |
|
||||
| Name | Type | Description | Default | Required | Advanced |
|
||||
| --------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | -------- |
|
||||
| chargeTypeCodes | text | Comma-separated list of charge type codes | | no | yes |
|
||||
| notes | text | Comma-separated list of notes | | no | yes |
|
||||
| start | text | Query start date parameter expressed as either YYYY-MM-DD or dynamically as one of `StartOfDay`, `StartOfMonth` or `StartOfYear` | | no | yes |
|
||||
| offset | text | Query start date offset expressed as an ISO 8601 duration | | no | yes |
|
||||
|
||||
The parameters `chargeTypeCodes` and `notes` are logically combined with "AND", so if only one parameter is needed for the filter, only provide this parameter and leave the other one empty.
|
||||
Using any of these parameters will override the pre-configured filter entirely.
|
||||
|
@ -186,14 +215,14 @@ See also [Datahub Price List](https://www.energidataservice.dk/tso-electricity/D
|
|||
##### Filter Examples
|
||||
|
||||
_N1:_
|
||||
| Parameter | Value |
|
||||
|-----------------|------------|
|
||||
| chargeTypeCodes | CD,CD R |
|
||||
| notes | |
|
||||
| Parameter | Value |
|
||||
| --------------- | ------- |
|
||||
| chargeTypeCodes | CD,CD R |
|
||||
| notes | |
|
||||
|
||||
_Nord Energi Net:_
|
||||
| Parameter | Value |
|
||||
|-----------------|------------|
|
||||
| --------------- | ---------- |
|
||||
| chargeTypeCodes | TAC |
|
||||
| notes | Nettarif C |
|
||||
| start | StartOfDay |
|
||||
|
@ -226,9 +255,9 @@ These channels will not be updated when the configured price area is not DK1 or
|
|||
|
||||
Advanced channel `event` can trigger the following events:
|
||||
|
||||
| Event | Description |
|
||||
|----------------------|--------------------------------|
|
||||
| DAY_AHEAD_AVAILABLE | Day-ahead prices are available |
|
||||
| Event | Description |
|
||||
| ------------------- | ------------------------------ |
|
||||
| DAY_AHEAD_AVAILABLE | Day-ahead prices are available |
|
||||
|
||||
## Thing Actions
|
||||
|
||||
|
@ -249,7 +278,7 @@ It comes in four variants with different input parameters.
|
|||
The result is a `Map` with the following keys:
|
||||
|
||||
| Key | Type | Description |
|
||||
|--------------------|--------------|-------------------------------------------------------|
|
||||
| ------------------ | ------------ | ----------------------------------------------------- |
|
||||
| CheapestStart | `Instant` | Start time of cheapest calculated period |
|
||||
| LowestPrice | `BigDecimal` | The total price when starting at cheapest start |
|
||||
| MostExpensiveStart | `Instant` | Start time of most expensive calculated period |
|
||||
|
@ -257,11 +286,11 @@ The result is a `Map` with the following keys:
|
|||
|
||||
#### `calculateCheapestPeriod` from Duration
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|--------------------|-----------------------------|--------------------------------------------------------|
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| duration | `Duration` | The duration to fit within the timeslot |
|
||||
| Parameter | Type | Description |
|
||||
| ------------- | ---------- | --------------------------------------- |
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| duration | `Duration` | The duration to fit within the timeslot |
|
||||
|
||||
This is a convenience method that can be used when the power consumption is not known.
|
||||
The calculation will assume linear consumption and will find the best timeslot based on that.
|
||||
|
@ -275,12 +304,12 @@ var Map<String, Object> result = actions.calculateCheapestPeriod(now.toInstant()
|
|||
|
||||
#### `calculateCheapestPeriod` from Duration and Power
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|--------------------|-----------------------------|--------------------------------------------------------|
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| duration | `Duration` | The duration to fit within the timeslot |
|
||||
| power | `QuantityType<Power>` | Linear power consumption |
|
||||
| Parameter | Type | Description |
|
||||
| ------------- | --------------------- | --------------------------------------- |
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| duration | `Duration` | The duration to fit within the timeslot |
|
||||
| power | `QuantityType<Power>` | Linear power consumption |
|
||||
|
||||
This action is identical to the variant above, but with a known linear power consumption.
|
||||
As a result the price is also included in the result.
|
||||
|
@ -293,12 +322,12 @@ var Map<String, Object> result = actions.calculateCheapestPeriod(now.toInstant()
|
|||
|
||||
#### `calculateCheapestPeriod` from Power Phases
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|--------------------|-----------------------------|--------------------------------------------------------|
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| durationPhases | `List<Duration>` | List of durations for the phases |
|
||||
| powerPhases | `List<QuantityType<Power>>` | List of power consumption for each corresponding phase |
|
||||
| Parameter | Type | Description |
|
||||
| -------------- | --------------------------- | ------------------------------------------------------ |
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| durationPhases | `List<Duration>` | List of durations for the phases |
|
||||
| powerPhases | `List<QuantityType<Power>>` | List of power consumption for each corresponding phase |
|
||||
|
||||
This variant is similar to the one above, but is based on a supplied timetable.
|
||||
|
||||
|
@ -338,13 +367,13 @@ This is to ensure that the full program will finish before the provided `latestE
|
|||
|
||||
#### `calculateCheapestPeriod` from Energy per Phase
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|--------------------|-----------------------------|--------------------------------------------------------|
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| totalDuration | `Duration` | The total duration of all phases |
|
||||
| durationPhases | `List<Duration>` | List of durations for the phases |
|
||||
| energyUsedPerPhase | `QuantityType<Energy>` | Fixed amount of energy used per phase |
|
||||
| Parameter | Type | Description |
|
||||
| ------------------ | ---------------------- | ------------------------------------- |
|
||||
| earliestStart | `Instant` | Earliest start time allowed |
|
||||
| latestEnd | `Instant` | Latest end time allowed |
|
||||
| totalDuration | `Duration` | The total duration of all phases |
|
||||
| durationPhases | `List<Duration>` | List of durations for the phases |
|
||||
| energyUsedPerPhase | `QuantityType<Energy>` | Fixed amount of energy used per phase |
|
||||
|
||||
This variant will assign the provided amount of energy into each phase.
|
||||
The use case for this variant is a simplification of the previous variant.
|
||||
|
@ -370,11 +399,11 @@ var Map<String, Object> result = actions.calculateCheapestPeriod(now.toInstant()
|
|||
|
||||
### `calculatePrice`
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|--------------------|-----------------------------|--------------------------------------------------------|
|
||||
| start | `Instant` | Start time |
|
||||
| end | `Instant` | End time |
|
||||
| power | `QuantityType<Power>` | Linear power consumption |
|
||||
| Parameter | Type | Description |
|
||||
| --------- | --------------------- | ------------------------ |
|
||||
| start | `Instant` | Start time |
|
||||
| end | `Instant` | End time |
|
||||
| power | `QuantityType<Power>` | Linear power consumption |
|
||||
|
||||
**Result:** Price as `BigDecimal`.
|
||||
|
||||
|
@ -389,9 +418,9 @@ var price = actions.calculatePrice(now.toInstant(), now.plusHours(4).toInstant,
|
|||
|
||||
### `getPrices`
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|--------------------|-----------------------------|--------------------------------------------------------|
|
||||
| priceComponents | `String` | Comma-separated list of price components to include |
|
||||
| Parameter | Type | Description |
|
||||
| --------------- | -------- | --------------------------------------------------- |
|
||||
| priceComponents | `String` | Comma-separated list of price components to include |
|
||||
|
||||
**Result:** `Map<Instant, BigDecimal>`
|
||||
|
||||
|
@ -399,7 +428,7 @@ The parameter `priceComponents` is a case-insensitive comma-separated list of pr
|
|||
These components can be requested:
|
||||
|
||||
| Price component | Description |
|
||||
|------------------------|--------------------------|
|
||||
| ---------------------- | ------------------------ |
|
||||
| SpotPrice | Spot price |
|
||||
| GridTariff | Grid tariff |
|
||||
| SystemTariff | System tariff |
|
||||
|
@ -463,7 +492,7 @@ In case persistence is only needed for charts and/or accessing prices from rules
|
|||
|
||||
::: tab DSL
|
||||
|
||||
```javascript
|
||||
```java
|
||||
import java.time.Duration
|
||||
import java.util.ArrayList
|
||||
import java.util.Map
|
||||
|
@ -594,6 +623,69 @@ var result = edsActions.calculateCheapestPeriod(time.Instant.now(), time.Instant
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
eds = things["energidataservice:service:energidataservice"]
|
||||
|
||||
price_map = eds.get_prices
|
||||
hour_start = Instant.now.truncated_to(ChronoUnit::HOURS)
|
||||
logger.info "Current total price excl. VAT: #{price_map[hour_start]}"
|
||||
|
||||
price_map = eds.get_prices("SpotPrice,GridTariff")
|
||||
logger.info "Current spot price + grid tariff excl. VAT: #{price_map[hour_start]}"
|
||||
|
||||
price = eds.calculate_price(Instant.now, 1.hour.from_now.to_instant, 150 | "W")
|
||||
logger.info "Total price for using 150 W for the next hour: #{price}" if price
|
||||
|
||||
duration_phases = [
|
||||
37.minutes,
|
||||
8.minutes,
|
||||
4.minutes,
|
||||
2.minutes,
|
||||
4.minutes,
|
||||
36.minutes,
|
||||
41.minutes,
|
||||
104.minutes
|
||||
]
|
||||
|
||||
consumption_phases = [
|
||||
162.162 | "W",
|
||||
750 | "W",
|
||||
1500 | "W",
|
||||
3000 | "W",
|
||||
1500 | "W",
|
||||
166.666 | "W",
|
||||
146.341 | "W",
|
||||
0 | "W"
|
||||
],
|
||||
|
||||
result = eds.calculate_cheapest_period(ZonedDateTime.now.to_instant,
|
||||
24.hours.from_now.to_instant,
|
||||
duration_phases,
|
||||
consumption_phases)
|
||||
|
||||
logger.info "Cheapest start #{result["CheapestStart"]}"
|
||||
logger.info "Lowest price #{result["LowestPrice"]}"
|
||||
logger.info "Highest price #{result["HighestPrice"]}"
|
||||
logger.info "Most expensive start #{result["MostExpensiveStart"]}"
|
||||
|
||||
# This is a simpler version taking advantage of the fact that each interval here represents 0.1 kWh of consumed energy.
|
||||
# In this example we have to provide the total duration to make sure we fit the latest end. This is because there is no
|
||||
# registered consumption in the last phase.
|
||||
# Here we are using an alternative way of constructing an array of Durations.
|
||||
# The `#minutes` method on an Integer object returns a corresponding Duration object.
|
||||
duration_phases = [37, 8, 4, 2, 4, 36, 41].map { |i| i.minutes }
|
||||
|
||||
result = eds.calculate_cheapest_period(ZonedDateTime.now.to_instant,
|
||||
24.hours.from_now.to_instant,
|
||||
236.minutes,
|
||||
duration_phases,
|
||||
0.1 | "kWh")
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
### Persistence Rule Example
|
||||
|
@ -602,7 +694,7 @@ var result = edsActions.calculateCheapestPeriod(time.Instant.now(), time.Instant
|
|||
|
||||
::: tab DSL
|
||||
|
||||
```javascript
|
||||
```java
|
||||
var hourStart = now.plusHours(2).truncatedTo(ChronoUnit.HOURS)
|
||||
var price = SpotPrice.historicState(hourStart).state
|
||||
logInfo("Spot price two hours from now", price.toString)
|
||||
|
@ -620,6 +712,16 @@ console.log("Spot price two hours from now: " + price);
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
hour_start = 2.hours.from_now.truncated_to(ChronoUnit::HOURS)
|
||||
price = SpotPrice.persisted_state(hour_start)
|
||||
logger.info "Spot price two hours from now: #{price}"
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
### Trigger Channel Example
|
||||
|
@ -628,7 +730,7 @@ console.log("Spot price two hours from now: " + price);
|
|||
|
||||
::: tab DSL
|
||||
|
||||
```javascript
|
||||
```java
|
||||
rule "Day-ahead event"
|
||||
when
|
||||
Channel 'energidataservice:service:energidataservice:electricity#event' triggered 'DAY_AHEAD_AVAILABLE'
|
||||
|
@ -653,4 +755,17 @@ rules.when()
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
rule "Day-ahead event" do
|
||||
channel "energidataservice:service:energidataservice:electricity#event", triggered: "DAY_AHEAD_AVAILABLE"
|
||||
run do
|
||||
logger.info "Day-ahead prices for the next day are now available"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
|
|
@ -709,9 +709,17 @@ In scripts:
|
|||
|
||||
:::: tabs
|
||||
|
||||
::: tab DSL
|
||||
|
||||
```java
|
||||
Var_1.sendCommand(REFRESH)
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JavaScript
|
||||
|
||||
``` javascript
|
||||
```javascript
|
||||
import org.openhab.core.types.RefreshType
|
||||
...
|
||||
Var_1.sendCommand(RefreshType.REFRESH)
|
||||
|
@ -719,10 +727,10 @@ Var_1.sendCommand(RefreshType.REFRESH)
|
|||
|
||||
:::
|
||||
|
||||
::: tab DSL
|
||||
::: tab JRuby
|
||||
|
||||
``` php
|
||||
Var_1.sendCommand(REFRESH)
|
||||
```ruby
|
||||
Var_1.refresh
|
||||
```
|
||||
|
||||
:::
|
||||
|
@ -742,7 +750,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% |
|
||||
| CCU | 100% | 0% |
|
||||
|
||||
|
|
|
@ -174,6 +174,7 @@ val List<String> attachmentUrlList = newArrayList(
|
|||
val mailActions = getActions("mail","mail:smtp:sampleserver")
|
||||
mailActions.sendHtmlMailWithAttachments("mail@example.com", "Test subject", "<h1>Header</h1>This is the mail content.", attachmentUrlList)
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JavaScript
|
||||
|
@ -182,7 +183,6 @@ mailActions.sendHtmlMailWithAttachments("mail@example.com", "Test subject", "<h1
|
|||
val mailActions = actions.get("mail","mail:smtp:samplesmtp")
|
||||
val success = mailActions.sendMail("mail@example.com", "Test subject", "This is the mail content.")
|
||||
success = mailActions.sendMail("mail1@example.com, mail2@example.com", "Test subject", "This is the mail content sent to multiple recipients.")
|
||||
|
||||
```
|
||||
|
||||
```javascript
|
||||
|
@ -197,7 +197,26 @@ mailActions.sendHtmlMailWithAttachments("mail@example.com", "Test subject", "<h1
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
mail = things["mail:smtp:samplesmtp"]
|
||||
success = mail.send_mail("mail@example.com", "Test subject", "This is the mail content.")
|
||||
success = mail.send_mail("mail1@example.com, mail2@example.com", "Test subject", "This is the mail content sent to multiple recipients.")
|
||||
```
|
||||
|
||||
```ruby
|
||||
attachment_urls = [
|
||||
"http://some.web/site/snap.jpg¶m=value",
|
||||
"file:///tmp/201601011031.jpg"
|
||||
]
|
||||
things["mail:smtp:sampleserver"].send_html_mail_with_attachments("mail@example.com", "Test subject", "<h1>Header</h1>This is the mail content.", attachment_urls)
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
## Mail Headers
|
||||
|
||||
The binding allows one to add custom e-mail headers to messages that it sends.
|
||||
|
@ -209,7 +228,6 @@ See the example below.
|
|||
|
||||
::: tab DSL
|
||||
|
||||
|
||||
```java
|
||||
rule "Send Mail with a 'Reference' header; for threaded view in e-mail client"
|
||||
when
|
||||
|
@ -220,6 +238,7 @@ then
|
|||
mailActions.sendMail("mail@example.com", "Test subject", "Test message text")
|
||||
end
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JavaScript
|
||||
|
@ -232,5 +251,15 @@ mailActions.sendMail("mail@example.com", "Test subject", "Test message text")
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
mail = things["mail:smtp:sampleserver"]
|
||||
mail.add_header("Reference", "<unique-thread-identifier>")
|
||||
mail.send_mail("mail@example.com", "Test subject", "Test message text")
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
Note: in the case of the "Reference" header, the `<unique-thread-identifier>` has to be an ASCII string enclosed in angle brackets.
|
||||
|
|
|
@ -24,7 +24,7 @@ It connects to many other devices through serial ports or wired contacts and exp
|
|||
The OmniPro/Lumina controller acts as a "bridge" for accessing other connected devices.
|
||||
|
||||
| Omni type | Hardware Type | Things |
|
||||
|:---------------------------|:-------------------------------------------------|:----------------------------------|
|
||||
| :------------------------- | :----------------------------------------------- | :-------------------------------- |
|
||||
| Controller | Omni (Pro II, IIe, LTe), Lumina | `controller` (omni, lumina) |
|
||||
| Lights | Built-in, UPB, HLC | `unit`, `dimmable`, `upb`, `room` |
|
||||
| Thermostats | Omnistat, Omnistat2 | `thermostat` |
|
||||
|
@ -71,7 +71,7 @@ The devices are identified by the device number that the OmniLink bridge assigns
|
|||
The devices support some of the following channels:
|
||||
|
||||
| Channel Type ID | Item Type | Description | Thing types supporting this channel |
|
||||
|-----------------------------|----------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------|
|
||||
| --------------------------- | -------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------- |
|
||||
| `activate_keypad_emergency` | Number | Activate a burglary, fire, or auxiliary keypad emergency alarm on Omni based models. | `area` |
|
||||
| `alarm_burglary` | Switch | Indicates if a burglary alarm is active. | `area` |
|
||||
| `alarm_fire` | Switch | Indicates if a fire alarm is active. | `area` |
|
||||
|
@ -145,19 +145,19 @@ The devices support some of the following channels:
|
|||
|
||||
The devices support some of the following trigger channels:
|
||||
|
||||
| Channel Type ID | Description | Thing types supporting this channel |
|
||||
|-------------------------------|--------------------------------------------------------------------------------------|-------------------------------------|
|
||||
| `all_on_off_event` | Event sent when an all on/off event occurs. | `area`, `lumina_area` |
|
||||
| `phone_line_event` | Event sent when the phone line changes state. | `controller` |
|
||||
| `ac_power_event` | Event sent when AC trouble conditions are detected. | `controller` |
|
||||
| `battery_event` | Event sent when battery trouble conditions are detected. | `controller` |
|
||||
| `dcm_event` | Event sent when digital communicator trouble conditions are detected. | `controller` |
|
||||
| `energy_cost_event` | Event sent when the cost of energy changes. | `controller` |
|
||||
| `camera_trigger_event` | Event sent when a camera trigger is detected. | `controller` |
|
||||
| `upb_link_activated_event` | Event sent when a UPB link is activated. | `controller` |
|
||||
| `upb_link_deactivated_event` | Event sent when a UPB link is deactivated. | `controller` |
|
||||
| `activated_event` | Event sent when a button is activated. | `button` |
|
||||
| `switch_press_event` | Event sent when an ALC, UPB, Radio RA, or Starlite switch is pressed. | `dimmable`, `upb` |
|
||||
| Channel Type ID | Description | Thing types supporting this channel |
|
||||
| ---------------------------- | --------------------------------------------------------------------- | ----------------------------------- |
|
||||
| `all_on_off_event` | Event sent when an all on/off event occurs. | `area`, `lumina_area` |
|
||||
| `phone_line_event` | Event sent when the phone line changes state. | `controller` |
|
||||
| `ac_power_event` | Event sent when AC trouble conditions are detected. | `controller` |
|
||||
| `battery_event` | Event sent when battery trouble conditions are detected. | `controller` |
|
||||
| `dcm_event` | Event sent when digital communicator trouble conditions are detected. | `controller` |
|
||||
| `energy_cost_event` | Event sent when the cost of energy changes. | `controller` |
|
||||
| `camera_trigger_event` | Event sent when a camera trigger is detected. | `controller` |
|
||||
| `upb_link_activated_event` | Event sent when a UPB link is activated. | `controller` |
|
||||
| `upb_link_deactivated_event` | Event sent when a UPB link is deactivated. | `controller` |
|
||||
| `activated_event` | Event sent when a button is activated. | `button` |
|
||||
| `switch_press_event` | Event sent when an ALC, UPB, Radio RA, or Starlite switch is pressed. | `dimmable`, `upb` |
|
||||
|
||||
## Rule Actions
|
||||
|
||||
|
@ -166,18 +166,28 @@ There is a separate instance for each contoller, which can be retrieved through:
|
|||
|
||||
:::: tabs
|
||||
|
||||
::: tab DSL
|
||||
|
||||
```java
|
||||
val omnilinkActions = getActions("omnilink", "omnilink:controller:home")
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JavaScript
|
||||
|
||||
``` javascript
|
||||
```javascript
|
||||
var omnilinkActions = actions.get("omnilink", "omnilink:controller:home");
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab DSL
|
||||
::: tab JRuby
|
||||
|
||||
``` php
|
||||
val omnilinkActions = getActions("omnilink", "omnilink:controller:home")
|
||||
In JRuby, Action methods are available directly on the Thing object.
|
||||
|
||||
```ruby
|
||||
omni_link = things["omnilink:controller:home"]
|
||||
```
|
||||
|
||||
:::
|
||||
|
@ -189,18 +199,26 @@ Once this action instance is retrieved, you can invoke the `synchronizeControlle
|
|||
|
||||
:::: tabs
|
||||
|
||||
::: tab DSL
|
||||
|
||||
```java
|
||||
omnilinkActions.synchronizeControllerTime("America/Denver")
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JavaScript
|
||||
|
||||
``` javascript
|
||||
```javascript
|
||||
omnilinkActions.synchronizeControllerTime("America/Denver");
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab DSL
|
||||
::: tab JRuby
|
||||
|
||||
``` php
|
||||
omnilinkActions.synchronizeControllerTime("America/Denver")
|
||||
```ruby
|
||||
omni_link.synchronize_controller_time("America/Denver")
|
||||
```
|
||||
|
||||
:::
|
||||
|
|
|
@ -56,25 +56,25 @@ The following Things and OpenWebNet `WHOs` are supported:
|
|||
|
||||
### For MyHOME - BUS/SCS
|
||||
|
||||
| Category | WHO | Thing Type IDs | Description | Status |
|
||||
| Category | WHO | Thing Type IDs | Description | Status |
|
||||
| ----------------------------- | :-------------: | :--------------------------------------------------------------------------------: | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Gateway Management | `13` | `bus_gateway` | Any IP gateway supporting OpenWebNet protocol should work | Successfully tested: F452, F453, F453AV,F454, F455, MyHOMEServer1, MyHOME_Screen10, MyHOME_Screen3,5, MH201, MH202, MH200N. Some connection stability issues/gateway resets reported with MH202 |
|
||||
| Lighting | `1` | `bus_on_off_switch`, `bus_dimmer`, `bus_light_group` | BUS switches and dimmers and groups of them | Successfully tested: F411/2, F411/4, F411U2, F422, F429. Some discovery issues reported with F429 (DALI Dimmers) |
|
||||
| Automation | `2` | `bus_automation` | BUS roller shutters, with position feedback and auto-calibration | Successfully tested: LN4672M2 |
|
||||
| Temperature Control | `4` | `bus_thermo_zone`, `bus_thermo_sensor`, `bus_thermo_cu` | Thermo zones management and temperature sensors (probes) | Successfully tested: Thermostats H/LN4691, HS4692, KG4691; sensors (probes): L/N/NT4577 + 3455; Central Units 4-zones (models L/N/NT/HD/HC/HS4695) and 99-zones (model 3550). See [Channels - Thermo](#configuring-thermo) for more details |
|
||||
| Alarm | `5` | `bus_alarm_system`, `bus_alarm_zone` | BUS Alarm system and zones | Successfully tested: Burglar-alarm Unit 3486 |
|
||||
| Auxiliary (AUX) | `9` | `bus_aux` | AUX commands | Successfully tested: AUX configured for Burglar-alarm Unit 3486. **Only sending AUX commands is supported** |
|
||||
| Gateway Management | `13` | `bus_gateway` | Any IP gateway supporting OpenWebNet protocol should work | Successfully tested: F452, F453, F453AV,F454, F455, MyHOMEServer1, MyHOME_Screen10, MyHOME_Screen3,5, MH201, MH202, MH200N. Some connection stability issues/gateway resets reported with MH202 |
|
||||
| Lighting | `1` | `bus_on_off_switch`, `bus_dimmer`, `bus_light_group` | BUS switches and dimmers and groups of them | Successfully tested: F411/2, F411/4, F411U2, F422, F429. Some discovery issues reported with F429 (DALI Dimmers) |
|
||||
| Automation | `2` | `bus_automation` | BUS roller shutters, with position feedback and auto-calibration | Successfully tested: LN4672M2 |
|
||||
| Temperature Control | `4` | `bus_thermo_zone`, `bus_thermo_sensor`, `bus_thermo_cu` | Thermo zones management and temperature sensors (probes) | Successfully tested: Thermostats H/LN4691, HS4692, KG4691; sensors (probes): L/N/NT4577 + 3455; Central Units 4-zones (models L/N/NT/HD/HC/HS4695) and 99-zones (model 3550). See [Channels - Thermo](#configuring-thermo) for more details |
|
||||
| Alarm | `5` | `bus_alarm_system`, `bus_alarm_zone` | BUS Alarm system and zones | Successfully tested: Burglar-alarm Unit 3486 |
|
||||
| Auxiliary (AUX) | `9` | `bus_aux` | AUX commands | Successfully tested: AUX configured for Burglar-alarm Unit 3486. **Only sending AUX commands is supported** |
|
||||
| Basic, CEN & CEN+ Scenarios | `0`, `15`, `25` | `bus_scenario_control`, `bus_cen_scenario_control`, `bus_cenplus_scenario_control` | Basic and CEN/CEN+ Scenarios events and virtual activation | Successfully tested: CEN/CEN+ scenario control: HC/HD/HS/L/N/NT4680 and basic scenario modules F420/IR3456 + L4680 (WHO=0) |
|
||||
| Dry Contact and IR Interfaces | `25` | `bus_dry_contact_ir` | Dry Contacts and IR Interfaces | Successfully tested: contact interfaces F428 and 3477; IR sensors: HC/HD/HS/L/N/NT4610 |
|
||||
| Energy Management | `18` | `bus_energy_meter` | Energy Management | Successfully tested: F520, F521. Partially tested: F522, F523 |
|
||||
| Dry Contact and IR Interfaces | `25` | `bus_dry_contact_ir` | Dry Contacts and IR Interfaces | Successfully tested: contact interfaces F428 and 3477; IR sensors: HC/HD/HS/L/N/NT4610 |
|
||||
| Energy Management | `18` | `bus_energy_meter` | Energy Management | Successfully tested: F520, F521. Partially tested: F522, F523 |
|
||||
|
||||
### For MyHOME Radio - Zigbee
|
||||
|
||||
| Category | WHO | Thing Type IDs | Description | Status |
|
||||
| -------------------- | :----: | :---------------------------------------------------: | --------------------------------------------------------------------- | ------------------------------------ |
|
||||
| Gateway Management | `13` | `zb_gateway` | MyHOME Radio - Zigbee USB Gateway (models: BTI-3578 / LG 088328) | Tested: BTI-3578 and LG 088328 |
|
||||
| Lighting | `1` | `zb_dimmer`, `zb_on_off_switch`, `zb_on_off_switch2u` | Radio Zigbee dimmers, switches and 2-unit switches | Tested: BTI-4591, BTI-3584, BTI-4585 |
|
||||
| Automation | `2` | `zb_automation` | Radio Zigbee roller shutters | |
|
||||
| Category | WHO | Thing Type IDs | Description | Status |
|
||||
| ------------------ | :---: | :---------------------------------------------------: | ---------------------------------------------------------------- | ------------------------------------ |
|
||||
| Gateway Management | `13` | `zb_gateway` | MyHOME Radio - Zigbee USB Gateway (models: BTI-3578 / LG 088328) | Tested: BTI-3578 and LG 088328 |
|
||||
| Lighting | `1` | `zb_dimmer`, `zb_on_off_switch`, `zb_on_off_switch2u` | Radio Zigbee dimmers, switches and 2-unit switches | Tested: BTI-4591, BTI-3584, BTI-4585 |
|
||||
| Automation | `2` | `zb_automation` | Radio Zigbee roller shutters | |
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -246,55 +246,55 @@ For a `bus_light_group` Thing to be updated properly, at least one light Thing b
|
|||
|
||||
| Channel Type ID (channel ID) | Applies to Thing Type IDs | Item Type | Description | Read/Write |
|
||||
| --------------------------------------- | -------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------: |
|
||||
| `switch` or `switch_01`/`02` for Zigbee | `bus_on_off_switch`, `bus_light_group`, `zb_on_off_switch`, `zb_on_off_switch2u` | Switch | To switch the device (or group) `ON` and `OFF` | R/W |
|
||||
| `brightness` | `bus_dimmer`, `zb_dimmer` | Dimmer | To adjust the brightness value (Percent, `ON`, `OFF`) | R/W |
|
||||
| `shutter` | `bus_automation` | Rollershutter | To activate roller shutters (`UP`, `DOWN`, `STOP`, Percent - [see Shutter position](#shutter-position)) | R/W |
|
||||
| `switch` or `switch_01`/`02` for Zigbee | `bus_on_off_switch`, `bus_light_group`, `zb_on_off_switch`, `zb_on_off_switch2u` | Switch | To switch the device (or group) `ON` and `OFF` | R/W |
|
||||
| `brightness` | `bus_dimmer`, `zb_dimmer` | Dimmer | To adjust the brightness value (Percent, `ON`, `OFF`) | R/W |
|
||||
| `shutter` | `bus_automation` | Rollershutter | To activate roller shutters (`UP`, `DOWN`, `STOP`, Percent - [see Shutter position](#shutter-position)) | R/W |
|
||||
| `scenario` | `bus_scenario_control` | String | Trigger channel for Basic scenario events [see possible values](#scenario-channels) | R (TRIGGER) |
|
||||
| `button#X` | `bus_cen_scenario_control`, `bus_cenplus_scenario_control` | String | Trigger channel for CEN/CEN+ scenario events [see possible values](#scenario-channels) | R (TRIGGER) |
|
||||
| `sensor` | `bus_dry_contact_ir` | Switch | If a Dry Contact Interface is `ON`/`OFF`, or if an IR Sensor is detecting movement (`ON`), or not (`OFF`) | R |
|
||||
| `power` | `bus_energy_meter` | Number:Power | The current active power usage from Energy Meter | R |
|
||||
| `energyToday` | `bus_energy_meter` | Number:Energy | Current day energy | R |
|
||||
| `energyThisMonth` | `bus_energy_meter` | Number:Energy | Current month energy | R |
|
||||
| `aux` | `bus_aux` | String | Possible commands: `ON`, `OFF`, `TOGGLE`, `STOP`, `UP`, `DOWN`, `ENABLED`, `DISABLED`, `RESET_GEN`, `RESET_BI`, `RESET_TRI`. Only `ON` and `OFF` are supported for now | R/W |
|
||||
| `sensor` | `bus_dry_contact_ir` | Switch | If a Dry Contact Interface is `ON`/`OFF`, or if an IR Sensor is detecting movement (`ON`), or not (`OFF`) | R |
|
||||
| `power` | `bus_energy_meter` | Number:Power | The current active power usage from Energy Meter | R |
|
||||
| `energyToday` | `bus_energy_meter` | Number:Energy | Current day energy | R |
|
||||
| `energyThisMonth` | `bus_energy_meter` | Number:Energy | Current month energy | R |
|
||||
| `aux` | `bus_aux` | String | Possible commands: `ON`, `OFF`, `TOGGLE`, `STOP`, `UP`, `DOWN`, `ENABLED`, `DISABLED`, `RESET_GEN`, `RESET_BI`, `RESET_TRI`. Only `ON` and `OFF` are supported for now | R/W |
|
||||
|
||||
### Alarm channels
|
||||
|
||||
| Channel Type ID (channel ID) | Applies to Thing Type IDs | Item Type | Description | Read/Write |
|
||||
|------------------------------|----------------------------------------|-------------|--------------------------------------------------------------------------------|:-----------:|
|
||||
| `state` | `bus_alarm_system`, `bus_alarm_zone` | Switch | Alarm system or zone is active (`ON`) or inactive (`OFF`) | R |
|
||||
| `network` | `bus_alarm_system` | Switch | Alarm system network state (`ON` = network ok, `OFF` = no network) | R |
|
||||
| `battery` | `bus_alarm_system` | String | Alarm system battery state (`OK`, `FAULT`, `UNLOADED`) | R |
|
||||
| `armed` | `bus_alarm_system` | Switch | Alarm system is armed (`ON`) or disarmed (`OFF`) | R |
|
||||
| `alarm` | `bus_alarm_zone` | String | Current alarm for the zone (`SILENT`, `INTRUSION`, `TAMPERING`, `ANTI_PANIC`) | R |
|
||||
| `timestamp` | `bus_alarm_zone` | DateTime | Current date and time of the zone's alarm event (YY/MM/DD hh:mm:ss) | R |
|
||||
| Channel Type ID (channel ID) | Applies to Thing Type IDs | Item Type | Description | Read/Write |
|
||||
| ---------------------------- | ------------------------------------ | --------- | ------------------------------------------------------------------------------ | :--------: |
|
||||
| `state` | `bus_alarm_system`, `bus_alarm_zone` | Switch | Alarm system or zone is active (`ON`) or inactive (`OFF`) | R |
|
||||
| `network` | `bus_alarm_system` | Switch | Alarm system network state (`ON` = network ok, `OFF` = no network) | R |
|
||||
| `battery` | `bus_alarm_system` | String | Alarm system battery state (`OK`, `FAULT`, `UNLOADED`) | R |
|
||||
| `armed` | `bus_alarm_system` | Switch | Alarm system is armed (`ON`) or disarmed (`OFF`) | R |
|
||||
| `alarm` | `bus_alarm_zone` | String | Current alarm for the zone (`SILENT`, `INTRUSION`, `TAMPERING`, `ANTI_PANIC`) | R |
|
||||
| `timestamp` | `bus_alarm_zone` | DateTime | Current date and time of the zone's alarm event (YY/MM/DD hh:mm:ss) | R |
|
||||
|
||||
### Thermo channels
|
||||
|
||||
**NOTE** Channels marked in the table with `Advanced = Y` can be shown on the UI from Thing configuration > Channels tab > check `Show advanced`.
|
||||
|
||||
| Channel Type ID (channel ID) | Applies to Thing Type IDs | Item Type | Description | Read/Write | Advanced |
|
||||
| ---------------------------- | -------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :------: |
|
||||
| `temperature` | `bus_thermo_zone`, `bus_thermo_sensor` | Number:Temperature | Currently sensed temperature for zone or sensor | R | N |
|
||||
| `setpointTemperature` | `bus_thermo_zone`, `bus_thermo_cu` | Number:Temperature | The zone or Central Unit manual setpoint temperature | R/W | N |
|
||||
| `targetTemperature` | `bus_thermo_zone` | Number:Temperature | The current zone target temperature according to `mode`, `setpointTemperature` and `localOffset` | R | Y
|
||||
|`function` | `bus_thermo_zone`, `bus_thermo_cu` | String | The zone set thermo function (`COOLING`, `HEATING`, `GENERIC`) or the Central Unit thermo function (`COOLING`, `HEATING`) | R/W | N |
|
||||
| `mode` | `bus_thermo_zone`, `bus_thermo_cu` | String | The zone set mode (`AUTO`, `MANUAL`, `OFF`, `PROTECTION`) or the Central Unit set mode (`WEEKLY`, `MANUAL`, `SCENARIO`, `HOLIDAY`, `VACATION`, `OFF`, `PROTECTION`) | R/W | N |
|
||||
| `speedFanCoil` | `bus_thermo_zone` | String | The zone fancoil speed: `AUTO`, `SPEED_1`, `SPEED_2`, `SPEED_3` | R/W | N |
|
||||
| `actuators` | `bus_thermo_zone` | String | The zone actuator(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y |
|
||||
| `heatingValves` | `bus_thermo_zone` | String | The zone heating valve(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y |
|
||||
| `conditioningValves` | `bus_thermo_zone` | String | The zone conditioning valve(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y |
|
||||
| `heating` | `bus_thermo_zone` | Switch | `ON` if the zone heating valve is currently active (meaning heating is On) | R | Y |
|
||||
| `cooling` | `bus_thermo_zone` | Switch | `ON` if the zone conditioning valve is currently active (meaning conditioning is On) | R | Y |
|
||||
| `localOffset` | `bus_thermo_zone` | String | The zone local offset status: `OFF`, `PROTECTION`, `MINUS_3`, `MINUS_2` , `MINUS_1`, `NORMAL`, `PLUS_1`, `PLUS_2`, `PLUS_3`, as set on the room thermostat physical knob | R | Y |
|
||||
| `remoteControl` | `bus_thermo_cu` | String | The Central Unit Remote Control status: `ENABLED`, `DISABLED` | R | Y |
|
||||
| `batteryStatus` | `bus_thermo_cu` | String | The Central Unit Battery status: `OK`, `KO` | R | Y |
|
||||
| `weeklyProgram` | `bus_thermo_cu` | Number | The weekly program number (`1`, `2`, `3`) when Central Unit mode is `WEEKLY` | R/W | N |
|
||||
| `scenarioProgram` | `bus_thermo_cu` | Number | The scenario program number (`1`, `2`, ... , `16`) when Central Unit mode is `SCENARIO` | R/W | N |
|
||||
| `vacationDays` | `bus_thermo_cu` | Number | Number of days `1-255` the Central Unit will be set to Anti-freeze / Heat Protection temperature before returning to mode `WEEKLY` | R/W | N |
|
||||
| `failureDiscovered` | `bus_thermo_cu` | Switch | Indicates if a Failure was discovered by the Central Unit (`ON`), or not (`OFF`) | R | Y |
|
||||
| `atLeastOneProbeOff` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in OFF mode (`ON`) or not (`OFF`) | R | Y |
|
||||
| `atLeastOneProbeProtection` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in PROTECTION mode (`ON`) or not (`OFF`) | R | Y |
|
||||
| `atLeastOneProbeManual` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in MANUAL mode (`ON`) or not (`OFF`) | R | Y |
|
||||
| Channel Type ID (channel ID) | Applies to Thing Type IDs | Item Type | Description | Read/Write | Advanced |
|
||||
| ---------------------------- | -------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :------: |
|
||||
| `temperature` | `bus_thermo_zone`, `bus_thermo_sensor` | Number:Temperature | Currently sensed temperature for zone or sensor | R | N |
|
||||
| `setpointTemperature` | `bus_thermo_zone`, `bus_thermo_cu` | Number:Temperature | The zone or Central Unit manual setpoint temperature | R/W | N |
|
||||
| `targetTemperature` | `bus_thermo_zone` | Number:Temperature | The current zone target temperature according to `mode`, `setpointTemperature` and `localOffset` | R | Y |
|
||||
| `function` | `bus_thermo_zone`, `bus_thermo_cu` | String | The zone set thermo function (`COOLING`, `HEATING`, `GENERIC`) or the Central Unit thermo function (`COOLING`, `HEATING`) | R/W | N |
|
||||
| `mode` | `bus_thermo_zone`, `bus_thermo_cu` | String | The zone set mode (`AUTO`, `MANUAL`, `OFF`, `PROTECTION`) or the Central Unit set mode (`WEEKLY`, `MANUAL`, `SCENARIO`, `HOLIDAY`, `VACATION`, `OFF`, `PROTECTION`) | R/W | N |
|
||||
| `speedFanCoil` | `bus_thermo_zone` | String | The zone fancoil speed: `AUTO`, `SPEED_1`, `SPEED_2`, `SPEED_3` | R/W | N |
|
||||
| `actuators` | `bus_thermo_zone` | String | The zone actuator(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y |
|
||||
| `heatingValves` | `bus_thermo_zone` | String | The zone heating valve(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y |
|
||||
| `conditioningValves` | `bus_thermo_zone` | String | The zone conditioning valve(s) status: `OFF`, `ON`, `OPENED`, `CLOSED` , `STOP`, `OFF_FAN_COIL`, `ON_SPEED_1`, `ON_SPEED_2`, `ON_SPEED_3`, `OFF_SPEED_1`, `OFF_SPEED_2`, `OFF_SPEED_3` | R | Y |
|
||||
| `heating` | `bus_thermo_zone` | Switch | `ON` if the zone heating valve is currently active (meaning heating is On) | R | Y |
|
||||
| `cooling` | `bus_thermo_zone` | Switch | `ON` if the zone conditioning valve is currently active (meaning conditioning is On) | R | Y |
|
||||
| `localOffset` | `bus_thermo_zone` | String | The zone local offset status: `OFF`, `PROTECTION`, `MINUS_3`, `MINUS_2` , `MINUS_1`, `NORMAL`, `PLUS_1`, `PLUS_2`, `PLUS_3`, as set on the room thermostat physical knob | R | Y |
|
||||
| `remoteControl` | `bus_thermo_cu` | String | The Central Unit Remote Control status: `ENABLED`, `DISABLED` | R | Y |
|
||||
| `batteryStatus` | `bus_thermo_cu` | String | The Central Unit Battery status: `OK`, `KO` | R | Y |
|
||||
| `weeklyProgram` | `bus_thermo_cu` | Number | The weekly program number (`1`, `2`, `3`) when Central Unit mode is `WEEKLY` | R/W | N |
|
||||
| `scenarioProgram` | `bus_thermo_cu` | Number | The scenario program number (`1`, `2`, ... , `16`) when Central Unit mode is `SCENARIO` | R/W | N |
|
||||
| `vacationDays` | `bus_thermo_cu` | Number | Number of days `1-255` the Central Unit will be set to Anti-freeze / Heat Protection temperature before returning to mode `WEEKLY` | R/W | N |
|
||||
| `failureDiscovered` | `bus_thermo_cu` | Switch | Indicates if a Failure was discovered by the Central Unit (`ON`), or not (`OFF`) | R | Y |
|
||||
| `atLeastOneProbeOff` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in OFF mode (`ON`) or not (`OFF`) | R | Y |
|
||||
| `atLeastOneProbeProtection` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in PROTECTION mode (`ON`) or not (`OFF`) | R | Y |
|
||||
| `atLeastOneProbeManual` | `bus_thermo_cu` | Switch | Indicates if at least one probe is in MANUAL mode (`ON`) or not (`OFF`) | R | Y |
|
||||
|
||||
### Notes on channels
|
||||
|
||||
|
@ -360,8 +360,8 @@ Actions can be used for example to send commands to the BUS for a WHOs not yet s
|
|||
|
||||
- `Boolean sendMessage(String message)` returns a `Boolean` = `true` if the `message` (OpenWebNet frame) was successfully sent via the gateway, `false` otherwise.
|
||||
- `Map<String, Object> sendMessageWithResponse(String message)` same as previous one, but returns a `Map<String, Object>` with following keys:
|
||||
- `success`: a `Boolean` = `true` if the `message` was sent successfully
|
||||
- `responseMessages`: a `List<String>` object containing all returned frames as response to command sent
|
||||
- `success`: a `Boolean` = `true` if the `message` was sent successfully
|
||||
- `responseMessages`: a `List<String>` object containing all returned frames as response to command sent
|
||||
|
||||
Usage example:
|
||||
|
||||
|
@ -395,11 +395,25 @@ logInfo("EventLog", "Response: " + result.responseMessages);
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
openwebnet = things["openwebnet:bus_gateway:mybridge"]
|
||||
result = openwebnet.send_message("*22*22#4#9*2#1##")
|
||||
logger.info "Result: #{result}"
|
||||
|
||||
result = openwebnet.send_message_with_response("*22*22#4#9*2#1##")
|
||||
logger.info "Success: #{result["success"]}"
|
||||
logger.info "Response: #{result["responseMessages"]}"
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
## Full Example
|
||||
|
||||
### openwebnet.things:
|
||||
### openwebnet.things
|
||||
|
||||
MyHOME BUS/SCS gateway and Things configuration:
|
||||
|
||||
|
@ -441,7 +455,7 @@ Bridge openwebnet:zb_gateway:myZBgateway [ serialPort="COM3" ] {
|
|||
}
|
||||
```
|
||||
|
||||
### openwebnet.items:
|
||||
### openwebnet.items
|
||||
|
||||
Example items linked to MyHOME - BUS/SCS devices:
|
||||
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
---
|
||||
id: teslapowerwall
|
||||
label: TeslaPowerwall
|
||||
title: TeslaPowerwall - Bindings
|
||||
type: binding
|
||||
description: "This binding enables the capture of key data from a Tesla Powerwall 2 into openHAB."
|
||||
since: 3x
|
||||
install: auto
|
||||
---
|
||||
|
||||
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||
|
||||
{% include base.html %}
|
||||
|
||||
# TeslaPowerwall Binding
|
||||
|
||||
This binding enables the capture of key data from a Tesla Powerwall 2 into openHAB.
|
||||
|
||||
## Supported Things
|
||||
|
||||
- `powerwall` Tesla Powerwall 2
|
||||
|
||||
## Discovery
|
||||
|
||||
The binding does not support auto discovery.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
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.
|
||||
|
||||
## Channels
|
||||
|
||||
| channel id | type | description |
|
||||
|---------------------------|----------------------|--------------------------------------------------------------|
|
||||
| grid-status | String | Current status of the Power Grid |
|
||||
| battery-soe | Number:Dimensionless | Current battery state of charge |
|
||||
| mode | String | Current operating mode |
|
||||
| reserve | Number:Dimensionless | Current battery reserve % |
|
||||
| grid-inst-power | Number:Power | Instantaneous Grid Power Supply |
|
||||
| battery-inst-power | Number:Power | Instantaneous Battery Power Supply |
|
||||
| home-inst-power | Number:Power | Instantaneous Home Power Supply |
|
||||
| solar-inst-power | Number:Power | Instantaneous Solar Power Supply |
|
||||
| grid-energy-exported | Number:Energy | Total Grid Energy Exported |
|
||||
| battery-energy-exported | Number:Energy | Total Battery Energy Exported |
|
||||
| home-energy-exported | Number:Energy | Total Home Energy Exported |
|
||||
| solar-energy-exported | Number:Energy | Total Solar Energy Exported |
|
||||
| grid-energy-imported | Number:Energy | Total Grid Energy Imported |
|
||||
| battery-energy-imported | Number:Energy | Total Battery Energy Imported |
|
||||
| home-energy-imported | Number:Energy | Total Home Energy Imported |
|
||||
| solar-energy-imported | Number:Energy | Total Solar Energy Imported |
|
||||
| degradation | Number:Dimensionless | Current battery degradation % (Based on single battery) |
|
||||
| full-pack-energy | Number:Energy | Reported battery capacity at full |
|
||||
|
||||
## Full Example
|
||||
|
||||
### `teslapowerwall.things`:
|
||||
|
||||
```java
|
||||
teslapowerwall:tesla-powerwall:TeslaPowerwall [ hostname="192.168.0.5" ]
|
||||
```
|
||||
|
||||
### `teslapowerwall.items`:
|
||||
|
||||
```java
|
||||
String TeslaPowerwall_grid-status { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:grid-status" }
|
||||
Switch TeslaPowerwall_grid-services { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:grid-services" }
|
||||
Number:Dimensionless TeslaPowerwall_battery-soe { channel="tesla-powerwall:teslapowerwall:TeslaPowerwall:battery-soe", unit="%" }
|
||||
String TeslaPowerwall_mode { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:mode" }
|
||||
Number:Dimensionless TeslaPowerwall_reserve { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:reserve", unit="%" }
|
||||
Number:Power TeslaPowerwall_grid-inst-power { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:grid-inst-power" }
|
||||
Number:Power TeslaPowerwall_battery-inst-power { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:battery-inst-power" }
|
||||
Number:Power TeslaPowerwall_home-inst-power { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:home-inst-power" }
|
||||
Number:Power TeslaPowerwall_solar-inst-power { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:solar-inst-power" }
|
||||
Number:Energy TeslaPowerwall_grid-energy-exported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:grid-energy-exported" }
|
||||
Number:Energy TeslaPowerwall_grid-energy-imported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:grid-energy-imported" }
|
||||
Number:Energy TeslaPowerwall_battery-energy-exported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:battery-energy-exported" }
|
||||
Number:Energy TeslaPowerwall_battery-energy-imported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:battery-energy-imported" }
|
||||
Number:Energy TeslaPowerwall_home-energy-exported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:home-energy-exported" }
|
||||
Number:Energy TeslaPowerwall_home-energy-imported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:home-energy-imported" }
|
||||
Number:Energy TeslaPowerwall_solar-energy-exported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:solar-energy-exported" }
|
||||
Number:Energy TeslaPowerwall_solar-energy-imported { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:solar-energy-imported" }
|
||||
Number:Dimensionless TeslaPowerwall_degradation { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:degradation", unit="%" }
|
||||
Number:Energy TeslaPowerwall_full-pack-energy { channel="teslapowerwall:tesla-powerwall:TeslaPowerwall:full-pack-energy" }
|
||||
```
|
||||
|
||||
### `teslapowerwall.sitemap`:
|
||||
|
||||
```perl
|
||||
Text item=TeslaPowerwall_grid-status label="Grid Status [%s]"
|
||||
Text item=TeslaPowerwall_grid-services label="Grid Services Status [%s]"
|
||||
Text item=TeslaPowerwall_battery-soe label="Battery Charge"
|
||||
Text item=TeslaPowerwall_mode label="Battery Mode"
|
||||
Text item=TeslaPowerwall_reserve label="Battery Reserve"
|
||||
Text item=TeslaPowerwall_grid-inst-power label="Grid Power [%.1f W]"
|
||||
Text item=TeslaPowerwall_battery-inst-power label="Battery Power [%.1f W]"
|
||||
Text item=TeslaPowerwall_home-inst-power label="Home Power [%.1f W]"
|
||||
Text item=TeslaPowerwall_solar-inst-power label="Solar Power [%.1f W]"
|
||||
Text item=TeslaPowerwall_grid-energy-exported label="Grid Energy Exported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_grid-energy-imported label="Grid Energy Imported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_battery-energy-exported label="Battery Energy Exported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_battery-energyi-mported label="Battery Energy Imported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_home-energy-exported label="Home Energy Exported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_home-energy-imported label="Home Energy Imported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_solar-energy-exported label="Solar Energy Exported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_solar-energy-imported label="Solar Energy Imported [%.1f kWh]"
|
||||
Text item=TeslaPowerwall_full-pack-energy label="Full Pack Energy"
|
||||
Text item=TeslaPowerwall_degradation label="Degradation level"
|
||||
```
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 74 KiB |
|
@ -28,29 +28,31 @@ The openHAB Cloud service (and thus the connector to it) is useful for different
|
|||
|
||||
## Installation via UI
|
||||
|
||||
* Open the openHAB web portal and login as an administrator.
|
||||
* Click on Add-on Store, followed by Other
|
||||
* Using the Install button you can install the openHAB Cloud Connector
|
||||
* Register your session (https://myopenhab.org/) using UUID and Secret identity
|
||||
* 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
|
||||
|
||||
To authenticate with the openHAB Cloud service the add-on generates two values when the add-on is installed.
|
||||
To authenticate with the openHAB Cloud service, the add-on generates two values when the add-on is installed.
|
||||
These values need to be entered in your account settings of the openHAB Cloud service.
|
||||
|
||||
The first one is a unique identifier, which allows to identify your runtime.
|
||||
One can think of it as something similar like a username for the cloud authentication.
|
||||
The second one is a random secret key which serves as a password.
|
||||
Both values are written to the local file system.
|
||||
|
||||
If you loose these files for some reason, openHAB will automatically generate new ones.
|
||||
You will then have to reconfigure UUID and secret in the openHAB Cloud service under the _My account_ section.
|
||||
You will need these values to register on the website before connection is accepted.
|
||||
|
||||
Location of UUID and Secret:
|
||||
|
||||
| File | Regular Installation | APT Installation |
|
||||
|--------|------------------------------|---------------------------------------|
|
||||
| UUID | userdata/uuid | /var/lib/openhab/uuid |
|
||||
| Secret | userdata/openhabcloud/secret | /var/lib/openhab/openhabcloud/secret |
|
||||
| File | Regular Installation | APT & RPM Installation |
|
||||
|--------|---------------------------------------|--------------------------------------|
|
||||
| UUID | $OPENHAB_USERDATA/uuid | /var/lib/openhab/uuid |
|
||||
| Secret | $OPENHAB_USERDATA/openhabcloud/secret | /var/lib/openhab/openhabcloud/secret |
|
||||
|
||||
## Configuration
|
||||
|
||||
|
@ -58,7 +60,7 @@ After installing this add-on, you will find configuration options in the openHAB
|
|||
|
||||

|
||||
|
||||
By default both remote access and push notifications are enabled.
|
||||
By default, both remote access and push notifications are enabled.
|
||||
|
||||
### Advanced Configuration
|
||||
|
||||
|
@ -120,7 +122,7 @@ The parameters for these actions have the following meaning:
|
|||
|
||||
- `emailAddress`: String containing the email address the target user is registered with in the cloud instance.
|
||||
- `message`: String containing the notification message text.
|
||||
- `icon`: String containing the icon name (as described in [Items]({{base}}/configuration/items.html#icons)).
|
||||
- `icon`: String containing the icon name (as described in [Items: Icons]({{base}}/configuration/items.html#icons)).
|
||||
- `severity`: String containing a description of the severity of the incident.
|
||||
|
||||
`null` may be used to skip the `icon` or `severity` parameter.
|
||||
|
@ -148,15 +150,15 @@ The additional parameter for these variants have the following meaning:
|
|||
- `title`: The title of the notification. Defaults to "openHAB" inside the Android and iOS apps.
|
||||
- `onClickAction`: The action to be performed when the user clicks on the notification. Specified using the [action syntax](#action-syntax).
|
||||
- `mediaAttachmentUrl`: The URL of the media attachment to be displayed with the notification. This URL must be reachable by the push notification client.
|
||||
- `actionButton1`: The action to be performed when the user clicks on the first action button. Specified as `Titel=$action`, where `$action` follow the [action syntax](#action-syntax).
|
||||
- `actionButton2`: The action to be performed when the user clicks on the second action button. Specified as `Titel=$action`, where `$action` follow the [action syntax](#action-syntax).
|
||||
- `actionButton3`: The action to be performed when the user clicks on the third action button. Specified as `Titel=$action`, where `$action` follow the [action syntax](#action-syntax).
|
||||
- `actionButton1`: The action to be performed when the user clicks on the first action button. Specified as `Title=$action`, where `$action` follows the [action syntax](#action-syntax).
|
||||
- `actionButton2`: The action to be performed when the user clicks on the second action button. Specified as `Title=$action`, where `$action` follows the [action syntax](#action-syntax).
|
||||
- `actionButton3`: The action to be performed when the user clicks on the third action button. Specified as `Title=$action`, where `$action` follows the [action syntax](#action-syntax).
|
||||
|
||||
These parameters may be skipped by setting them to `null`.
|
||||
|
||||
#### Action Syntax
|
||||
|
||||
The action syntax is a string containing the action type and the action payload seperated by a colon.
|
||||
The action syntax is a string containing the action type and the action payload separated by a colon.
|
||||
|
||||
There are two types of actions available:
|
||||
|
||||
|
@ -182,7 +184,7 @@ Notify the openHAB Cloud user with email address _me@email.com_ that the front d
|
|||
|
||||
::: tab DSL
|
||||
|
||||
```java
|
||||
```java
|
||||
rule "Front Door Notification"
|
||||
when
|
||||
Item Apartment_FrontDoor changed to OPEN
|
||||
|
@ -196,12 +198,29 @@ end
|
|||
|
||||
```javascript
|
||||
rules.when().item('Apartment_FrontDoor').changed().to('OPEN').then(() => {
|
||||
actions.notificationBuilder('Front door was opened!').addUserId('me@email.com').send();
|
||||
actions.notificationBuilder('Front door was opened!')
|
||||
.addUserId('me@email.com')
|
||||
.send();
|
||||
}).build('Front Door Notification');
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
rule "Front Door Notification" do
|
||||
changed Apartment_FrontDoor, to: OPEN
|
||||
run do
|
||||
notify("Front door was opened!", email: "me@email.com")
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
See [notify](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Actions.html#notify-class_method)
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
Notify all openHAB Cloud users that the window was opened:
|
||||
|
@ -225,15 +244,33 @@ end
|
|||
|
||||
```javascript
|
||||
rules.when().item('Apartment_Window').changed().to('OPEN').then(() => {
|
||||
actions.notificationBuilder('Apartment window was opened!').withIcon('window').withSeverity('HIGH').send();
|
||||
actions.notificationBuilder('Apartment window was opened!')
|
||||
.withIcon('window')
|
||||
.withSeverity('HIGH')
|
||||
.send();
|
||||
}).build('Open Window Notification');
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
Broadcast notification is performed by calling [notify](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Actions.html#notify-class_method) without providing an email address.
|
||||
|
||||
```ruby
|
||||
rule "Open Window Notification" do
|
||||
changed Apartment_Window, to: OPEN
|
||||
run do
|
||||
notify("Apartment window was opened!", icon: "window", severity: "HIGH")
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
Notify all openHAB Cloud users that motion was detected, attach a camera snapshot and add action button to turn on the light:
|
||||
Notify all openHAB Cloud users that motion was detected, attach a camera snapshot and add an action button to turn on the light:
|
||||
|
||||
:::: tabs
|
||||
|
||||
|
@ -244,7 +281,9 @@ rule "Motion Detected Notification"
|
|||
when
|
||||
Item Apartment_MotionSensor changed to ON
|
||||
then
|
||||
sendBroadcastNotification("Motion detected in the apartment!", "motion", "MEDIUM", "Motion Detected", null, "https://apartment.my/camera-snapshot.jpg", "command:Apartment_Light:ON", null, null)
|
||||
sendBroadcastNotification("Motion detected in the apartment!", "motion", "MEDIUM",
|
||||
"Motion Detected", null, "https://apartment.my/camera-snapshot.jpg",
|
||||
"Turn on the light=command:Apartment_Light:ON", null, null)
|
||||
end
|
||||
```
|
||||
|
||||
|
@ -266,4 +305,22 @@ rules.when().item('Apartment_MotionSensor').changed().to('ON').then(() => {
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
rule "Motion Detected Notification" do
|
||||
changed Apartment_MotionSensor, to: ON
|
||||
run do
|
||||
notify "Motion detected in the apartment!",
|
||||
icon: "motion",
|
||||
severity: "MEDIUM",
|
||||
title: "Motion Detected",
|
||||
attachment: "https://apartment.my/camera-snapshot.jpg",
|
||||
buttons: { "Turn on the light" => "command:Apartment_Light:ON" }
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
|
|
@ -33,7 +33,7 @@ Add Danish VAT to price:
|
|||
|
||||
::: tab DSL
|
||||
|
||||
```javascript
|
||||
```java
|
||||
var Number price = 499
|
||||
logInfo("Price", "Price incl. VAT: " + transform("VAT", "DK", price.toString))
|
||||
```
|
||||
|
@ -49,6 +49,18 @@ console.log("Price incl. VAT: " + actions.Transformation.transform("VAT", "DK",
|
|||
|
||||
:::
|
||||
|
||||
::: tab JRuby
|
||||
|
||||
```ruby
|
||||
price = 499
|
||||
# The currency name can be either a Symbol or a String
|
||||
# The input value doesn't need to be converted to string, however, the return value is a String
|
||||
price_incl_vat = transform(:vat, :DK, price)
|
||||
logger.info "Price incl. VAT: #{price_incl_vat}"
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::::
|
||||
|
||||
## Usage as a Profile
|
||||
|
|
|
@ -0,0 +1,170 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<thing:thing-descriptions bindingId="teslapowerwall"
|
||||
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="tesla-powerwall">
|
||||
<label>Tesla Powerwall</label>
|
||||
<description>Tesla Powerwall</description>
|
||||
|
||||
<channels>
|
||||
<channel id="grid-status" typeId="grid-status"/>
|
||||
<channel id="grid-services" typeId="grid-services"/>
|
||||
<channel id="battery-soe" typeId="battery-soe"/>
|
||||
<channel id="mode" typeId="mode"/>
|
||||
<channel id="reserve" typeId="reserve"/>
|
||||
<channel id="grid-inst-power" typeId="grid-inst-power"/>
|
||||
<channel id="battery-inst-power" typeId="battery-inst-power"/>
|
||||
<channel id="home-inst-power" typeId="home-inst-power"/>
|
||||
<channel id="solar-inst-power" typeId="solar-inst-power"/>
|
||||
<channel id="grid-energy-exported" typeId="grid-energy-exported"/>
|
||||
<channel id="battery-energy-exported" typeId="battery-energy-exported"/>
|
||||
<channel id="home-energy-exported" typeId="home-energy-exported"/>
|
||||
<channel id="solar-energy-exported" typeId="solar-energy-exported"/>
|
||||
<channel id="grid-energy-imported" typeId="grid-energy-imported"/>
|
||||
<channel id="battery-energy-imported" typeId="battery-energy-imported"/>
|
||||
<channel id="home-energy-imported" typeId="home-energy-imported"/>
|
||||
<channel id="solar-energy-imported" typeId="solar-energy-imported"/>
|
||||
<channel id="full-pack-energy" typeId="full-pack-energy"/>
|
||||
<channel id="degradation" typeId="degradation"/>
|
||||
</channels>
|
||||
|
||||
<config-description>
|
||||
<parameter name="hostname" type="text" required="true">
|
||||
<label>Hostname/IP Address</label>
|
||||
<description>The host name or IP address of the Tesla Powerwall.</description>
|
||||
</parameter>
|
||||
<parameter name="email" type="text" required="true">
|
||||
<label>Email</label>
|
||||
<description>Local Powerwall account email</description>
|
||||
</parameter>
|
||||
<parameter name="password" type="text" required="true">
|
||||
<label>Password</label>
|
||||
<description>Local Powerwall account password</description>
|
||||
<context>password</context>
|
||||
</parameter>
|
||||
<parameter name="refresh" type="integer" required="false">
|
||||
<label>Refresh Interval</label>
|
||||
<description>Specifies the refresh interval in seconds.</description>
|
||||
<default>10</default>
|
||||
</parameter>
|
||||
</config-description>
|
||||
|
||||
</thing-type>
|
||||
|
||||
<channel-type id="grid-status">
|
||||
<item-type>String</item-type>
|
||||
<label>Grid Status</label>
|
||||
<description>Current status of the power grid</description>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="grid-services">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Grid Services</label>
|
||||
<description>Grid services activation status</description>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="battery-soe">
|
||||
<item-type unitHint="%">Number:Dimensionless</item-type>
|
||||
<label>Battery SOE</label>
|
||||
<description>Current battery state of charge</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="mode">
|
||||
<item-type>String</item-type>
|
||||
<label>Operating Mode</label>
|
||||
<description>Current operating mode</description>
|
||||
</channel-type>
|
||||
<channel-type id="reserve">
|
||||
<item-type unitHint="%">Number:Dimensionless</item-type>
|
||||
<label>Battery Reserve</label>
|
||||
<description>Current battery reserve %</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="grid-inst-power">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Instant Grid Power</label>
|
||||
<description>Instantaneous grid power supply</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="battery-inst-power">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Instant Battery Power</label>
|
||||
<description>Instantaneous battery power supply</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="home-inst-power">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Instant Home Power</label>
|
||||
<description>Instantaneous home power supply</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="solar-inst-power">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Instant Solar Power</label>
|
||||
<description>Instantaneous solar power supply</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="grid-energy-exported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Grid Energy Exported</label>
|
||||
<description>Total grid energy exported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="battery-energy-exported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Battery Energy Exported</label>
|
||||
<description>Total battery energy exported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="home-energy-exported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Home Energy Exported</label>
|
||||
<description>Total home energy exported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="solar-energy-exported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Solar Energy Exported</label>
|
||||
<description>Total solar energy exported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="grid-energy-imported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Grid Energy Imported</label>
|
||||
<description>Total grid energy imported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="battery-energy-imported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Battery Energy Imported</label>
|
||||
<description>Total battery energy imported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="home-energy-imported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Home Energy Imported</label>
|
||||
<description>Total home energy emported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="solar-energy-imported">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Solar Energy Imported</label>
|
||||
<description>Total solar energy imported</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="full-pack-energy">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Battery Full Pack Energy</label>
|
||||
<description>Battery full pack energy</description>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
<channel-type id="degradation">
|
||||
<item-type unitHint="%">Number:Dimensionless</item-type>
|
||||
<label>Battery Degradation</label>
|
||||
<description>Current battery degradation %, based on 13.5kW full capacity</description>
|
||||
<state pattern="%.1f %unit%"/>
|
||||
</channel-type>
|
||||
|
||||
</thing:thing-descriptions>
|
Loading…
Reference in New Issue