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)
|
||||
- [Item Builder](#item-builder)
|
||||
- [Things](#things)
|
||||
- [Thing Builder](#thing-builder)
|
||||
- [Actions](#actions)
|
||||
- [Logging](#logging)
|
||||
- [Timers](#timers)
|
||||
|
@ -95,7 +96,7 @@ Additional [example rules are available](https://openhab.github.io/openhab-jruby
|
|||
- [Time](#time)
|
||||
- [Ephemeris](#ephemeris)
|
||||
- [Rules, Scripts, and Scenes](#rules-scripts-and-scenes)
|
||||
- [Gems](#gems)
|
||||
- [Gems with Inline Bundler](#gems-with-inline-bundler)
|
||||
- [Shared Code](#shared-code)
|
||||
- [Transformations](#transformations)
|
||||
- [Profile](#profile)
|
||||
|
@ -111,6 +112,7 @@ Additional [example rules are available](https://openhab.github.io/openhab-jruby
|
|||
- [openHAB System Started](#openhab-system-started)
|
||||
- [Cron Trigger](#cron-trigger)
|
||||
- [DateTimeItem Trigger](#datetimeitem-trigger)
|
||||
- [File and Directory Change Trigger](#file-and-directory-change-trigger)
|
||||
- [Other Triggers](#other-triggers)
|
||||
- [Combining Multiple Triggers](#combining-multiple-triggers)
|
||||
- [Combining Multiple Conditions](#combining-multiple-conditions)
|
||||
|
@ -171,7 +173,7 @@ Simply change the `gems` and `require` configuration settings.
|
|||
|
||||
| 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` |
|
||||
| `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` |
|
||||
|
@ -191,7 +193,7 @@ org.openhab.automation.jrubyscripting:require=openhab/dsl
|
|||
|
||||
Path to where Ruby Gems will be installed to and loaded from.
|
||||
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
|
||||
|
||||
|
@ -293,8 +295,8 @@ Theoretically you could even use a system start trigger with a UI rule, and then
|
|||
|
||||
### File Based Scripts
|
||||
|
||||
The JRuby Scripting addon will load scripts from `automation/ruby` in the user configuration directory.
|
||||
The system will automatically reload scripts when changes are detected to files.
|
||||
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 to files are detected.
|
||||
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.
|
||||
|
||||
|
@ -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).
|
||||
|
||||
| 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` |
|
||||
| `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` |
|
||||
|
@ -768,6 +770,29 @@ model_id = things["fronius:meter:mybridge:mymeter"].properties["modelId"]
|
|||
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
|
||||
|
||||
[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
|
||||
Time.at(1669684403).to_zoned_date_time
|
||||
# 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
|
||||
|
@ -1299,7 +1339,7 @@ The above script can be executed, passing it the `maxTemperature` argument from
|
|||
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.
|
||||
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`.
|
||||
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
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
#### 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
|
||||
|
||||
There are more triggers supported by this library.
|
||||
|
|
|
@ -5,6 +5,7 @@ title: BambuLab - Bindings
|
|||
type: binding
|
||||
description: "This addon supports connecting with BambuLab 3D printers in local mode."
|
||||
since: 3x
|
||||
logo: images/addons/bambulab.png
|
||||
install: auto
|
||||
---
|
||||
|
||||
|
@ -14,6 +15,8 @@ install: auto
|
|||
|
||||
# BambuLab Binding
|
||||
|
||||
<AddonLogo />
|
||||
|
||||
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.
|
||||
|
||||
|
@ -72,44 +75,49 @@ Use `us.mqtt.bambulab.com` as the hostname.
|
|||
|
||||
## Thing Configuration
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
|--------------|---------|----------|-------------------------------------------------------------------------------------------------|
|
||||
| `serial` | Text | Yes | Unique serial number of the printer. |
|
||||
| `scheme` | Text | No | URI scheme. (Advanced) |
|
||||
| `hostname` | Text | Yes | IP address of the printer or `us.mqtt.bambulab.com` for cloud mode. |
|
||||
| `port` | Integer | No | URI port. (Advanced) |
|
||||
| `username` | 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. |
|
||||
| Parameter | Group | Type | Required | Description |
|
||||
|---------------------|--------|---------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `series` | N/A | Text | Yes | `A`, `P` or `X` depending on your printer series. |
|
||||
| `serial` | N/A | Text | Yes | Unique serial number of the printer. |
|
||||
| `hostname` | N/A | Text | Yes | IP address of the printer or `us.mqtt.bambulab.com` for cloud mode. |
|
||||
| `accessCode` | N/A | Text | Yes | Access code for the printer. The method of obtaining this varies between local and cloud modes. |
|
||||
| `username` | N/A | Text | No | `bblp` for local mode or your Bambu Lab user (starting with `u_`). (Advanced) |
|
||||
| `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
|
||||
|
||||
| Channel ID | Type | Description |
|
||||
|---------------------------|---------------------|------------------------------------------------------------------|
|
||||
| `nozzle-temperature` | Temperature Channel | Current 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-target-temperature` | Temperature Channel | Target temperature of the heated bed. |
|
||||
| `chamber-temperature` | Temperature Channel | Current temperature inside the printer chamber. |
|
||||
| `mc-print-stage` | String Channel | Current stage of the print process. |
|
||||
| `mc-percent` | Percent Channel | Percentage of the print completed. |
|
||||
| `mc-remaining-time` | Number Channel | Estimated time remaining for the print (in seconds). |
|
||||
| `wifi-signal` | WiFi Channel | Current WiFi signal strength. |
|
||||
| `bed-type` | String Channel | Type of the printer's heated bed. |
|
||||
| `gcode-file` | String Channel | Name of the currently loaded G-code file. |
|
||||
| `gcode-state` | String Channel | Current state of the G-code execution. |
|
||||
| `reason` | String Channel | Reason for pausing or stopping the print. |
|
||||
| `result` | String Channel | Final result or status of the print job. |
|
||||
| Channel ID | Type | Description |
|
||||
|------------------------------|---------------------|------------------------------------------------------------------|
|
||||
| `nozzle-temperature` | Temperature Channel | Current 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-target-temperature` | Temperature Channel | Target temperature of the heated bed. |
|
||||
| `chamber-temperature` | Temperature Channel | Current temperature inside the printer chamber. |
|
||||
| `mc-print-stage` | String Channel | Current stage of the print process. |
|
||||
| `mc-percent` | Percent Channel | Percentage of the print completed. |
|
||||
| `mc-remaining-time` | Number Channel | Estimated time remaining for the print (in seconds). |
|
||||
| `wifi-signal` | WiFi Channel | Current WiFi signal strength. |
|
||||
| `bed-type` | String Channel | Type of the printer's heated bed. |
|
||||
| `gcode-file` | String Channel | Name of the currently loaded G-code file. |
|
||||
| `gcode-state` | String Channel | Current state of the G-code execution. |
|
||||
| `reason` | String Channel | Reason for pausing or stopping the print. |
|
||||
| `result` | String Channel | Final result or status of the print job. |
|
||||
| `gcode-file-prepare-percent` | Percent Channel | Percentage of G-code file preparation completed. |
|
||||
| `big-fan1-speed` | Number Channel | Speed of the first large cooling fan (RPM). |
|
||||
| `big-fan2-speed` | Number Channel | Speed of the second large cooling fan (RPM). |
|
||||
| `big-fan1-speed` | Number Channel | Speed of the first large cooling fan (RPM). |
|
||||
| `big-fan2-speed` | Number Channel | Speed of the second large cooling fan (RPM). |
|
||||
| `heat-break-fan-speed` | Number Channel | Speed of the heat break cooling fan (RPM). |
|
||||
| `layer-num` | Number Channel | Current layer being printed. |
|
||||
| `speed-level` | Number Channel | Current speed setting of the print job. |
|
||||
| `time-laps` | Boolean Channel | Indicates whether time-lapse recording is enabled. |
|
||||
| `use-ams` | Boolean Channel | Indicates whether the Automatic Material System (AMS) is active. |
|
||||
| `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-work` | On/Off Command | Controls the LED lighting for the work area. |
|
||||
| `layer-num` | Number Channel | Current layer being printed. |
|
||||
| `speed-level` | Number Channel | Current speed setting of the print job. |
|
||||
| `time-laps` | Boolean Channel | Indicates whether time-lapse recording is enabled. |
|
||||
| `use-ams` | Boolean Channel | Indicates whether the Automatic Material System (AMS) is active. |
|
||||
| `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-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
|
||||
|
||||
|
@ -123,7 +131,7 @@ Thing bambulab:printer:myprinter "My BambuLab Printer" @ "3D Printing Area" [
|
|||
]
|
||||
```
|
||||
|
||||
### `bambulab.items` Exmaple
|
||||
### `bambulab.items` Example
|
||||
|
||||
```java
|
||||
Number:Temperature NozzleTemperature "Nozzle Temperature [%.1f °C]" { channel="bambulab:printer:myprinter:nozzle-temperature" }
|
||||
|
|
|
@ -35,10 +35,10 @@ 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/)
|
||||
|
||||
| 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. |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
| 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 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. |
|
||||
|
||||
### [Binary Sensor](https://www.home-assistant.io/integrations/binary_sensor.mqtt/)
|
||||
|
||||
|
@ -49,10 +49,10 @@ Note also that just because these tables show that a channel may be read/write,
|
|||
|
||||
### [Button](https://www.home-assistant.io/integrations/button.mqtt/)
|
||||
|
||||
| Channel ID | Type | R/W | Description |
|
||||
|-----------------|--------|-----|------------------------------------------------------------------------------|
|
||||
| button | String | WO | Inspect the state description for the proper string to send (usually PRESS). |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
| Channel ID | Type | R/W | Description |
|
||||
|-----------------|--------|-----|-----------------------------------------------------|
|
||||
| button | String | WO | Send PRESS to activate the button. |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
|
||||
### [Camera](https://www.home-assistant.io/integrations/camera.mqtt/)<br>
|
||||
|
||||
|
@ -152,11 +152,11 @@ If a device has multiple device triggers for the same subtype (the particular bu
|
|||
|
||||
### [Lock](https://www.home-assistant.io/integrations/lock.mqtt/)
|
||||
|
||||
| Channel ID | Type | R/W | Description |
|
||||
|-----------------|--------|-----|-----------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 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. |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
| Channel ID | Type | R/W | Description |
|
||||
|-----------------|--------|-----|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 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 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. |
|
||||
|
||||
### [Number](https://www.home-assistant.io/integrations/number.mqtt/)
|
||||
|
||||
|
@ -167,10 +167,12 @@ If a device has multiple device triggers for the same subtype (the particular bu
|
|||
|
||||
### [Scene](https://www.home-assistant.io/integrations/scene.mqtt/)
|
||||
|
||||
| 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). |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
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 |
|
||||
|-----------------|--------|-----|------------------------------------------------------------------------------------------------|
|
||||
| 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. |
|
||||
|
||||
### [Select](https://www.home-assistant.io/integrations/select.mqtt/)
|
||||
|
||||
|
@ -217,21 +219,22 @@ The `json-attributes` channel for this component will always appear as part of c
|
|||
|
||||
### [Vacuum](https://www.home-assistant.io/integrations/vacuum.mqtt/)
|
||||
|
||||
| Channel ID | Type | R/W | Description |
|
||||
|-----------------|--------|-----|--------------------------------------------------------------------------------------------------|
|
||||
| command | String | WO | Send a command to the vacuum. Inspect the state description for 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. |
|
||||
| battery-level | Dimmer | RO | The vaccum's battery level. |
|
||||
| state | String | RO | The state of the vacuum. One of `cleaning`, `docked`, `paused`, `idle`, `returning`, or `error`. |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
| Channel ID | Type | R/W | Description |
|
||||
|-----------------|--------|-----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 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. |
|
||||
| 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. |
|
||||
| state | String | RO | The state of the vacuum. One of `cleaning`, `docked`, `paused`, `idle`, `returning`, or `error`. |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
|
||||
### [Valve](https://www.home-assistant.io/integrations/valve.mqtt/)
|
||||
|
||||
| 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. |
|
||||
| json-attributes | String | RO | Additional attributes, as a serialized JSON string. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
|
||||
|
||||
## Supported Devices
|
||||
|
|
|
@ -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-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-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 |
|
||||
| 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 |
|
||||
|
@ -155,6 +156,7 @@ Switch TeslaCharge {channel="teslascope:vehicle:mod
|
|||
Dimmer TeslaChargeLimit {channel="teslascope:vehicle:model3:charge-limit"}
|
||||
Number TeslaChargeRate {channel="teslascope:vehicle:model3:charge-rate"}
|
||||
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 TeslaTimeToFullCharge {channel="teslascope:vehicle:model3:time-to-full-charge"}
|
||||
|
||||
|
@ -230,6 +232,7 @@ sitemap main label="Main"
|
|||
Switch item=TeslaCharge label="Charge"
|
||||
Slider item=TeslaChargeLimit label="Charge Limit [%.1f]"
|
||||
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=TeslaPreconditioning label="Preconditioning [%s]" icon=""
|
||||
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. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
|
|
|
@ -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>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
<channel-type id="string-rw">
|
||||
<item-type>String</item-type>
|
||||
<label>RW String Channel</label>
|
||||
</channel-type>
|
||||
<channel-type id="wifi">
|
||||
<item-type unitHint="dBm">Number:Power</item-type>
|
||||
<label>Wi-Fi Signal Strength</label>
|
||||
|
@ -49,6 +53,38 @@
|
|||
<label>Boolean Channel</label>
|
||||
<state readOnly="true"/>
|
||||
</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">
|
||||
<item-type>String</item-type>
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
<label>Bed Type</label>
|
||||
<description>Type of the printer's heated bed.</description>
|
||||
</channel>
|
||||
<channel id="gcode-file" typeId="string">
|
||||
<channel id="gcode-file" typeId="string-rw">
|
||||
<label>G-code File</label>
|
||||
<description>Name of the currently loaded G-code file.</description>
|
||||
</channel>
|
||||
|
@ -85,10 +85,7 @@
|
|||
<label>Current Layer Number</label>
|
||||
<description>Current layer being printed.</description>
|
||||
</channel>
|
||||
<channel id="speed-level" typeId="number">
|
||||
<label>Print Speed Level</label>
|
||||
<description>Current speed setting of the print job.</description>
|
||||
</channel>
|
||||
<channel id="speed-level" typeId="speed-level"/>
|
||||
<channel id="time-laps" typeId="boolean">
|
||||
<label>time-lapse Enabled</label>
|
||||
<description>Indicates whether time-lapse recording is enabled.</description>
|
||||
|
@ -101,6 +98,11 @@
|
|||
<label>Vibration Calibration</label>
|
||||
<description>Indicates whether vibration calibration has been performed.</description>
|
||||
</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 -->
|
||||
<channel id="led-chamber" typeId="on-off-command">
|
||||
|
@ -115,41 +117,75 @@
|
|||
|
||||
<representation-property>serial</representation-property>
|
||||
<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">
|
||||
<label>Serial Number</label>
|
||||
<description>Unique serial number of the printer.</description>
|
||||
</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">
|
||||
<label>Hostname</label>
|
||||
<description>IP address of the printer or `us.mqtt.bambulab.com` for cloud mode.</description>
|
||||
<context>network-address</context>
|
||||
</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">
|
||||
<label>Access Code</label>
|
||||
<description>Access code of the printer. The method of obtaining it differs for local and cloud modes.
|
||||
</description>
|
||||
<context>password</context>
|
||||
</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>
|
||||
</thing-type>
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
<channels>
|
||||
<channel id="power" typeId="acunit-power"/>
|
||||
<channel id="settemp" typeId="acunit-settemp"/>
|
||||
<channel id="indoortemp" typeId="acunit-indoortemp"/>
|
||||
<channel id="outdoortemp" typeId="acunit-outdoortemp"/>
|
||||
<channel id="indoortemp" typeId="system.indoor-temperature"/>
|
||||
<channel id="outdoortemp" typeId="system.outdoor-temperature"/>
|
||||
<channel id="humidity" typeId="acunit-humidity"/>
|
||||
<channel id="mode" typeId="acunit-mode"/>
|
||||
<channel id="homekitmode" typeId="acunit-homekitmode"/>
|
||||
|
@ -57,7 +57,7 @@
|
|||
</channels>
|
||||
|
||||
<properties>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
<property name="thingTypeVersion">2</property>
|
||||
</properties>
|
||||
<representation-property>host</representation-property>
|
||||
<config-description-ref uri="thing-type:daikin:config"/>
|
||||
|
@ -70,8 +70,8 @@
|
|||
<channels>
|
||||
<channel id="power" typeId="acunit-power"/>
|
||||
<channel id="settemp" typeId="acunit-settemp"/>
|
||||
<channel id="indoortemp" typeId="acunit-indoortemp"/>
|
||||
<channel id="outdoortemp" typeId="acunit-outdoortemp"/>
|
||||
<channel id="indoortemp" typeId="system.indoor-temperature"/>
|
||||
<channel id="outdoortemp" typeId="system.outdoor-temperature"/>
|
||||
<channel id="mode" typeId="acunit-mode"/>
|
||||
<channel id="homekitmode" typeId="acunit-homekitmode"/>
|
||||
<channel id="airbasefanspeed" typeId="airbase-acunit-fan"/>
|
||||
|
@ -85,6 +85,9 @@
|
|||
<channel id="zone8" typeId="airbase-acunit-zone8"/>
|
||||
</channels>
|
||||
|
||||
<properties>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
</properties>
|
||||
<representation-property>host</representation-property>
|
||||
<config-description-ref uri="thing-type:daikin:config"/>
|
||||
</thing-type>
|
||||
|
@ -94,6 +97,10 @@
|
|||
<label>Power</label>
|
||||
<description>Power for the AC unit</description>
|
||||
<category>Switch</category>
|
||||
<tags>
|
||||
<tag>Switch</tag>
|
||||
<tag>Power</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -102,26 +109,14 @@
|
|||
<label>Set Point</label>
|
||||
<description>The set point temperature</description>
|
||||
<category>Temperature</category>
|
||||
<tags>
|
||||
<tag>Setpoint</tag>
|
||||
<tag>Temperature</tag>
|
||||
</tags>
|
||||
<state pattern="%.1f %unit%" step="0.5"/>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</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">
|
||||
<item-type unitHint="%">Number:Dimensionless</item-type>
|
||||
<label>Indoor Humidity</label>
|
||||
|
@ -134,6 +129,10 @@
|
|||
<item-type>String</item-type>
|
||||
<label>Mode</label>
|
||||
<description>Current mode of the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Mode</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="AUTO">auto</option>
|
||||
|
@ -165,6 +164,10 @@
|
|||
<item-type>String</item-type>
|
||||
<label>Fan</label>
|
||||
<description>Current fan speed setting of the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Level</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="AUTO">auto</option>
|
||||
|
@ -471,6 +474,10 @@
|
|||
<item-type>String</item-type>
|
||||
<label>Fan</label>
|
||||
<description>Current fan speed setting of the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Level</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -478,6 +485,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 1</label>
|
||||
<description>Zone 1 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -485,6 +496,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 2</label>
|
||||
<description>Zone 2 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -492,6 +507,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 3</label>
|
||||
<description>Zone 3 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -499,6 +518,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 4</label>
|
||||
<description>Zone 4 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -506,6 +529,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 5</label>
|
||||
<description>Zone 5 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -513,6 +540,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 6</label>
|
||||
<description>Zone 6 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -520,6 +551,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 7</label>
|
||||
<description>Zone 7 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
@ -527,6 +562,10 @@
|
|||
<item-type>Switch</item-type>
|
||||
<label>Zone 8</label>
|
||||
<description>Zone 8 for the AC unit</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Airflow</tag>
|
||||
</tags>
|
||||
<autoUpdatePolicy>veto</autoUpdatePolicy>
|
||||
</channel-type>
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<properties>
|
||||
<property name="vendor">Danfoss</property>
|
||||
<property name="thingTypeVersion">3</property>
|
||||
<property name="thingTypeVersion">4</property>
|
||||
</properties>
|
||||
|
||||
<representation-property>serialNumber</representation-property>
|
||||
|
@ -58,39 +58,32 @@
|
|||
<channels>
|
||||
<channel id="current_time" typeId="currentTime"/>
|
||||
<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="extract_fan_speed" typeId="extractFanSpeed"/>
|
||||
<channel id="supply_fan_step" typeId="supplyFanStep"/>
|
||||
<channel id="extract_fan_step" typeId="extractFanStep"/>
|
||||
<channel id="boost" typeId="switch">
|
||||
<label>Boost</label>
|
||||
<description>Enables fan boost</description>
|
||||
</channel>
|
||||
<channel id="night_cooling" typeId="switch">
|
||||
<label>Night Cooling</label>
|
||||
<description>Enables night cooling</description>
|
||||
</channel>
|
||||
<channel id="boost" typeId="boost"/>
|
||||
<channel id="night_cooling" typeId="night-cooling"/>
|
||||
</channels>
|
||||
</channel-group-type>
|
||||
|
||||
<channel-group-type id="temps">
|
||||
<label>Temperatures</label>
|
||||
<category>Temperature</category>
|
||||
<channels>
|
||||
<channel id="room_temp" typeId="temperature">
|
||||
<channel id="room_temp" typeId="system.indoor-temperature">
|
||||
<label>Room Temperature</label>
|
||||
<description>Temperature of the air in the room of the Air Dial</description>
|
||||
</channel>
|
||||
<channel id="room_temp_calculated" typeId="temperature">
|
||||
<label>Calculated Room Temperature</label>
|
||||
<description>Calculated Room Temperature</description>
|
||||
</channel>
|
||||
<channel id="room_temp_calculated" typeId="calculated-temperature"/>
|
||||
<channel id="outdoor_temp" typeId="system.outdoor-temperature">
|
||||
<label>Outdoor Temperature</label>
|
||||
<description>Temperature of the air outside</description>
|
||||
</channel>
|
||||
</channels>
|
||||
</channel-group-type>
|
||||
|
||||
<channel-group-type id="humidity">
|
||||
<label>Humidity</label>
|
||||
<channels>
|
||||
|
@ -100,30 +93,28 @@
|
|||
</channel>
|
||||
</channels>
|
||||
</channel-group-type>
|
||||
|
||||
<channel-group-type id="recuperator">
|
||||
<label>Recuperator</label>
|
||||
<description>Heat exchaning device in the Air Unit</description>
|
||||
<channels>
|
||||
<channel id="bypass" typeId="switch">
|
||||
<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="bypass" typeId="bypass"/>
|
||||
<channel id="defrost" typeId="defrost"/>
|
||||
<channel id="supply_temp" typeId="temperature">
|
||||
<channel id="supply_temp" typeId="system.indoor-temperature">
|
||||
<label>Supply Air Temperature</label>
|
||||
<description>Temperature of air which is passed to the rooms</description>
|
||||
</channel>
|
||||
<channel id="extract_temp" typeId="temperature">
|
||||
<channel id="extract_temp" typeId="system.indoor-temperature">
|
||||
<label>Extract Air Temperature</label>
|
||||
<description>Temperature of the air as extracted from the rooms</description>
|
||||
</channel>
|
||||
<channel id="exhaust_temp" typeId="temperature">
|
||||
<channel id="exhaust_temp" typeId="system.outdoor-temperature">
|
||||
<label>Exhaust Air Temperature</label>
|
||||
<description>Temperature of the air when pushed outside</description>
|
||||
</channel>
|
||||
</channels>
|
||||
</channel-group-type>
|
||||
|
||||
<channel-group-type id="service">
|
||||
<label>Service</label>
|
||||
<channels>
|
||||
|
@ -131,10 +122,7 @@
|
|||
<label>Battery Life</label>
|
||||
<description>Remaining Air Dial Battery Level</description>
|
||||
</channel>
|
||||
<channel id="filter_life" typeId="percentage">
|
||||
<label>Remaining Filter Life</label>
|
||||
<description>Remaining life of filter until exchange is necessary</description>
|
||||
</channel>
|
||||
<channel id="filter_life" typeId="filter-life"/>
|
||||
<channel id="filter_period" typeId="filterPeriod"/>
|
||||
</channels>
|
||||
</channel-group-type>
|
||||
|
@ -147,10 +135,15 @@
|
|||
<category>Time</category>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="mode">
|
||||
<item-type>String</item-type>
|
||||
<label>Mode</label>
|
||||
<description>Operation mode of the air unit: Off, Demand, Manual, Program</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Mode</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="DEMAND">Demand</option>
|
||||
|
@ -160,13 +153,19 @@
|
|||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
<channel-type id="manualFanStep">
|
||||
|
||||
<channel-type id="manual-fan-step">
|
||||
<item-type>Dimmer</item-type>
|
||||
<label>Manual Fan Step</label>
|
||||
<description>Controls 10-step setting of the fan when operation mode is manual</description>
|
||||
<category>Fan</category>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Level</tag>
|
||||
</tags>
|
||||
<state step="10" min="0" max="100"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="supplyFanSpeed">
|
||||
<item-type unitHint="rpm">Number:Frequency</item-type>
|
||||
<label>Supply Fan Speed</label>
|
||||
|
@ -174,6 +173,7 @@
|
|||
<category>Fan</category>
|
||||
<state pattern="%.0f rpm" readOnly="true" min="0"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="extractFanSpeed">
|
||||
<item-type unitHint="rpm">Number:Frequency</item-type>
|
||||
<label>Extract Fan Speed</label>
|
||||
|
@ -181,6 +181,7 @@
|
|||
<category>Fan</category>
|
||||
<state pattern="%.0f rpm" readOnly="true" min="0"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="supplyFanStep">
|
||||
<item-type>Dimmer</item-type>
|
||||
<label>Supply Fan Step</label>
|
||||
|
@ -188,6 +189,7 @@
|
|||
<category>Fan</category>
|
||||
<state step="10" min="0" max="100" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="extractFanStep">
|
||||
<item-type>Dimmer</item-type>
|
||||
<label>Extract Fan Step</label>
|
||||
|
@ -195,26 +197,44 @@
|
|||
<category>Fan</category>
|
||||
<state step="10" min="0" max="100" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="filterPeriod" advanced="true">
|
||||
<item-type>Number</item-type>
|
||||
<label>Filter Period</label>
|
||||
<description>Number of months between filter replacements</description>
|
||||
<state pattern="%d" min="3" max="12"/>
|
||||
</channel-type>
|
||||
<channel-type id="percentage">
|
||||
|
||||
<channel-type id="filter-life">
|
||||
<item-type>Number</item-type>
|
||||
<label>Percentage</label>
|
||||
<description>Read only percentage</description>
|
||||
<label>Remaining Filter Life</label>
|
||||
<description>Remaining life of filter until exchange is necessary</description>
|
||||
<state pattern="%.0f %%" readOnly="true" min="0" max="100"/>
|
||||
</channel-type>
|
||||
<channel-type id="switch">
|
||||
|
||||
<channel-type id="boost">
|
||||
<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 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>
|
||||
<label>Temperature</label>
|
||||
<description>Current temperature</description>
|
||||
<label>Calculated Room Temperature</label>
|
||||
<description>Calculated Room Temperature</description>
|
||||
<category>Temperature</category>
|
||||
<state readOnly="true" pattern="%.1f %unit%"/>
|
||||
</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="mute" typeId="system.mute"/>
|
||||
<channel id="volume" typeId="system.volume"/>
|
||||
<channel id="channel" typeId="channelType"/>
|
||||
<channel id="channel" typeId="channel"/>
|
||||
<channel id="toast" typeId="toastType"/>
|
||||
<channel id="mediaPlayer" typeId="system.media-control"/>
|
||||
<channel id="mediaStop" typeId="mediaStopType"/>
|
||||
<channel id="appLauncher" typeId="appLauncherChannelType"/>
|
||||
<channel id="appLauncher" typeId="app-launcher"/>
|
||||
<channel id="rcButton" typeId="rcButtonType"/>
|
||||
</channels>
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
|||
<property name="deviceOS"/>
|
||||
<property name="deviceOSVersion"/>
|
||||
<property name="deviceOSReleaseVersion"/>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
</properties>
|
||||
<representation-property>deviceId</representation-property>
|
||||
|
||||
|
@ -33,10 +34,14 @@
|
|||
<config-description-ref uri="thing-type:lgwebos:WebOSTV"/>
|
||||
</thing-type>
|
||||
|
||||
<channel-type id="channelType">
|
||||
<channel-type id="channel">
|
||||
<item-type>String</item-type>
|
||||
<label>Channel</label>
|
||||
<description>Current Channel</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Channel</tag>
|
||||
</tags>
|
||||
</channel-type>
|
||||
<channel-type id="toastType">
|
||||
<item-type>String</item-type>
|
||||
|
@ -48,10 +53,14 @@
|
|||
<label>Stop</label>
|
||||
<description>Stop Playback</description>
|
||||
</channel-type>
|
||||
<channel-type id="appLauncherChannelType">
|
||||
<channel-type id="app-launcher">
|
||||
<item-type>String</item-type>
|
||||
<label>Application</label>
|
||||
<description>Start application and monitor running applications.</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>App</tag>
|
||||
</tags>
|
||||
</channel-type>
|
||||
<channel-type id="rcButtonType">
|
||||
<item-type>String</item-type>
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<property name="Serial Number">unknown</property>
|
||||
<property name="Device Id">unknown</property>
|
||||
<property name="Software Version">unknown</property>
|
||||
<property name="thingTypeVersion">2</property>
|
||||
<property name="thingTypeVersion">3</property>
|
||||
</properties>
|
||||
|
||||
<representation-property>uuid</representation-property>
|
||||
|
@ -73,7 +73,7 @@
|
|||
<property name="Serial Number">unknown</property>
|
||||
<property name="Device Id">unknown</property>
|
||||
<property name="Software Version">unknown</property>
|
||||
<property name="thingTypeVersion">2</property>
|
||||
<property name="thingTypeVersion">3</property>
|
||||
</properties>
|
||||
|
||||
<representation-property>uuid</representation-property>
|
||||
|
@ -159,6 +159,10 @@
|
|||
<item-type>String</item-type>
|
||||
<label>Active App</label>
|
||||
<description>The Currently Running App on the Roku</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>App</tag>
|
||||
</tags>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="activeAppName">
|
||||
|
@ -211,6 +215,10 @@
|
|||
<item-type>String</item-type>
|
||||
<label>Active Channel</label>
|
||||
<description>The TV Channel Currently Selected on the Roku TV</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>Channel</tag>
|
||||
</tags>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="signalMode">
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
<channel id="charge-energy-added" typeId="charge-energy-added"/>
|
||||
<channel id="charge-limit-soc-standard" typeId="charge-limit-soc-standard"/>
|
||||
<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="charger-power" typeId="charger-power"/>
|
||||
<channel id="charger-voltage" typeId="charger-voltage"/>
|
||||
|
@ -83,6 +84,10 @@
|
|||
<channel id="wiper-blade-heater" typeId="wiper-blade-heater"/>
|
||||
</channels>
|
||||
|
||||
<properties>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
</properties>
|
||||
|
||||
<config-description>
|
||||
<parameter name="apiKey" type="text" required="true">
|
||||
<label>apiKey</label>
|
||||
|
@ -194,6 +199,11 @@
|
|||
<label>Charge Port</label>
|
||||
<description>Open the Charge Port (ON) or indicates the state of the Charge Port (ON/OFF if Open/Closed)</description>
|
||||
</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">
|
||||
<item-type>Number:Speed</item-type>
|
||||
<label>Charge Rate</label>
|
||||
|
|
|
@ -20,6 +20,10 @@
|
|||
<channel id="dvrStatus" typeId="dvrStatus"/>
|
||||
</channels>
|
||||
|
||||
<properties>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
</properties>
|
||||
|
||||
<representation-property>host</representation-property>
|
||||
|
||||
<config-description>
|
||||
|
@ -84,6 +88,10 @@
|
|||
<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:
|
||||
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"/>
|
||||
</channel-type>
|
||||
<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
|
||||
in Live TV mode for this command to work. Type: 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>
|
||||
</channel-type>
|
||||
<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>
|
||||
<property name="modelId">unknown</property>
|
||||
<property name="thingTypeVersion">1</property>
|
||||
</properties>
|
||||
|
||||
<representation-property>uuid</representation-property>
|
||||
|
@ -65,6 +66,10 @@
|
|||
<item-type>String</item-type>
|
||||
<label>Active App</label>
|
||||
<description>The currently running App on the TV</description>
|
||||
<tags>
|
||||
<tag>Control</tag>
|
||||
<tag>App</tag>
|
||||
</tags>
|
||||
</channel-type>
|
||||
|
||||
<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
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue