Updated external content (Jenkins build 2546)
parent
0dbc96744b
commit
969ffeecb1
File diff suppressed because one or more lines are too long
|
@ -88,6 +88,7 @@ Additional [example rules are available](https://openhab.github.io/openhab-jruby
|
||||||
- [Linked Things](#linked-things)
|
- [Linked Things](#linked-things)
|
||||||
- [Item Builder](#item-builder)
|
- [Item Builder](#item-builder)
|
||||||
- [Things](#things)
|
- [Things](#things)
|
||||||
|
- [Thing Builder](#thing-builder)
|
||||||
- [Actions](#actions)
|
- [Actions](#actions)
|
||||||
- [Logging](#logging)
|
- [Logging](#logging)
|
||||||
- [Timers](#timers)
|
- [Timers](#timers)
|
||||||
|
@ -95,7 +96,7 @@ Additional [example rules are available](https://openhab.github.io/openhab-jruby
|
||||||
- [Time](#time)
|
- [Time](#time)
|
||||||
- [Ephemeris](#ephemeris)
|
- [Ephemeris](#ephemeris)
|
||||||
- [Rules, Scripts, and Scenes](#rules-scripts-and-scenes)
|
- [Rules, Scripts, and Scenes](#rules-scripts-and-scenes)
|
||||||
- [Gems](#gems)
|
- [Gems with Inline Bundler](#gems-with-inline-bundler)
|
||||||
- [Shared Code](#shared-code)
|
- [Shared Code](#shared-code)
|
||||||
- [Transformations](#transformations)
|
- [Transformations](#transformations)
|
||||||
- [Profile](#profile)
|
- [Profile](#profile)
|
||||||
|
@ -111,6 +112,7 @@ Additional [example rules are available](https://openhab.github.io/openhab-jruby
|
||||||
- [openHAB System Started](#openhab-system-started)
|
- [openHAB System Started](#openhab-system-started)
|
||||||
- [Cron Trigger](#cron-trigger)
|
- [Cron Trigger](#cron-trigger)
|
||||||
- [DateTimeItem Trigger](#datetimeitem-trigger)
|
- [DateTimeItem Trigger](#datetimeitem-trigger)
|
||||||
|
- [File and Directory Change Trigger](#file-and-directory-change-trigger)
|
||||||
- [Other Triggers](#other-triggers)
|
- [Other Triggers](#other-triggers)
|
||||||
- [Combining Multiple Triggers](#combining-multiple-triggers)
|
- [Combining Multiple Triggers](#combining-multiple-triggers)
|
||||||
- [Combining Multiple Conditions](#combining-multiple-conditions)
|
- [Combining Multiple Conditions](#combining-multiple-conditions)
|
||||||
|
@ -171,7 +173,7 @@ Simply change the `gems` and `require` configuration settings.
|
||||||
|
|
||||||
| Parameter | Description |
|
| Parameter | Description |
|
||||||
| --------------------- | ---------------------------------------------------------------------------------------------------------- |
|
| --------------------- | ---------------------------------------------------------------------------------------------------------- |
|
||||||
| `gem_home` | The path to store Ruby Gems. <br/><br/>Default: `$OPENHAB_CONF/automation/ruby/.gem/RUBY_ENGINE_VERSION` |
|
| `gem_home` | The path to store Ruby Gems. <br/><br/>Default: `$OPENHAB_CONF/automation/ruby/.gem/{RUBY_ENGINE_VERSION}` |
|
||||||
| `gems` | A list of gems to install. <br/><br/>Default: `openhab-scripting=~>5.0` |
|
| `gems` | A list of gems to install. <br/><br/>Default: `openhab-scripting=~>5.0` |
|
||||||
| `check_update` | Check for updated version of `gems` on start up or settings change. <br/><br/>Default: `true` |
|
| `check_update` | Check for updated version of `gems` on start up or settings change. <br/><br/>Default: `true` |
|
||||||
| `require` | List of scripts to be required automatically. <br/><br/>Default: `openhab/dsl` |
|
| `require` | List of scripts to be required automatically. <br/><br/>Default: `openhab/dsl` |
|
||||||
|
@ -191,7 +193,7 @@ org.openhab.automation.jrubyscripting:require=openhab/dsl
|
||||||
|
|
||||||
Path to where Ruby Gems will be installed to and loaded from.
|
Path to where Ruby Gems will be installed to and loaded from.
|
||||||
The directory will be created if necessary.
|
The directory will be created if necessary.
|
||||||
You can use `RUBY_ENGINE_VERSION`, `RUBY_ENGINE` and/or `RUBY_VERSION` replacements in this value to automatically point to a new directory when the addon is updated with a new version of JRuby.
|
You can use `{RUBY_ENGINE_VERSION}`, `{RUBY_ENGINE}` and/or `{RUBY_VERSION}` replacements in this value to automatically point to a new directory when the addon is updated with a new version of JRuby.
|
||||||
|
|
||||||
### gems
|
### gems
|
||||||
|
|
||||||
|
@ -293,8 +295,8 @@ Theoretically you could even use a system start trigger with a UI rule, and then
|
||||||
|
|
||||||
### File Based Scripts
|
### File Based Scripts
|
||||||
|
|
||||||
The JRuby Scripting addon will load scripts from `automation/ruby` in the user configuration directory.
|
The JRuby Scripting addon will load Ruby script files with `.rb` extension from `automation/ruby` in the user configuration directory.
|
||||||
The system will automatically reload scripts when changes are detected to files.
|
The system will automatically reload scripts when changes to files are detected.
|
||||||
Local variable state is not persisted among reloads, see using the [cache](#cache) for a convenient way to persist objects.
|
Local variable state is not persisted among reloads, see using the [cache](#cache) for a convenient way to persist objects.
|
||||||
See [File Based Rules](#file-based-rules) for examples of creating rules within your scripts.
|
See [File Based Rules](#file-based-rules) for examples of creating rules within your scripts.
|
||||||
|
|
||||||
|
@ -306,7 +308,7 @@ This tables gives an overview of the `event` object for most common trigger type
|
||||||
For full details, explore [OpenHAB::Core::Events](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Events.html).
|
For full details, explore [OpenHAB::Core::Events](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Events.html).
|
||||||
|
|
||||||
| Property Name | Type | Trigger Types | Description | Rules DSL Equivalent |
|
| Property Name | Type | Trigger Types | Description | Rules DSL Equivalent |
|
||||||
| ------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ---------------------- |
|
|---------------|----------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------|------------------------|
|
||||||
| `state` | [State](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Types/State.html) or `nil` | `[item] changed`, `[item] was updated` | State that triggered event | `triggeringItem.state` |
|
| `state` | [State](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Types/State.html) or `nil` | `[item] changed`, `[item] was updated` | State that triggered event | `triggeringItem.state` |
|
||||||
| `was` | [State](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Types/State.html) or `nil` | `[item] changed` | Previous state of Item or Group that triggered event | `previousState` |
|
| `was` | [State](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Types/State.html) or `nil` | `[item] changed` | Previous state of Item or Group that triggered event | `previousState` |
|
||||||
| `command` | [Command](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Types/Command.html) | `[item] received a command` | Command that triggered event | `receivedCommand` |
|
| `command` | [Command](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Types/Command.html) | `[item] received a command` | Command that triggered event | `receivedCommand` |
|
||||||
|
@ -768,6 +770,29 @@ model_id = things["fronius:meter:mybridge:mymeter"].properties["modelId"]
|
||||||
logger.info "Fronius Smart Meter model: #{model_id}"
|
logger.info "Fronius Smart Meter model: #{model_id}"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Thing Builder
|
||||||
|
|
||||||
|
New Things can be created via [things.build](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Things/Registry.html#build-instance_method).
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
thing_config = {
|
||||||
|
availabilityTopic: "my-switch/status",
|
||||||
|
payloadAvailable: "online",
|
||||||
|
payloadNotAvailable: "offline"
|
||||||
|
}
|
||||||
|
things.build do
|
||||||
|
# Use an existing bridge "mqtt:broker:mosquitto"
|
||||||
|
thing "mqtt:topic:my-switch", "My Switch", bridge: "mqtt:broker:mosquitto", config: thing_config do
|
||||||
|
channel "switch1", "switch", config: {
|
||||||
|
stateTopic: "stat/my-switch/switch1/state", commandTopic: "cmnd/my-switch/switch1/command"
|
||||||
|
}
|
||||||
|
channel "button1", "string", config: {
|
||||||
|
stateTopic: "stat/my-switch/button1/state", commandTopic: "cmnd/my-switch/button1/command"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
### Actions
|
### Actions
|
||||||
|
|
||||||
[openHAB built-in actions](https://www.openhab.org/docs/configuration/actions.html) are available as children of the [Actions](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Actions.html) module.
|
[openHAB built-in actions](https://www.openhab.org/docs/configuration/actions.html) are available as children of the [Actions](https://openhab.github.io/openhab-jruby/main/OpenHAB/Core/Actions.html) module.
|
||||||
|
@ -1151,7 +1176,22 @@ Time.at(1669684403)
|
||||||
# Convert Epoch second to ZonedDateTime
|
# Convert Epoch second to ZonedDateTime
|
||||||
Time.at(1669684403).to_zoned_date_time
|
Time.at(1669684403).to_zoned_date_time
|
||||||
# or
|
# or
|
||||||
java.time.Instant.of_epoch_second(1669684403).at_zone(ZoneId.system_default)
|
Instant.of_epoch_second(1669684403).at_zone(ZoneId.system_default)
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Time-based QuantityType
|
||||||
|
|
||||||
|
QuantityType objects with time dimension work like a Duration in arithmetic operations.
|
||||||
|
They can be compared, added, and subtracted against Duration objects, and added/subtracted from Ruby and Java Date/Time-like objects.
|
||||||
|
|
||||||
|
```java
|
||||||
|
Number:Time Pump_Total_Runtime "Total Pump runtime today"
|
||||||
|
```
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
if Pump_Total_Runtime.state >= 8.hours
|
||||||
|
logger.info "The Pump has been running for 8 hours or more today"
|
||||||
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ranges
|
#### Ranges
|
||||||
|
@ -1299,7 +1339,7 @@ The above script can be executed, passing it the `maxTemperature` argument from
|
||||||
rules["check_temp"].trigger(maxTemperature: 80 | "°C")
|
rules["check_temp"].trigger(maxTemperature: 80 | "°C")
|
||||||
```
|
```
|
||||||
|
|
||||||
### Gems
|
### Gems with Inline Bundler
|
||||||
|
|
||||||
[Bundler](https://bundler.io/) is integrated, enabling any [Ruby gem](https://rubygems.org/) compatible with JRuby to be used within rules.
|
[Bundler](https://bundler.io/) is integrated, enabling any [Ruby gem](https://rubygems.org/) compatible with JRuby to be used within rules.
|
||||||
This permits easy access to the vast ecosystem of libraries within the Ruby community.
|
This permits easy access to the vast ecosystem of libraries within the Ruby community.
|
||||||
|
@ -1359,10 +1399,6 @@ This add-on also provides the necessary infrastructure to use Ruby for writing [
|
||||||
The main value to be transformed is given to the script in a variable called `input`.
|
The main value to be transformed is given to the script in a variable called `input`.
|
||||||
Note that the values are passed to the transformation as Strings even for numeric items and data types.
|
Note that the values are passed to the transformation as Strings even for numeric items and data types.
|
||||||
|
|
||||||
**Note**: In openHAB 3.4, due to an [issue](https://github.com/jruby/jruby/issues/5876) in the current version of JRuby, you will need to begin your script with `input ||= nil` (and `a ||= nil` etc. for additional query variables) so that JRuby will recognize the variables as variables--rather than method calls--when it's parsing the script.
|
|
||||||
Otherwise you will get errors like `(NameError) undefined local variable or method 'input' for main:Object`.
|
|
||||||
This is not necessary in openHAB 4.0+.
|
|
||||||
|
|
||||||
#### File Based Transformations
|
#### File Based Transformations
|
||||||
|
|
||||||
Once the addon is installed, you can create a Ruby file in the `$OPENHAB_CONF/transform` directory, with the extension `.rb`.
|
Once the addon is installed, you can create a Ruby file in the `$OPENHAB_CONF/transform` directory, with the extension `.rb`.
|
||||||
|
@ -1632,6 +1668,20 @@ rule "TimeOnly Trigger" do
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### File and Directory Change Trigger
|
||||||
|
|
||||||
|
To trigger a rule when a file or directory was created, modified, or deleted, use [watch path](https://openhab.github.io/openhab-jruby/main/OpenHAB/DSL/Rules/BuilderDSL.html#watch-instance_method).
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
rule "Send notification when a new image was created" do
|
||||||
|
watch OpenHAB::Core.config_folder / "html/snapshots/*.jpg", for: :created
|
||||||
|
run do |event|
|
||||||
|
Snapshot_Image_Item.update_from_file(event.path)
|
||||||
|
Notification.send "A new snapshot was created!", title: "New Snapshot!", attachment: Snapshot_Image_Item
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
#### Other Triggers
|
#### Other Triggers
|
||||||
|
|
||||||
There are more triggers supported by this library.
|
There are more triggers supported by this library.
|
||||||
|
|
|
@ -5,6 +5,7 @@ title: BambuLab - Bindings
|
||||||
type: binding
|
type: binding
|
||||||
description: "This addon supports connecting with BambuLab 3D printers in local mode."
|
description: "This addon supports connecting with BambuLab 3D printers in local mode."
|
||||||
since: 3x
|
since: 3x
|
||||||
|
logo: images/addons/bambulab.png
|
||||||
install: auto
|
install: auto
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -14,6 +15,8 @@ install: auto
|
||||||
|
|
||||||
# BambuLab Binding
|
# BambuLab Binding
|
||||||
|
|
||||||
|
<AddonLogo />
|
||||||
|
|
||||||
This addon supports connecting with BambuLab 3D printers in local mode.
|
This addon supports connecting with BambuLab 3D printers in local mode.
|
||||||
While cloud mode is theoretically possible, it is not supported by the addon developers.
|
While cloud mode is theoretically possible, it is not supported by the addon developers.
|
||||||
|
|
||||||
|
@ -72,19 +75,22 @@ Use `us.mqtt.bambulab.com` as the hostname.
|
||||||
|
|
||||||
## Thing Configuration
|
## Thing Configuration
|
||||||
|
|
||||||
| Parameter | Type | Required | Description |
|
| Parameter | Group | Type | Required | Description |
|
||||||
|--------------|---------|----------|-------------------------------------------------------------------------------------------------|
|
|---------------------|--------|---------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `serial` | Text | Yes | Unique serial number of the printer. |
|
| `series` | N/A | Text | Yes | `A`, `P` or `X` depending on your printer series. |
|
||||||
| `scheme` | Text | No | URI scheme. (Advanced) |
|
| `serial` | N/A | Text | Yes | Unique serial number of the printer. |
|
||||||
| `hostname` | Text | Yes | IP address of the printer or `us.mqtt.bambulab.com` for cloud mode. |
|
| `hostname` | N/A | Text | Yes | IP address of the printer or `us.mqtt.bambulab.com` for cloud mode. |
|
||||||
| `port` | Integer | No | URI port. (Advanced) |
|
| `accessCode` | N/A | Text | Yes | Access code for the printer. The method of obtaining this varies between local and cloud modes. |
|
||||||
| `username` | Text | No | `bblp` for local mode or your Bambu Lab user (starting with `u_`). (Advanced) |
|
| `username` | N/A | Text | No | `bblp` for local mode or your Bambu Lab user (starting with `u_`). (Advanced) |
|
||||||
| `accessCode` | Text | Yes | Access code for the printer. The method of obtaining this varies between local and cloud modes. |
|
| `scheme` | MQTT | Text | No | URI scheme. (Advanced) |
|
||||||
|
| `port` | MQTT | Integer | No | URI port. (Advanced) |
|
||||||
|
| `cameraPort` | Camera | Integer | No | Camera server port. (Advanced) |
|
||||||
|
| `cameraCertificate` | Camera | Text | No | To disable the use of your own certificate, enter <b>none</b>. If providing your own certificate, ensure it includes the header <i>-----BEGIN CERTIFICATE-----</i> at the beginning and <i>-----END CERTIFICATE-----</i> at the end. (Advanced) |
|
||||||
|
|
||||||
## Channels
|
## Channels
|
||||||
|
|
||||||
| Channel ID | Type | Description |
|
| Channel ID | Type | Description |
|
||||||
|---------------------------|---------------------|------------------------------------------------------------------|
|
|------------------------------|---------------------|------------------------------------------------------------------|
|
||||||
| `nozzle-temperature` | Temperature Channel | Current temperature of the nozzle. |
|
| `nozzle-temperature` | Temperature Channel | Current temperature of the nozzle. |
|
||||||
| `nozzle-target-temperature` | Temperature Channel | Target temperature of the nozzle. |
|
| `nozzle-target-temperature` | Temperature Channel | Target temperature of the nozzle. |
|
||||||
| `bed-temperature` | Temperature Channel | Current temperature of the heated bed. |
|
| `bed-temperature` | Temperature Channel | Current temperature of the heated bed. |
|
||||||
|
@ -110,6 +116,8 @@ Use `us.mqtt.bambulab.com` as the hostname.
|
||||||
| `vibration-calibration` | Boolean Channel | Indicates whether vibration calibration has been performed. |
|
| `vibration-calibration` | Boolean Channel | Indicates whether vibration calibration has been performed. |
|
||||||
| `led-chamber` | On/Off Command | Controls the LED lighting inside the printer chamber. |
|
| `led-chamber` | On/Off Command | Controls the LED lighting inside the printer chamber. |
|
||||||
| `led-work` | On/Off Command | Controls the LED lighting for the work area. |
|
| `led-work` | On/Off Command | Controls the LED lighting for the work area. |
|
||||||
|
| `camera-record` | Boolean RW Command | Turns on/off OpenHAB's capability of recording. |
|
||||||
|
| `camera-image` | Image | Current image from the printer's camera. |
|
||||||
|
|
||||||
## Full Example
|
## Full Example
|
||||||
|
|
||||||
|
@ -123,7 +131,7 @@ Thing bambulab:printer:myprinter "My BambuLab Printer" @ "3D Printing Area" [
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
### `bambulab.items` Exmaple
|
### `bambulab.items` Example
|
||||||
|
|
||||||
```java
|
```java
|
||||||
Number:Temperature NozzleTemperature "Nozzle Temperature [%.1f °C]" { channel="bambulab:printer:myprinter:nozzle-temperature" }
|
Number:Temperature NozzleTemperature "Nozzle Temperature [%.1f °C]" { channel="bambulab:printer:myprinter:nozzle-temperature" }
|
||||||
|
|
|
@ -36,8 +36,8 @@ Note also that just because these tables show that a channel may be read/write,
|
||||||
### [Alarm Control Panel](https://www.home-assistant.io/integrations/alarm_control_panel.mqtt/)
|
### [Alarm Control Panel](https://www.home-assistant.io/integrations/alarm_control_panel.mqtt/)
|
||||||
|
|
||||||
| Channel ID | Type | R/W | Description |
|
| Channel ID | Type | R/W | Description |
|
||||||
|-----------------|--------|-----|------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------|--------|-----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| state | String | R/W | The current state of the alarm system, and the ability to change its state. Inspect the state and command descriptions for valid values. |
|
| state | String | R/W | The current state of the alarm system, and the ability to change its state. Inspect the state and command descriptions for values supported by your device. Possible values are ARM_AWAY, ARM_CUSTOM_BYPASS, ARM_HOME, ARM_NIGHT, ARM_VACATION, DISARM, TRIGGER for commands; armed_away, armed_custom_bypass, armed_home, armed_night, armed_vacation, arming, disarmed, disarming, pending, triggered for states. |
|
||||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||||
|
|
||||||
### [Binary Sensor](https://www.home-assistant.io/integrations/binary_sensor.mqtt/)
|
### [Binary Sensor](https://www.home-assistant.io/integrations/binary_sensor.mqtt/)
|
||||||
|
@ -50,8 +50,8 @@ Note also that just because these tables show that a channel may be read/write,
|
||||||
### [Button](https://www.home-assistant.io/integrations/button.mqtt/)
|
### [Button](https://www.home-assistant.io/integrations/button.mqtt/)
|
||||||
|
|
||||||
| Channel ID | Type | R/W | Description |
|
| Channel ID | Type | R/W | Description |
|
||||||
|-----------------|--------|-----|------------------------------------------------------------------------------|
|
|-----------------|--------|-----|-----------------------------------------------------|
|
||||||
| button | String | WO | Inspect the state description for the proper string to send (usually PRESS). |
|
| button | String | WO | Send PRESS to activate the button. |
|
||||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||||
|
|
||||||
### [Camera](https://www.home-assistant.io/integrations/camera.mqtt/)<br>
|
### [Camera](https://www.home-assistant.io/integrations/camera.mqtt/)<br>
|
||||||
|
@ -153,9 +153,9 @@ If a device has multiple device triggers for the same subtype (the particular bu
|
||||||
### [Lock](https://www.home-assistant.io/integrations/lock.mqtt/)
|
### [Lock](https://www.home-assistant.io/integrations/lock.mqtt/)
|
||||||
|
|
||||||
| Channel ID | Type | R/W | Description |
|
| Channel ID | Type | R/W | Description |
|
||||||
|-----------------|--------|-----|-----------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------|--------|-----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| lock | Switch | R/W | Lock/unlocked state. |
|
| lock | Switch | R/W | Lock/unlocked state. |
|
||||||
| state | String | R/W | Additional states may be supported such as jammed, or opening the door directly. Inspect the state and command descriptions for availability. |
|
| state | String | R/W | Additional states may be supported such as jammed, or opening the door directly. Inspect the state and command descriptions for values supported by your device. Possible values are LOCK, UNLOCK, OPEN for commands; JAMMED, LOCKED, LOCKING, UNLOCKED, UNLOCKING for states. |
|
||||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||||
|
|
||||||
### [Number](https://www.home-assistant.io/integrations/number.mqtt/)
|
### [Number](https://www.home-assistant.io/integrations/number.mqtt/)
|
||||||
|
@ -167,9 +167,11 @@ If a device has multiple device triggers for the same subtype (the particular bu
|
||||||
|
|
||||||
### [Scene](https://www.home-assistant.io/integrations/scene.mqtt/)
|
### [Scene](https://www.home-assistant.io/integrations/scene.mqtt/)
|
||||||
|
|
||||||
|
If a device has multiple scenes, they will only show up as a single channel. You send the name of a given scene to activate it.
|
||||||
|
|
||||||
| Channel ID | Type | R/W | Description |
|
| Channel ID | Type | R/W | Description |
|
||||||
|-----------------|--------|-----|-----------------------------------------------------------------------------------------------------------|
|
|-----------------|--------|-----|------------------------------------------------------------------------------------------------|
|
||||||
| scene | String | WO | Triggers a scene on the device. Inspect the state description for the proper string to send (usually ON). |
|
| scene | String | WO | Triggers a scene on the device. Inspect the command description for the proper string to send. |
|
||||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||||
|
|
||||||
### [Select](https://www.home-assistant.io/integrations/select.mqtt/)
|
### [Select](https://www.home-assistant.io/integrations/select.mqtt/)
|
||||||
|
@ -218,8 +220,8 @@ The `json-attributes` channel for this component will always appear as part of c
|
||||||
### [Vacuum](https://www.home-assistant.io/integrations/vacuum.mqtt/)
|
### [Vacuum](https://www.home-assistant.io/integrations/vacuum.mqtt/)
|
||||||
|
|
||||||
| Channel ID | Type | R/W | Description |
|
| Channel ID | Type | R/W | Description |
|
||||||
|-----------------|--------|-----|--------------------------------------------------------------------------------------------------|
|
|-----------------|--------|-----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| command | String | WO | Send a command to the vacuum. Inspect the state description for allowed values. |
|
| command | String | WO | Send a command to the vacuum. Inspect the command description for values supported by your device. Possible values are clean_spot, locate, pause, return_to_base, start, and stop. |
|
||||||
| fan-speed | String | R/W | Set the fan speed. Inspect the state description fro allowed values. |
|
| fan-speed | String | R/W | Set the fan speed. Inspect the state description fro allowed values. |
|
||||||
| custom-command | String | WO | Send an arbitrary command to the vacuum. This may be a raw command, or JSON. |
|
| custom-command | String | WO | Send an arbitrary command to the vacuum. This may be a raw command, or JSON. |
|
||||||
| battery-level | Dimmer | RO | The vaccum's battery level. |
|
| battery-level | Dimmer | RO | The vaccum's battery level. |
|
||||||
|
@ -229,8 +231,9 @@ The `json-attributes` channel for this component will always appear as part of c
|
||||||
### [Valve](https://www.home-assistant.io/integrations/valve.mqtt/)
|
### [Valve](https://www.home-assistant.io/integrations/valve.mqtt/)
|
||||||
|
|
||||||
| Channel ID | Type | R/W | Description |
|
| Channel ID | Type | R/W | Description |
|
||||||
|-----------------|---------------|-----|---------------------------------------------------------------------------------------------|
|
|-----------------|---------------|-----|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| valve | Switch/Dimmer | R/W | If the valve is on (open), or not. For a valve with position (a Dimmer), 100% is full open. |
|
| valve | Switch/Dimmer | R/W | If the valve is on (open), or not. For a valve with position (a Dimmer), 100% is full open. |
|
||||||
|
| state | String | RO | Additional states may be supported, such as currently processing actions, or stopping the valve where it currently is. Inspect the state and command descriptions for values supported by your device. Possible values are CLOSE, OPEN, STOP for commands; open, opening, closed, closing for states. |
|
||||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ Additionally, these advanced channels are available (not all are available on al
|
||||||
| charge | Switch | Charge | Start (ON) or stop (OFF) charging |
|
| charge | Switch | Charge | Start (ON) or stop (OFF) charging |
|
||||||
| charge-energy-added | Number:Energy | Charge Energy Added | Energy added, in kWh, during the last charging session |
|
| charge-energy-added | Number:Energy | Charge Energy Added | Energy added, in kWh, during the last charging session |
|
||||||
| charge-limit-soc-standard | Dimmer | Charge Limit SOC Standard | Standard charging limit of the vehicle, in % |
|
| charge-limit-soc-standard | Dimmer | Charge Limit SOC Standard | Standard charging limit of the vehicle, in % |
|
||||||
|
| charge-port-latch | Switch | Charge Port Latch | Indicate the Charge Port Latch status, (ON/OFF if latched/unlatched) |
|
||||||
| charge-rate | Number:Speed | Charge Rate | Distance per hour charging rate |
|
| charge-rate | Number:Speed | Charge Rate | Distance per hour charging rate |
|
||||||
| charger-power | Number:Power | Charger Power | Power actually delivered by the charger |
|
| charger-power | Number:Power | Charger Power | Power actually delivered by the charger |
|
||||||
| charger-voltage | Number:ElectricPotential | Charger Voltage | Voltage (V) actually presented by the charger |
|
| charger-voltage | Number:ElectricPotential | Charger Voltage | Voltage (V) actually presented by the charger |
|
||||||
|
@ -155,6 +156,7 @@ Switch TeslaCharge {channel="teslascope:vehicle:mod
|
||||||
Dimmer TeslaChargeLimit {channel="teslascope:vehicle:model3:charge-limit"}
|
Dimmer TeslaChargeLimit {channel="teslascope:vehicle:model3:charge-limit"}
|
||||||
Number TeslaChargeRate {channel="teslascope:vehicle:model3:charge-rate"}
|
Number TeslaChargeRate {channel="teslascope:vehicle:model3:charge-rate"}
|
||||||
String TeslaChargingState {channel="teslascope:vehicle:model3:charging-state"}
|
String TeslaChargingState {channel="teslascope:vehicle:model3:charging-state"}
|
||||||
|
String TeslaChargePortLatch {channel="teslascope:vehicle:model3:charge-port-latch"}
|
||||||
Number TeslaChargerPower {channel="teslascope:vehicle:model3:charger-power"}
|
Number TeslaChargerPower {channel="teslascope:vehicle:model3:charger-power"}
|
||||||
Number TeslaTimeToFullCharge {channel="teslascope:vehicle:model3:time-to-full-charge"}
|
Number TeslaTimeToFullCharge {channel="teslascope:vehicle:model3:time-to-full-charge"}
|
||||||
|
|
||||||
|
@ -230,6 +232,7 @@ sitemap main label="Main"
|
||||||
Switch item=TeslaCharge label="Charge"
|
Switch item=TeslaCharge label="Charge"
|
||||||
Slider item=TeslaChargeLimit label="Charge Limit [%.1f]"
|
Slider item=TeslaChargeLimit label="Charge Limit [%.1f]"
|
||||||
Text item=TeslaChargingState label="Charging State [%s]" icon=""
|
Text item=TeslaChargingState label="Charging State [%s]" icon=""
|
||||||
|
Text item=TeslaChargePortLatch label="Charge Port Status"
|
||||||
Text item=TeslaTimeToFullCharge label="Time To Full Charge [%.1f hours]"
|
Text item=TeslaTimeToFullCharge label="Time To Full Charge [%.1f hours]"
|
||||||
Text item=TeslaPreconditioning label="Preconditioning [%s]" icon=""
|
Text item=TeslaPreconditioning label="Preconditioning [%s]" icon=""
|
||||||
Text item=TeslaChargeRate label="Charge Rate [%d miles/hr]"
|
Text item=TeslaChargeRate label="Charge Rate [%d miles/hr]"
|
||||||
|
|
|
@ -72,6 +72,7 @@ All devices support the following channels:
|
||||||
|-----------------|-----------------|---------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|-----------------|-----------------|---------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| channelSet | Number (1-9999) | Current Channel - Request (SETCH) | Displays the current channel number. When changed, tunes the DVR to the specified channel (unless a recording is in progress on all available tuners). The TiVo must be in Live TV mode for this command to work. |
|
| channelSet | Number (1-9999) | Current Channel - Request (SETCH) | Displays the current channel number. When changed, tunes the DVR to the specified channel (unless a recording is in progress on all available tuners). The TiVo must be in Live TV mode for this command to work. |
|
||||||
| channelForce | Number (1-9999) | Current Channel - Forced (FORCECH) | Displays the current channel number. When changed, tunes the DVR to the specified channel, **cancelling any recordings in progress if necessary** i.e. when all tuners are already in use / recording. The TiVo must be in Live TV mode for this command to work. |
|
| channelForce | Number (1-9999) | Current Channel - Forced (FORCECH) | Displays the current channel number. When changed, tunes the DVR to the specified channel, **cancelling any recordings in progress if necessary** i.e. when all tuners are already in use / recording. The TiVo must be in Live TV mode for this command to work. |
|
||||||
|
| isRecording | Number (0-1) | Recording | Indicates if the current channel is recording. |
|
||||||
| menuTeleport | String | Change Special/Menu Screen (TELEPORT) | Change to one of the following TiVo menu screens: TIVO (Home), LIVETV, GUIDE, NOWPLAYING (My Shows), SEARCH, NETFLIX. |
|
| menuTeleport | String | Change Special/Menu Screen (TELEPORT) | Change to one of the following TiVo menu screens: TIVO (Home), LIVETV, GUIDE, NOWPLAYING (My Shows), SEARCH, NETFLIX. |
|
||||||
| irCommand | String | Remote Control Button (IRCOMMAND) | Send a simulated button push from the remote control to the TiVo. See below for available IR COMMANDS. |
|
| irCommand | String | Remote Control Button (IRCOMMAND) | Send a simulated button push from the remote control to the TiVo. See below for available IR COMMANDS. |
|
||||||
| kbdCommand | String | Keyboard Command (KEYBOARD) | Sends a code corresponding to a keyboard key press to the TiVo e.g. A-Z. See Appendix A in document TCP Remote Protocol 1.1 for supported characters and special character codes. |
|
| kbdCommand | String | Keyboard Command (KEYBOARD) | Sends a code corresponding to a keyboard key press to the TiVo e.g. A-Z. See Appendix A in document TCP Remote Protocol 1.1 for supported characters and special character codes. |
|
||||||
|
|
|
@ -0,0 +1,214 @@
|
||||||
|
---
|
||||||
|
id: tuya
|
||||||
|
label: Tuya
|
||||||
|
title: Tuya - Bindings
|
||||||
|
type: binding
|
||||||
|
description: "This addon connects Tuya WiFi devices with openHAB or compatible systems."
|
||||||
|
since: 3x
|
||||||
|
install: manual
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
|
||||||
|
|
||||||
|
{% include base.html %}
|
||||||
|
|
||||||
|
# Tuya Binding
|
||||||
|
|
||||||
|
This addon connects Tuya WiFi devices with openHAB or compatible systems.
|
||||||
|
The control and status reporting is done on the local network.
|
||||||
|
Cloud access is only needed for discovery and initial connection.
|
||||||
|
|
||||||
|
Devices need to be connected to a Tuya account (Tuya App or SmartLife App).
|
||||||
|
Each device has a unique "local key" (password/secret) which needs to be added during thing creation.
|
||||||
|
It is highly recommended to use the discovery feature for that, but you can also sniff the local key with a MITM proxy during pairing.
|
||||||
|
|
||||||
|
Please note that only one local connection is allowed per device.
|
||||||
|
Using the app (or other tools like tuya-mqtt) and the binding in parallel is not supported by Tuya devices and will cause problems such as inability to discover the IP address and/or inability to control the devices.
|
||||||
|
The other app (and/or tuya-mqtt) must be closed in order for this binding to operate properly.
|
||||||
|
|
||||||
|
## Supported Things
|
||||||
|
|
||||||
|
There are two things: `project` and `tuyadevice`.
|
||||||
|
|
||||||
|
The `project` thing represents a Tuya developer portal cloud project (see below).
|
||||||
|
`project` things must be configured manually and are needed for discovery only.
|
||||||
|
|
||||||
|
`tuyadevice` things represent a single device.
|
||||||
|
They can be configured manually or by discovery.
|
||||||
|
|
||||||
|
## Discovery
|
||||||
|
|
||||||
|
Discovery is supported for `tuyadevice` things.
|
||||||
|
By using discovery all necessary setting of the device are retrieved from your cloud account.
|
||||||
|
|
||||||
|
## Thing Configuration
|
||||||
|
|
||||||
|
### `project`
|
||||||
|
|
||||||
|
First create and link a Tuya Develop Account:
|
||||||
|
|
||||||
|
- Go to `iot.tuya.com` (the Tuya developer portal) and create an account.
|
||||||
|
You can choose any credentials (email/password) you like (it is not necessary that they are the same as in the app).
|
||||||
|
After confirming your account, log in to your new account.
|
||||||
|
- On the left navigation bar, select "Cloud", then "Create new Cloud project" (upper right corner).
|
||||||
|
Enter a name (e.g. "My Smarthome"), select "Smart Home" for "Industry" and "Development Method".
|
||||||
|
For security reasons, select only the "Data Center" that your app is connected to (you can change that later if you select the wrong one).
|
||||||
|
Select "IoT Core", "Authorization" and "Device Status Notification" as APIs.
|
||||||
|
- You should be redirected to the "Overview" tab of your project.
|
||||||
|
Write down (or copy) "Access ID/Client ID" and "Access Secret/Client Secret" (you can always look it up in your account).
|
||||||
|
- In the upper menu bar, select the "Devices" tab, then go to "Link Tuya App Account" and link you App account.
|
||||||
|
|
||||||
|
The next steps are performed in openHAB's Main UI:
|
||||||
|
|
||||||
|
Add a `project` and enter your credentials (`username`/`password`, from the app - not your cloud account!) and the cloud project credentials (`accessId`/`accessSecret`).
|
||||||
|
The `countryCode` is the international dial prefix of the country you registered your app in (e.g. `49` for Germany or `43` for Austria).
|
||||||
|
Depending on the app you use, set `schema` to `tuyaSmart` (for the Tuya Smart app) or `smartLife` (for the Smart Life app).
|
||||||
|
The `datacenter` needs to be set to the same value as in your IoT project.
|
||||||
|
|
||||||
|
The thing should come online immediately.
|
||||||
|
|
||||||
|
If the thing does not come online, check
|
||||||
|
|
||||||
|
- if you really used the app and not the developer portal credentials
|
||||||
|
- if you entered the correct country code (check in the App if you accidentally choose a wrong country)
|
||||||
|
- check if you selected the correct "Data Center" in your cloud project (you can select more than one for testing).
|
||||||
|
|
||||||
|
### `tuyaDevice`
|
||||||
|
|
||||||
|
The best way to configure a `tuyaDevice` is using the discovery service.
|
||||||
|
|
||||||
|
The mandatory parameters are `deviceId`, `productId` and `localKey`.
|
||||||
|
The `deviceId` is used to identify the device, the `productId` identifies the type of the device and the `localKey` is a kind of password for access control.
|
||||||
|
These parameters are set during discovery.
|
||||||
|
If you want to manually configure the device, you can also read those values from the cloud project above.
|
||||||
|
|
||||||
|
For line powered device on the same subnet `ip` address and `protocol` version are automatically detected.
|
||||||
|
Tuya devices announce their presence via UDP broadcast packets, which is usually not available in other subnets.
|
||||||
|
Battery powered devices do not announce their presence at all.
|
||||||
|
There is no clear rule how to determine if a device has protocol 3.3 or 3.1.
|
||||||
|
It is recommended to start with 3.3 and watch the log file if it that works and use 3.1 otherwise.
|
||||||
|
|
||||||
|
Some devices do not automatically refresh channels (e.g. some power meters).
|
||||||
|
The `pollingInterval` can be increased from the default value `0` (off) to a minimum of 10s or higher.
|
||||||
|
The device is then requested to refresh its data channels and reports the status.
|
||||||
|
|
||||||
|
In case something is not working, please open an issue on [GitHub](https://github.com/openhab/openhab-addons/issues/new?title=[tuya]) and add TRACE level logs.
|
||||||
|
|
||||||
|
## Channels
|
||||||
|
|
||||||
|
Channels are added automatically based on device schemas on first startup.
|
||||||
|
The binding first tries to get it from a database of known device schemas.
|
||||||
|
If no schema is found a schema retrieved from the cloud during discovery is used (if applicable).
|
||||||
|
|
||||||
|
The device will change to OFFLINE status if no device schema could be determined.
|
||||||
|
|
||||||
|
Channels can also be added manually.
|
||||||
|
The available channel-types are `color`, `dimmer`, `number`, `string` and `switch`.
|
||||||
|
Depending on the channel one or more parameters are available.
|
||||||
|
If a schema is available (which should be the case in most setups), these parameters are auto-configured.
|
||||||
|
|
||||||
|
All channels have at least the `dp` parameter which is used to identify the channel when communication with the device.
|
||||||
|
|
||||||
|
### Type `color`
|
||||||
|
|
||||||
|
The `color` channel has a second optional parameter `dp2`.
|
||||||
|
This parameter identifies the ON/OFF switch that is usually available on color lights.
|
||||||
|
|
||||||
|
### Type `dimmer`
|
||||||
|
|
||||||
|
The `dimmer` channel has two additional mandatory parameters `min` and `max`, one optional parameter `dp2` and one advanced parameter `reversed`.
|
||||||
|
The `min` and `max` parameters define the range allowed for controlling the brightness (most common are 0-255 or 10-1000).
|
||||||
|
The `dp2` parameter identifies the ON/OFF switch that is usually available on dimmable lights.
|
||||||
|
The `reversed` parameter changes the direction of the scale (e.g. 0 becomes 100, 100 becomes 0).
|
||||||
|
It defaults to `false`.
|
||||||
|
|
||||||
|
### Type `number`
|
||||||
|
|
||||||
|
The `number` channel has two additional mandatory parameters `min` and `max`.
|
||||||
|
The `min` and `max` parameters define the range allowed (e.g. 0-86400 for turn-off "countdown").
|
||||||
|
|
||||||
|
### Type `string`
|
||||||
|
|
||||||
|
The `string` channel has one additional optional parameter `range`.
|
||||||
|
It contains a comma-separated list of command options for this channel (e.g. `white,colour,scene,music` for the "workMode" channel).
|
||||||
|
|
||||||
|
### Type `ir-code`
|
||||||
|
|
||||||
|
IR code types:
|
||||||
|
|
||||||
|
+ `Tuya DIY-mode` - use study codes from real remotes.
|
||||||
|
|
||||||
|
Make a virtual remote control in DIY, learn virtual buttons.
|
||||||
|
|
||||||
|
+ `Tuya Codes Library (check Advanced options)` - use codes from templates library.
|
||||||
|
|
||||||
|
Make a virtual remote control from pre-defined type of devices.
|
||||||
|
|
||||||
|
Select Advanced checkbox to configure other parameters:
|
||||||
|
+ `irCode` - Decoding parameter
|
||||||
|
+ `irSendDelay` - used as `Send delay` parameter
|
||||||
|
+ `irCodeType` - used as `type library` parameter
|
||||||
|
|
||||||
|
+ `NEC` - IR Code in NEC format
|
||||||
|
+ `Samsung` - IR Code in Samsung format.
|
||||||
|
|
||||||
|
**Additional options:**
|
||||||
|
|
||||||
|
* `Active Listening` - Device will be always in learning mode.
|
||||||
|
After send command with key code device stays in the learning mode
|
||||||
|
* `DP Study Key` - **Advanced**. DP number for study key. Uses for receive key code in learning mode. Change it own your
|
||||||
|
risk.
|
||||||
|
|
||||||
|
|
||||||
|
If linked item received a command with `Key Code` (Code Library Parameter) then device sends appropriate key code.
|
||||||
|
|
||||||
|
#### How to use IR Code in NEC format.
|
||||||
|
|
||||||
|
Example, from Tasmota you need to use **_Data_** parameter, it can be with or without **_0x_**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{"Time": "2023-07-05T18:17:42", "IrReceived": {"Protocol": "NEC", "Bits": 32, "Data": "0x10EFD02F"}}
|
||||||
|
```
|
||||||
|
|
||||||
|
Another example, use **_hex_** parameter
|
||||||
|
|
||||||
|
```json
|
||||||
|
{ "type": "nec", "uint32": 284151855, "address": 8, "data": 11, "hex": "10EFD02F" }
|
||||||
|
```
|
||||||
|
|
||||||
|
#### How to get key codes without Tasmota and other
|
||||||
|
|
||||||
|
Channel can receive learning key (autodetect format and put autodetected code in channel).
|
||||||
|
|
||||||
|
To start learning codes add new channel with Type String and DP = 1 and Range with `send_ir,study,study_exit,study_key`.
|
||||||
|
|
||||||
|
Link Item to this added channel and send command `study`.
|
||||||
|
|
||||||
|
Device will be in learning mode and be able to receive codes from remote control.
|
||||||
|
|
||||||
|
Just press a button on the remote control and see key code in channel `ir-code`.
|
||||||
|
|
||||||
|
If type of channel `ir-code` is **_NEC_** or **_Samsung_** you will see just a hex code.
|
||||||
|
|
||||||
|
If type of channel `ir-code` is **_Tuya DIY-mode_** you will see a type of code format and a hex code.
|
||||||
|
|
||||||
|
Pressing buttons and copying codes, then assign codes with Item which control device (adjust State Description and Command Options you want).
|
||||||
|
|
||||||
|
After receiving the key code, the learning mode automatically continues until you send command `study_exit` or send key code by Item with code
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
- If the `project` thing is not coming `ONLINE` check if you see your devices in the cloud-account on `iot.tuya.com`.
|
||||||
|
If the listis empty, most likely you selected a wrong datacenter.
|
||||||
|
- Check if there are errors in the log and if you see messages like `Configuring IP address '192.168.1.100' for thing 'tuya:tuya:tuyaDevice:bf3122fba012345fc9pqa'`.
|
||||||
|
If this is missing, try configuring the IP manually.
|
||||||
|
The MAC of your device can be found in the auto-discovered thing properties (this helps to identify the device in your router).
|
||||||
|
- Provide TRACE level logs.
|
||||||
|
Type `log:set TRACE org.openhab.binding.tuya` on the Karaf console to enable TRACE logging.
|
||||||
|
Use `log:tail` to display the log.
|
||||||
|
You can revert to normal logging with `log:set DEFAULT org.openhab.binding.tuya`
|
||||||
|
- At least disable/enable the thing when providing logs.
|
||||||
|
For most details better remove the device, use discovery and re-add the device.
|
||||||
|
Please use PasteBin or a similar service, do not use JPG or other images, they can't be analysed properly.
|
||||||
|
Check that the log doesn't contain any credentials.
|
||||||
|
- Add the thing configuration to your report (in the UI use the "Code" view).
|
|
@ -28,6 +28,10 @@
|
||||||
<label>String Channel</label>
|
<label>String Channel</label>
|
||||||
<state readOnly="true"/>
|
<state readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="string-rw">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>RW String Channel</label>
|
||||||
|
</channel-type>
|
||||||
<channel-type id="wifi">
|
<channel-type id="wifi">
|
||||||
<item-type unitHint="dBm">Number:Power</item-type>
|
<item-type unitHint="dBm">Number:Power</item-type>
|
||||||
<label>Wi-Fi Signal Strength</label>
|
<label>Wi-Fi Signal Strength</label>
|
||||||
|
@ -49,6 +53,38 @@
|
||||||
<label>Boolean Channel</label>
|
<label>Boolean Channel</label>
|
||||||
<state readOnly="true"/>
|
<state readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="boolean-rw">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Boolean Channel</label>
|
||||||
|
</channel-type>
|
||||||
|
<channel-type id="camera-image">
|
||||||
|
<item-type>Image</item-type>
|
||||||
|
<label>Camera Image</label>
|
||||||
|
<description>Current image from the printer's camera.</description>
|
||||||
|
<state readOnly="true"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="speed-level">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>Print Speed Level</label>
|
||||||
|
<description>Current speed setting of the print job.</description>
|
||||||
|
<state>
|
||||||
|
<options>
|
||||||
|
<option value="SILENT">Silent</option>
|
||||||
|
<option value="STANDARD">Standard</option>
|
||||||
|
<option value="SPORT">Sport</option>
|
||||||
|
<option value="LUDICROUS">Ludicrous</option>
|
||||||
|
</options>
|
||||||
|
</state>
|
||||||
|
<command>
|
||||||
|
<options>
|
||||||
|
<option value="SILENT">Silent</option>
|
||||||
|
<option value="STANDARD">Standard</option>
|
||||||
|
<option value="SPORT">Sport</option>
|
||||||
|
<option value="LUDICROUS">Ludicrous</option>
|
||||||
|
</options>
|
||||||
|
</command>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="on-off-command">
|
<channel-type id="on-off-command">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
<label>Bed Type</label>
|
<label>Bed Type</label>
|
||||||
<description>Type of the printer's heated bed.</description>
|
<description>Type of the printer's heated bed.</description>
|
||||||
</channel>
|
</channel>
|
||||||
<channel id="gcode-file" typeId="string">
|
<channel id="gcode-file" typeId="string-rw">
|
||||||
<label>G-code File</label>
|
<label>G-code File</label>
|
||||||
<description>Name of the currently loaded G-code file.</description>
|
<description>Name of the currently loaded G-code file.</description>
|
||||||
</channel>
|
</channel>
|
||||||
|
@ -85,10 +85,7 @@
|
||||||
<label>Current Layer Number</label>
|
<label>Current Layer Number</label>
|
||||||
<description>Current layer being printed.</description>
|
<description>Current layer being printed.</description>
|
||||||
</channel>
|
</channel>
|
||||||
<channel id="speed-level" typeId="number">
|
<channel id="speed-level" typeId="speed-level"/>
|
||||||
<label>Print Speed Level</label>
|
|
||||||
<description>Current speed setting of the print job.</description>
|
|
||||||
</channel>
|
|
||||||
<channel id="time-laps" typeId="boolean">
|
<channel id="time-laps" typeId="boolean">
|
||||||
<label>time-lapse Enabled</label>
|
<label>time-lapse Enabled</label>
|
||||||
<description>Indicates whether time-lapse recording is enabled.</description>
|
<description>Indicates whether time-lapse recording is enabled.</description>
|
||||||
|
@ -101,6 +98,11 @@
|
||||||
<label>Vibration Calibration</label>
|
<label>Vibration Calibration</label>
|
||||||
<description>Indicates whether vibration calibration has been performed.</description>
|
<description>Indicates whether vibration calibration has been performed.</description>
|
||||||
</channel>
|
</channel>
|
||||||
|
<channel id="camera-record" typeId="boolean-rw">
|
||||||
|
<label>Camera Record</label>
|
||||||
|
<description>Turns on/off openHAB's capability of recording.</description>
|
||||||
|
</channel>
|
||||||
|
<channel id="camera-image" typeId="camera-image"/>
|
||||||
|
|
||||||
<!-- command channels -->
|
<!-- command channels -->
|
||||||
<channel id="led-chamber" typeId="on-off-command">
|
<channel id="led-chamber" typeId="on-off-command">
|
||||||
|
@ -115,41 +117,75 @@
|
||||||
|
|
||||||
<representation-property>serial</representation-property>
|
<representation-property>serial</representation-property>
|
||||||
<config-description>
|
<config-description>
|
||||||
|
<!-- 🟩Groups -->
|
||||||
|
<parameter-group name="mqtt">
|
||||||
|
<label>MQTT</label>
|
||||||
|
<description>Properties for MQTT.</description>
|
||||||
|
</parameter-group>
|
||||||
|
<parameter-group name="camera">
|
||||||
|
<label>Camera</label>
|
||||||
|
<description>Properties for camera. Note: only A and P series are supported.</description>
|
||||||
|
</parameter-group>
|
||||||
|
<!-- 🟥Groups -->
|
||||||
|
<!-- 🟩Common -->
|
||||||
|
<parameter name="series" type="text" required="true">
|
||||||
|
<label>Series</label>
|
||||||
|
<description>Select the printer series</description>
|
||||||
|
<options>
|
||||||
|
<option value="A">A Series</option>
|
||||||
|
<option value="P">P Series</option>
|
||||||
|
<option value="X">X Series</option>
|
||||||
|
</options>
|
||||||
|
</parameter>
|
||||||
<parameter name="serial" type="text" required="true">
|
<parameter name="serial" type="text" required="true">
|
||||||
<label>Serial Number</label>
|
<label>Serial Number</label>
|
||||||
<description>Unique serial number of the printer.</description>
|
<description>Unique serial number of the printer.</description>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
||||||
<parameter name="scheme" type="text" required="false">
|
|
||||||
<label>Scheme</label>
|
|
||||||
<description>URI scheme.</description>
|
|
||||||
<advanced>true</advanced>
|
|
||||||
</parameter>
|
|
||||||
|
|
||||||
<parameter name="hostname" type="text" required="true">
|
<parameter name="hostname" type="text" required="true">
|
||||||
<label>Hostname</label>
|
<label>Hostname</label>
|
||||||
<description>IP address of the printer or `us.mqtt.bambulab.com` for cloud mode.</description>
|
<description>IP address of the printer or `us.mqtt.bambulab.com` for cloud mode.</description>
|
||||||
<context>network-address</context>
|
<context>network-address</context>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
|
||||||
<parameter name="port" type="integer" required="false">
|
|
||||||
<label>Port</label>
|
|
||||||
<description>URI port.</description>
|
|
||||||
<advanced>true</advanced>
|
|
||||||
</parameter>
|
|
||||||
|
|
||||||
<parameter name="username" type="text">
|
|
||||||
<label>Username</label>
|
|
||||||
<description>`bblp` for local mode or your Bambu Lab user (starts with `u_`).</description>
|
|
||||||
<advanced>true</advanced>
|
|
||||||
</parameter>
|
|
||||||
|
|
||||||
<parameter name="accessCode" type="text" required="true">
|
<parameter name="accessCode" type="text" required="true">
|
||||||
<label>Access Code</label>
|
<label>Access Code</label>
|
||||||
<description>Access code of the printer. The method of obtaining it differs for local and cloud modes.
|
<description>Access code of the printer. The method of obtaining it differs for local and cloud modes.
|
||||||
</description>
|
</description>
|
||||||
<context>password</context>
|
<context>password</context>
|
||||||
</parameter>
|
</parameter>
|
||||||
|
<parameter name="username" type="text">
|
||||||
|
<label>Username</label>
|
||||||
|
<description>`bblp` for local mode or your Bambu Lab user (starts with `u_`).</description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<!-- 🟥Common -->
|
||||||
|
<!-- 🟩MQTT -->
|
||||||
|
<parameter name="scheme" type="text" required="false" groupName="mqtt">
|
||||||
|
<label>Scheme</label>
|
||||||
|
<description>URI scheme.</description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="port" type="integer" max="65535" min="1" required="false" groupName="mqtt">
|
||||||
|
<label>Port</label>
|
||||||
|
<description>URI port.</description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<!-- 🟥MQTT -->
|
||||||
|
<!-- 🟩CAMERA -->
|
||||||
|
<parameter name="cameraPort" type="integer" required="false" max="65535" min="1" groupName="camera">
|
||||||
|
<label>Camera Port</label>
|
||||||
|
<description>Defaults to 6000 for A and P series.</description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
<default>6000</default>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="cameraCertificate" type="text" multiple="true" required="false" groupName="camera">
|
||||||
|
<label>TLS Certificate</label>
|
||||||
|
<description><![CDATA[
|
||||||
|
To disable the use of your own certificate, enter <b>none</b>.
|
||||||
|
If providing your own certificate, ensure it includes the header <i>-----BEGIN CERTIFICATE-----</i> at the beginning and <i>-----END CERTIFICATE-----</i> at the end.
|
||||||
|
]]></description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<!-- 🟥CAMERA -->
|
||||||
</config-description>
|
</config-description>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="power" typeId="acunit-power"/>
|
<channel id="power" typeId="acunit-power"/>
|
||||||
<channel id="settemp" typeId="acunit-settemp"/>
|
<channel id="settemp" typeId="acunit-settemp"/>
|
||||||
<channel id="indoortemp" typeId="acunit-indoortemp"/>
|
<channel id="indoortemp" typeId="system.indoor-temperature"/>
|
||||||
<channel id="outdoortemp" typeId="acunit-outdoortemp"/>
|
<channel id="outdoortemp" typeId="system.outdoor-temperature"/>
|
||||||
<channel id="humidity" typeId="acunit-humidity"/>
|
<channel id="humidity" typeId="acunit-humidity"/>
|
||||||
<channel id="mode" typeId="acunit-mode"/>
|
<channel id="mode" typeId="acunit-mode"/>
|
||||||
<channel id="homekitmode" typeId="acunit-homekitmode"/>
|
<channel id="homekitmode" typeId="acunit-homekitmode"/>
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
</channels>
|
</channels>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<property name="thingTypeVersion">1</property>
|
<property name="thingTypeVersion">2</property>
|
||||||
</properties>
|
</properties>
|
||||||
<representation-property>host</representation-property>
|
<representation-property>host</representation-property>
|
||||||
<config-description-ref uri="thing-type:daikin:config"/>
|
<config-description-ref uri="thing-type:daikin:config"/>
|
||||||
|
@ -70,8 +70,8 @@
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="power" typeId="acunit-power"/>
|
<channel id="power" typeId="acunit-power"/>
|
||||||
<channel id="settemp" typeId="acunit-settemp"/>
|
<channel id="settemp" typeId="acunit-settemp"/>
|
||||||
<channel id="indoortemp" typeId="acunit-indoortemp"/>
|
<channel id="indoortemp" typeId="system.indoor-temperature"/>
|
||||||
<channel id="outdoortemp" typeId="acunit-outdoortemp"/>
|
<channel id="outdoortemp" typeId="system.outdoor-temperature"/>
|
||||||
<channel id="mode" typeId="acunit-mode"/>
|
<channel id="mode" typeId="acunit-mode"/>
|
||||||
<channel id="homekitmode" typeId="acunit-homekitmode"/>
|
<channel id="homekitmode" typeId="acunit-homekitmode"/>
|
||||||
<channel id="airbasefanspeed" typeId="airbase-acunit-fan"/>
|
<channel id="airbasefanspeed" typeId="airbase-acunit-fan"/>
|
||||||
|
@ -85,6 +85,9 @@
|
||||||
<channel id="zone8" typeId="airbase-acunit-zone8"/>
|
<channel id="zone8" typeId="airbase-acunit-zone8"/>
|
||||||
</channels>
|
</channels>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<property name="thingTypeVersion">1</property>
|
||||||
|
</properties>
|
||||||
<representation-property>host</representation-property>
|
<representation-property>host</representation-property>
|
||||||
<config-description-ref uri="thing-type:daikin:config"/>
|
<config-description-ref uri="thing-type:daikin:config"/>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
@ -94,6 +97,10 @@
|
||||||
<label>Power</label>
|
<label>Power</label>
|
||||||
<description>Power for the AC unit</description>
|
<description>Power for the AC unit</description>
|
||||||
<category>Switch</category>
|
<category>Switch</category>
|
||||||
|
<tags>
|
||||||
|
<tag>Switch</tag>
|
||||||
|
<tag>Power</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -102,26 +109,14 @@
|
||||||
<label>Set Point</label>
|
<label>Set Point</label>
|
||||||
<description>The set point temperature</description>
|
<description>The set point temperature</description>
|
||||||
<category>Temperature</category>
|
<category>Temperature</category>
|
||||||
|
<tags>
|
||||||
|
<tag>Setpoint</tag>
|
||||||
|
<tag>Temperature</tag>
|
||||||
|
</tags>
|
||||||
<state pattern="%.1f %unit%" step="0.5"/>
|
<state pattern="%.1f %unit%" step="0.5"/>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="acunit-indoortemp">
|
|
||||||
<item-type>Number:Temperature</item-type>
|
|
||||||
<label>Indoor Temperature</label>
|
|
||||||
<description>The indoor temperature</description>
|
|
||||||
<category>Temperature</category>
|
|
||||||
<state readOnly="true" pattern="%.1f %unit%" step="0.5"/>
|
|
||||||
</channel-type>
|
|
||||||
|
|
||||||
<channel-type id="acunit-outdoortemp">
|
|
||||||
<item-type>Number:Temperature</item-type>
|
|
||||||
<label>Outdoor Temperature</label>
|
|
||||||
<description>The outdoor temperature</description>
|
|
||||||
<category>Temperature</category>
|
|
||||||
<state readOnly="true" pattern="%.1f %unit%" step="0.5"/>
|
|
||||||
</channel-type>
|
|
||||||
|
|
||||||
<channel-type id="acunit-humidity" advanced="true">
|
<channel-type id="acunit-humidity" advanced="true">
|
||||||
<item-type unitHint="%">Number:Dimensionless</item-type>
|
<item-type unitHint="%">Number:Dimensionless</item-type>
|
||||||
<label>Indoor Humidity</label>
|
<label>Indoor Humidity</label>
|
||||||
|
@ -134,6 +129,10 @@
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Mode</label>
|
<label>Mode</label>
|
||||||
<description>Current mode of the AC unit</description>
|
<description>Current mode of the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Mode</tag>
|
||||||
|
</tags>
|
||||||
<state>
|
<state>
|
||||||
<options>
|
<options>
|
||||||
<option value="AUTO">auto</option>
|
<option value="AUTO">auto</option>
|
||||||
|
@ -165,6 +164,10 @@
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Fan</label>
|
<label>Fan</label>
|
||||||
<description>Current fan speed setting of the AC unit</description>
|
<description>Current fan speed setting of the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Level</tag>
|
||||||
|
</tags>
|
||||||
<state>
|
<state>
|
||||||
<options>
|
<options>
|
||||||
<option value="AUTO">auto</option>
|
<option value="AUTO">auto</option>
|
||||||
|
@ -471,6 +474,10 @@
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Fan</label>
|
<label>Fan</label>
|
||||||
<description>Current fan speed setting of the AC unit</description>
|
<description>Current fan speed setting of the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Level</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -478,6 +485,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 1</label>
|
<label>Zone 1</label>
|
||||||
<description>Zone 1 for the AC unit</description>
|
<description>Zone 1 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -485,6 +496,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 2</label>
|
<label>Zone 2</label>
|
||||||
<description>Zone 2 for the AC unit</description>
|
<description>Zone 2 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -492,6 +507,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 3</label>
|
<label>Zone 3</label>
|
||||||
<description>Zone 3 for the AC unit</description>
|
<description>Zone 3 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -499,6 +518,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 4</label>
|
<label>Zone 4</label>
|
||||||
<description>Zone 4 for the AC unit</description>
|
<description>Zone 4 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -506,6 +529,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 5</label>
|
<label>Zone 5</label>
|
||||||
<description>Zone 5 for the AC unit</description>
|
<description>Zone 5 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -513,6 +540,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 6</label>
|
<label>Zone 6</label>
|
||||||
<description>Zone 6 for the AC unit</description>
|
<description>Zone 6 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -520,6 +551,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 7</label>
|
<label>Zone 7</label>
|
||||||
<description>Zone 7 for the AC unit</description>
|
<description>Zone 7 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
@ -527,6 +562,10 @@
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Zone 8</label>
|
<label>Zone 8</label>
|
||||||
<description>Zone 8 for the AC unit</description>
|
<description>Zone 8 for the AC unit</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Airflow</tag>
|
||||||
|
</tags>
|
||||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<property name="vendor">Danfoss</property>
|
<property name="vendor">Danfoss</property>
|
||||||
<property name="thingTypeVersion">3</property>
|
<property name="thingTypeVersion">4</property>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<representation-property>serialNumber</representation-property>
|
<representation-property>serialNumber</representation-property>
|
||||||
|
@ -58,39 +58,32 @@
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="current_time" typeId="currentTime"/>
|
<channel id="current_time" typeId="currentTime"/>
|
||||||
<channel id="mode" typeId="mode"/>
|
<channel id="mode" typeId="mode"/>
|
||||||
<channel id="manual_fan_step" typeId="manualFanStep"/>
|
<channel id="manual_fan_step" typeId="manual-fan-step"/>
|
||||||
<channel id="supply_fan_speed" typeId="supplyFanSpeed"/>
|
<channel id="supply_fan_speed" typeId="supplyFanSpeed"/>
|
||||||
<channel id="extract_fan_speed" typeId="extractFanSpeed"/>
|
<channel id="extract_fan_speed" typeId="extractFanSpeed"/>
|
||||||
<channel id="supply_fan_step" typeId="supplyFanStep"/>
|
<channel id="supply_fan_step" typeId="supplyFanStep"/>
|
||||||
<channel id="extract_fan_step" typeId="extractFanStep"/>
|
<channel id="extract_fan_step" typeId="extractFanStep"/>
|
||||||
<channel id="boost" typeId="switch">
|
<channel id="boost" typeId="boost"/>
|
||||||
<label>Boost</label>
|
<channel id="night_cooling" typeId="night-cooling"/>
|
||||||
<description>Enables fan boost</description>
|
|
||||||
</channel>
|
|
||||||
<channel id="night_cooling" typeId="switch">
|
|
||||||
<label>Night Cooling</label>
|
|
||||||
<description>Enables night cooling</description>
|
|
||||||
</channel>
|
|
||||||
</channels>
|
</channels>
|
||||||
</channel-group-type>
|
</channel-group-type>
|
||||||
|
|
||||||
<channel-group-type id="temps">
|
<channel-group-type id="temps">
|
||||||
<label>Temperatures</label>
|
<label>Temperatures</label>
|
||||||
<category>Temperature</category>
|
<category>Temperature</category>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="room_temp" typeId="temperature">
|
<channel id="room_temp" typeId="system.indoor-temperature">
|
||||||
<label>Room Temperature</label>
|
<label>Room Temperature</label>
|
||||||
<description>Temperature of the air in the room of the Air Dial</description>
|
<description>Temperature of the air in the room of the Air Dial</description>
|
||||||
</channel>
|
</channel>
|
||||||
<channel id="room_temp_calculated" typeId="temperature">
|
<channel id="room_temp_calculated" typeId="calculated-temperature"/>
|
||||||
<label>Calculated Room Temperature</label>
|
|
||||||
<description>Calculated Room Temperature</description>
|
|
||||||
</channel>
|
|
||||||
<channel id="outdoor_temp" typeId="system.outdoor-temperature">
|
<channel id="outdoor_temp" typeId="system.outdoor-temperature">
|
||||||
<label>Outdoor Temperature</label>
|
<label>Outdoor Temperature</label>
|
||||||
<description>Temperature of the air outside</description>
|
<description>Temperature of the air outside</description>
|
||||||
</channel>
|
</channel>
|
||||||
</channels>
|
</channels>
|
||||||
</channel-group-type>
|
</channel-group-type>
|
||||||
|
|
||||||
<channel-group-type id="humidity">
|
<channel-group-type id="humidity">
|
||||||
<label>Humidity</label>
|
<label>Humidity</label>
|
||||||
<channels>
|
<channels>
|
||||||
|
@ -100,30 +93,28 @@
|
||||||
</channel>
|
</channel>
|
||||||
</channels>
|
</channels>
|
||||||
</channel-group-type>
|
</channel-group-type>
|
||||||
|
|
||||||
<channel-group-type id="recuperator">
|
<channel-group-type id="recuperator">
|
||||||
<label>Recuperator</label>
|
<label>Recuperator</label>
|
||||||
<description>Heat exchaning device in the Air Unit</description>
|
<description>Heat exchaning device in the Air Unit</description>
|
||||||
<channels>
|
<channels>
|
||||||
<channel id="bypass" typeId="switch">
|
<channel id="bypass" typeId="bypass"/>
|
||||||
<label>Bypass</label>
|
|
||||||
<description>Disables the heat exchange. Useful in summer when room temperature is above target and outside
|
|
||||||
temperature is below target.</description>
|
|
||||||
</channel>
|
|
||||||
<channel id="defrost" typeId="defrost"/>
|
<channel id="defrost" typeId="defrost"/>
|
||||||
<channel id="supply_temp" typeId="temperature">
|
<channel id="supply_temp" typeId="system.indoor-temperature">
|
||||||
<label>Supply Air Temperature</label>
|
<label>Supply Air Temperature</label>
|
||||||
<description>Temperature of air which is passed to the rooms</description>
|
<description>Temperature of air which is passed to the rooms</description>
|
||||||
</channel>
|
</channel>
|
||||||
<channel id="extract_temp" typeId="temperature">
|
<channel id="extract_temp" typeId="system.indoor-temperature">
|
||||||
<label>Extract Air Temperature</label>
|
<label>Extract Air Temperature</label>
|
||||||
<description>Temperature of the air as extracted from the rooms</description>
|
<description>Temperature of the air as extracted from the rooms</description>
|
||||||
</channel>
|
</channel>
|
||||||
<channel id="exhaust_temp" typeId="temperature">
|
<channel id="exhaust_temp" typeId="system.outdoor-temperature">
|
||||||
<label>Exhaust Air Temperature</label>
|
<label>Exhaust Air Temperature</label>
|
||||||
<description>Temperature of the air when pushed outside</description>
|
<description>Temperature of the air when pushed outside</description>
|
||||||
</channel>
|
</channel>
|
||||||
</channels>
|
</channels>
|
||||||
</channel-group-type>
|
</channel-group-type>
|
||||||
|
|
||||||
<channel-group-type id="service">
|
<channel-group-type id="service">
|
||||||
<label>Service</label>
|
<label>Service</label>
|
||||||
<channels>
|
<channels>
|
||||||
|
@ -131,10 +122,7 @@
|
||||||
<label>Battery Life</label>
|
<label>Battery Life</label>
|
||||||
<description>Remaining Air Dial Battery Level</description>
|
<description>Remaining Air Dial Battery Level</description>
|
||||||
</channel>
|
</channel>
|
||||||
<channel id="filter_life" typeId="percentage">
|
<channel id="filter_life" typeId="filter-life"/>
|
||||||
<label>Remaining Filter Life</label>
|
|
||||||
<description>Remaining life of filter until exchange is necessary</description>
|
|
||||||
</channel>
|
|
||||||
<channel id="filter_period" typeId="filterPeriod"/>
|
<channel id="filter_period" typeId="filterPeriod"/>
|
||||||
</channels>
|
</channels>
|
||||||
</channel-group-type>
|
</channel-group-type>
|
||||||
|
@ -147,10 +135,15 @@
|
||||||
<category>Time</category>
|
<category>Time</category>
|
||||||
<state readOnly="true"/>
|
<state readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="mode">
|
<channel-type id="mode">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Mode</label>
|
<label>Mode</label>
|
||||||
<description>Operation mode of the air unit: Off, Demand, Manual, Program</description>
|
<description>Operation mode of the air unit: Off, Demand, Manual, Program</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Mode</tag>
|
||||||
|
</tags>
|
||||||
<state>
|
<state>
|
||||||
<options>
|
<options>
|
||||||
<option value="DEMAND">Demand</option>
|
<option value="DEMAND">Demand</option>
|
||||||
|
@ -160,13 +153,19 @@
|
||||||
</options>
|
</options>
|
||||||
</state>
|
</state>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="manualFanStep">
|
|
||||||
|
<channel-type id="manual-fan-step">
|
||||||
<item-type>Dimmer</item-type>
|
<item-type>Dimmer</item-type>
|
||||||
<label>Manual Fan Step</label>
|
<label>Manual Fan Step</label>
|
||||||
<description>Controls 10-step setting of the fan when operation mode is manual</description>
|
<description>Controls 10-step setting of the fan when operation mode is manual</description>
|
||||||
<category>Fan</category>
|
<category>Fan</category>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Level</tag>
|
||||||
|
</tags>
|
||||||
<state step="10" min="0" max="100"/>
|
<state step="10" min="0" max="100"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="supplyFanSpeed">
|
<channel-type id="supplyFanSpeed">
|
||||||
<item-type unitHint="rpm">Number:Frequency</item-type>
|
<item-type unitHint="rpm">Number:Frequency</item-type>
|
||||||
<label>Supply Fan Speed</label>
|
<label>Supply Fan Speed</label>
|
||||||
|
@ -174,6 +173,7 @@
|
||||||
<category>Fan</category>
|
<category>Fan</category>
|
||||||
<state pattern="%.0f rpm" readOnly="true" min="0"/>
|
<state pattern="%.0f rpm" readOnly="true" min="0"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="extractFanSpeed">
|
<channel-type id="extractFanSpeed">
|
||||||
<item-type unitHint="rpm">Number:Frequency</item-type>
|
<item-type unitHint="rpm">Number:Frequency</item-type>
|
||||||
<label>Extract Fan Speed</label>
|
<label>Extract Fan Speed</label>
|
||||||
|
@ -181,6 +181,7 @@
|
||||||
<category>Fan</category>
|
<category>Fan</category>
|
||||||
<state pattern="%.0f rpm" readOnly="true" min="0"/>
|
<state pattern="%.0f rpm" readOnly="true" min="0"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="supplyFanStep">
|
<channel-type id="supplyFanStep">
|
||||||
<item-type>Dimmer</item-type>
|
<item-type>Dimmer</item-type>
|
||||||
<label>Supply Fan Step</label>
|
<label>Supply Fan Step</label>
|
||||||
|
@ -188,6 +189,7 @@
|
||||||
<category>Fan</category>
|
<category>Fan</category>
|
||||||
<state step="10" min="0" max="100" readOnly="true"/>
|
<state step="10" min="0" max="100" readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="extractFanStep">
|
<channel-type id="extractFanStep">
|
||||||
<item-type>Dimmer</item-type>
|
<item-type>Dimmer</item-type>
|
||||||
<label>Extract Fan Step</label>
|
<label>Extract Fan Step</label>
|
||||||
|
@ -195,26 +197,44 @@
|
||||||
<category>Fan</category>
|
<category>Fan</category>
|
||||||
<state step="10" min="0" max="100" readOnly="true"/>
|
<state step="10" min="0" max="100" readOnly="true"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="filterPeriod" advanced="true">
|
<channel-type id="filterPeriod" advanced="true">
|
||||||
<item-type>Number</item-type>
|
<item-type>Number</item-type>
|
||||||
<label>Filter Period</label>
|
<label>Filter Period</label>
|
||||||
<description>Number of months between filter replacements</description>
|
<description>Number of months between filter replacements</description>
|
||||||
<state pattern="%d" min="3" max="12"/>
|
<state pattern="%d" min="3" max="12"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="percentage">
|
|
||||||
|
<channel-type id="filter-life">
|
||||||
<item-type>Number</item-type>
|
<item-type>Number</item-type>
|
||||||
<label>Percentage</label>
|
<label>Remaining Filter Life</label>
|
||||||
<description>Read only percentage</description>
|
<description>Remaining life of filter until exchange is necessary</description>
|
||||||
<state pattern="%.0f %%" readOnly="true" min="0" max="100"/>
|
<state pattern="%.0f %%" readOnly="true" min="0" max="100"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="switch">
|
|
||||||
|
<channel-type id="boost">
|
||||||
<item-type>Switch</item-type>
|
<item-type>Switch</item-type>
|
||||||
<label>Something that can be turned on or off</label>
|
<label>Boost</label>
|
||||||
|
<description>Enables fan boost</description>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="temperature">
|
|
||||||
|
<channel-type id="night-cooling">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Night Cooling</label>
|
||||||
|
<description>Enables night cooling</description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="bypass">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Bypass</label>
|
||||||
|
<description>Disables the heat exchange. Useful in summer when room temperature is above target and outside
|
||||||
|
temperature is below target</description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="calculated-temperature">
|
||||||
<item-type>Number:Temperature</item-type>
|
<item-type>Number:Temperature</item-type>
|
||||||
<label>Temperature</label>
|
<label>Calculated Room Temperature</label>
|
||||||
<description>Current temperature</description>
|
<description>Calculated Room Temperature</description>
|
||||||
<category>Temperature</category>
|
<category>Temperature</category>
|
||||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="homewizard"
|
||||||
|
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="hwe-bat">
|
||||||
|
<label>HomeWizard Plug-In Battery</label>
|
||||||
|
<description>This thing provides the measurement data that is available through the API of a HomeWizard Plug-In
|
||||||
|
Battery.</description>
|
||||||
|
|
||||||
|
<channel-groups>
|
||||||
|
<channel-group id="energy" typeId="bat-energy-group"/>
|
||||||
|
</channel-groups>
|
||||||
|
<properties>
|
||||||
|
<property name="thingTypeVersion">1</property>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<config-description-ref uri="thing-type:homewizard:device"/>
|
||||||
|
</thing-type>
|
||||||
|
|
||||||
|
<channel-group-type id="bat-energy-group">
|
||||||
|
<label>Recent Measurements</label>
|
||||||
|
<channels>
|
||||||
|
<channel id="power" typeId="hw-power"/>
|
||||||
|
<channel id="voltage_l1" typeId="hw-voltage"/>
|
||||||
|
<channel id="current" typeId="hw-current"/>
|
||||||
|
<channel id="energy_import" typeId="hw-energy-import"/>
|
||||||
|
<channel id="energy_export" typeId="hw-energy-export"/>
|
||||||
|
<channel id="frequency" typeId="hw-frequency"/>
|
||||||
|
<channel id="state_of_charge" typeId="bat-state-of-charge"/>
|
||||||
|
<channel id="cycles" typeId="bat-cycles"/>
|
||||||
|
</channels>
|
||||||
|
</channel-group-type>
|
||||||
|
|
||||||
|
<channel-type id="bat-state-of-charge">
|
||||||
|
<item-type unitHint="%">Number:Dimensionless</item-type>
|
||||||
|
<label>State of Charge</label>
|
||||||
|
<description>
|
||||||
|
This channel provides access to the current state of charge in percent.
|
||||||
|
</description>
|
||||||
|
<state readOnly="true" pattern="%.0f %unit%"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="bat-cycles">
|
||||||
|
<item-type>Number:Dimensionless</item-type>
|
||||||
|
<label>Number of Cycles</label>
|
||||||
|
<description>
|
||||||
|
This channel provides access to the number of battery cycles.
|
||||||
|
</description>
|
||||||
|
<state readOnly="true" pattern="%.0f"/>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
</thing:thing-descriptions>
|
|
@ -12,11 +12,11 @@
|
||||||
<channel id="power" typeId="system.power"/>
|
<channel id="power" typeId="system.power"/>
|
||||||
<channel id="mute" typeId="system.mute"/>
|
<channel id="mute" typeId="system.mute"/>
|
||||||
<channel id="volume" typeId="system.volume"/>
|
<channel id="volume" typeId="system.volume"/>
|
||||||
<channel id="channel" typeId="channelType"/>
|
<channel id="channel" typeId="channel"/>
|
||||||
<channel id="toast" typeId="toastType"/>
|
<channel id="toast" typeId="toastType"/>
|
||||||
<channel id="mediaPlayer" typeId="system.media-control"/>
|
<channel id="mediaPlayer" typeId="system.media-control"/>
|
||||||
<channel id="mediaStop" typeId="mediaStopType"/>
|
<channel id="mediaStop" typeId="mediaStopType"/>
|
||||||
<channel id="appLauncher" typeId="appLauncherChannelType"/>
|
<channel id="appLauncher" typeId="app-launcher"/>
|
||||||
<channel id="rcButton" typeId="rcButtonType"/>
|
<channel id="rcButton" typeId="rcButtonType"/>
|
||||||
</channels>
|
</channels>
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@
|
||||||
<property name="deviceOS"/>
|
<property name="deviceOS"/>
|
||||||
<property name="deviceOSVersion"/>
|
<property name="deviceOSVersion"/>
|
||||||
<property name="deviceOSReleaseVersion"/>
|
<property name="deviceOSReleaseVersion"/>
|
||||||
|
<property name="thingTypeVersion">1</property>
|
||||||
</properties>
|
</properties>
|
||||||
<representation-property>deviceId</representation-property>
|
<representation-property>deviceId</representation-property>
|
||||||
|
|
||||||
|
@ -33,10 +34,14 @@
|
||||||
<config-description-ref uri="thing-type:lgwebos:WebOSTV"/>
|
<config-description-ref uri="thing-type:lgwebos:WebOSTV"/>
|
||||||
</thing-type>
|
</thing-type>
|
||||||
|
|
||||||
<channel-type id="channelType">
|
<channel-type id="channel">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Channel</label>
|
<label>Channel</label>
|
||||||
<description>Current Channel</description>
|
<description>Current Channel</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Channel</tag>
|
||||||
|
</tags>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="toastType">
|
<channel-type id="toastType">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
|
@ -48,10 +53,14 @@
|
||||||
<label>Stop</label>
|
<label>Stop</label>
|
||||||
<description>Stop Playback</description>
|
<description>Stop Playback</description>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="appLauncherChannelType">
|
<channel-type id="app-launcher">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Application</label>
|
<label>Application</label>
|
||||||
<description>Start application and monitor running applications.</description>
|
<description>Start application and monitor running applications.</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>App</tag>
|
||||||
|
</tags>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="rcButtonType">
|
<channel-type id="rcButtonType">
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
<property name="Serial Number">unknown</property>
|
<property name="Serial Number">unknown</property>
|
||||||
<property name="Device Id">unknown</property>
|
<property name="Device Id">unknown</property>
|
||||||
<property name="Software Version">unknown</property>
|
<property name="Software Version">unknown</property>
|
||||||
<property name="thingTypeVersion">2</property>
|
<property name="thingTypeVersion">3</property>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<representation-property>uuid</representation-property>
|
<representation-property>uuid</representation-property>
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
<property name="Serial Number">unknown</property>
|
<property name="Serial Number">unknown</property>
|
||||||
<property name="Device Id">unknown</property>
|
<property name="Device Id">unknown</property>
|
||||||
<property name="Software Version">unknown</property>
|
<property name="Software Version">unknown</property>
|
||||||
<property name="thingTypeVersion">2</property>
|
<property name="thingTypeVersion">3</property>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<representation-property>uuid</representation-property>
|
<representation-property>uuid</representation-property>
|
||||||
|
@ -159,6 +159,10 @@
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Active App</label>
|
<label>Active App</label>
|
||||||
<description>The Currently Running App on the Roku</description>
|
<description>The Currently Running App on the Roku</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>App</tag>
|
||||||
|
</tags>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="activeAppName">
|
<channel-type id="activeAppName">
|
||||||
|
@ -211,6 +215,10 @@
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Active Channel</label>
|
<label>Active Channel</label>
|
||||||
<description>The TV Channel Currently Selected on the Roku TV</description>
|
<description>The TV Channel Currently Selected on the Roku TV</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Channel</tag>
|
||||||
|
</tags>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="signalMode">
|
<channel-type id="signalMode">
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
<channel id="charge-energy-added" typeId="charge-energy-added"/>
|
<channel id="charge-energy-added" typeId="charge-energy-added"/>
|
||||||
<channel id="charge-limit-soc-standard" typeId="charge-limit-soc-standard"/>
|
<channel id="charge-limit-soc-standard" typeId="charge-limit-soc-standard"/>
|
||||||
<channel id="charge-port" typeId="charge-port"/>
|
<channel id="charge-port" typeId="charge-port"/>
|
||||||
|
<channel id="charge-port-latch" typeId="charge-port-latch"/>
|
||||||
<channel id="charge-rate" typeId="charge-rate"/>
|
<channel id="charge-rate" typeId="charge-rate"/>
|
||||||
<channel id="charger-power" typeId="charger-power"/>
|
<channel id="charger-power" typeId="charger-power"/>
|
||||||
<channel id="charger-voltage" typeId="charger-voltage"/>
|
<channel id="charger-voltage" typeId="charger-voltage"/>
|
||||||
|
@ -83,6 +84,10 @@
|
||||||
<channel id="wiper-blade-heater" typeId="wiper-blade-heater"/>
|
<channel id="wiper-blade-heater" typeId="wiper-blade-heater"/>
|
||||||
</channels>
|
</channels>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<property name="thingTypeVersion">1</property>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<config-description>
|
<config-description>
|
||||||
<parameter name="apiKey" type="text" required="true">
|
<parameter name="apiKey" type="text" required="true">
|
||||||
<label>apiKey</label>
|
<label>apiKey</label>
|
||||||
|
@ -194,6 +199,11 @@
|
||||||
<label>Charge Port</label>
|
<label>Charge Port</label>
|
||||||
<description>Open the Charge Port (ON) or indicates the state of the Charge Port (ON/OFF if Open/Closed)</description>
|
<description>Open the Charge Port (ON) or indicates the state of the Charge Port (ON/OFF if Open/Closed)</description>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
<channel-type id="charge-port-latch">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Charge Port Latch</label>
|
||||||
|
<description>Indicate the Charge Port Latch status, (ON/OFF if latched/unlatched)</description>
|
||||||
|
</channel-type>
|
||||||
<channel-type id="charge-rate" advanced="true">
|
<channel-type id="charge-rate" advanced="true">
|
||||||
<item-type>Number:Speed</item-type>
|
<item-type>Number:Speed</item-type>
|
||||||
<label>Charge Rate</label>
|
<label>Charge Rate</label>
|
||||||
|
|
|
@ -20,6 +20,10 @@
|
||||||
<channel id="dvrStatus" typeId="dvrStatus"/>
|
<channel id="dvrStatus" typeId="dvrStatus"/>
|
||||||
</channels>
|
</channels>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<property name="thingTypeVersion">1</property>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<representation-property>host</representation-property>
|
<representation-property>host</representation-property>
|
||||||
|
|
||||||
<config-description>
|
<config-description>
|
||||||
|
@ -84,6 +88,10 @@
|
||||||
<description>Displays the current channel number. When changed (SETCH), tunes the DVR to the specified channel (unless
|
<description>Displays the current channel number. When changed (SETCH), tunes the DVR to the specified channel (unless
|
||||||
a recording is in progress on all available tuners). The TiVo must be in Live TV mode for this command to work. Type:
|
a recording is in progress on all available tuners). The TiVo must be in Live TV mode for this command to work. Type:
|
||||||
Number (1-9999) [Decimals allowed for OTA sub-channels], DisplayFormat: %d</description>
|
Number (1-9999) [Decimals allowed for OTA sub-channels], DisplayFormat: %d</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Channel</tag>
|
||||||
|
</tags>
|
||||||
<state min="1" max="9999" step="0.1" pattern="%d"/>
|
<state min="1" max="9999" step="0.1" pattern="%d"/>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="channelForce">
|
<channel-type id="channelForce">
|
||||||
|
@ -93,6 +101,10 @@
|
||||||
cancelling any recordings in progress if necessary i.e. all tuners are already in use / recording. The TiVo must be
|
cancelling any recordings in progress if necessary i.e. all tuners are already in use / recording. The TiVo must be
|
||||||
in Live TV mode for this command to work. Type: Number (1-9999) [Decimals allowed for OTA sub-channels],
|
in Live TV mode for this command to work. Type: Number (1-9999) [Decimals allowed for OTA sub-channels],
|
||||||
DisplayFormat: %d</description>
|
DisplayFormat: %d</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>Channel</tag>
|
||||||
|
</tags>
|
||||||
<state min="1" max="9999" step="0.1" pattern="%d"></state>
|
<state min="1" max="9999" step="0.1" pattern="%d"></state>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
<channel-type id="isRecording">
|
<channel-type id="isRecording">
|
||||||
|
|
|
@ -0,0 +1,248 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<thing:thing-descriptions bindingId="tuya"
|
||||||
|
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">
|
||||||
|
|
||||||
|
<!-- Cloud project -->
|
||||||
|
<thing-type id="project">
|
||||||
|
<label>Tuya Cloud Project</label>
|
||||||
|
<description>This thing represents a single cloud project. Needed for discovery.</description>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="username" type="text" required="true">
|
||||||
|
<label>Username</label>
|
||||||
|
<description>Username in Tuya Smart/Smart Life app.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="password" type="text" required="true">
|
||||||
|
<context>password</context>
|
||||||
|
<label>Password</label>
|
||||||
|
<description>Password in Tuya Smart/Smart Life app.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="accessId" type="text" required="true">
|
||||||
|
<label>Access-ID</label>
|
||||||
|
<description>Access ID/Client ID of the Cloud project.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="accessSecret" type="text" required="true">
|
||||||
|
<context>password</context>
|
||||||
|
<label>Access Secret</label>
|
||||||
|
<description>Access Secret/Client Secret of the Cloud project.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="countryCode" type="integer" required="true">
|
||||||
|
<label>Country Code</label>
|
||||||
|
<description>The (telephone) country code used when registering in the app.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="schema" type="text" required="true">
|
||||||
|
<label>App Type</label>
|
||||||
|
<description>The app type (Tuya Smart or SmartLife).</description>
|
||||||
|
<options>
|
||||||
|
<option value="tuyaSmart">Tuya Smart</option>
|
||||||
|
<option value="smartLife">Smart Life</option>
|
||||||
|
</options>
|
||||||
|
<limitToOptions>true</limitToOptions>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="dataCenter" type="text" required="true">
|
||||||
|
<label>Data Center</label>
|
||||||
|
<description>The data center for for your Tuya account</description>
|
||||||
|
<options>
|
||||||
|
<option value="https://openapi.tuyacn.com">China</option>
|
||||||
|
<option value="https://openapi.tuyaus.com">Western America</option>
|
||||||
|
<option value="https://openapi-ueaz.tuyaus.com">Eastern America (Azure/MS)</option>
|
||||||
|
<option value="https://openapi.tuyaeu.com">Central Europe</option>
|
||||||
|
<option value="https://openapi-weaz.tuyaeu.com">Western Europe (Azure/MS)</option>
|
||||||
|
<option value="https://openapi.tuyain.com">India</option>
|
||||||
|
</options>
|
||||||
|
<limitToOptions>true</limitToOptions>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</thing-type>
|
||||||
|
|
||||||
|
<!-- Generic Tuya device -->
|
||||||
|
<thing-type id="tuyaDevice" extensible="color,switch,dimmer,number,string,ir-code">
|
||||||
|
<label>Generic Tuya Device</label>
|
||||||
|
<description>A generic Tuya device. Can be extended with channels.</description>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="deviceId" type="text" required="true">
|
||||||
|
<label>Device ID</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="localKey" type="text" required="true">
|
||||||
|
<label>Device Local Key</label>
|
||||||
|
<context>password</context>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="productId" type="text" required="true">
|
||||||
|
<label>Product ID</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="ip" type="text">
|
||||||
|
<label>IP Address</label>
|
||||||
|
<description>Auto-detected if device is on same subnet or broadcast forwarding configured.</description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="protocol" type="text">
|
||||||
|
<label>Protocol Version</label>
|
||||||
|
<options>
|
||||||
|
<option value="3.1">3.1</option>
|
||||||
|
<option value="3.3">3.3</option>
|
||||||
|
<option value="3.4">3.4</option>
|
||||||
|
</options>
|
||||||
|
<limitToOptions>true</limitToOptions>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="pollingInterval" type="integer" min="10" unit="s">
|
||||||
|
<label>Polling Interval</label>
|
||||||
|
<options>
|
||||||
|
<option value="0">disabled</option>
|
||||||
|
</options>
|
||||||
|
<default>0</default>
|
||||||
|
<limitToOptions>false</limitToOptions>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</thing-type>
|
||||||
|
|
||||||
|
<channel-type id="color">
|
||||||
|
<item-type>Color</item-type>
|
||||||
|
<label>Color</label>
|
||||||
|
|
||||||
|
<category>ColorLight</category>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="dp" type="integer" required="true">
|
||||||
|
<label>Color DP</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="dp2" type="integer">
|
||||||
|
<label>Switch DP</label>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="switch">
|
||||||
|
<item-type>Switch</item-type>
|
||||||
|
<label>Switch</label>
|
||||||
|
|
||||||
|
<category>Switch</category>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="dp" type="integer" required="true">
|
||||||
|
<label>DP</label>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
|
||||||
|
<channel-type id="dimmer">
|
||||||
|
<item-type>Dimmer</item-type>
|
||||||
|
<label>Dimmer</label>
|
||||||
|
|
||||||
|
<category>Light</category>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="dp" type="integer" required="true">
|
||||||
|
<label>Value DP</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="dp2" type="integer">
|
||||||
|
<label>Switch DP</label>
|
||||||
|
<description>Set only on brightness channels.</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="min" type="integer">
|
||||||
|
<label>Minimum</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="max" type="integer">
|
||||||
|
<label>Maximum</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="reversed" type="boolean">
|
||||||
|
<label>Reversed</label>
|
||||||
|
<description>Changes the direction of the scale (e.g. 0 becomes 100, 100 becomes 0).</description>
|
||||||
|
<default>false</default>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="number">
|
||||||
|
<item-type>Number</item-type>
|
||||||
|
<label>Number</label>
|
||||||
|
|
||||||
|
<category>Number</category>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="dp" type="integer" required="true">
|
||||||
|
<label>DP</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="min" type="integer">
|
||||||
|
<label>Minimum</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="max" type="integer">
|
||||||
|
<label>Maximum</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="sendAsString" type="boolean">
|
||||||
|
<label>Send As String</label>
|
||||||
|
<description>Send the value as string instead of number.</description>
|
||||||
|
<default>false</default>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="string">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>String</label>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="dp" type="integer" required="true">
|
||||||
|
<label>DP</label>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="range" type="text">
|
||||||
|
<label>Range</label>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
<channel-type id="ir-code">
|
||||||
|
<item-type>String</item-type>
|
||||||
|
<label>IR Code</label>
|
||||||
|
<description>Supported codes: tuya base64 codes diy mode, nec-format codes, samsung-format codes</description>
|
||||||
|
|
||||||
|
<config-description>
|
||||||
|
<parameter name="irType" type="text" required="true">
|
||||||
|
<label>IR Code format</label>
|
||||||
|
<options>
|
||||||
|
<option value="base64">Tuya DIY-mode</option>
|
||||||
|
<option value="tuya-head">Tuya Codes Library (check Advanced options)</option>
|
||||||
|
<option value="nec">NEC</option>
|
||||||
|
<option value="samsung">Samsung</option>
|
||||||
|
</options>
|
||||||
|
<limitToOptions>true</limitToOptions>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="activeListen" type="boolean" required="false">
|
||||||
|
<label>Active Listening</label>
|
||||||
|
<description>Device will be always in learning mode. After send command with key code device stays in the learning
|
||||||
|
mode</description>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="irCode" type="text" required="false">
|
||||||
|
<label>IR Code</label>
|
||||||
|
<description>Only for Tuya Codes Library: Decoding parameter</description>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="irSendDelay" type="integer" required="false">
|
||||||
|
<label>Send delay</label>
|
||||||
|
<description>Only for Tuya Codes Library: Send delay</description>
|
||||||
|
<default>300</default>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="irCodeType" type="integer" required="false">
|
||||||
|
<label>Type</label>
|
||||||
|
<description>Only for Tuya Codes Library: Code library label</description>
|
||||||
|
<default>0</default>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
<parameter name="dp" type="integer" required="false">
|
||||||
|
<label>DP Study Key</label>
|
||||||
|
<description>DP number for study key. Uses for receive key code in learning mode</description>
|
||||||
|
<default>2</default>
|
||||||
|
<advanced>true</advanced>
|
||||||
|
</parameter>
|
||||||
|
</config-description>
|
||||||
|
</channel-type>
|
||||||
|
|
||||||
|
</thing:thing-descriptions>
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<property name="modelId">unknown</property>
|
<property name="modelId">unknown</property>
|
||||||
|
<property name="thingTypeVersion">1</property>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<representation-property>uuid</representation-property>
|
<representation-property>uuid</representation-property>
|
||||||
|
@ -65,6 +66,10 @@
|
||||||
<item-type>String</item-type>
|
<item-type>String</item-type>
|
||||||
<label>Active App</label>
|
<label>Active App</label>
|
||||||
<description>The currently running App on the TV</description>
|
<description>The currently running App on the TV</description>
|
||||||
|
<tags>
|
||||||
|
<tag>Control</tag>
|
||||||
|
<tag>App</tag>
|
||||||
|
</tags>
|
||||||
</channel-type>
|
</channel-type>
|
||||||
|
|
||||||
<channel-type id="control">
|
<channel-type id="control">
|
||||||
|
|
|
@ -1,3 +1,16 @@
|
||||||
|
## Recommended Java providers ## March 9, 2025
|
||||||
|
As we approach the release of openHAB 5 in the summer, we have added
|
||||||
|
support for Java 21, which will be a prerequisite for openHAB 5. With that
|
||||||
|
we recommend installing your distribution's stable version of Java 21 from
|
||||||
|
the openJDK package, when possible.
|
||||||
|
|
||||||
|
At the time of writing, there is no stable version of Java 21 available for
|
||||||
|
RaspiOS, as such our recommended alternative is to use the Temurin 21 build
|
||||||
|
of Java which is know to be well supported and stable.
|
||||||
|
|
||||||
|
These are the supported ways of installing Java for openHAB on openHABian
|
||||||
|
and both can be executed from Menu option 45.
|
||||||
|
|
||||||
## Frontail removed ## December 18, 2024
|
## Frontail removed ## December 18, 2024
|
||||||
We suggest removal of the frontail log-viewer package on all systems with
|
We suggest removal of the frontail log-viewer package on all systems with
|
||||||
openHAB 4.3+. There is still an option to keep it or install it however it
|
openHAB 4.3+. There is still an option to keep it or install it however it
|
||||||
|
|
Loading…
Reference in New Issue