mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
Multiple binding markdown fixes (#17422)
Signed-off-by: Leo Siepel <leosiepel@gmail.com> Signed-off-by: Ciprian Pascu <contact@ciprianpascu.ro>
This commit is contained in:
parent
3b8ddf81d1
commit
3b474220fb
@ -23,7 +23,7 @@ For more information on the available APIs in scripts see the [JSR223 Scripting]
|
||||
|
||||
## Code reuse
|
||||
|
||||
One can place *.groovy files with Groovy classes under `automation/groovy` configuration directory.
|
||||
One can place *.groovy files with Groovy classes under `automation/groovy` configuration directory.
|
||||
Those classes can be imported in JSR-223 scripts or the UI rules action with the usual Groovy `import` statement.
|
||||
|
||||
To apply shared code changes, one has to restart the `openHAB Core :: Bundles :: Automation` bundle on the Console or an openHAB instance altogether.
|
||||
|
@ -670,7 +670,7 @@ items.build do
|
||||
|
||||
# dimension Temperature inferred
|
||||
number_item OutdoorTemp, format: "%.1f %unit%", unit: "°F"
|
||||
|
||||
|
||||
# unit lx, dimension Illuminance, format "%s %unit%" inferred
|
||||
number_item OutdoorBrightness, state: 10_000 | "lx"
|
||||
end
|
||||
|
@ -55,7 +55,7 @@ The thing **aha Waste Collection Schedule** provides four channels for the upcom
|
||||
wasteCollection.things
|
||||
|
||||
```java
|
||||
Thing ahawastecollection:collectionSchedule:wasteCollectionSchedule "aha Abfuhrkalender" [ commune="Isernhagen", street="67269@Rosmarinweg+/+Kirchhorst@Kirchhorst", houseNumber="10", houseNumberAddon="", collectionPlace="67269-0010+" ]
|
||||
Thing ahawastecollection:collectionSchedule:wasteCollectionSchedule "aha Abfuhrkalender" [ commune="Isernhagen", street="67269@Rosmarinweg+/+Kirchhorst@Kirchhorst", houseNumber="10", houseNumberAddon="", collectionPlace="67269-0010+" ]
|
||||
```
|
||||
|
||||
wasteCollection.items
|
||||
|
@ -4,7 +4,7 @@ A binding that supports the Australian energy retailer Amber's API (<https://www
|
||||
|
||||
## Supported Things
|
||||
|
||||
- `service` Amber Electric API
|
||||
- `service` Amber Electric API
|
||||
|
||||
## Discovery
|
||||
|
||||
@ -25,7 +25,7 @@ As a minimum, the IP address is needed:
|
||||
| electricity-price | Number:EnergyPrice | Current price to import power from the grid
|
||||
| controlled-load-price | Number:EnergyPrice | Current price to import power for Controlled Load
|
||||
| feed-in-price | Number:EnergyPrice | Current price to export power to the grid
|
||||
| electricity-status | String | Current price status of grid import
|
||||
| electricity-status | String | Current price status of grid import
|
||||
| controlled-load-status | String | Current price status of controlled load import
|
||||
| feed-in-status | String | Current price status of Feed-In
|
||||
| nem-time | String | NEM time of last pricing update
|
||||
@ -53,7 +53,7 @@ String AmberElectric_nemtime { channel="amberelectric:service:AmberElectric:nem-
|
||||
Number AmberElectric_Renewables { channel="amberelectric:service:AmberElectric:renewables" }
|
||||
Switch AmberElectric_Spike { channel="amberelectric:service:AmberElectric:spike" }
|
||||
```
|
||||
|
||||
|
||||
### `amberelectric.sitemap`:
|
||||
|
||||
```perl
|
||||
|
@ -15,7 +15,7 @@ This binding supports two thing types:
|
||||
|
||||
## Discovery
|
||||
|
||||
All relevant thing types should be added automatically to the inbox through the mDNS discovery process.
|
||||
All relevant thing types should be added automatically to the inbox through the mDNS discovery process.
|
||||
|
||||
In the case of the ShieldTV or PhilipsTV, openHAB will likely create an inbox entry for both a GoogleTV and a ShieldTV or PhilipsTV device.
|
||||
Only the ShieldTV or PhilipsTV device should be configured, the GoogleTV can be ignored.
|
||||
@ -24,7 +24,7 @@ This could cause undesired effects.
|
||||
|
||||
## Binding Configuration
|
||||
|
||||
This binding does not require any special configuration files.
|
||||
This binding does not require any special configuration files.
|
||||
|
||||
This binding does require a PIN login process (documented below) upon first connection.
|
||||
|
||||
@ -161,7 +161,7 @@ KEYPRESS will accept the following commands as strings (case sensitive):
|
||||
- KEY_MUTE
|
||||
- KEY_SUBMIT
|
||||
|
||||
The list above causes an instantanious "press and release" of each button.
|
||||
The list above causes an instantanious "press and release" of each button.
|
||||
If you would like to manually control the press and release of each you may append _PRESS and _RELEASE to the end of each.
|
||||
(e.g. KEY_FORWARD_PRESS or KEY_FORWARD_RELEASE)
|
||||
|
||||
@ -169,7 +169,7 @@ You may also send an ASCII character as a single letter to simulate a key entry
|
||||
Use KEY_SUBMIT when full text entry is complete to tell the shield to process the line.
|
||||
KEY_SUBMIT is automatically sent by KEYBOARD when a command is sent to the channel.
|
||||
|
||||
APP will display the currently active app as presented by the AndroidTV.
|
||||
APP will display the currently active app as presented by the AndroidTV.
|
||||
You may also send it a command of the app package name (e.g. com.google.android.youtube.tv) to start/change-to that app.
|
||||
|
||||
KEYCODE values are listed at the bottom of this README.
|
||||
@ -195,11 +195,11 @@ openhab> openhab:androidtv androidtv:googletv:theater keypress KEY_POWER
|
||||
|
||||
## Pin Code Process
|
||||
|
||||
For the AndroidTV to be successfully accessed an on-screen PIN authentication is required on the first connection.
|
||||
For the AndroidTV to be successfully accessed an on-screen PIN authentication is required on the first connection.
|
||||
|
||||
To begin the PIN process, send the text "REQUEST" to the pincode channel while watching your AndroidTV.
|
||||
|
||||
CLI Example Usage:
|
||||
CLI Example Usage:
|
||||
|
||||
```shell
|
||||
openhab> openhab:androidtv androidtv:googletv:theater pincode REQUEST
|
||||
|
@ -123,23 +123,23 @@ Thing argoclima:local:argoHvacLocalDirect "Argo HVAC (connected locally)" @ "Liv
|
||||
Thing argoclima:local:argoHvacLocalDirectEx "Argo HVAC (connected locally) - extended example (with explicit options)" [
|
||||
hostname="192.168.0.3",
|
||||
connectionMode="LOCAL_CONNECTION",
|
||||
refreshInterval=30,
|
||||
refreshInterval=30,
|
||||
hvacListenPort=1001,
|
||||
|
||||
// Schedule options (these are valid for all thing types)
|
||||
schedule1DayOfWeek="[FRI, SAT, SUN, MON]",
|
||||
schedule1OnTime="7:35",
|
||||
schedule1DayOfWeek="[FRI, SAT, SUN, MON]",
|
||||
schedule1OnTime="7:35",
|
||||
schedule1OffTime="18:00",
|
||||
schedule2DayOfWeek="[MON, TUE, WED, THU, FRI]",
|
||||
schedule2DayOfWeek="[MON, TUE, WED, THU, FRI]",
|
||||
schedule2OnTime="15:00",
|
||||
schedule2OffTime="22:00",
|
||||
schedule3DayOfWeek="SUN","SAT", //Alternative syntax for the weekdays list
|
||||
schedule3OnTime="11:00",
|
||||
schedule3OffTime="22:00"
|
||||
schedule3OnTime="11:00",
|
||||
schedule3OffTime="22:00"
|
||||
//,resetToFactoryDefaults=true //This triggers a one-shot command each time the thing
|
||||
// definition is (re)loaded from file.
|
||||
// definition is (re)loaded from file.
|
||||
// Use only intermittently - it is not designed with prolonged
|
||||
// usage via Things text file in mind (mostly a MainUI feature!)
|
||||
// usage via Things text file in mind (mostly a MainUI feature!)
|
||||
]
|
||||
|
||||
//ADVANCED MODES examples
|
||||
@ -153,19 +153,19 @@ Thing argoclima:local:argoHvacLocalWithPassthroughIndirect "Argo HVAC (accessibl
|
||||
Thing argoclima:local:argoHvacLocalWithPassthroughPlusDirectEx "Argo HVAC (accessible both indirectly and directly, via pass-through mode, with explicit options)" [
|
||||
hostname="192.168.0.3", // Direct address of the device (reachable from openHAB)
|
||||
connectionMode="REMOTE_API_PROXY",
|
||||
|
||||
|
||||
hvacListenPort=1001,
|
||||
refreshInterval=30,
|
||||
useLocalConnection=true,
|
||||
|
||||
|
||||
// Stub server-specific
|
||||
stubServerPort=8240,
|
||||
stubServerListenAddresses="7d47:86bd:0bfe:0413:4688:4523:4284:5936","192.168.0.195",
|
||||
includeDeviceSidePasswordsInProperties="MASKED",
|
||||
matchAnyIncomingDeviceIp=false,
|
||||
stubServerPort=8240,
|
||||
stubServerListenAddresses="7d47:86bd:0bfe:0413:4688:4523:4284:5936","192.168.0.195",
|
||||
includeDeviceSidePasswordsInProperties="MASKED",
|
||||
matchAnyIncomingDeviceIp=false,
|
||||
deviceCpuId="deadbeefdeadbeef", // For direct match to a concrete device (optional)
|
||||
localDeviceIP="192.168.4.2", // Address in local subnet (used for indirect request matching)
|
||||
|
||||
|
||||
// Pass-through-specific
|
||||
oemServerAddress="uisetup.ddns.net",
|
||||
oemServerPort=80
|
||||
@ -174,7 +174,7 @@ Thing argoclima:local:argoHvacLocalWithPassthroughPlusDirectEx "Argo HVAC (acces
|
||||
|
||||
Thing argoclima:local:argoHvacLocalWithStub "Argo HVAC (accessible both indirectly and directly with a stub) - **RECOMMENDED MODE**" [
|
||||
hostname="192.168.0.3", // Has to be reachable, since useLocalConnection is true (default)
|
||||
connectionMode="REMOTE_API_STUB",
|
||||
connectionMode="REMOTE_API_STUB",
|
||||
localDeviceIP="192.168.4.2" // Or use matchAnyIncomingDeviceIp=true
|
||||
]
|
||||
```
|
||||
@ -185,11 +185,11 @@ Thing argoclima:local:argoHvacLocalWithStub "Argo HVAC (accessible both indirect
|
||||
Group GArgoClimaHVACRemote "Ulisse 13 DCI ECO - remote mode" ["HVAC"]
|
||||
|
||||
Switch ArgoClimaHVACRemote_Power "Power" <switch> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#power"
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#power"
|
||||
}
|
||||
|
||||
String ArgoClimaHVACRemote_Mode "Mode" <climate> (GArgoClimaHVACRemote) ["Control"] {
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#mode"
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#mode"
|
||||
}
|
||||
|
||||
Number:Temperature ArgoClimaHVACRemote_SetTemperature "Set Temperature" <temperature> (GArgoClimaHVACRemote) ["Temperature", "Setpoint"] {
|
||||
@ -201,27 +201,27 @@ Number:Temperature ArgoClimaHVACRemote_SetTemperature "Set Temperature" <temp
|
||||
}
|
||||
|
||||
Number:Temperature ArgoClimaHVACRemote_CurrentTemperature "Current Temperature" <temperature> (GArgoClimaHVACRemote) ["Temperature", "Measurement"] {
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#current-temperature"
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#current-temperature"
|
||||
}
|
||||
|
||||
String ArgoClimaHVACRemote_FanSpeed "Fan Speed" <fan> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#fan-speed"
|
||||
channel="argoclima:remote:argoHvacRemote:ac-controls#fan-speed"
|
||||
}
|
||||
|
||||
Switch ArgoClimaHVACRemote_EcoMode "Eco Mode" <vacation> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:modes#eco-mode"
|
||||
channel="argoclima:remote:argoHvacRemote:modes#eco-mode"
|
||||
}
|
||||
|
||||
Switch ArgoClimaHVACRemote_TurboMode "Turbo Mode" <party> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:modes#turbo-mode"
|
||||
channel="argoclima:remote:argoHvacRemote:modes#turbo-mode"
|
||||
}
|
||||
|
||||
Switch ArgoClimaHVACRemote_NightMode "Night Mode" <moon> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:modes#night-mode"
|
||||
channel="argoclima:remote:argoHvacRemote:modes#night-mode"
|
||||
}
|
||||
|
||||
String ArgoClimaHVACRemote_ActiveTimer "Active timer" <calendar> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:timers#active-timer"
|
||||
channel="argoclima:remote:argoHvacRemote:timers#active-timer"
|
||||
}
|
||||
|
||||
Number:Time ArgoClimaHVACRemote_DelayTimer "Delay timer value" <time> (GArgoClimaHVACRemote) ["Setpoint"] {
|
||||
@ -233,17 +233,17 @@ Number:Time ArgoClimaHVACRemote_DelayTimer "Delay timer value" <time> (GArgoCl
|
||||
}
|
||||
|
||||
Switch ArgoClimaHVACRemote_IFeelEnabled "Use iFeel Temperature" <network> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:settings#ifeel-enabled"
|
||||
channel="argoclima:remote:argoHvacRemote:settings#ifeel-enabled"
|
||||
}
|
||||
|
||||
Switch ArgoClimaHVACRemote_DeviceLights "Device Lights" <light> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:settings#device-lights"
|
||||
channel="argoclima:remote:argoHvacRemote:settings#device-lights"
|
||||
}
|
||||
|
||||
String ArgoClimaHVACRemote_TemperatureDisplayUnit "Temperature Display Unit []" <settings> (GArgoClimaHVACRemote) {
|
||||
stateDescription="" [ options="SCALE_CELSIUS=°C,SCALE_FAHRENHEIT=°F" ],
|
||||
commandDescription="" [ options="SCALE_CELSIUS=°C,SCALE_FAHRENHEIT=°F" ],
|
||||
channel="argoclima:remote:argoHvacRemote:settings#temperature-display-unit"
|
||||
channel="argoclima:remote:argoHvacRemote:settings#temperature-display-unit"
|
||||
}
|
||||
|
||||
Number:Dimensionless ArgoClimaHVACRemote_EcoPowerLimit "Power limit in eco mode" <price> (GArgoClimaHVACRemote) ["Setpoint"] {
|
||||
@ -255,15 +255,15 @@ Number:Dimensionless ArgoClimaHVACRemote_EcoPowerLimit "Power limit in eco
|
||||
}
|
||||
|
||||
String ArgoClimaHVACRemote_ModeEx "Extended Mode" <heating> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:unsupported#mode-ex"
|
||||
channel="argoclima:remote:argoHvacRemote:unsupported#mode-ex"
|
||||
}
|
||||
|
||||
String ArgoClimaHVACRemote_SwingMode "Airflow Direction" <flow> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:unsupported#swing-mode"
|
||||
channel="argoclima:remote:argoHvacRemote:unsupported#swing-mode"
|
||||
}
|
||||
|
||||
Switch ArgoClimaHVACRemote_FilterMode "Filter Mode" <switch> (GArgoClimaHVACRemote) {
|
||||
channel="argoclima:remote:argoHvacRemote:unsupported#filter-mode"
|
||||
channel="argoclima:remote:argoHvacRemote:unsupported#filter-mode"
|
||||
}
|
||||
```
|
||||
|
||||
@ -284,7 +284,7 @@ Frame label="❄ HVAC Control" {
|
||||
Default item=GArgoClimaHVACRemote label="All settings"
|
||||
}
|
||||
Frame label="⛄ HVAC Modes"
|
||||
{
|
||||
{
|
||||
Switch item=ArgoClimaHVACRemote_TurboMode
|
||||
Switch item=ArgoClimaHVACRemote_NightMode
|
||||
Switch item=ArgoClimaHVACRemote_EcoMode
|
||||
@ -294,7 +294,7 @@ Frame label="⛄ HVAC Modes"
|
||||
}
|
||||
Frame label="⏲ HVAC timers" {
|
||||
Selection item=ArgoClimaHVACRemote_ActiveTimer mappings=[
|
||||
NO_TIMER="No Timer", DELAY_TIMER="Delay Timer",
|
||||
NO_TIMER="No Timer", DELAY_TIMER="Delay Timer",
|
||||
SCHEDULE_TIMER_1="Schedule 1", SCHEDULE_TIMER_2="Schedule 2", SCHEDULE_TIMER_3="Schedule 3"
|
||||
]
|
||||
Setpoint item=ArgoClimaHVACRemote_DelayTimer minValue=10 maxValue=1190 step=10
|
||||
|
@ -17,7 +17,7 @@ This binding supports the following thing types:
|
||||
|
||||
## Discovery
|
||||
|
||||
Supported things should be discovered automatically upon receipt of periodic SDDP announcements from the switch.
|
||||
Supported things should be discovered automatically upon receipt of periodic SDDP announcements from the switch.
|
||||
If the thing is not discovered automatically, login to the switch configuration UI and press the "SDDP" button on the "Network" tab to force the switch to send the SDDP announcement.
|
||||
If "Telnet Login" is enabled in the switch configuration, you will need to set the username and password in the newly discovered thing before a connection can be made.
|
||||
|
||||
|
@ -226,7 +226,7 @@ You will find entries like the attached one.
|
||||
The `identifyer 'tmpFC0F2C-3960B7EE6'` contains the templates AINs you need for using them in rules.
|
||||
|
||||
```text
|
||||
Name 'Demo Template', identifyer 'tmpFC0F2C-3960B7EE6', firmware version '0.1'
|
||||
Name 'Demo Template', identifyer 'tmpFC0F2C-3960B7EE6', firmware version '0.1'
|
||||
[aktive] ID 60013, emc 0x0, model 0x0, grouphash=0x0, devicetype 'avm_home_device_type_template', functionbitmask 0x4000, sortid 0, batt perc 255 low 255, pollinterval 0, polltimeout 0, validchangetime: 0
|
||||
--------------------
|
||||
```
|
||||
@ -276,7 +276,7 @@ demo.items:
|
||||
|
||||
```java
|
||||
String CallState "Call State [%s]" { channel="avmfritz:fritzbox:1:call_state" }
|
||||
Call IncomingCall "Incoming call: [%1$s to %2$s]" { channel="avmfritz:fritzbox:1:incoming_call" }
|
||||
Call IncomingCall "Incoming call: [%1$s to %2$s]" { channel="avmfritz:fritzbox:1:incoming_call" }
|
||||
Call OutgoingCall "Outgoing call: [%1$s to %2$s]" { channel="avmfritz:fritzbox:1:outgoing_call" }
|
||||
Call ActiveCall "Call established [%1$s]" { channel="avmfritz:fritzbox:1:active_call" }
|
||||
String ApplyTemplate "Apply template" { channel="avmfritz:fritzbox:1:apply_template" }
|
||||
@ -346,7 +346,7 @@ sitemap demo label="Main Menu" {
|
||||
Text item=COMETDECTBattery icon="battery"
|
||||
Switch item=COMETDECTBatteryLow icon="lowbattery"
|
||||
}
|
||||
|
||||
|
||||
Frame label="HAN-FUN Contact" {
|
||||
Text item=HANFUNContactState
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
# BenQ Projector Binding
|
||||
|
||||
This binding is compatible with BenQ projectors that support the control protocol via the built-in Ethernet port, serial port or USB to serial adapter.
|
||||
If your projector does not have built-in networking, you can connect to your projector's serial port via a TCP connection using a serial over IP device or by using`ser2net`.
|
||||
If your projector does not have built-in networking, you can connect to your projector's serial port via a TCP connection using a serial over IP device or by using`ser2net`.
|
||||
|
||||
The manufacturer's guide for connecting to the projector and the control protocol can be found in this document: [LX9215_RS232 Control Guide_0_Windows7_Windows8_WinXP.pdf](https://esupportdownload.benq.com/esupport/Projector/Control%20Protocols/LX9215/LX9215_RS232%20Control%20Guide_0_Windows7_Windows8_WinXP.pdf)
|
||||
|
||||
|
@ -54,7 +54,7 @@ The `Airthings Wave Gen 1` and `Airthings Wave Radon / Wave 2` thing has the fol
|
||||
| temperature | Number:Temperature | The measured temperature |
|
||||
| humidity | Number:Dimensionless | The measured humidity |
|
||||
|
||||
Note: For the `Airthings Wave Gen 1`, only one channel can be updated at each refreshInterval, so it will take refreshInterval x 4 cycles to sequentially update all 4 channels
|
||||
Note: For the `Airthings Wave Gen 1`, only one channel can be updated at each refreshInterval, so it will take refreshInterval x 4 cycles to sequentially update all 4 channels
|
||||
|
||||
## Example
|
||||
|
||||
|
@ -42,7 +42,7 @@ _Note that it is planned to generate some part of this based on the XML files wi
|
||||
| outdoorTemperature | Number:Temperature | R | Outdoor temperature from the external unit. Not always supported/reported.
|
||||
| commCtrlVersion | String | R | Communication Controller Firmware Version
|
||||
| remoteCtrlVersion | String | R | Remote Controller Firmware Version
|
||||
| operationMode | String | R/W | The operation mode of the AC unit. Currently supported values: HEAT, COOL.
|
||||
| operationMode | String | R/W | The operation mode of the AC unit. Currently supported values: HEAT, COOL.
|
||||
| fanSpeed | Number | R/W | This is a "virtual channel" : its value is calculated depending on current operation mode. It is the channel to be used to change the fan speed, whatever the current mode is. Fan speed are from 1 to 5. On BRC1H, the device supports 3 speeds: LOW (1), MEDIUM (2-4), MAX (5). Some BRC1H also support an AUTO (0) mode - but not all of them support it (depending on internal unit).
|
||||
| setpoint | Number:Temperature | R/W | This is a "virtual channel" : its value is calculated depending on current operation mode. It is the channel to be used to change the setpoint, whatever the current mode is.
|
||||
| homekitCurrentHeatingCoolingMode | String | R | This channel is a "virtual channel" to be used with the HomeKit add-on to implement Thermostat thing. Values supported are the HomeKit addon ones: Off, CoolOn, HeatOn, Auto.
|
||||
|
@ -55,5 +55,5 @@ demo.items:
|
||||
|
||||
```java
|
||||
Dimmer Light_LivingRoom { channel="milight:rgbLed:milight2:4:ledbrightness", channel="bluetooth:ptm215b:bluegiga0:rocker_livingroom:rocker1" [profile="rawrocker-to-on-off"], channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker1" [profile="rawrocker-to-on-off"] } // We have a combined kitchen / livingroom, so we control the living room lights with switches from the living room and from the kitchen
|
||||
Switch Light_Kitchen { channel="hue:group:1:kitchen-bulbs:switch", channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker2" [profile="rawrocker-to-on-off"] }
|
||||
Switch Light_Kitchen { channel="hue:group:1:kitchen-bulbs:switch", channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker2" [profile="rawrocker-to-on-off"] }
|
||||
```
|
||||
|
@ -1,6 +1,6 @@
|
||||
# radoneye
|
||||
|
||||
This extension adds support for [RadonEye](http://radonftlab.com/radon-sensor-product/radon-detector/rd200/) radon bluetooth detector.
|
||||
This extension adds support for [RadonEye](http://radonftlab.com/radon-sensor-product/radon-detector/rd200/) radon bluetooth detector.
|
||||
|
||||
## Supported Things
|
||||
|
||||
@ -12,7 +12,7 @@ Following thing types are supported by this extension:
|
||||
|
||||
## Discovery
|
||||
|
||||
As any other Bluetooth device, RadonEye devices are discovered automatically by the corresponding bridge.
|
||||
As any other Bluetooth device, RadonEye devices are discovered automatically by the corresponding bridge.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
|
@ -45,7 +45,7 @@ The Smart Home Controller is the central hub that allows you to monitor and cont
|
||||
|
||||
| Channel Type ID | Item Type | Writable | Description |
|
||||
|--------------------|-----------|:--------:|-------------------------------------------------------------------------|
|
||||
| scenario-triggered | String | ☐ | Name of the triggered scenario (e.g. by the Universal Switch Flex) |
|
||||
| scenario-triggered | String | ☐ | Name of the triggered scenario (e.g. by the Universal Switch Flex) |
|
||||
| trigger-scenario | String | ☑ | Name of a scenario to be triggered on the Bosch Smart Home Controller. |
|
||||
|
||||
### In-Wall Switch
|
||||
@ -316,7 +316,7 @@ The smoke detector warns you in case of fire.
|
||||
|
||||
### User-defined States
|
||||
|
||||
User-defined states enable automations to be better adapted to specific needs and everyday situations.
|
||||
User-defined states enable automations to be better adapted to specific needs and everyday situations.
|
||||
Individual states can be activated/deactivated and can be used as triggers, conditions and actions in automations.
|
||||
|
||||
**Thing Type ID**: `user-defined-state`
|
||||
@ -356,7 +356,7 @@ A universally configurable switch with four buttons.
|
||||
|
||||
Smart water leakage detector.
|
||||
|
||||
**Thing Type ID**: `water-detector`
|
||||
**Thing Type ID**: `water-detector`
|
||||
|
||||
| Channel Type ID | Item Type | Writable | Description |
|
||||
| -------------------------- | --------- | :------: | ------------------------------------------------- |
|
||||
@ -372,7 +372,7 @@ Smart water leakage detector.
|
||||
## Limitations
|
||||
|
||||
No major limitation known.
|
||||
Check list of [openhab issues with "boshshc"](https://github.com/openhab/openhab-addons/issues?q=is%3Aissue+boschshc+)
|
||||
Check list of [openhab issues with "boshshc"](https://github.com/openhab/openhab-addons/issues?q=is%3Aissue+boschshc+)
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -348,7 +348,7 @@ then
|
||||
logWarn("actions", "Actions not found, check thing ID for the Zone")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
actions.bypass()
|
||||
end
|
||||
```
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
The openHAB ChatGPT Binding allows openHAB to communicate with the ChatGPT language model provided by OpenAI.
|
||||
|
||||
ChatGPT is a powerful natural language processing (NLP) tool that can be used to understand and respond to a wide range of text-based commands and questions.
|
||||
ChatGPT is a powerful natural language processing (NLP) tool that can be used to understand and respond to a wide range of text-based commands and questions.
|
||||
With this binding, you can use ChatGPT to formulate proper sentences for any kind of information that you would like to output.
|
||||
|
||||
## Supported Things
|
||||
@ -77,7 +77,7 @@ Number Temperature_Forecast_High
|
||||
```java
|
||||
rule "Weather forecast update"
|
||||
when
|
||||
Item Temperature_Forecast_High changed
|
||||
Item Temperature_Forecast_High changed
|
||||
then
|
||||
Weather_Announcement.sendCommand("High: " + Temperature_Forecast_High.state + "°C, Low: " + Temperature_Forecast_Low.state + "°C")
|
||||
end
|
||||
|
@ -5,7 +5,7 @@ The cm11a is a serial computer interface that allows a computer to control attac
|
||||
## Hardware - cm11a
|
||||
|
||||
The cm11a is an older device that communicates over a serial interface.
|
||||
Most people connect it to a computer using a serial to USB adapter.
|
||||
Most people connect it to a computer using a serial to USB adapter.
|
||||
This binding has been tested with serial port and a serial to USB adapter.
|
||||
|
||||
X10 (and thus the cm11a) supports two types of modules.
|
||||
@ -17,7 +17,7 @@ In addition to controlling X10 modules the cm11a listens on the powerline and re
|
||||
### Use of serial port
|
||||
|
||||
The binding opens the serial port when it starts and keeps it open until the binding is terminated.
|
||||
If the serial port is disconnected a reconnect will be attempted the next time it is needed.
|
||||
If the serial port is disconnected a reconnect will be attempted the next time it is needed.
|
||||
Therefore, other applications should not attempt to use the port when OpneHAB is running.
|
||||
However, another program could load macros into the cm11a before openHAB starts.
|
||||
|
||||
|
@ -52,7 +52,7 @@ The query items support the following parameters:
|
||||
|
||||
These are described further in the following subsections.
|
||||
|
||||
##### query
|
||||
##### query
|
||||
|
||||
The query the items represents in the native language of your database:
|
||||
|
||||
@ -104,7 +104,7 @@ The `resultString` channel is the only valid one if `scalarResult=false`, and in
|
||||
{
|
||||
correct : true,
|
||||
data : [
|
||||
{
|
||||
{
|
||||
column1 : value,
|
||||
column2 : value
|
||||
},
|
||||
@ -141,14 +141,14 @@ To execute the action you need to pass the following parameters:
|
||||
And it returns an `ActionQueryResult` that has the following properties:
|
||||
|
||||
- correct (boolean) : True if the query was executed correctly, false otherwise
|
||||
- data (List<Map<String,Object>>): A list where each element is a row that is stored in a map with (columnName,value) entries
|
||||
- data (List<Map<String,Object>>): A list where each element is a row that is stored in a map with (columnName,value) entries
|
||||
- isScalarResult: It returns if the result is scalar one (only one row with one column)
|
||||
- resultAsScalar: It returns the result as a scalar if possible, if not returns null
|
||||
|
||||
Example (using Jython script):
|
||||
|
||||
```python
|
||||
from core.log import logging, LOG_PREFIX
|
||||
from core.log import logging, LOG_PREFIX
|
||||
log = logging.getLogger("{}.action_example".format(LOG_PREFIX))
|
||||
map = {"time" : "-2h"}
|
||||
influxdb = actions.get("dbquery","dbquery:influxdb2:sampleQuery") //Get bridge thing
|
||||
@ -213,7 +213,7 @@ Create a rule that is fired
|
||||
- **Then** executes the following script action (in that example Jython):
|
||||
|
||||
```text
|
||||
map = {"time" : "-2h"}
|
||||
dbquery = actions.get("dbquery","dbquery:query:myquery")
|
||||
map = {"time" : "-2h"}
|
||||
dbquery = actions.get("dbquery","dbquery:query:myquery")
|
||||
dbquery.setQueryParameters(map)
|
||||
```
|
||||
|
@ -288,7 +288,7 @@ Number:Dimensionless Livingroom_Thermostat_ValvePosition "Thermostat Val
|
||||
Contact Livingroom_Thermostat_WindowOpen "Thermostat Window Open [%s]" { channel="deconz:thermostat:homeserver:livingroom-thermostat:windowopen" }
|
||||
Switch Livingroom_Thermostat_Locked "Thermostat Locked [%s]" { channel="deconz:thermostat:homeserver:livingroom-thermostat:locked" }
|
||||
String Livingroom_Thermostat_Mode "Thermostat Mode [%s]" { channel="deconz:thermostat:homeserver:livingroom-thermostat:mode" }
|
||||
Dimmer Livingroom_Ceiling "Livingroom Ceiling [%d]" <light> { channel="deconz:dimmablelight:homeserver:livingroom-ceiling:brightness" }
|
||||
Dimmer Livingroom_Ceiling "Livingroom Ceiling [%d]" <light> { channel="deconz:dimmablelight:homeserver:livingroom-ceiling:brightness" }
|
||||
Color Livingroom "Livingroom Light Control" { channel="deconz:lightgroup:homeserver:livingroom:color" }
|
||||
Switch Entrance_Door "Doorlock" { channel="deconz:doorlock:homeserver:entrance-door:lock" }
|
||||
String Entrance_Siren "Siren [%s]" <alarm> { channel="deconz:warningdevice:homeserver:entrance-siren:alert" }
|
||||
|
@ -398,13 +398,13 @@ _Blinds:_
|
||||
|
||||
```java
|
||||
Bridge digitalstrom:dssBridge:dSS [ dSSAddress="urlOfMyDss", userName="dssadmin", password="mySecretPassword", sensorDataUpdateInterval=180] {
|
||||
GE GE-KM-200 [ dSID="3504175fe000000000010db9", activePowerRefreshPriority="low", electricMeterRefreshPriority="medium", outputCurrentRefreshPriority="high"]
|
||||
SW SW-ZWS-200 [ dSID="3504175fe0000000000651c0"]
|
||||
SW SW-UMR-200 [ dSID="302ed89f43f00ec0000a1034"]
|
||||
dSiSens200 dS-iSens200 [ dSID="302ed89f43f026800003543d"]
|
||||
GE GE-KM-200 [ dSID="3504175fe000000000010db9", activePowerRefreshPriority="low", electricMeterRefreshPriority="medium", outputCurrentRefreshPriority="high"]
|
||||
SW SW-ZWS-200 [ dSID="3504175fe0000000000651c0"]
|
||||
SW SW-UMR-200 [ dSID="302ed89f43f00ec0000a1034"]
|
||||
dSiSens200 dS-iSens200 [ dSID="302ed89f43f026800003543d"]
|
||||
zoneTemperatureControl zoneTemperatureControl [ zoneID="livingroom"]
|
||||
GR GR-KL220 [ dSID="3504175fe0000000000651c1" ]
|
||||
namedScene Scene1 [ zoneID="5", groupID="1", sceneID="5"]
|
||||
GR GR-KL220 [ dSID="3504175fe0000000000651c1" ]
|
||||
namedScene Scene1 [ zoneID="5", groupID="1", sceneID="5"]
|
||||
circuit circuit1 [ dSID="3504175fe0000010000004e4" ]
|
||||
GR GR-KL200 [ dSID="3504175fe0000000000651c1" ]
|
||||
}
|
||||
@ -458,59 +458,59 @@ sitemap demo label="Main Menu"
|
||||
{
|
||||
Frame label="System" {
|
||||
Frame label="digitalSTROM-Server"{
|
||||
Text item=TotalActivePower
|
||||
Text item=TotalElectricMeter
|
||||
Text item=TotalActivePower
|
||||
Text item=TotalElectricMeter
|
||||
}
|
||||
|
||||
|
||||
Frame label="digitalSTROM-Meter"{
|
||||
Text item=TotalActivePowerDsm
|
||||
Text item=TotalElectricMeterDsm
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Frame label="Climate" {
|
||||
Frame label="heating/cooling"{
|
||||
Switch item=SensorSwitch
|
||||
Switch item=SensorSwitch
|
||||
}
|
||||
|
||||
|
||||
Frame label="iSens200"{
|
||||
Text item=TempIndoor
|
||||
Text item=HumidityIndoor
|
||||
}
|
||||
|
||||
|
||||
Frame label="Target temperature"{
|
||||
Slider item=Temperature
|
||||
Text item=Temperature
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Frame label="Shade"{
|
||||
Frame label="Rollerschutter"{
|
||||
Slider item=Shade
|
||||
Slider item=Shade
|
||||
Text item=Shade
|
||||
}
|
||||
|
||||
|
||||
Frame label="Blind"{
|
||||
Slider item=BlindPosition
|
||||
Slider item=BlindPosition
|
||||
Slider item=BlindAngle
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Frame label="Scenes"{
|
||||
Frame label="TV scene"{
|
||||
Switch item=Scene
|
||||
Switch item=Scene
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Frame label="HiFi" {
|
||||
Frame label="TV light"{
|
||||
Slider item=Brightness
|
||||
Slider item=Brightness
|
||||
Switch item=Brightness
|
||||
Text item=ActivePower
|
||||
Text item=OutputCurrent
|
||||
Text item=ElectricMeter
|
||||
Text item=ActivePower
|
||||
Text item=OutputCurrent
|
||||
Text item=ElectricMeter
|
||||
}
|
||||
|
||||
|
||||
Frame label="TV"{
|
||||
Switch item=DeviceSwitch
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ A binding for D-Link Smart Home devices.
|
||||
|
||||
### DCH-S150 (WiFi motion sensor)
|
||||
|
||||
The binding has been tested with hardware revisions A1 and A2 running firmware version 1.22.
|
||||
The binding has been tested with hardware revisions A1 and A2 running firmware version 1.22.
|
||||
The mydlink Home service is now end of life and the device requires a daily reboot (performed by the binding) to keep it responsive.
|
||||
|
||||
## Discovery
|
||||
|
@ -268,7 +268,7 @@ This example defines a sACN/E1.31 bridge in unicast mode which transmits univers
|
||||
Bridge dmx:sacn-bridge:mybridge [ mode="unicast", address="192.168.0.60", universe=2 ] {
|
||||
color rgb [dmxid="5/3", fadetime=1000, dimtime=10000 ]
|
||||
dimmer single [dmxid="50", fadetime=1000, turnonvalue="230", turnoffvalue="25" ]
|
||||
chaser ampel [dmxid="10,12,13", steps="100:255,0,0:1000|100:255,255,0:500|100:0,0,255:1000|100:0,255,0:500" ]
|
||||
chaser ampel [dmxid="10,12,13", steps="100:255,0,0:1000|100:255,255,0:500|100:0,0,255:1000|100:0,255,0:500" ]
|
||||
}
|
||||
```
|
||||
|
||||
@ -288,11 +288,11 @@ sitemap demo label="Main Menu"
|
||||
Frame {
|
||||
// Color
|
||||
Colorpicker item=MyColorItem
|
||||
|
||||
|
||||
// Dimmer
|
||||
Switch item=MyDimmerItem
|
||||
Slider item=MyDimmerItem
|
||||
|
||||
|
||||
// Chaser
|
||||
Switch item=MyChaserItem
|
||||
}
|
||||
|
@ -38,11 +38,11 @@ Normally, only the hostname or IP address must be configured.
|
||||
|
||||
These channels can be used to retrieve the current device state and change the controls.
|
||||
|
||||
The input mode can be either be controlled by the "input" string channel, or by writing an ON value to the dedicated switch channels, which represents the physical buttons on the CP750 device.
|
||||
The input mode can be either be controlled by the "input" string channel, or by writing an ON value to the dedicated switch channels, which represents the physical buttons on the CP750 device.
|
||||
|
||||
| Channel | Type | Read/Write | Description |
|
||||
|------------|--------|------------|-----------------------------------------------------------------------------------------------------------------|
|
||||
| fader | Dimmer | RW | Fader value (0 to 100) |
|
||||
| fader | Dimmer | RW | Fader value (0 to 100) |
|
||||
| mute | Switch | RW | Mute (ON or OFF) |
|
||||
| input | String | RW | Input channel as string (one of "analog", "dig_1", "dig_2", "dig_3", "dig_4", "non-sync" or "mic") |
|
||||
| analog | Switch | RW | Is ON if input mode is 'analog'. When an ON command is retrieved, input mode will be changed to this channel. |
|
||||
@ -55,7 +55,7 @@ The input mode can be either be controlled by the "input" string channel, or by
|
||||
|
||||
## Full Example
|
||||
|
||||
The following example is for a device connected at IP 192.168.1.135 on port 61408 with all channels linked to items.
|
||||
The following example is for a device connected at IP 192.168.1.135 on port 61408 with all channels linked to items.
|
||||
|
||||
demo.things:
|
||||
|
||||
|
@ -29,7 +29,7 @@ Bridge dominoswiss:egate:myeGate "My eGate Server" @ "Home" [ ipAddres="localhos
|
||||
```
|
||||
|
||||
The thing blind represents one blind on the eGate. Each blind is represented by an id set on your eGate.
|
||||
|
||||
|
||||
```java
|
||||
Thing blind officeBlind "Office" @ "1stFloor" [ id="1"]
|
||||
```
|
||||
@ -83,9 +83,9 @@ This example moves the blind of the office up as the sun passed 110 azimuth (so
|
||||
|
||||
```java
|
||||
rule "OneSide up"
|
||||
when
|
||||
Item Azimuth changed
|
||||
then
|
||||
when
|
||||
Item Azimuth changed
|
||||
then
|
||||
val azimuth = Math::round((Azimuth.state as DecimalType).intValue)
|
||||
if (azimuth == 110)
|
||||
{
|
||||
|
@ -126,7 +126,7 @@ if(actions === null) {
|
||||
return
|
||||
}
|
||||
actions.sipHangup()
|
||||
|
||||
|
||||
var String ringTimeLimit = actions.getRingTimeLimit()
|
||||
```
|
||||
|
||||
|
@ -415,7 +415,7 @@ Here is an example sitemap:
|
||||
Text item=PANEL_ZONE_FAULT label="Zone Fault"
|
||||
Text item=PANEL_ZONE_TAMPER label="Zone Tamper"
|
||||
Text item=PANEL_ZONE_LOW_BATTERY label="Zone Low Battery"
|
||||
Text item=PANEL_TIME_LOSS label="Panel Time Loss"
|
||||
Text item=PANEL_TIME_LOSS label="Panel Time Loss"
|
||||
}
|
||||
}
|
||||
|
||||
@ -602,16 +602,16 @@ Sample Rules for Sending a DSC Alarm Command
|
||||
|
||||
```javascript
|
||||
rule "SendKeystrokeStringCommand"
|
||||
when
|
||||
when
|
||||
Item SwitchItemName received command ON
|
||||
then
|
||||
then
|
||||
SEND_DSC_ALARM_COMMAND.sendCommand("071,1*101#")
|
||||
end
|
||||
|
||||
rule "SendPollingCommand"
|
||||
when
|
||||
when
|
||||
Item SwitchItemName received command ON
|
||||
then
|
||||
then
|
||||
SEND_DSC_ALARM_COMMAND.sendCommand("000")
|
||||
end
|
||||
```
|
||||
|
@ -177,7 +177,7 @@ Text label="Pollenflugindex" {
|
||||
=="2"="#ff9900",
|
||||
=="1-2"="#ff9900",
|
||||
=="1"="#ffff00",
|
||||
=="0-1"="#00c83c"]
|
||||
=="0-1"="#00c83c"]
|
||||
|
||||
Text item=pollenTomorrowEsche
|
||||
valuecolor=[=="3"="#f00014",
|
||||
|
@ -132,7 +132,7 @@ when
|
||||
Channel 'dwdunwetter:dwdwarnings:cologne:updated1' triggered NEW
|
||||
then
|
||||
// New Warning send a push notification to everyone
|
||||
end
|
||||
end
|
||||
|
||||
```
|
||||
|
||||
|
@ -99,6 +99,7 @@ R=RFID
|
||||
```
|
||||
|
||||
transform/ekey_names.map [NO spaces allowed]
|
||||
|
||||
```text
|
||||
-1=Unspecified
|
||||
1=JohnDoe
|
||||
|
@ -86,7 +86,7 @@ A typical item configuration for a rollershutter looks like this:
|
||||
|
||||
```java
|
||||
Rollershutter Rollershutter1 {channel="elerotransmitterstick:elerochannel:0a0a0a0a:1:control",autoupdate="false" }
|
||||
String Rollershutter1State {channel="elerotransmitterstick:elerochannel:0a0a0a0a:1:status" }
|
||||
String Rollershutter1State {channel="elerotransmitterstick:elerochannel:0a0a0a0a:1:status" }
|
||||
```
|
||||
|
||||
A sitemap entry looks like this:
|
||||
|
@ -38,15 +38,15 @@ The Emotiva Processor supports the following channels (some channels are model s
|
||||
| Channel Type ID | Item Type | Description |
|
||||
|------------------------------------|--------------------|------------------------------------------------------------|
|
||||
| _Main zone_ | | |
|
||||
| main-zone#power | Switch (RW) | Main zone power on/off |
|
||||
| main-zone#volume | Dimmer (RW) | Main zone volume in percentage (0 to 100) |
|
||||
| main-zone#volume-db | Number (RW) | Main zone volume in dB (-96 to 15) |
|
||||
| main-zone#mute | Switch (RW) | Main zone mute |
|
||||
| main-zone#source | String (RW) | Main zone input (HDMI1, TUNER, ARC, ...) |
|
||||
| main-zone#power | Switch (RW) | Main zone power on/off |
|
||||
| main-zone#volume | Dimmer (RW) | Main zone volume in percentage (0 to 100) |
|
||||
| main-zone#volume-db | Number (RW) | Main zone volume in dB (-96 to 15) |
|
||||
| main-zone#mute | Switch (RW) | Main zone mute |
|
||||
| main-zone#source | String (RW) | Main zone input (HDMI1, TUNER, ARC, ...) |
|
||||
| _Zone 2_ | | |
|
||||
| zone2#power | Switch (RW) | Zone 2 power on/off |
|
||||
| zone2#volume | Dimmer (RW) | Zone 2 volume in percentage (0 to 100) |
|
||||
| zone2#volume-db | Number (RW) | Zone 2 volume in dB (-80 offset) |
|
||||
| zone2#power | Switch (RW) | Zone 2 power on/off |
|
||||
| zone2#volume | Dimmer (RW) | Zone 2 volume in percentage (0 to 100) |
|
||||
| zone2#volume-db | Number (RW) | Zone 2 volume in dB (-80 offset) |
|
||||
| zone2#mute | Switch (RW) | Zone 2 mute |
|
||||
| zone2#input | String (RW) | Zone 2 input |
|
||||
| _General_ | | |
|
||||
@ -153,11 +153,11 @@ String emotiva-menu-tottom-end "" <non
|
||||
```perl
|
||||
Group item=emotiva-input label="Processor" icon="receiver" {
|
||||
Default item=emotiva-power
|
||||
Default item=emotiva-mute
|
||||
Setpoint item=emotiva-volume
|
||||
Default item=emotiva-volume-db step=2 minValue=-96.0 maxValue=15.0
|
||||
Selection item=emotiva-source
|
||||
Text item=emotiva-mode-surround
|
||||
Default item=emotiva-mute
|
||||
Setpoint item=emotiva-volume
|
||||
Default item=emotiva-volume-db step=2 minValue=-96.0 maxValue=15.0
|
||||
Selection item=emotiva-source
|
||||
Text item=emotiva-mode-surround
|
||||
Setpoint item=emotiva-speakers-center step=0.5 minValue=-12.0 maxValue=12.0
|
||||
Default item=emotiva-zone2power
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ sitemap energenie label="Energenie Devices"
|
||||
Switch item=Socket2
|
||||
Switch item=Socket3
|
||||
Switch item=Socket4
|
||||
|
||||
|
||||
// Power measurement
|
||||
Number item=Voltage
|
||||
Number item=Current
|
||||
|
@ -844,7 +844,7 @@ logger.info "Total price for using 150 W for the next hour: #{price}" if price
|
||||
duration_phases = [
|
||||
37.minutes,
|
||||
8.minutes,
|
||||
4.minutes,
|
||||
4.minutes,
|
||||
2.minutes,
|
||||
4.minutes,
|
||||
36.minutes,
|
||||
@ -863,7 +863,7 @@ consumption_phases = [
|
||||
0 | "W"
|
||||
],
|
||||
|
||||
result = eds.calculate_cheapest_period(ZonedDateTime.now.to_instant,
|
||||
result = eds.calculate_cheapest_period(ZonedDateTime.now.to_instant,
|
||||
24.hours.from_now.to_instant,
|
||||
duration_phases,
|
||||
consumption_phases)
|
||||
@ -877,7 +877,7 @@ logger.info "Most expensive start #{result["MostExpensiveStart"]}"
|
||||
# In this example we have to provide the total duration to make sure we fit the latest end. This is because there is no
|
||||
# registered consumption in the last phase.
|
||||
# Here we are using an alternative way of constructing an array of Durations.
|
||||
# The `#minutes` method on an Integer object returns a corresponding Duration object.
|
||||
# The `#minutes` method on an Integer object returns a corresponding Duration object.
|
||||
duration_phases = [37, 8, 4, 2, 4, 36, 41].map { |i| i.minutes }
|
||||
|
||||
result = eds.calculate_cheapest_period(ZonedDateTime.now.to_instant,
|
||||
|
@ -83,8 +83,8 @@ demo.sitemap:
|
||||
```perl
|
||||
sitemap demo label="Enigma2 Demo"
|
||||
{
|
||||
Frame label="Enigma2" {
|
||||
Switch item=Enigma2_Power
|
||||
Frame label="Enigma2" {
|
||||
Switch item=Enigma2_Power
|
||||
Slider item=Enigma2_Volume step=5 minValue=0 maxValue=100
|
||||
Setpoint item=Enigma2_Volume step=5 minValue=0 maxValue=100
|
||||
Switch item=Enigma2_Mute
|
||||
@ -111,8 +111,8 @@ sitemap demo label="Enigma2 Demo"
|
||||
Switch item=Enigma2_RemoteKeys mappings=[FAST_BACKWARD="<<", PLAY=">", PAUSE="||", FAST_FORWARD=">>"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[TV="TV", RECORD="O", STOP="[]", RADIO="Radio"]
|
||||
Switch item=Enigma2_RemoteKeys mappings=[INFO="INFO"]
|
||||
}
|
||||
Frame label="Enigma2 Messages" {
|
||||
}
|
||||
Frame label="Enigma2 Messages" {
|
||||
Switch item=Enigma2_SendError mappings=[SEND="SEND"]
|
||||
Switch item=Enigma2_SendWarning mappings=[SEND="SEND"]
|
||||
Switch item=Enigma2_SendInfo mappings=[SEND="SEND"]
|
||||
|
@ -107,7 +107,7 @@ Hence if your device supports one of the following EEPs the chances are good tha
|
||||
³ Note that the soda handles potentially contain a wide range of different sensors and buttons.
|
||||
However the amount of built-in sensors and buttons may vary between different models.
|
||||
In case your particular device does not contain one of the potentially supported features the corresponding channel will never trigger an update.
|
||||
Please see the manual of your particular model to check which channels should be supported before opening an issue.
|
||||
Please see the manual of your particular model to check which channels should be supported before opening an issue.
|
||||
|
||||
Furthermore following supporting EEP family is available too: A5-11, types 0x03 (rollershutter position status), 0x04 (extended light status) and D0-06 (battery level indication).
|
||||
|
||||
@ -416,12 +416,12 @@ Bridge enocean:bridge:gtwy "EnOcean Gateway" [ path="/dev/ttyAMA0" ] {
|
||||
Thing centralCommand cc02 "Dimmer" @ "Living room" [ enoceanId="aabbcc05", senderIdOffset=2, sendingEEPId="A5_38_08_02", receivingEEPId="A5_38_08_02", broadcastMessages=true, suppressRepeating=false ]
|
||||
Thing rollershutter r01 "Rollershutter" @ "Kitchen" [ enoceanId="aabbcc06", senderIdOffset=3, sendingEEPId="A5_3F_7F_EltakoFSB", receivingEEPId="A5_3F_7F_EltakoFSB", broadcastMessages=true, suppressRepeating=false ] {Channels: Type rollershutter:rollershutter [shutTime=25]}
|
||||
Thing measurementSwitch ms01 "TV Smart Plug" @ "Living room" [ enoceanId="aabbcc07", senderIdOffset=4, sendingEEPId="D2_01_09", broadcastMessages=false, receivingEEPId="D2_01_09","A5_12_01", suppressRepeating=false, pollingInterval=300]
|
||||
Thing classicDevice cd01 "Garage_Light" @ "Garage" [
|
||||
senderIdOffset=5,
|
||||
sendingEEPId="F6_02_01",
|
||||
broadcastMessages=true,
|
||||
Thing classicDevice cd01 "Garage_Light" @ "Garage" [
|
||||
senderIdOffset=5,
|
||||
sendingEEPId="F6_02_01",
|
||||
broadcastMessages=true,
|
||||
receivingEEPId="F6_02_01",
|
||||
suppressRepeating=false
|
||||
suppressRepeating=false
|
||||
] {
|
||||
Type virtualSwitchA : virtualSwitchA [duration=300, switchMode="rockerSwitch"]
|
||||
Type rockerswitchListenerSwitch : Listener1 "Schalter links" [enoceanId="aabbcc08", channel="channelA", switchMode="toggleButtonDir1"]
|
||||
@ -436,8 +436,8 @@ Switch Light_Switch { channel="enocean:rockerSwitch:gtwy:rs01:rockerSwitchAction
|
||||
Dimmer Kitchen_Hue "Hue" <light> {channel="enocean:rockerSwitch:gtwy:rs01:rockerswitchB" [profile="system:rawrocker-to-dimmer"], channel="hue:0220:0017884f6626:9:brightness"}
|
||||
Rollershutter Kitchen_Rollershutter "Roller shutter" <blinds> (Kitchen) {channel="enocean:rollershutter:gtwy:r01:rollershutter", autoupdate="false"}
|
||||
Switch Garage_Light "Switch" {
|
||||
channel="enocean:classicDevice:gtwy:cd01:virtualRockerswitchA",
|
||||
channel="enocean:classicDevice:gtwy:cd01:Listener1",
|
||||
channel="enocean:classicDevice:gtwy:cd01:virtualRockerswitchA",
|
||||
channel="enocean:classicDevice:gtwy:cd01:Listener1",
|
||||
channel="enocean:classicDevice:gtwy:cd01:Listener2"
|
||||
}
|
||||
```
|
||||
|
@ -9,10 +9,10 @@ The binding will search your Jollyday event definition files in the sub folder `
|
||||
|
||||
The binding handles the following Things:
|
||||
|
||||
* default holiday data (`holiday`)
|
||||
* custom holiday file (`custom`)
|
||||
* daysets (`dayset`)
|
||||
* weekend (`weekend`)
|
||||
- default holiday data (`holiday`)
|
||||
- custom holiday file (`custom`)
|
||||
- daysets (`dayset`)
|
||||
- weekend (`weekend`)
|
||||
|
||||
## Discovery
|
||||
|
||||
@ -24,7 +24,6 @@ There is no configuration at binding level.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
|
||||
### `custom` Thing Configuration
|
||||
|
||||
| Name | Type | Description | Default | Required | Advanced |
|
||||
@ -39,7 +38,6 @@ The file has to use the syntax described here : https://www.openhab.org/docs/con
|
||||
|-----------------|---------|---------------------------|---------|----------|----------|
|
||||
| name | text | Name of the dayset used | N/A | yes | no |
|
||||
|
||||
|
||||
## Channels
|
||||
|
||||
### `weekend` Channels
|
||||
@ -80,7 +78,7 @@ The file has to use the syntax described here : https://www.openhab.org/docs/con
|
||||
|
||||
## Full Example
|
||||
|
||||
### Thing Configuration
|
||||
### Thing Example
|
||||
|
||||
```java
|
||||
Thing ephemeris:holiday:local "Holidays"
|
||||
@ -88,7 +86,7 @@ Thing ephemeris:weekend:local "Week-end"
|
||||
Thing ephemeris:custom:events "Event" [fileName="events.xml"]
|
||||
```
|
||||
|
||||
### Item Configuration
|
||||
### Item Example
|
||||
|
||||
```java
|
||||
String ToD_Event_Current "Event Today" <calendar> (gEvents) {channel="ephemeris:custom:events:title-today"}
|
||||
|
@ -50,10 +50,10 @@ items:
|
||||
String SprinklerCommandStatus "Command Status [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:commandstatus" }
|
||||
String SprinklerOperatingStatus "Operating Status [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:operatingstatus" }
|
||||
String SprinklerOperatingResult "Operating Result [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:operatingresult" }
|
||||
|
||||
String SprinklerActiveZone "Active Zone [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:relayindex" }
|
||||
|
||||
String SprinklerActiveZone "Active Zone [%s]" (gMain) { channel="etherrain:etherrain:sprinkler0:relayindex" }
|
||||
Switch SprinklerRainSensor (gMain) { channel="etherrain:etherrain:sprinkler0:rainsensor" }
|
||||
|
||||
|
||||
Switch SprinklerExecute (gMain) { channel="etherrain:etherrain:sprinkler0:execute" }
|
||||
Switch SprinklerClear (gMain) { channel="etherrain:etherrain:sprinkler0:clear" }
|
||||
```
|
||||
|
@ -106,11 +106,11 @@ Please note that you have to replace _\<N\>_ with your loadpoint id/number.
|
||||
|
||||
Those channels exist:
|
||||
|
||||
* 1 per configured loadpoint with `chargerFeatureHeating = false`:
|
||||
* These channels point to the heating device that is currently active/connected at/to the loadpoint
|
||||
* Please note that you have to replace _\<N\>_ with your loadpoint id/number
|
||||
* 1 per configured vehicle:
|
||||
* Please note that you have to replace _\<ID\>_ with your vehicle id/name
|
||||
- 1 per configured loadpoint with `chargerFeatureHeating = false`:
|
||||
- These channels point to the heating device that is currently active/connected at/to the loadpoint
|
||||
- Please note that you have to replace _\<N\>_ with your loadpoint id/number
|
||||
- 1 per configured vehicle:
|
||||
- Please note that you have to replace _\<ID\>_ with your vehicle id/name
|
||||
|
||||
| Channel | Type | Read/Write | Description |
|
||||
|----------------------------------------------------|----------------------|------------|--------------------------------------------------------------------------|
|
||||
@ -126,11 +126,11 @@ Those channels exist:
|
||||
|
||||
Those channels exist:
|
||||
|
||||
* 1 per configured loadpoint with `chargerFeatureHeating = true`:
|
||||
* These channels point to the heating device that is currently active/connected at/to the loadpoint
|
||||
* Please note that you have to replace _\<N\>_ with your loadpoint id/number
|
||||
* 1 per configured heating device:
|
||||
* Please note that you have to replace _\<ID\>_ with your heating device id/name
|
||||
- 1 per configured loadpoint with `chargerFeatureHeating = true`:
|
||||
- These channels point to the heating device that is currently active/connected at/to the loadpoint
|
||||
- Please note that you have to replace _\<N\>_ with your loadpoint id/number
|
||||
- 1 per configured heating device:
|
||||
- Please note that you have to replace _\<ID\>_ with your heating device id/name
|
||||
|
||||
| Channel | Type | Read/Write | Description |
|
||||
|---------------------------------------------------------|--------------------|------------|-----------------------------------------------------------------------|
|
||||
|
@ -83,7 +83,7 @@ Bridge evohome:account:your_account_alias [ username="your_user_name", password=
|
||||
}
|
||||
```
|
||||
|
||||
### demo.items
|
||||
### demo.items
|
||||
|
||||
```java
|
||||
// evohome Display
|
||||
@ -112,8 +112,8 @@ sitemap evohome label="evohome Menu"
|
||||
}
|
||||
|
||||
Frame label="evohome heating zone" {
|
||||
Text label="Temperature" item=DemoZoneTemperature
|
||||
Text label="Status" item=DemoZoneSetPointStatus
|
||||
Text label="Temperature" item=DemoZoneTemperature
|
||||
Text label="Status" item=DemoZoneSetPointStatus
|
||||
Setpoint label="Zone set point" item=DemoZoneSetPoint minValue=5 maxValue=35 step=0.5
|
||||
}
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ Number YourNumber "Your Number [%.1f °C]"
|
||||
Switch yourcommand_Run {channel="exec:command:yourcommand:run", autoupdate="false"}
|
||||
// Arguments to be placed for '%2$s' in command line
|
||||
String yourcommand_Args {channel="exec:command:yourcommand:input"}
|
||||
// Output of command line execution
|
||||
// Output of command line execution
|
||||
String yourcommand_Out {channel="exec:command:yourcommand:output"}
|
||||
```
|
||||
|
||||
|
@ -29,7 +29,7 @@ The FENECON Thing only needs to be configured with the `hostname`, all other par
|
||||
|
||||
## Channels
|
||||
|
||||
The FENECON binding currently only provides access to read out the values from the energy storage system.
|
||||
The FENECON binding currently only provides access to read out the values from the energy storage system.
|
||||
|
||||
| Channel | Type | Read/Write | Description |
|
||||
|-------------------------------|----------------------|------------|-----------------------------------------------------------------------------|
|
||||
@ -117,7 +117,7 @@ rule "Blackout detection"
|
||||
when
|
||||
Item EmergencyPowerMode changed to ON
|
||||
then
|
||||
val msg = "🚨 Power blackout detected, emergency power mode running."
|
||||
val msg = "🚨 Power blackout detected, emergency power mode running."
|
||||
logInfo("PowerBlackout", msg)
|
||||
sendBroadcastNotification(msg)
|
||||
end
|
||||
|
@ -265,7 +265,7 @@ Valid sensors:
|
||||
| sensor-co2-pm25-24-hour-average | Number:Density | R | PM2.5 Air Quality 24 Hour Average (CO2-Sensor) |
|
||||
| sensor-co2-co2 | Number:Dimensionless | R | CO2 |
|
||||
| sensor-co2-co2-24-hour-average | Number:Dimensionless | R | CO2 24 Hour Average |
|
||||
| leaf-wetness-channel-1 | Number:Dimensionless | R | Leaf Moisture Channel 1 |
|
||||
| leaf-wetness-channel-1 | Number:Dimensionless | R | Leaf Moisture Channel 1 |
|
||||
| leaf-wetness-channel-2 | Number:Dimensionless | R | Leaf Moisture Channel 2 |
|
||||
| leaf-wetness-channel-3 | Number:Dimensionless | R | Leaf Moisture Channel 3 |
|
||||
| leaf-wetness-channel-4 | Number:Dimensionless | R | Leaf Moisture Channel 4 |
|
||||
@ -303,7 +303,7 @@ _weatherstation.things_:
|
||||
```java
|
||||
Bridge fineoffsetweatherstation:gateway:3906700515 "Weather station" [
|
||||
ip="192.168.1.42",
|
||||
port="45000",
|
||||
port="45000",
|
||||
discoverInterval="900",
|
||||
pollingInterval="16",
|
||||
protocol="DEFAULT"
|
||||
|
@ -53,7 +53,7 @@ Note, there is a rate limit of 120 queries per hour imposed by Flume so use caut
|
||||
| Battery Level | battery-level | Number:Dimensionless | R | Estimate of percent of remaining battery level |
|
||||
| Low Battery | low-battery | Switch | R | Indicator of low battery level |
|
||||
| Last Seen | last-seen | DateTime | R | Date/Time when meter was last seen on the network |
|
||||
| Usage Alert | usage-alert | Trigger | n/a | Trigger channel for usage alert notification |
|
||||
| Usage Alert | usage-alert | Trigger | n/a | Trigger channel for usage alert notification |
|
||||
|
||||
## Full Example
|
||||
|
||||
@ -64,7 +64,7 @@ When the Bridge device is first created, there will be a log message with the ID
|
||||
|
||||
```
|
||||
Bridge flume:cloud:cloudconnector [ username="xxx", password="xxx", clientId="xxx", clientSecret="xxx" ] {
|
||||
|
||||
|
||||
meter-device meter [ id="xxx" ]
|
||||
}
|
||||
```
|
||||
@ -74,9 +74,9 @@ Bridge flume:cloud:cloudconnector [ username="xxx", password="xxx", clientId="xx
|
||||
```
|
||||
Number:VolumetricFlowRate InstantUsage "Instant Usage" { channel = "flume:meter-device:1:meter:instant-usage" }
|
||||
Number:Volume CumulativeUsed "Cumulative Used" { channel = "flume:meter-device:1:meter:cumulative-usage" }
|
||||
Number:Dimensionless BatteryLevel "Battery Level" { channel = "flume:meter-device:1:meter:battery-level" }
|
||||
Number:Dimensionless BatteryLevel "Battery Level" { channel = "flume:meter-device:1:meter:battery-level" }
|
||||
DateTime LastSeen "Last Seen" { channel = "flume:meter-device:1:meter:last-seen" }
|
||||
Switch LowPower "Battery Low Power" { channel = "flume:meter-device:1:meter:low-battery" }
|
||||
Switch LowPower "Battery Low Power" { channel = "flume:meter-device:1:meter:low-battery" }
|
||||
|
||||
```
|
||||
|
||||
|
@ -115,7 +115,7 @@ Thing fmiweather:forecast:forecast_Helsinki "Helsinki Forecast" [location="60.19
|
||||
|
||||
`observation.items`:
|
||||
|
||||
<!--
|
||||
<!--
|
||||
# Generated mostly with following ugly python snippet.
|
||||
# fmiweather:observation:station_Helsinki_Kumpula here is thing with all channels linked
|
||||
|
||||
@ -125,7 +125,7 @@ with open(fname) as f: j = json.load(f)
|
||||
observation = j['fmiweather:observation:station_Helsinki_Kumpula']
|
||||
for channel in observation['value']['channels']:
|
||||
channel_id = ':'.join(channel['uid']['segments'])
|
||||
label = channel['label']
|
||||
label = channel['label']
|
||||
item_type = channel['acceptedItemType']
|
||||
if 'clouds' in channel_id:
|
||||
unit = '%.0f %unit%'
|
||||
@ -138,9 +138,9 @@ for channel in observation['value']['channels']:
|
||||
for item_name_part in channel_name.split('-'):
|
||||
item_name += item_name_part[0].upper()
|
||||
item_name += item_name_part[1:]
|
||||
|
||||
|
||||
print(('{item_type} {item_name} ' +
|
||||
'"{label} [{unit}]" {{ channel="{channel_id}" }}').format(**locals()))
|
||||
'"{label} [{unit}]" {{ channel="{channel_id}" }}').format(**locals()))
|
||||
-->
|
||||
|
||||
```java
|
||||
@ -160,7 +160,7 @@ Number HelsinkiPresentWeatherCode "Prevailing weather [%d]" <sun_clouds> { chann
|
||||
|
||||
`forecast.items`:
|
||||
|
||||
<!--
|
||||
<!--
|
||||
# Generated mostly with following ugly python snippet.
|
||||
# fmiweather:forecast:forecast_Helsinki here is thing with channels linked in 'simple mode'
|
||||
# on OH3, authentication can be disabled by running "bundle:stop org.openhab.core.io.rest.auth" in the Karaf console
|
||||
@ -177,13 +177,13 @@ for forecast in j:
|
||||
break
|
||||
else:
|
||||
raise ValueError('thing not found!')
|
||||
|
||||
|
||||
prev_group = 'None'
|
||||
for channel in forecast['channels']:
|
||||
group_name, channel_name = channel['uid'].rsplit(':', 1)[-1].split('#')
|
||||
group_name, channel_name = channel['uid'].rsplit(':', 1)[-1].split('#')
|
||||
channel_id = channel['uid']
|
||||
label = channel['label'] + group_name.replace('forecast', ' ').replace('Hours', 'hour ')
|
||||
|
||||
|
||||
item_type = channel['itemType']
|
||||
if 'cloud' in channel_id:
|
||||
unit = '%.0f %unit%'
|
||||
@ -191,13 +191,13 @@ for channel in forecast['channels']:
|
||||
unit = '%1$tY-%1$tm-%1$tdT%1$tH:%1$tM:%1$tS'
|
||||
else:
|
||||
unit = '%.1f %unit%'
|
||||
|
||||
|
||||
item_name = 'Helsinki'
|
||||
item_name += group_name[0].upper() + group_name[1:]
|
||||
for item_name_part in channel_name.split('-'):
|
||||
item_name += item_name_part[0].upper()
|
||||
item_name += item_name_part[1:]
|
||||
|
||||
item_name += item_name_part[1:]
|
||||
|
||||
icon = ''
|
||||
if icon == '': icon = '<wind>' if 'wind' in item_name.lower() else ''
|
||||
if icon == '': icon = '<humidity>' if 'humidity' in item_name.lower() else ''
|
||||
@ -206,14 +206,14 @@ for channel in forecast['channels']:
|
||||
if icon == '': icon = '<time>' if 'time' in item_name.lower() else ''
|
||||
if icon == '': icon = '<temperature>' if 'tempe' in item_name.lower() else ''
|
||||
if icon == '': icon = '<rain>' if 'precipi' in item_name.lower() else ''
|
||||
|
||||
|
||||
if prev_group != group_name:
|
||||
print('')
|
||||
prev_group = group_name
|
||||
|
||||
|
||||
|
||||
|
||||
print(('{item_type} {item_name} ' +
|
||||
'"{label} [{unit}]" {icon} {{ channel="{channel_id}" }}').format(**locals()))
|
||||
'"{label} [{unit}]" {icon} {{ channel="{channel_id}" }}').format(**locals()))
|
||||
-->
|
||||
|
||||
```java
|
||||
@ -811,7 +811,7 @@ sitemap fmi_weather label="FMI Weather" {
|
||||
Text item=HelsinkiForecastNowTotalCloudCover
|
||||
Text item=HelsinkiForecastNowWeatherId
|
||||
}
|
||||
|
||||
|
||||
Frame label="Forecast 01 hours" {
|
||||
Text item=HelsinkiForecastHours01Time
|
||||
Text item=HelsinkiForecastHours01Temperature
|
||||
|
@ -145,7 +145,7 @@ The binding has no configuration options, all configuration is done at `bridge`,
|
||||
|
||||
:::warning
|
||||
Battery control uses the battery management's time-dependent battery control settings of the inverter settings and therefore overrides user-specified time of use settings.
|
||||
Please note that user-specified time of use plans cannot be used together with battery control, as battery control will override the user-specified time of use settings.
|
||||
Please note that user-specified time of use plans cannot be used together with battery control, as battery control will override the user-specified time of use settings.
|
||||
:::
|
||||
|
||||
The `powerinverter` Thing provides actions to control the battery charging and discharging behaviour of hybrid inverters, such as Symo Gen24 Plus, if username and password are provided in the bridge configuration.
|
||||
@ -159,6 +159,7 @@ You can retrieve the actions as follows:
|
||||
```java
|
||||
val froniusInverterActions = getActions("fronius", "fronius:powerinverter:mybridge:myinverter")
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
::: tab JS
|
||||
@ -208,7 +209,7 @@ demo.things:
|
||||
Bridge fronius:bridge:mybridge [hostname="192.168.66.148", refreshInterval=5] {
|
||||
Thing powerinverter myinverter [deviceId=1]
|
||||
Thing meter mymeter [deviceId=0]
|
||||
Thing ohmpilot myohmpilot [deviceId=0]
|
||||
Thing ohmpilot myohmpilot [deviceId=0]
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -91,7 +91,7 @@ Thing ftpupload:imagereceiver:images2 [ userName="test2", password="12345" ] {
|
||||
Trigger String : my_image_trigger2 [
|
||||
filename="test.jpg"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Items:
|
||||
@ -106,14 +106,14 @@ Rules:
|
||||
```java
|
||||
rule "example trigger rule 1"
|
||||
when
|
||||
Channel 'ftpupload:imagereceiver:images1:image-received' triggered IMAGE_RECEIVED
|
||||
Channel 'ftpupload:imagereceiver:images1:image-received' triggered IMAGE_RECEIVED
|
||||
then
|
||||
logInfo("Test","Image received")
|
||||
end
|
||||
|
||||
rule "example trigger rule 2"
|
||||
when
|
||||
Channel 'ftpupload:imagereceiver:images2:my_image_trigger1' triggered IMAGE_RECEIVED
|
||||
Channel 'ftpupload:imagereceiver:images2:my_image_trigger1' triggered IMAGE_RECEIVED
|
||||
then
|
||||
logInfo("Test","Image received")
|
||||
end
|
||||
@ -150,7 +150,7 @@ Rules:
|
||||
```java
|
||||
rule "example trigger rule"
|
||||
when
|
||||
Channel 'ftpupload:imagereceiver:garagecamera:image-received' triggered IMAGE_RECEIVED
|
||||
Channel 'ftpupload:imagereceiver:garagecamera:image-received' triggered IMAGE_RECEIVED
|
||||
then
|
||||
logInfo("Test","Garage motion detected")
|
||||
end
|
||||
|
@ -168,7 +168,7 @@ Thing gce:ipx800v3:ipx "IPX800" @ "diningroom" [hostname="192.168.0.144", portNu
|
||||
debouncePeriod=2500
|
||||
]
|
||||
Type relay : relay#8 [ // Actionneur porte de garage
|
||||
pulse=true
|
||||
pulse=true
|
||||
]
|
||||
}
|
||||
```
|
||||
@ -181,7 +181,7 @@ Group gIPXInputs "Inputs" <input>
|
||||
Contact input1 "Porte garage ouverte [%s]" <contact> (gIPXInputs) {channel="gce:ipx800v3:ipx:contact#1"}
|
||||
Contact input2 "Porte garage fermée [%s]" <contact> (gIPXInputs) {channel="gce:ipx800v3:ipx:contact#2"}
|
||||
|
||||
Group gIPXOutputs "Outputs" <output>
|
||||
Group gIPXOutputs "Outputs" <output>
|
||||
Switch output3 "Chaudière" <furnace> (gIPXOutputs) {channel="gce:ipx800v3:ipx:relay#3"}
|
||||
Switch output4 "Lumière Porche" <light> (gIPXOutputs) {channel="gce:ipx800v3:ipx:relay#4"}
|
||||
|
||||
|
@ -12,13 +12,13 @@ ThingTypeUID: `account`
|
||||
|
||||
### Generator
|
||||
|
||||
A Generator thing represents an individual generator linked to an account bridge. Multiple generators are supported.
|
||||
A Generator thing represents an individual generator linked to an account bridge. Multiple generators are supported.
|
||||
|
||||
ThingTypeUID: `generator`
|
||||
|
||||
## Discovery
|
||||
|
||||
The MobileLink account bridge must be added manually. Once added, generator things will automatically be added to the inbox.
|
||||
The MobileLink account bridge must be added manually. Once added, generator things will automatically be added to the inbox.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
|
@ -366,7 +366,7 @@ then
|
||||
Thread.sleep(750)
|
||||
ContactClosure1.sendCommand(OFF)
|
||||
isRunning = false
|
||||
}
|
||||
}
|
||||
end
|
||||
```
|
||||
|
||||
|
@ -156,7 +156,7 @@ then
|
||||
GoEChargerMaxCurrent.sendCommand(maxAmp3Phases.intValue)
|
||||
// logInfo("eCharger", "Set charging limit 3 Phases: " + maxAmp3Phases.intValue + " A")
|
||||
}
|
||||
} else {
|
||||
} else {
|
||||
if (maxAmp1Phase.intValue >= 6 ) {
|
||||
// set force state to neutral (Neutral=0, Off=1, On=2)
|
||||
if (GoEChargerForceState.state != 0) {
|
||||
|
@ -111,7 +111,7 @@ arp -a | grep "MAC_ADDRESS"
|
||||
| Name | Type | Description | Default | Required | Advanced |
|
||||
|-----------------|---------|---------------------------------------|---------|----------|----------|
|
||||
| hostname | text | Hostname or IP address of the device | N/A | yes | no |
|
||||
| macAddress | text | MAC address of the device | N/A | yes | no |
|
||||
| macAddress | text | MAC address of the device | N/A | yes | no |
|
||||
| refreshInterval | integer | Interval the device is polled in sec. | 5 | no | yes |
|
||||
|
||||
## Channels
|
||||
|
@ -17,7 +17,7 @@ On a raspberry (or a compatible device) you have to install pigpiod.
|
||||
|
||||
```shell
|
||||
sudo apt-get install pigpiod
|
||||
sudo raspi-config
|
||||
sudo raspi-config
|
||||
```
|
||||
|
||||
-> Interfacing Options --> Remote GPIO --> YES --> OK --> Finish
|
||||
@ -42,7 +42,7 @@ sudo systemctl daemon-reload
|
||||
Now that Remote GPIO is enabled, get the pigpiod daemon going (even if installed with apt-get):
|
||||
|
||||
```shell
|
||||
sudo systemctl enable pigpiod
|
||||
sudo systemctl enable pigpiod
|
||||
sudo systemctl start pigpiod
|
||||
```
|
||||
|
||||
@ -86,7 +86,7 @@ Input Channel Disconnect Connect Action determines what happens when the binding
|
||||
Input Channel Reconnect Action determines what happens when the binding reconnects to pigpiod
|
||||
after a disconnect. This action does not occur on the initial binding connect to pigpiod.
|
||||
startup.
|
||||
|
||||
|
||||
- **Do Nothing:** The default, do nothing. Input channels will retain their current value.
|
||||
- **Refresh Channel:** Issues a refresh command on the input channels. This will refresh the channels from
|
||||
pigpiod causing the gpio pin state to reflect on the channel state.
|
||||
@ -95,7 +95,7 @@ startup.
|
||||
|
||||
Output Channel Connect Action determines what happens when the binding initially connects to pigpiod.
|
||||
This action only occurs once after binding startup.
|
||||
|
||||
|
||||
- **Do Nothing:** The default, do nothing. Output channels will retain their default value (UNDEF).
|
||||
- **All On:** Issues a ON command to all configured output channels.
|
||||
- **All Off:** Issues a OFF command to all configured output channels.
|
||||
@ -107,7 +107,7 @@ This action only occurs once after binding startup.
|
||||
### Output Channel Disconnect Connect Action
|
||||
|
||||
Output Channel Disconnect Connect Action determines what happens when the binding disconnects from pigpiod.
|
||||
|
||||
|
||||
- **Do Nothing:** he default, do nothing. Input channels will retain their current value.
|
||||
- **Set Undef:** Sets the output channel states to UNDEF to indicate that pigpiod has disconnected.
|
||||
|
||||
@ -115,7 +115,7 @@ Output Channel Disconnect Connect Action determines what happens when the bindin
|
||||
|
||||
Output Channel Reconnect Action determines what happens when the binding reconnects to pigpiod
|
||||
after a disconnect. This action does not occur on the initial binding connect to pigpiod.
|
||||
|
||||
|
||||
- **Do Nothing:** The default, do nothing. Output channels will retain their current value.
|
||||
- **Refresh Channel:** Issues a refresh command on the output channels. This will refresh the channels from
|
||||
pigpiod causing the gpio pin state to reflect on the channel state. NOTE: This does
|
||||
@ -231,7 +231,7 @@ Thing gpio:pigpio-remote:mypi "MyPi GPIO" [ host="192.168.1.5", port=8888,
|
||||
Type pigpio-digital-input : GPI6 [ gpioId=6, debouncingTime=50,pullupdown="UP",invert=true ]
|
||||
Type pigpio-digital-input : GPI13 [ gpioId=13,debouncingTime=50,pullupdown="DOWN",invert=false ]
|
||||
Type pigpio-digital-input : GPI26 [ gpioId=26,debouncingTime=50,pullupdown="OFF",invert=false ]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
demo.items:
|
||||
|
@ -139,9 +139,9 @@ Switch GreeAirConditioner_Light "Light" {channel="gree:aircond
|
||||
rule "Mode changed"
|
||||
when
|
||||
Item GreeAirConditioner_Mode changed
|
||||
then
|
||||
then
|
||||
if(GreeAirConditioner_Mode.state == "cool" ) {
|
||||
logInfo("A/C", "Cooling has be turned on")
|
||||
}
|
||||
}
|
||||
end
|
||||
```
|
||||
|
@ -6,7 +6,7 @@ The Viessmann GridBox is a variety of the [gridX Gateway](https://de.gridx.ai/ed
|
||||
The measured data (energy production, consumptions, etc.) cannot be accessed locally. However, thanks to the pioneer work in the [unl0ck/viessmann-gridbox-connector](https://github.com/unl0ck/viessmann-gridbox-connector) repository, we can retrieve the data from the gridX cloud service using Rest-API calls.
|
||||
The API is documented [here](https://developer.gridx.ai/reference/).
|
||||
|
||||
This binding polls the "live data" API endpoint to gather the available data from the GridBox.
|
||||
This binding polls the "live data" API endpoint to gather the available data from the GridBox.
|
||||
It creates a GridBox thing with the channels representing the data points of the live data API call.
|
||||
|
||||
For connection to the cloud service, account E-Mail and password used to connect to the [GridBox web service](https://mygridbox.viessmann.com/login) are required.
|
||||
@ -16,16 +16,16 @@ At the moment, only one API-"system" per account is supported by this binding.
|
||||
A "system" is the representation of a GridBox together with its connected appliances (PV inverter, heat pump etc.).
|
||||
The binding will use the first system ID retrieved by a call to the https://api.gridx.de/systems API.
|
||||
|
||||
Also, only the live data API endpoint is supported by the binding as it is the most interesting for openHAB use cases.
|
||||
Also, only the live data API endpoint is supported by the binding as it is the most interesting for openHAB use cases.
|
||||
There is another API endpoint for fetching aggregated measurement data which could be added in the future.
|
||||
Only the Viessmann GridBox variant is supported, other variants would need adaptions to the OAuth mechanism.
|
||||
|
||||
This binding is not endorsed or supported by Viessmann or gridX.
|
||||
This binding is not endorsed or supported by Viessmann or gridX.
|
||||
Arbitrary breaking changes to the API can happen at any time, resulting in this binding failing to retrieve the data.
|
||||
|
||||
## Supported Things
|
||||
|
||||
The following thing can be created with the binding:
|
||||
The following thing can be created with the binding:
|
||||
|
||||
- `gridbox`: A thing representing the GridBox, tied to an account of the Viessmann GridBox.
|
||||
|
||||
@ -73,16 +73,16 @@ The following channels are supplied by the GridBox thing (descriptions taken fro
|
||||
| self-sufficiency-rate | Number | R | Ratio of produced energy vs total consumed energy (0.0-1.0). |
|
||||
| self-supply | Number | R | Power/energy consumed through storage and production. |
|
||||
| total-consumption | Number | R | Adjusted power/energy of the system including heatpumps and EV charging stations. |
|
||||
|
||||
## Full Example
|
||||
|
||||
### Thing Configuration
|
||||
|
||||
```java
|
||||
Thing gridbox:gridbox:901b4766e2 "GridBox" [email="abc@example.com",password="mypassword",refreshInterval=120]
|
||||
```
|
||||
|
||||
### Item Configuration
|
||||
|
||||
## Full Example
|
||||
|
||||
### Thing Configuration
|
||||
|
||||
```java
|
||||
Thing gridbox:gridbox:901b4766e2 "GridBox" [email="abc@example.com",password="mypassword",refreshInterval=120]
|
||||
```
|
||||
|
||||
### Item Configuration
|
||||
|
||||
```java
|
||||
Number GridBox_PhotovoltaicProduction "PV Production [%.0f W]" {channel="gridbox:gridbox:901b4766e2:photovoltaicProduction"}
|
||||
|
@ -147,7 +147,7 @@ Where the first parameter must always be `growatt` and the second must be the fu
|
||||
Once the action instance has been retrieved, you can invoke the following method:
|
||||
|
||||
```php
|
||||
growattActions.setupBatteryProgram(int programMode, @Nullable Integer powerLevel, @Nullable Integer stopSOC, @Nullable Boolean enableAcCharging, @Nullable String startTime, @Nullable String stopTime, @Nullable Boolean enableProgram)
|
||||
growattActions.setupBatteryProgram(int programMode, @Nullable Integer powerLevel, @Nullable Integer stopSOC, @Nullable Boolean enableAcCharging, @Nullable String startTime, @Nullable String stopTime, @Nullable Boolean enableProgram)
|
||||
```
|
||||
|
||||
The meaning of the method parameters is as follows:
|
||||
@ -283,7 +283,7 @@ then
|
||||
var pauseStartDateTime = (pauseStartState as DateTimeType).getZonedDateTime()
|
||||
if (pauseStartDateTime.getHour() < 8) {
|
||||
logWarn("Rules", "Power Pause program shall not start before 08:00h => " + pauseStartDateTime)
|
||||
return
|
||||
return
|
||||
}
|
||||
|
||||
val programDuration = Duration.between(now, pauseStartDateTime)
|
||||
|
@ -167,10 +167,10 @@ Hayward OmniLogic Connection Parameters:
|
||||
| heaterEnable | Switch | Heater enable | R |
|
||||
| heaterCurrentSetpoint | Number:Temperature | Heater Current Setpoint | R/W |
|
||||
|
||||
**Item Types Number:Dimensionless should have the units (i.e. %, ppm) defined in the Unit metadata
|
||||
**Item Types Number:Dimensionless should have the units (i.e. %, ppm) defined in the Unit metadata
|
||||
|
||||
## Full Example
|
||||
|
||||
After installing the binding, you will need to manually add the Hayward Connection thing and enter your credentials.
|
||||
All pool items can be automatically discovered by scanning the bridge.
|
||||
All pool items can be automatically discovered by scanning the bridge.
|
||||
Goto the inbox and add the things.
|
||||
|
@ -9,7 +9,7 @@ A single supported thing called `collection`.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The thing supports one setting labelled `address` which is your street number and name as it appears on Google.
|
||||
The thing supports one setting labelled `address` which is your street number and name as it appears on Google.
|
||||
_For Example:
|
||||
1 Victoria Street_
|
||||
|
||||
|
@ -73,7 +73,7 @@ demo.rules:
|
||||
```java
|
||||
rule SomeRule
|
||||
when
|
||||
Channel "helios:ipvario221:gate:keypressed" triggered
|
||||
Channel "helios:ipvario221:gate:keypressed" triggered
|
||||
then
|
||||
var actionName = receivedEvent.getEvent()
|
||||
logInfo("org.openhab","Rule trigger " + actionName)
|
||||
|
@ -98,22 +98,22 @@ After the bridge has been added and authorized, devices are discovered automatic
|
||||
#### 2. Create Home Connect developer account
|
||||
|
||||
1. Create an account at [https://developer.home-connect.com](https://developer.home-connect.com) and login.
|
||||
1. Please make sure you've added your associated Home Connect account email at <https://developer.home-connect.com/user/me/edit>. You should fill in your email address, which you use for the official Android or iOS app, at `Default Home Connect User Account for Testing`.
|
||||
1. Please make sure you've added your associated Home Connect account email at <https://developer.home-connect.com/user/me/edit>. You should fill in your email address, which you use for the official Android or iOS app, at `Default Home Connect User Account for Testing`.
|
||||
![Screenshot Home Connect profile page](doc/home_connect_profile.png "Screenshot Home Connect profile page")
|
||||
1. Register / Create an application at [https://developer.home-connect.com/applications](https://developer.home-connect.com/applications)
|
||||
- _Application ID_: e.g. `openhab-binding`
|
||||
- _OAuth Flow_: Authorization Code Grant Flow
|
||||
- _Home Connect User Account for Testing_: the associated user account email from [Home Connect](https://www.home-connect.com/)
|
||||
> **WARNING**: Please don't use your developer account username
|
||||
- _Home Connect User Account for Testing_: the associated user account email from [Home Connect](https://www.home-connect.com/)
|
||||
> **WARNING**: Please don't use your developer account username
|
||||
|
||||
- _Redirect URIs_: add your openHAB URL followed by `/homeconnect`
|
||||
- _Redirect URIs_: add your openHAB URL followed by `/homeconnect`
|
||||
for example: `http://192.168.178.34:8080/homeconnect` or `https://myhome.domain.com/homeconnect`
|
||||
- _One Time Token Mode_: keep unchecked
|
||||
- _Proof Key for Code Exchange_: keep unchecked
|
||||
|
||||
|
||||
> **NOTE**: You might get an error (`403 - Forbidden`) in case you entered a bare IP of your local openHAB instance. In that case, use your instance's hostname instead (e.g. for openhabian `http://openhabian:8080/homeconnect`) and try again.
|
||||
|
||||
1. After your application has been created, you should see the _Client ID_ and _Client Secret_ of the application. Please save these for later.
|
||||
|
||||
1. After your application has been created, you should see the _Client ID_ and _Client Secret_ of the application. Please save these for later.
|
||||
|
||||
![Screenshot Home Connect application page](doc/home_connect_application.png "Screenshot Home Connect application page")
|
||||
|
||||
@ -129,11 +129,11 @@ The Home Connect bridge can be configured in the openHAB UI as follows:
|
||||
- **client secret:** your application client secret
|
||||
- **simulator:** false
|
||||
1. Now navigate to the URL (`Redirct URI`) you've added to your Home Connect application in the previous step (2.3). For example `http://192.168.178.80:8080/homeconnect`.
|
||||
1. Please follow the steps shown to authenticate your binding. You can redo this step every time. For example if you have authentication problems, just start wizard again.
|
||||
![Screenshot Home Connect wizard page 1](doc/homeconnect_setup_1.png "Screenshot Home Connect wizard page 1")
|
||||
![Screenshot Home Connect wizard page 2](doc/homeconnect_setup_2.png "Screenshot Home Connect wizard page 2")
|
||||
![Screenshot Home Connect wizard page 3](doc/homeconnect_setup_3.png "Screenshot Home Connect wizard page 3")
|
||||
![Screenshot Home Connect wizard page 4](doc/homeconnect_setup_4.png "Screenshot Home Connect wizard page 4")
|
||||
1. Please follow the steps shown to authenticate your binding. You can redo this step every time. For example if you have authentication problems, just start wizard again.
|
||||
![Screenshot Home Connect wizard page 1](doc/homeconnect_setup_1.png "Screenshot Home Connect wizard page 1")
|
||||
![Screenshot Home Connect wizard page 2](doc/homeconnect_setup_2.png "Screenshot Home Connect wizard page 2")
|
||||
![Screenshot Home Connect wizard page 3](doc/homeconnect_setup_3.png "Screenshot Home Connect wizard page 3")
|
||||
![Screenshot Home Connect wizard page 4](doc/homeconnect_setup_4.png "Screenshot Home Connect wizard page 4")
|
||||
1. That's it! Now you can use autodiscovery to add devices. Your devices should show up if you start a device scan in the openHAB UI.
|
||||
|
||||
## Examples: File based configuration
|
||||
@ -327,7 +327,7 @@ The channel of type `remote_start_allowance_state` is read only. You can only en
|
||||
|
||||
### In case of error...
|
||||
|
||||
Please check log UI (http(s)://[YOUROPENHAB]:[YOURPORT]/homeconnect) and ask for help in the community forum or on github. Please provide request and event exports.
|
||||
Please check log UI (http(s)://[YOUROPENHAB]:[YOURPORT]/homeconnect) and ask for help in the community forum or on github. Please provide request and event exports.
|
||||
![Screenshot Home Connect wizard page 4](doc/export_button.png "Export button")
|
||||
|
||||
### Rate limit reached
|
||||
|
@ -181,7 +181,7 @@ For a CCU2, the value may need to be increased to 180s.
|
||||
Time in seconds that the controller will be in install mode when a device discovery is initiated (default = 60)
|
||||
|
||||
- **unpairOnDeletion**
|
||||
If set to true, devices are automatically unpaired from the gateway when their corresponding things are deleted.
|
||||
If set to true, devices are automatically unpaired from the gateway when their corresponding things are deleted.
|
||||
**Warning:** The option "factoryResetOnDeletion" also unpairs a device, so in order to avoid unpairing on deletion completely, both options need to be set to false! (default = false)
|
||||
|
||||
- **factoryResetOnDeletion**
|
||||
@ -192,7 +192,7 @@ Due to the factory reset, the device will also be unpaired from the gateway, eve
|
||||
If a large number of devices are connected to the gateway, the default buffersize of 2048 kB may be too small for communication with the gateway.
|
||||
In this case, e.g. the discovery fails.
|
||||
With this setting the buffer size can be adjusted. The value is specified in kB.
|
||||
|
||||
|
||||
- **useAuthentication**
|
||||
Username and password are send to the gateway to authenticate the access to the gateway.
|
||||
|
||||
@ -212,7 +212,7 @@ homematic:bridge:NAME
|
||||
- **bridge** the type, fixed
|
||||
- **name** the name of the bridge
|
||||
|
||||
### Example
|
||||
### Bridge Configuration Example
|
||||
|
||||
#### Minimum configuration
|
||||
|
||||
@ -448,7 +448,7 @@ Adds multiple virtual datapoints to the HM-Dis-WM55 and HM-Dis-EP-WM55 devices t
|
||||
|
||||
**Note:** The HM-Dis-EP-WM55 has only a black and white display and therefore does not support datapoints for colored lines. In addition, only lines 1-3 can be set.
|
||||
|
||||
#### Example
|
||||
#### Button Example
|
||||
|
||||
Display text at line 1,3 and 5 when the bottom button on the display is pressed
|
||||
|
||||
@ -734,6 +734,7 @@ The problem can be solved by increasing the `bufferSize` value in the bridge con
|
||||
|
||||
openHAB and the CCU are using different values for the same state of a rollershutter.
|
||||
Examples: HmIP-BROLL, HmIP-FROLL, HmIP-BBL, HmIP-FBL and HmIP-DRBLI4
|
||||
|
||||
| | Open | Closed |
|
||||
| ------- | ---- | ------ |
|
||||
| openHAB | 0% | 100% |
|
||||
|
@ -112,7 +112,7 @@ Black Ink displayed as a whole percentage - `60 %`
|
||||
Text item=hpprinter_printer_djprinter_ink_blackLevel label="Black [%.0f %unit%]"
|
||||
```
|
||||
|
||||
Black Marker displayed in millilitres - `21 ml`
|
||||
Black Marker displayed in millilitres - `21 ml`
|
||||
_Default_
|
||||
|
||||
```perl
|
||||
|
@ -15,7 +15,7 @@ Both bridges are fully supported by this binding.
|
||||
|
||||
Almost all available Hue devices are supported by this binding.
|
||||
This includes not only the "Friends of Hue", but also products like the LivingWhites adapter.
|
||||
Additionally, it is possible to use OSRAM Lightify devices as well as other Zigbee Light Link compatible products, including the IKEA TRÅDFRI lights (when updated).
|
||||
Additionally, it is possible to use OSRAM Lightify devices as well as other Zigbee Light Link compatible products, including the IKEA TRÅDFRI lights (when updated).
|
||||
Beside bulbs and luminaires the Hue binding also supports some Zigbee sensors.
|
||||
Currently only Hue specific sensors are tested successfully (Hue Motion Sensor and Hue Dimmer Switch).
|
||||
Please note that the devices need to be registered with the Hue Bridge before it is possible for this binding to use them.
|
||||
|
@ -17,7 +17,7 @@ An account must be manually added and configured.
|
||||
Controller Things are automatically discovered once an [Account Bridge](#account-bridge-thing) has be properly configured.
|
||||
|
||||
The Controller Thing type is the primary way most users will control and monitor their irrigation system.
|
||||
This allows full control over zones, sensors and weather forecasts.
|
||||
This allows full control over zones, sensors and weather forecasts.
|
||||
Changes made through this Thing type will be reflected in the Hydrawise mobile and web applications as well as in their reporting modules.
|
||||
|
||||
Controller Things require a parent [Account Bridge](#account-bridge-thing)
|
||||
@ -34,15 +34,15 @@ Controller Things require a parent [Account Bridge](#account-bridge-thing)
|
||||
|
||||
### Local Thing
|
||||
|
||||
The Local Thing type uses an undocumented API that allows direct HTTP access to an irrigation controller on the user's network.
|
||||
This provides a subset of features compared to the Cloud Thing type limited to basic zone control.
|
||||
The Local Thing type uses an undocumented API that allows direct HTTP access to an irrigation controller on the user's network.
|
||||
This provides a subset of features compared to the Cloud Thing type limited to basic zone control.
|
||||
Controlling zones through the local API will not be reported back to the cloud service or the Hydrawise mobile/web applications, and reporting functionality will not reflect the locally controlled state.
|
||||
|
||||
Local control may not be available on later Hydrawise controller firmware versions.
|
||||
|
||||
Use Cases
|
||||
|
||||
- The Local thing can be useful when testing zones, as there is no delay when starting/stopping zones as compared to the cloud API which can take anywhere between 5-15 seconds.
|
||||
- The Local thing can be useful when testing zones, as there is no delay when starting/stopping zones as compared to the cloud API which can take anywhere between 5-15 seconds.
|
||||
- This is also useful if you wish to not use the cloud scheduling at all and use openHAB as the irrigation scheduling system.
|
||||
|
||||
#### Local Thing Supported Channel Groups
|
||||
|
@ -155,7 +155,7 @@ sitemap demo label="Main Menu" {
|
||||
'X-Mas'='X-Mas'
|
||||
]
|
||||
Switch item=Clear mappings=[50="Clear"]
|
||||
|
||||
|
||||
// only serverNG
|
||||
Switch item=HyperionEnabled
|
||||
Switch item=BlackBorderEnabled
|
||||
|
@ -154,7 +154,7 @@ ihc:controller:elko [ hostname="192.168.1.2", username="openhab", password="secr
|
||||
Type number : my_test_number "My Test Number" [ resourceId=3988827, direction="ReadOnly" ]
|
||||
Type rf-device-low-battery : my_low_battery "My Low Battery Warning" [ serialNumber=123456789 ]
|
||||
Type push-button-trigger : my_test_trigger "My Test Trigger" [ resourceId=3988827, longPressTime=1000 ]
|
||||
|
||||
|
||||
Type dimmer : inc_resource "Increase resource" [ resourceId=9000001, direction="WriteOnly", commandToReact="INCREASE", pulseWidth=300 ]
|
||||
Type dimmer : dec_resource "Decrease resource" [ resourceId=9000002, direction="WriteOnly", commandToReact="DECREASE", pulseWidth=300 ]
|
||||
|
||||
@ -185,14 +185,14 @@ Dimmer dimmer { channel="ihc:controller:elko:my_test_trigger"[profile="ihc:pushb
|
||||
```java
|
||||
rule "My test trigger test rule"
|
||||
when
|
||||
Channel 'ihc:controller:elko:my_test_trigger' triggered LONG_PRESS
|
||||
Channel 'ihc:controller:elko:my_test_trigger' triggered LONG_PRESS
|
||||
then
|
||||
logInfo("Test","Long press detected")
|
||||
end
|
||||
|
||||
rule "My test trigger test rule 2"
|
||||
when
|
||||
Channel 'ihc:controller:elko:my_test_trigger' triggered
|
||||
Channel 'ihc:controller:elko:my_test_trigger' triggered
|
||||
then
|
||||
val String e = receivedEvent.toString.split(' ').get(2).toString
|
||||
switch e {
|
||||
|
@ -521,7 +521,7 @@ For safety reasons, only close the garage door if you have visual contact to mak
|
||||
|
||||
> NOTE: If the I/O Linc contact status appears delayed, or returns the wrong value when the sensor changes states, the contact was likely ON (status LED lit) when the modem was linked as a responder.
|
||||
Examples of this behavior would include: The status remaining CLOSED for up to 3 minutes after the door is opened, or the status remains OPEN for up to three minutes after the garage is opened and immediately closed again.
|
||||
To resolve this behavior the I/O Linc will need to be unlinked and then re-linked to the modem with the contact OFF (stats LED off).
|
||||
To resolve this behavior the I/O Linc will need to be unlinked and then re-linked to the modem with the contact OFF (stats LED off).
|
||||
That would be with the door open when using the Insteon garage kit.
|
||||
|
||||
### Keypads
|
||||
|
@ -91,12 +91,12 @@ sitemap intesishome label="My AC control" {
|
||||
Switch item=acVanesUpDown icon="movecontrol" mappings=[AUTO="Stop", 1="1", 2="2", 3="3", 4="4", 5="5", SWING="Swing"]
|
||||
Switch item=acVanesLeftRight icon="movecontrol" mappings=[AUTO="Stop", 1="1", 2="2", 3="3", 4="4", 5="5", SWING="Swing"]
|
||||
Setpoint item=acSetPoint icon="temperature" minValue=16 maxValue=28 step=1
|
||||
Text item=acAmbientTemp icon="temperature"
|
||||
Text item=acAmbientTemp icon="temperature"
|
||||
Text item=acOutdoorTemp icon="temperature"
|
||||
Text item=acErrorStatus
|
||||
Text item=acErrorCode
|
||||
Text item=acWifiSignal icon="qualityofservice"
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@ -12,7 +12,7 @@ The IoTaWatt binding supports one Thing called `iotawatt`.
|
||||
|
||||
## Discovery
|
||||
|
||||
The binding does not auto-discover the IoTaWatt device.
|
||||
The binding does not auto-discover the IoTaWatt device.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
|
@ -286,7 +286,7 @@ To move a camera with this binding you need an ONVIF camera that supports one of
|
||||
|
||||
- Absolute movements
|
||||
- Relative movements
|
||||
- Continuous movements
|
||||
- Continuous movements
|
||||
- Presets
|
||||
|
||||
To test your cameras compatibility and also to create some preset locations, use a free program called `ONVIF Device Manager` (ODM for short).
|
||||
@ -587,7 +587,7 @@ Webview url="http://192.168.6.4:8080/static/html/file.html" height=5
|
||||
<video playsinline autoplay muted controls style="width: 100%; " src="http://openHAB:8080/ipcamera/{cameraUID}/ipcamera.m3u8" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
```
|
||||
|
||||
@ -718,13 +718,13 @@ If you use the `Create Equipment from Thing` feature to auto create your items,
|
||||
```java
|
||||
|
||||
Text label="BabyMonitor" icon="camera"{
|
||||
Switch item=BabyCam_GoToPreset icon=movecontrol label="Camera Direction" mappings=[1="Room", 2="Chair", 3="Cot"]
|
||||
Text label="Advanced Controls" icon="settings"{
|
||||
Switch item=BabyCam_GoToPreset icon=movecontrol label="Camera Direction" mappings=[1="Room", 2="Chair", 3="Cot"]
|
||||
Text label="Advanced Controls" icon="settings"{
|
||||
Default item=BabyCam_AutoLED
|
||||
Default item=BabyCam_AudioAlarmThreshold icon=recorder
|
||||
Switch item=BabyCam_AudioAlarm
|
||||
Default item=BabyCam_EnableMotionAlarm
|
||||
Default item=BabyCam_MotionAlarm
|
||||
Default item=BabyCam_MotionAlarm
|
||||
Slider item=BabyCam_Pan icon=movecontrol
|
||||
Slider item=BabyCam_Tilt icon=movecontrol
|
||||
Slider item=BabyCam_Zoom icon=zoom
|
||||
@ -732,7 +732,7 @@ If you use the `Create Equipment from Thing` feature to auto create your items,
|
||||
Default item=BabyCam_StartHLSStream
|
||||
Text label="Mjpeg Stream" icon="camera"{Video url="http://openHAB:8080/ipcamera/BabyCam/ipcamera.mjpeg" encoding="mjpeg"}
|
||||
Text label="HLS Stream" icon="camera"{Webview url="http://openHAB:8080/ipcamera/BabyCam/ipcamera.m3u8" height=15}
|
||||
Video url="http://openHAB:8080/ipcamera/BabyCam/autofps.mjpeg" encoding="mjpeg"
|
||||
}
|
||||
Video url="http://openHAB:8080/ipcamera/BabyCam/autofps.mjpeg" encoding="mjpeg"
|
||||
}
|
||||
|
||||
```
|
||||
|
@ -91,7 +91,7 @@ demo.rules:
|
||||
```java
|
||||
rule "Kitchen switch IR rule"
|
||||
when
|
||||
Item KitchenIRReceiverTelenetPower received update
|
||||
Item KitchenIRReceiverTelenetPower received update
|
||||
then
|
||||
createTimer(now.plusSeconds(5)) [|
|
||||
KitchenIRBlasterSamsung.sendCommand("samsung,power")
|
||||
|
@ -81,27 +81,27 @@ Thing ism8:device:heater "Wolf Heizung" [portNumber=12004]
|
||||
{
|
||||
Type switch-r : DpId001 "Störung Heizgerät" [id=1, type="1.001"]
|
||||
Type number-r : DpId002 "Betriebsart" [id=2, type="20.105"]
|
||||
Type percentage-r : DpId003 "Brennerleistung" [id=3, type="5.001"]
|
||||
Type temperature-r : DpId004 "Kesseltemperatur" [id=4, type="9.001"]
|
||||
Type temperature-r : DpId006 "Rücklauftemperatur" [id=6, type="9.001"]
|
||||
Type temperature-r : DpId007 "Warmwassertemperatur" [id=7, type="9.001"]
|
||||
Type temperature-r : DpId008 "Außentemperatur" [id=8, type="9.001"]
|
||||
Type switch-r : DpId009 "Status Flamme" [id=9, type="1.001"]
|
||||
Type temperature-r : DpId013 "Anlagendruck" [id=13, type="9.006"]
|
||||
Type switch-r : DpId053 "Störung Systemmodul" [id=53, type="1.001"]
|
||||
Type temperature-r : DpId054 "Außentemperatur Systemmodul" [id=54, type="9.001"]
|
||||
Type temperature-rw : DpId056 "Sollwert Warmwasser" [id=56, type="9.001"]
|
||||
Type mode-rw : DpId057 "Betriebsart Heizkreis" [id=57, type="20.102"]
|
||||
Type mode-rw : DpId058 "Betriebsart Warmwasser" [id=58, type="20.103"]
|
||||
Type temperature-rw : DpId065 "Sollwertverschiebung" [id=65, type="9.002"]
|
||||
Type switch-rw : DpId148 "CML Störung" [id=148, type="1.001"]
|
||||
Type mode-rw : DpId149 "CWL Betriebsart" [id=149, type="20.102"]
|
||||
Type percentage-r : DpId163 "CWL Lüftungsstufe" [id=163, type="5.001"]
|
||||
Type temperature-r : DpId164 "CWL Ablufttemperatur" [id=164, type="9.001"]
|
||||
Type percentage-r : DpId003 "Brennerleistung" [id=3, type="5.001"]
|
||||
Type temperature-r : DpId004 "Kesseltemperatur" [id=4, type="9.001"]
|
||||
Type temperature-r : DpId006 "Rücklauftemperatur" [id=6, type="9.001"]
|
||||
Type temperature-r : DpId007 "Warmwassertemperatur" [id=7, type="9.001"]
|
||||
Type temperature-r : DpId008 "Außentemperatur" [id=8, type="9.001"]
|
||||
Type switch-r : DpId009 "Status Flamme" [id=9, type="1.001"]
|
||||
Type temperature-r : DpId013 "Anlagendruck" [id=13, type="9.006"]
|
||||
Type switch-r : DpId053 "Störung Systemmodul" [id=53, type="1.001"]
|
||||
Type temperature-r : DpId054 "Außentemperatur Systemmodul" [id=54, type="9.001"]
|
||||
Type temperature-rw : DpId056 "Sollwert Warmwasser" [id=56, type="9.001"]
|
||||
Type mode-rw : DpId057 "Betriebsart Heizkreis" [id=57, type="20.102"]
|
||||
Type mode-rw : DpId058 "Betriebsart Warmwasser" [id=58, type="20.103"]
|
||||
Type temperature-rw : DpId065 "Sollwertverschiebung" [id=65, type="9.002"]
|
||||
Type switch-rw : DpId148 "CML Störung" [id=148, type="1.001"]
|
||||
Type mode-rw : DpId149 "CWL Betriebsart" [id=149, type="20.102"]
|
||||
Type percentage-r : DpId163 "CWL Lüftungsstufe" [id=163, type="5.001"]
|
||||
Type temperature-r : DpId164 "CWL Ablufttemperatur" [id=164, type="9.001"]
|
||||
Type temperature-r : DpId165 "CWL Zulufttemperatur" [id=165, type="9.001"]
|
||||
Type flowrate-r : DpId166 "CWL Luftdurchsatz Zuluft" [id=166, type="13.002"]
|
||||
Type flowrate-r : DpId167 "CWL Luftdurchsatz Abluft" [id=167, type="13.002"]
|
||||
Type switch-r : DpId192 "CML Filterwarnung" [id=192, type="1.001"]
|
||||
Type switch-r : DpId192 "CML Filterwarnung" [id=192, type="1.001"]
|
||||
}
|
||||
```
|
||||
|
||||
@ -137,7 +137,7 @@ Switch ISM_LueftungFilterwarnung "CML Filterwarnung"
|
||||
|
||||
```perl
|
||||
Frame label="Heizung"
|
||||
{
|
||||
{
|
||||
Text item=ISM_HeizungSysStoerung icon="siren"
|
||||
Text item=ISM_HeizungStoerung icon="siren"
|
||||
Text item=ISM_HeizungAussentemperatur icon="temperature"
|
||||
@ -151,14 +151,14 @@ Frame label="Heizung"
|
||||
Setpoint item=ISM_HeizungSollwertverschiebung icon="radiator" minValue=-5 maxValue=5 step=1
|
||||
}
|
||||
Frame label="Wasser"
|
||||
{
|
||||
{
|
||||
Text item=ISM_HeizungWarmwassertemperatur icon="temperature_hot"
|
||||
Setpoint item=ISM_HeizungSollwertWarmwasser icon="temperature" minValue=40 maxValue=60 step=1
|
||||
Selection item=ISM_HeizungBetriebsartWarmwasser icon="faucet" mappings=[0="Auto", 1="Legionellen Schutz", 2="Normal", 3="Eco", 4="Frost Schutz"]
|
||||
}
|
||||
Frame label="Lüftung"
|
||||
{
|
||||
Text item=ISM_LueftungStoerung icon="siren"
|
||||
{
|
||||
Text item=ISM_LueftungStoerung icon="siren"
|
||||
Selection item=ISM_LueftungBetriebsart icon="fan" mappings=[0="Auto", 1="Minimum", 2="Reduziert", 3="Normal", 4="Intensiv"]
|
||||
Text item=ISM_LueftungLueftungsstufe icon="qualityofservice"
|
||||
Text item=ISM_LueftungFilterwarnung icon="siren"
|
||||
|
@ -104,8 +104,8 @@ Text item=HouseAlarm icon="alarm" {
|
||||
|
||||
```java
|
||||
rule "Alarm"
|
||||
when
|
||||
Item ArmSectionA changed or Item ArmSectionAB changed or Item ArmSectionABC changed or
|
||||
when
|
||||
Item ArmSectionA changed or Item ArmSectionAB changed or Item ArmSectionABC changed or
|
||||
System started
|
||||
then
|
||||
if( ArmSectionA.state == ON || ArmSectionAB.state == ON || ArmSectionABC.state == ON)
|
||||
|
@ -10,15 +10,15 @@ See [Kaleidescape-System-Control-Protocol-Reference-Manual.pdf](https://support.
|
||||
## Supported Things
|
||||
|
||||
All movie player components including the original K-Player series, M Class Players, Cinema One, Alto, and Strato are supported.
|
||||
It is important to choose the correct thing type to ensure the available channels are correct for the component being used.
|
||||
It is important to choose the correct thing type to ensure the available channels are correct for the component being used.
|
||||
|
||||
The supported thing types are:
|
||||
`player` Any KPlayer, M Class [M300, M500, M700] or Cinema One 1st Gen player
|
||||
`cinemaone` Cinema One (2nd Gen)
|
||||
`alto`
|
||||
`strato` Includes Strato, Strato S, Strato C or Strato V
|
||||
The supported thing types are:
|
||||
`player` Any KPlayer, M Class [M300, M500, M700] or Cinema One 1st Gen player
|
||||
`cinemaone` Cinema One (2nd Gen)
|
||||
`alto`
|
||||
`strato` Includes Strato, Strato S, Strato C or Strato V
|
||||
|
||||
The binding supports either a TCP/IP connection or direct serial port connection (19200-8-N-1) to the Kaleidescape component.
|
||||
The binding supports either a TCP/IP connection or direct serial port connection (19200-8-N-1) to the Kaleidescape component.
|
||||
|
||||
## Discovery
|
||||
|
||||
@ -410,13 +410,13 @@ rule "Bring up Lights when movie is over"
|
||||
when
|
||||
Item z1_Ui_MovieLocation changed from "Main content" to "End Credits"
|
||||
then
|
||||
// fade the lights up slowly while the credits are rolling
|
||||
// fade the lights up slowly while the credits are rolling
|
||||
lightPercent = 0
|
||||
while (lightPercent < 100) {
|
||||
lightPercent = lightPercent + 5
|
||||
logInfo("k rules", "lights at " + lightPercent.toString + " percent")
|
||||
// myLightItem.sendCommand(lightPercent)
|
||||
Thread::sleep(5000)
|
||||
Thread::sleep(5000)
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -61,11 +61,11 @@ demo.items:
|
||||
```java
|
||||
Number:Dimensionless KebaCurrentRange "Maximum supply current [%.1f %%]" {channel="keba:kecontact:1:maxpresetcurrentrange"}
|
||||
Number:ElectricCurrent KebaCurrent "Maximum supply current [%.3f A]" {channel="keba:kecontact:1:maxpresetcurrent"}
|
||||
Number:ElectricCurrent KebaSystemCurrent "Maximum system supply current [%.3f A]" {channel="keba:kecontact:1:maxsystemcurrent"}
|
||||
Number:ElectricCurrent KebaFailSafeCurrent "Failsafe supply current [%.3f A]" {channel="keba:kecontact:1:failsafecurrent"}
|
||||
Number:ElectricCurrent KebaSystemCurrent "Maximum system supply current [%.3f A]" {channel="keba:kecontact:1:maxsystemcurrent"}
|
||||
Number:ElectricCurrent KebaFailSafeCurrent "Failsafe supply current [%.3f A]" {channel="keba:kecontact:1:failsafecurrent"}
|
||||
Number KebaState "Operating State [%s]" {channel="keba:kecontact:1:state"}
|
||||
Switch KebaEnabledSystem "Enabled (System)" {channel="keba:kecontact:1:enabledsystem"}
|
||||
Switch KebaEnabledUser "Enabled (User)" {channel="keba:kecontact:1:enableduser"}
|
||||
Switch KebaEnabledUser "Enabled (User)" {channel="keba:kecontact:1:enableduser"}
|
||||
Switch KebaWallboxPlugged "Plugged into wallbox" {channel="keba:kecontact:1:wallbox"}
|
||||
Switch KebaVehiclePlugged "Plugged into vehicle" {channel="keba:kecontact:1:vehicle"}
|
||||
Switch KebaPlugLocked "Plug locked" {channel="keba:kecontact:1:locked"}
|
||||
|
@ -163,7 +163,7 @@ A change would break all existing installations and is therefore not implemented
|
||||
| position | Group address of the absolute position | 5.001 |
|
||||
| increaseDecrease | Group address for relative movement | 3.007 |
|
||||
|
||||
##### Channel Type `number`, `number-control`
|
||||
##### Channel Type `number`, `number-control`
|
||||
|
||||
| Parameter | Description | Default DPT |
|
||||
|-----------|---------------|-------------|
|
||||
@ -411,7 +411,7 @@ Further DPTs and subtypes may be added later once implemented and released in th
|
||||
|||
|
||||
| 232.600 | HSBType (color) | RGB |
|
||||
| 232.60000 | HSBType (color) | Non-Standard, DPT 232.600 with HSB instead of RGB data |
|
||||
|||
|
||||
|||
|
||||
| 235.001 | QuantityType\<> (number) (Number:ActiveEnergy) | Composed DPT 235.001, first element ActiveEnergy (Wh), read only |
|
||||
| 235.61001 | DecimalType (number) | Non-Standard, composed DPT 235.001, second element Tariff (plain number), read only |
|
||||
|||
|
||||
@ -621,7 +621,7 @@ Bridge knx:serial:bridge [
|
||||
Thing device generic {
|
||||
Type switch-control : controlSwitch "Control Switch" [ ga="3/3/10+<3/3/11" ] // '<' signs are allowed but will be ignored for control Channels
|
||||
Type dimmer-control : controlDimmer "Control Dimmer" [ switch="3/3/50+3/3/48", position="3/3/46", increaseDecrease="3/3/49", frequency=300 ]
|
||||
Type color : controlColorLight "Color" [ hsb="6/0/10", switch="6/0/12", position="6/0/14",
|
||||
Type color : controlColorLight "Color" [ hsb="6/0/10", switch="6/0/12", position="6/0/14",
|
||||
Type rollershutter-control : controlRollershutter "Control Rollershutter" [ upDown="3/4/1+3/4/2", stopMove="3/4/3", position="3/4/4" ]
|
||||
Type number-control : controlNumber "Control Number" [ ga="1/2/2" ]
|
||||
Type string-control : controlString "Control String" [ ga="1/4/2" ]
|
||||
|
@ -61,7 +61,7 @@ This is commonly used with a piezo buzzer to make a "beep beep" sound when a doo
|
||||
It can also be used to blink lights.
|
||||
|
||||
A note about the Alarm Panel Pro.
|
||||
Zones 1-8 can be configured for any Channel-Types.
|
||||
Zones 1-8 can be configured for any Channel-Types.
|
||||
Zones 9-12, out1, alarm1 and out2/alarm2 can only be configured as an actuator.
|
||||
For more information, see: <https://help.konnected.io/support/solutions/articles/32000028978-alarm-panel-pro-inputs-and-outputs>
|
||||
|
||||
|
@ -286,7 +286,7 @@ demo.items:
|
||||
```java
|
||||
Number:Power GridOutputPower "Grid Output Power" <energy> { channel="kostalinverter:piko1020:mypiko1020:gridOutputPower" }
|
||||
Number:Energy YieldDaySecondGen "PV Output Power Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:yieldDaySecondGen" }
|
||||
Number:Energy YieldTotalSecondGen "PV Output Power Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:yieldTotalSecondgen" }
|
||||
Number:Energy YieldTotalSecondGen "PV Output Power Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:yieldTotalSecondgen" }
|
||||
Number:Dimensionless OperatingStatus "Operating Status" <energy> { channel="kostalinverter:piko1020:mypiko1020:operatingStatus" }
|
||||
Number:ElectricPotential GridVoltageL1 "Grid Voltage L1" <energy> { channel="kostalinverter:piko1020:mypiko1020:gridVoltageL1" }
|
||||
Number:ElectricCurrent GridCurrentL1 "Grid Current L1" <energy> { channel="kostalinverter:piko1020:mypiko1020:gridCurrentL1" }
|
||||
@ -315,12 +315,12 @@ Number:Power PhaseSelHomeConsumpL2 "Phase Sel Home Consump
|
||||
Number:Power PhaseSelHomeConsumpL3 "Phase Sel Home Consump L3" <energy> { channel="kostalinverter:piko1020:mypiko1020:phaseSelHomeConsumpL3" }
|
||||
Number:Frequency GridFreq "Grid Freq" <energy> { channel="kostalinverter:piko1020:mypiko1020:gridFreq" }
|
||||
Number:Angle GridCosPhi "Grid Cos Phi" <energy> { channel="kostalinverter:piko1020:mypiko1020:gridCosPhi" }
|
||||
Number:Energy HomeConsumptionDay "Home Consumption Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:homeConsumptionDay" }
|
||||
Number:Energy OwnConsumptionDay "Own Consumption Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsumptionDay" }
|
||||
Number:Dimensionless OwnConsRateDay "Own Cons Rate Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsRateDay" }
|
||||
Number:Energy HomeConsumptionDay "Home Consumption Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:homeConsumptionDay" }
|
||||
Number:Energy OwnConsumptionDay "Own Consumption Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsumptionDay" }
|
||||
Number:Dimensionless OwnConsRateDay "Own Cons Rate Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsRateDay" }
|
||||
Number:Dimensionless AutonomyDegreeDay "Autonomy Degree Day" <energy> { channel="kostalinverter:piko1020:mypiko1020:autonomyDegreeDay" }
|
||||
Number:Energy HomeConsumptionTotal "Home Consumption Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:homeConsumptionTotal" }
|
||||
Number:Energy OwnConsumptionTotal "Own Consumption Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsumptionTotal" }
|
||||
Number:Energy HomeConsumptionTotal "Home Consumption Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:homeConsumptionTotal" }
|
||||
Number:Energy OwnConsumptionTotal "Own Consumption Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsumptionTotal" }
|
||||
Number:Time OperatingTimeTotal "Operating Time Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:operatingTimeTotal" }
|
||||
Number:ElectricCurrent Current "Current" <energy> { channel="kostalinverter:piko1020:mypiko1020:current" }
|
||||
Number:Dimensionless CurrentDir "Current Dir" <energy> { channel="kostalinverter:piko1020:mypiko1020:currentDir" }
|
||||
@ -328,8 +328,8 @@ Number:Dimensionless ChargeCycles "Charge Cycles"
|
||||
Number:Temperature BatteryTemperature "BatteryTemperature" <energy> { channel="kostalinverter:piko1020:mypiko1020:batteryTemperature" }
|
||||
Number:Time Loginterval "Log Interval" <energy> { channel="kostalinverter:piko1020:mypiko1020:loginterval" }
|
||||
Number:Dimensionless S0InPulseCnt "S0 InPulse Cnt" <energy> { channel="kostalinverter:piko1020:mypiko1020:s0InPulseCnt" }
|
||||
Number:Dimensionless OwnConsRateTotal "Own Cons Rate Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsRateTotal" }
|
||||
Number:Dimensionless AutonomyDegreeTotal "Autonomy Degree Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:autonomyDegreeTotal" }
|
||||
Number:Dimensionless OwnConsRateTotal "Own Cons Rate Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:ownConsRateTotal" }
|
||||
Number:Dimensionless AutonomyDegreeTotal "Autonomy Degree Total" <energy> { channel="kostalinverter:piko1020:mypiko1020:autonomyDegreeTotal" }
|
||||
Number:ElectricPotential BatteryVoltage "Battery Voltage" <energy> { channel="kostalinverter:piko1020:mypiko1020:batteryVoltage" }
|
||||
Number:Dimensionless BatStateOfCharge "Bat State Of Charge" <energy> { channel="kostalinverter:piko1020:mypiko1020:batStateOfCharge" }
|
||||
Number:Power SelfConsumption "Self Consumption" <energy> { channel="kostalinverter:piko1020:mypiko1020:selfConsumption" }
|
||||
@ -337,7 +337,7 @@ Number:Dimensionless BatteryUsageConsumption "Battery Usage Consumpti
|
||||
Switch SmartBatteryControl "Smart Battery Control" <energy> { channel="kostalinverter:piko1020:mypiko1020:smartBatteryControl" }
|
||||
Number:Dimensionless MaxDepthOfDischarge "Max Depth Of Discharge" <energy> { channel="kostalinverter:piko1020:mypiko1020:maxDepthOfDischarge" }
|
||||
Number:Dimensionless ShadowManagement "Shadow Management" <energy> { channel="kostalinverter:piko1020:mypiko1020:shadowManagement" }
|
||||
Number:Dimensionless ExternalModuleControl "External Module Control" <energy> { channel="kostalinverter:piko1020:mypiko1020:externalModuleControl" }
|
||||
Number:Dimensionless ExternalModuleControl "External Module Control" <energy> { channel="kostalinverter:piko1020:mypiko1020:externalModuleControl" }
|
||||
|
||||
|
||||
```
|
||||
|
@ -233,7 +233,7 @@ rule "Notify Info"
|
||||
Item NotifyInfo changed to ON
|
||||
then
|
||||
NotifyInfo.postUpdate(OFF)
|
||||
|
||||
|
||||
logInfo("demo.rules", "Sending info notification")
|
||||
DeviceNotifyInfo.sendCommand("INFO!")
|
||||
end
|
||||
@ -243,7 +243,7 @@ rule "Notify Warning"
|
||||
Item NotifyWarning changed to ON
|
||||
then
|
||||
NotifyWarning.postUpdate(OFF)
|
||||
|
||||
|
||||
logInfo("demo.rules", "Sending warning notification")
|
||||
DeviceNotifyWarning.sendCommand("WARNING!")
|
||||
end
|
||||
@ -253,7 +253,7 @@ rule "Notify Alert"
|
||||
Item NotifyAlert changed to ON
|
||||
then
|
||||
NotifyAlert.postUpdate(OFF)
|
||||
|
||||
|
||||
logInfo("demo.rules", "Sending alert notification")
|
||||
DeviceNotifyAlert.sendCommand("ALERT!")
|
||||
end
|
||||
@ -263,9 +263,9 @@ rule "Set Alarm in 1 Minute"
|
||||
Item SetAlarmIn1Min changed to ON
|
||||
then
|
||||
SetAlarmIn1Min.postUpdate(OFF)
|
||||
|
||||
|
||||
logInfo("demo.rules", "Setting alarm for 1 minute from now")
|
||||
|
||||
|
||||
val cal = Calendar.getInstance()
|
||||
cal.add(Calendar.MINUTE, 1)
|
||||
ClockSetAlarm.sendCommand(new DateTimeType(cal))
|
||||
@ -276,7 +276,7 @@ rule "Set 2 Minute Timer"
|
||||
Item Set2MinTimer changed to ON
|
||||
then
|
||||
Set2MinTimer.postUpdate(OFF)
|
||||
|
||||
|
||||
logInfo("demo.rules", "Configure timer for 2 minutes without starting")
|
||||
TimerDuration.sendCommand(120)
|
||||
end
|
||||
|
@ -52,5 +52,5 @@ demo.items:
|
||||
```java
|
||||
Switch DemoSwitch "Switch" { channel="leapmotion:controller:1:gesture" }
|
||||
Color RGBLight "RGB Light" { channel="leapmotion:controller:1:gesture" }
|
||||
Dimmer DimmedLight "Dimmer [%d %%]" { channel="leapmotion:controller:1:gesture"[profile="leapmotion:dimmer", mode="fingers"] }
|
||||
Dimmer DimmedLight "Dimmer [%d %%]" { channel="leapmotion:controller:1:gesture"[profile="leapmotion:dimmer", mode="fingers"] }
|
||||
```
|
||||
|
@ -174,7 +174,7 @@ then
|
||||
logInfo("actions", "Actions not found, check thing ID")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
switch receivedCommand{
|
||||
case 0: actions.decreaseChannel()
|
||||
case 1: actions.increaseChannel()
|
||||
|
@ -40,7 +40,7 @@ You will have to look it up in your documentation or in the 'Luxom Plusconfig' s
|
||||
Sometimes a device does not send back a confirmation over the bus having set the correct state.
|
||||
Some dimmers do the dimming, but do not send back the set brightness level.
|
||||
To be able to use these devices, you can add the `doesNotReply=true` parameter so that the binding immediately sets the item's state and does not wait for confirmation.
|
||||
|
||||
|
||||
#### Dimmers
|
||||
|
||||
Dimmers support the optional advanced parameters `onLevel`, `onToLast` and `stepPercentage`:
|
||||
|
@ -18,7 +18,7 @@ The default update interval is set to 5 seconds. Intervals from 1 to 300 seconds
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
The thing has a few configuration parameters:
|
||||
The thing has a few configuration parameters:
|
||||
|
||||
| Parameter | Description |
|
||||
|-----------------|-----------------------------------------------------------------------|
|
||||
@ -241,6 +241,6 @@ sitemap mecmeter label="MecMeter"
|
||||
Text item=VoltageP2
|
||||
Text item=VoltageP3
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
```
|
||||
|
@ -49,12 +49,12 @@ Set `region` to your location
|
||||
- `EU` : Europe and Rest of World
|
||||
- `NA` : North America
|
||||
- `AP` : Asia Pacific
|
||||
- `CN` : China
|
||||
- `CN` : China
|
||||
|
||||
Set `pin` to your Mercedes Me App PIN.
|
||||
Parameter is *not required*.
|
||||
Note `pin` is needed for some commands which are affecting **vehicle safety**.
|
||||
Commands like _unlock doors_ will result into an _unsafe state_: your vehicle is unlocked and is accessible to everybody.
|
||||
Commands like _unlock doors_ will result into an _unsafe state_: your vehicle is unlocked and is accessible to everybody.
|
||||
|
||||
Commands protected by PIN
|
||||
|
||||
@ -63,7 +63,7 @@ Commands protected by PIN
|
||||
- Open / Ventilate Windows
|
||||
- Open / Lift Sunroof
|
||||
|
||||
IP `callbackIP` and port `callbackPort` will be auto-detected.
|
||||
IP `callbackIP` and port `callbackPort` will be auto-detected.
|
||||
If you're running on server with more than one network interface please select manually.
|
||||
|
||||
### Bridge Authorization
|
||||
@ -73,7 +73,7 @@ The Bridge will indicate in the status headline if authorization is needed inclu
|
||||
|
||||
Three steps are needed
|
||||
|
||||
1. Open the mentioned URL like 192.168.x.x:8090/mb-auth
|
||||
1. Open the mentioned URL like 192.168.x.x:8090/mb-auth
|
||||
Opening this URL will request a PIN which will be send to your configured email.
|
||||
Check your Mail Account if you received the PIN.
|
||||
Click on _Continue_ to proceed with Step 2.
|
||||
@ -84,7 +84,7 @@ Click on _Submit_ button.
|
||||
|
||||
3. Confirmation shall be shown that authorization was successful.
|
||||
|
||||
In case of non successful authorization check your log for errors.
|
||||
In case of non successful authorization check your log for errors.
|
||||
Below screenshots are illustrating the authorization flow.
|
||||
|
||||
### After Bridge Setup
|
||||
@ -150,17 +150,17 @@ Group name: `vehicle`
|
||||
| command-capabilities | String | Command Capabilities | X | | X |
|
||||
| proto-update | String | Last Vehicle Data Update | X | | X |
|
||||
|
||||
Advanced channels are used to identify problems.
|
||||
Advanced channels are used to identify problems.
|
||||
If you encounter problems with this binding follow the instructions from [Troubleshooting](#troubleshooting) section.
|
||||
|
||||
#### Lock Status Mapping
|
||||
|
||||
State
|
||||
State
|
||||
|
||||
- 0 : Locked
|
||||
- 1 : Unlocked
|
||||
|
||||
Command
|
||||
Command
|
||||
|
||||
- 0 : Lock
|
||||
- 1 : Unlock
|
||||
@ -177,7 +177,7 @@ State
|
||||
|
||||
Command
|
||||
|
||||
- 0 : Ventilate
|
||||
- 0 : Ventilate
|
||||
- 1 : Close
|
||||
- 2 : Open
|
||||
|
||||
@ -190,7 +190,7 @@ Triggers `WINDOWVENTILATE`, `WINDOWCLOSE` and `WINDOWOPEN` from [Command Name Ma
|
||||
|
||||
#### Ignition Mapping
|
||||
|
||||
State
|
||||
State
|
||||
|
||||
- 0 : Off
|
||||
- 2 : Ready
|
||||
@ -224,7 +224,7 @@ States and controls are depending on your vehicle capabilities.
|
||||
| sunroof | Number | Sun roof | X | X |
|
||||
|
||||
#### Rooftop Mapping
|
||||
|
||||
|
||||
- 0 : Unlocked
|
||||
- 1 : Open and locked
|
||||
- 2 : Closed and locked
|
||||
@ -301,11 +301,11 @@ State representing current window position.
|
||||
#### Rear Right Blind Channel Mapping
|
||||
|
||||
- not available yet
|
||||
|
||||
|
||||
#### Rear Left Blind Channel Mapping
|
||||
|
||||
- not available yet
|
||||
|
||||
|
||||
#### Rear Blind Channel Mapping
|
||||
|
||||
- not available yet
|
||||
@ -358,7 +358,7 @@ Triggers `- PRECONDCONFIGURESEATS` from [Command Name Mapping](#command-name-map
|
||||
Pre-configure selected zone with desired temperature.
|
||||
Minimum and maximum temperature depends on your local settings either Degree Celsius or Fahrenheit.
|
||||
|
||||
Celsius
|
||||
Celsius
|
||||
|
||||
- Minimum : 16 °C
|
||||
- Maximum : 28 °C
|
||||
@ -372,10 +372,10 @@ Fahrenheit
|
||||
|
||||
Triggers `TEMPERATURECONFIGURE` from [Command Name Mapping](#command-name-mapping)
|
||||
|
||||
#### AC Precondition Control
|
||||
#### AC Precondition Control
|
||||
|
||||
Triggers `PRECONDSTART` and `PRECONDSTOP` from [Command Name Mapping](#command-name-mapping)
|
||||
|
||||
|
||||
#### AC Precondition Status Mapping
|
||||
|
||||
- 0 : No Request
|
||||
@ -383,7 +383,7 @@ Triggers `PRECONDSTART` and `PRECONDSTOP` from [Command Name Mapping](#command-n
|
||||
- 2 : Available after Restart Engine
|
||||
- 3 : Not Possible, Charging not Finished
|
||||
- 4 : General Error</option>
|
||||
|
||||
|
||||
#### Auxiliary Heating Switch
|
||||
|
||||
Triggers `AUXHEATSTART` and `AUXHEATSTOP` from [Command Name Mapping](#command-name-mapping)
|
||||
@ -582,9 +582,9 @@ All channels `read-only`
|
||||
#### Average Consumption
|
||||
|
||||
You can configure different average consumption units like kWh per 100 kilometer or km per kWh.
|
||||
In your Mercedes Me App front page
|
||||
In your Mercedes Me App front page
|
||||
|
||||
- Burger Menu top left
|
||||
- Burger Menu top left
|
||||
- Last Entry `Settings`
|
||||
- First Entry `Units`
|
||||
|
||||
@ -593,7 +593,7 @@ In your Mercedes Me App front page
|
||||
#### Trip Duration
|
||||
|
||||
Shown as String in format `d days, HH:mm`.
|
||||
If duration is below 24 hours format is `HH:mm`.
|
||||
If duration is below 24 hours format is `HH:mm`.
|
||||
|
||||
### ECO Score
|
||||
|
||||
@ -657,10 +657,10 @@ All channels `read-only`
|
||||
| pressure-front-right | Number:Pressure | Tire Pressure Front Right |
|
||||
| pressure-rear-left | Number:Pressure | Tire Pressure Rear Left |
|
||||
| pressure-rear-right | Number:Pressure | Tire Pressure Rear Right |
|
||||
| sensor-available | Number | Tire Sensor Available |
|
||||
| sensor-available | Number | Tire Sensor Available |
|
||||
| marker-front-left | Number | Tire Marker Front Left |
|
||||
| marker-front-right | Number | Tire Marker Front Right |
|
||||
| marker-rear-left | Number | Tire Marker Rear Left |
|
||||
| marker-front-right | Number | Tire Marker Front Right |
|
||||
| marker-rear-left | Number | Tire Marker Rear Left |
|
||||
| marker-rear-right | Number | Tire Marker Rear Right |
|
||||
| last-update | DateTime | Timestamp of last Measurement |
|
||||
|
||||
@ -740,7 +740,7 @@ Send lock/unlock or temperatures in a short period of time will result in failur
|
||||
|
||||
## Vehicle Actions
|
||||
|
||||
Actions for `vehicle` [thing}(#vehicle) are provided.
|
||||
Actions for `vehicle` [thing}(#vehicle) are provided.
|
||||
|
||||
### `sendPOI`
|
||||
|
||||
@ -777,19 +777,19 @@ Full information
|
||||
There's a big variety of vehicles with different features and different command capabilities.
|
||||
During discovery the capabilities of your vehicle are identified.
|
||||
They are stored in `Vehicle Properties` as shown below.
|
||||
You can check in beforehand if features like _Charge Program Configuration_ or _HVAC Configuration_ are supported or not.
|
||||
You can check in beforehand if features like _Charge Program Configuration_ or _HVAC Configuration_ are supported or not.
|
||||
|
||||
<img src="./doc/OH-capabilities.png" width="500" height="280"/>
|
||||
|
||||
If you want to dive deeper see [Troubleshooting](#troubleshooting) `feature-capabilities` and `command-capabilities` to evaluate the exact capabilities.
|
||||
If you want to dive deeper see [Troubleshooting](#troubleshooting) `feature-capabilities` and `command-capabilities` to evaluate the exact capabilities.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
In order to be able to analyze problems 3 advanced channels are placed in the vehicle group.
|
||||
|
||||
* `feature-capabilities` - showing which feature your vehicle is equipped with
|
||||
* `command-capabilities` - showing which commands can be sent to your vehicle
|
||||
* `proto-update` - latest update of your vehicle data
|
||||
- `feature-capabilities` - showing which feature your vehicle is equipped with
|
||||
- `command-capabilities` - showing which commands can be sent to your vehicle
|
||||
- `proto-update` - latest update of your vehicle data
|
||||
|
||||
In case you find problems regarding this binding add items to these 3 channels.
|
||||
The items are reporting Strings in JSON format.
|
||||
@ -879,7 +879,7 @@ Number:Speed EQA_TripAvgSpeed {channel="mercedesme:bev:471
|
||||
Number EQA_TripAvgConsumption {channel="mercedesme:bev:4711:eqa:trip#cons-ev" }
|
||||
String EQA_AvgConsumptionUnit {channel="mercedesme:bev:4711:eqa:trip#cons-ev-unit" }
|
||||
|
||||
Number:Angle EQA_Heading {channel="mercedesme:bev:4711:eqa:position#heading" }
|
||||
Number:Angle EQA_Heading {channel="mercedesme:bev:4711:eqa:position#heading" }
|
||||
Location EQA_GPSLocation {channel="mercedesme:bev:4711:eqa:position#gps" }
|
||||
Number EQA_Signal {channel="mercedesme:bev:4711:eqa:position#signal" }
|
||||
|
||||
@ -900,10 +900,10 @@ DateTime EQA_CommandTimestamp {channel="mercedesme:bev:471
|
||||
// send POI from JSON String item
|
||||
rule "Send POI"
|
||||
when
|
||||
Item POIJsonString changed
|
||||
Item POIJsonString changed
|
||||
then
|
||||
// decode JSON
|
||||
val json = POIJsonString.state.toString
|
||||
val json = POIJsonString.state.toString
|
||||
val title = transform("JSONPATH", "$.title", json)
|
||||
val lat = transform("JSONPATH", "$.latitude", json)
|
||||
val lon = transform("JSONPATH", "$.longitude", json)
|
||||
|
@ -1,6 +1,6 @@
|
||||
# How to protoc
|
||||
|
||||
- Check [mvn repository](https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util) which version to use
|
||||
- Check [mvn repository](https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util) which version to use
|
||||
- Download correct protoc compiler from [maven central](https://repo1.maven.org/maven2/com/google/protobuf/protoc/) into `PROTOC_DIR`
|
||||
- Call in mercedesme binding directory `PROTOC_DIR\protoc -I=proto --java_out=gen proto/*.proto`
|
||||
- Move generated sources including subdirs from `gen` to `3rdparty\java`
|
||||
|
@ -1,6 +1,6 @@
|
||||
# MfFan Binding
|
||||
|
||||
This binding is used to enable communications between openHAB and "Modern Forms" or "WAC Lighting" WIFI connected, smart, ceiling fans.
|
||||
This binding is used to enable communications between openHAB and "Modern Forms" or "WAC Lighting" WIFI connected, smart, ceiling fans.
|
||||
|
||||
## Supported Things
|
||||
|
||||
@ -12,7 +12,7 @@ The binding currently supports the following thing:
|
||||
|
||||
## Discovery
|
||||
|
||||
Auto discovery is not supported at this time.
|
||||
Auto discovery is not supported at this time.
|
||||
|
||||
## Thing Configuration
|
||||
|
||||
|
@ -130,7 +130,7 @@ Bridge mihome:bridge:f0b429XXXXXX "Xiaomi Gateway" [ serialNumber="f0b429XXXXXX"
|
||||
```java
|
||||
// Replace <GwID> with itemId of gateway from Things file
|
||||
// Replace <ID> with itemId of item from Things file
|
||||
// Gateway
|
||||
// Gateway
|
||||
Switch Gateway_LightSwitch <light> { channel="mihome:gateway:<GwID>:<ID>:brightness" }
|
||||
Dimmer Gateway_Brightness <dimmablelight> { channel="mihome:gateway:<GwID>:<ID>:brightness" }
|
||||
Color Gateway_Color <rgb> { channel="mihome:gateway:<GwID>:<ID>:color" }
|
||||
@ -238,7 +238,7 @@ rule "Mijia & Aqara Wireless Switch"
|
||||
when
|
||||
Channel "mihome:sensor_switch:<GwID>:<ID>:button" triggered
|
||||
then
|
||||
|
||||
|
||||
switch(receivedEvent) {
|
||||
case "SHORT_PRESSED": {
|
||||
<ACTION>
|
||||
@ -553,7 +553,7 @@ In order to verify that traffic is actually received by the machine use `tcpdump
|
||||
|
||||
- List your network interfaces `ifconfig | grep MULTICAST` or `ip link | grep MULTICAST`
|
||||
- Use `tcpdump -i <interface> port 9898` for each interface to verify if you receive traffic
|
||||
|
||||
|
||||
If you already know the correct interface, or you found the correct one through tcpdump:
|
||||
|
||||
- Configure the `interface` property of the `Bridge` Thing with the correct name (for example `eth0`, etc)
|
||||
|
@ -6385,10 +6385,10 @@ Number statusBat "Battery Level [%1.0f%%]" <battery> (gVac,gVacStat) {chann
|
||||
Number statusArea "Cleaned Area [%1.0fm²]" <zoom> (gVac,gVacStat) {channel="miio:vacuum:034F0E45:status#clean_area" }
|
||||
Number statusTime "Cleaning Time [%1.0f']" <clock> (gVac,gVacStat) {channel="miio:vacuum:034F0E45:status#clean_time" }
|
||||
String statusError "Error [%s]" <error> (gVac,gVacStat) {channel="miio:vacuum:034F0E45:status#error_code" }
|
||||
Number statusFanPow "Fan Power [%1.0f%%]" <signal> (gVacStat) {channel="miio:vacuum:034F0E45:status#fan_power" }
|
||||
Number statusFanPow "Fan Power [%1.0f%%]" <signal> (gVacStat) {channel="miio:vacuum:034F0E45:status#fan_power" }
|
||||
Number statusClean "In Cleaning Status [%1.0f]" <switch> (gVacStat) {channel="miio:vacuum:034F0E45:status#in_cleaning" }
|
||||
Switch statusDND "DND Activated" (gVacStat) {channel="miio:vacuum:034F0E45:status#dnd_enabled" }
|
||||
Number statusStatus "Status [%1.0f]" <status> (gVacStat) {channel="miio:vacuum:034F0E45:status#state"}
|
||||
Number statusStatus "Status [%1.0f]" <status> (gVacStat) {channel="miio:vacuum:034F0E45:status#state"}
|
||||
Switch isLocating "Locating" (gVacStat) {channel="miio:vacuum:034F0E45:status#is_locating" }
|
||||
|
||||
Number consumableMain "Main Brush [%1.0f]" (gVacCons) {channel="miio:vacuum:034F0E45:consumables#main_brush_time"}
|
||||
|
@ -37,11 +37,11 @@ See full example below for how to configure using thing files.
|
||||
|
||||
### Heater
|
||||
|
||||
- `macAddress` = network mac address of device in UPPERCASE.
|
||||
- `macAddress` = network mac address of device in UPPERCASE.
|
||||
Can be found in the app by viewing devices. Or you can find it during discovery. Used for heaters connected to a room.
|
||||
- `heaterId` = id of device/heater, type number (not string)
|
||||
Use auto discovery to find this value. Used to identify independent heaters or heaters connected to a room.
|
||||
- `power` = number of watts this heater is consuming when active.
|
||||
- `power` = number of watts this heater is consuming when active.
|
||||
Used to provide data for the currentPower channel.
|
||||
|
||||
Either `macAddres` or `heaterId` must be specified.
|
||||
@ -93,7 +93,7 @@ Bridge millheat:account:home "Millheat account" [username="email@address.com",pa
|
||||
Thing home monaco "Penthouse Monaco" [ homeId=100000000000000 ] // Note: numeric value
|
||||
Thing room office "Office room" [ roomId=200000000000000 ] Note: numeric value
|
||||
Thing heater office "Office panel heater" [ macAddress="F0XXXXXXXXX", power=900, heaterId=12345 ] Note: heaterId is a numeric value, macAddress in UPPERCASE
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
millheat.items:
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
Integrates the Home Power Plants from E3/DC GmbH into openHAB.
|
||||
See [E3DC Website](https://www.e3dc.com/) to find more informations about the device.
|
||||
The Power Plant handles all your Electrical Energy Resources like Photovoltaic Producers, Battery Storage, Wallbox Power Supply, Household Consumption and even more.
|
||||
The Power Plant handles all your Electrical Energy Resources like Photovoltaic Producers, Battery Storage, Wallbox Power Supply, Household Consumption and even more.
|
||||
E3DC devices are integrated into the Modbus Binding.
|
||||
|
||||
See chapter [Thing Configuration](#thing-configuration) how to set them up or check the [full example Things](#things) for manual setup.
|
||||
@ -228,7 +228,7 @@ sitemap E3DC label="E3DC Binding Sitemap" {
|
||||
Text item=E3DC_Firmware label="Firmware [%s]"
|
||||
Text item=E3DC_SerialNumber label="Serial Number[%s]"
|
||||
}
|
||||
|
||||
|
||||
Frame label="Power Producer" {
|
||||
Text item=E3DC_PVPower label="PV Power [%d %unit%]"
|
||||
Text item=E3DC_BatteryDischarge label="Battery Discharge [%d %unit%]"
|
||||
@ -247,7 +247,7 @@ sitemap E3DC label="E3DC Binding Sitemap" {
|
||||
Text item=E3DC_SelfConsumptionLevel label="Self Consumption [%d %%]"
|
||||
Text item=E3DC_BatterySOC label="SOC [%d %%]"
|
||||
}
|
||||
|
||||
|
||||
Frame label="Wallbox" {
|
||||
Switch item=E3DC_WB_Available label="Available [%s]"
|
||||
Switch item=E3DC_WB_Sunmode label="Sunmode [%s]"
|
||||
@ -263,7 +263,7 @@ sitemap E3DC label="E3DC Binding Sitemap" {
|
||||
Switch item=E3DC_WB_Relay32A label="Relay 32A [%s]"
|
||||
Switch item=E3DC_WB_1PhaseCharging label="1-Phase charging [%s]"
|
||||
}
|
||||
|
||||
|
||||
Frame label="String 1 Details" {
|
||||
Text item=E3DC_String1V label="Volt [%d %unit%]"
|
||||
Text item=E3DC_String1A label="Ampere [%.2f %unit%]"
|
||||
@ -279,7 +279,7 @@ sitemap E3DC label="E3DC Binding Sitemap" {
|
||||
Text item=E3DC_String3A label="Ampere [%.2f %unit%]"
|
||||
Text item=E3DC_String3W label="Watt [%d %unit%]"
|
||||
}
|
||||
|
||||
|
||||
Frame label="EMS" {
|
||||
Text item=E3DC_EMS_Status label="Status [%s]"
|
||||
Switch item=E3DC_EMS_BatteryChargingLock label="Battery Charging Lock [%s]"
|
||||
|
@ -154,10 +154,10 @@ Number:Energy stiebel_eltron_consumption_water_total "Water heating p
|
||||
```perl
|
||||
Text label="Heat pumpt" icon="temperature" {
|
||||
Frame label="Optation Mode" {
|
||||
Default item=stiebel_eltron_mode_pump
|
||||
Default item=stiebel_eltron_mode_pump
|
||||
Default item=stiebel_eltron_mode_heating
|
||||
Default item=stiebel_eltron_mode_water
|
||||
Default item=stiebel_eltron_mode_cooling
|
||||
Default item=stiebel_eltron_mode_water
|
||||
Default item=stiebel_eltron_mode_cooling
|
||||
Default item=stiebel_eltron_mode_summer
|
||||
}
|
||||
Frame label= "State" {
|
||||
|
@ -165,7 +165,7 @@ Number Studer_BSP_batteryVoltage "Battery Voltage: [%s]" {cha
|
||||
Text item=Studer_Xtender_Phase1_InputVoltage
|
||||
Text item=Studer_Xtender_Phase1_InputCurrent
|
||||
Text item=Studer_Xtender_Phase1_StateInverter
|
||||
|
||||
|
||||
Chart item=Studer_Xtender_Phase1_InputVoltage period=D refresh=600000
|
||||
Chart item=Studer_Xtender_Phase1_InputCurrent period=D refresh=30000
|
||||
|
||||
|
@ -114,15 +114,15 @@ Basic parameters
|
||||
|
||||
Advanced parameters
|
||||
|
||||
| Parameter | Required | Type | Default if omitted | Description |
|
||||
| ------------------------------- | -------- | ------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `timeBetweenTransactionsMillis` | | integer | `60` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
|
||||
| `timeBetweenReconnectMillis` | | integer | `0` | How long to wait to before trying to establish a new connection after the previous one has been disconnected. In milliseconds. |
|
||||
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
|
||||
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
|
||||
| `reconnectAfterMillis` | | integer | `0` | The connection is kept open at least the time specified here. Value of zero means that connection is disconnected after every MODBUS transaction. In milliseconds. |
|
||||
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means that system/OS default is respected. In milliseconds. |
|
||||
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
|
||||
| Parameter | Required | Type | Default if omitted | Description |
|
||||
|---------------------------------|----------|---------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `timeBetweenTransactionsMillis` | | integer | `60` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
|
||||
| `timeBetweenReconnectMillis` | | integer | `0` | How long to wait to before trying to establish a new connection after the previous one has been disconnected. In milliseconds. |
|
||||
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
|
||||
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
|
||||
| `reconnectAfterMillis` | | integer | `0` | The connection is kept open at least the time specified here. Value of zero means that connection is disconnected after every MODBUS transaction. In milliseconds. |
|
||||
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means that system/OS default is respected. In milliseconds. |
|
||||
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
|
||||
|
||||
**Note:** Advanced parameters must be equal for all `tcp` things sharing the same `host` and `port`.
|
||||
|
||||
@ -136,29 +136,29 @@ Similarly, with some slower devices on might need to increase the values.
|
||||
|
||||
Basic parameters
|
||||
|
||||
| Parameter | Type | Required | Default if omitted | Description | |
|
||||
| --------- | ------- | -------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- |
|
||||
| port | text | ✓ | | Serial port to use, for example `"/dev/ttyS0"` or `"COM1"` | |
|
||||
| id | integer | | `1` | Slave id. Also known as station address or unit identifier. See [Wikipedia](https://en.wikipedia.org/wiki/Modbus) and [simplymodbus](https://www.simplymodbus.ca/index.html) articles for more information | |
|
||||
| baud | integer | ✓ | | Baud of the connection. Valid values are: `75`, `110`, `300`, `1200`, `2400`, `4800`, `9600`, `19200`, `38400`, `57600`, `115200`. | |
|
||||
| stopBits | text | ✓ | | Stop bits. Valid values are: `"1.0"`, `"1.5"`, `"2.0"`. | |
|
||||
| parity | text | ✓ | | Parity. Valid values are: `"none"`, `"even"`, `"odd"`. | |
|
||||
| dataBits | integer | ✓ | | Data bits. Valid values are: `5`, `6`, `7` and `8`. | |
|
||||
| encoding | text | | `"rtu"` | Encoding. Valid values are: `"ascii"`, `"rtu"`, `"bin"`. | |
|
||||
| echo | boolean | | `false` | Flag for setting the RS485 echo mode. This controls whether we should try to read back whatever we send on the line, before reading the response. Valid values are: `true`, `false`. | |
|
||||
| Parameter | Type | Required | Default if omitted | Description | |
|
||||
|-----------|---------|----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
|
||||
| port | text | ✓ | | Serial port to use, for example `"/dev/ttyS0"` or `"COM1"` | |
|
||||
| id | integer | | `1` | Slave id. Also known as station address or unit identifier. See [Wikipedia](https://en.wikipedia.org/wiki/Modbus) and [simplymodbus](https://www.simplymodbus.ca/index.html) articles for more information | |
|
||||
| baud | integer | ✓ | | Baud of the connection. Valid values are: `75`, `110`, `300`, `1200`, `2400`, `4800`, `9600`, `19200`, `38400`, `57600`, `115200`. | |
|
||||
| stopBits | text | ✓ | | Stop bits. Valid values are: `"1.0"`, `"1.5"`, `"2.0"`. | |
|
||||
| parity | text | ✓ | | Parity. Valid values are: `"none"`, `"even"`, `"odd"`. | |
|
||||
| dataBits | integer | ✓ | | Data bits. Valid values are: `5`, `6`, `7` and `8`. | |
|
||||
| encoding | text | | `"rtu"` | Encoding. Valid values are: `"ascii"`, `"rtu"`, `"bin"`. | |
|
||||
| echo | boolean | | `false` | Flag for setting the RS485 echo mode. This controls whether we should try to read back whatever we send on the line, before reading the response. Valid values are: `true`, `false`. | |
|
||||
|
||||
Advanced parameters
|
||||
|
||||
| Parameter | Required | Type | Default if omitted | Description |
|
||||
| ------------------------------- | -------- | ------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `receiveTimeoutMillis` | | integer | `1500` | Timeout for read operations. In milliseconds. |
|
||||
| `flowControlIn` | | text | `"none"` | Type of flow control for receiving. Valid values are: `"none"`, `"xon/xoff in"`, `"rts/cts in"`. |
|
||||
| `flowControlOut` | | text | `"none"` | Type of flow control for sending. Valid values are: `"none"`, `"xon/xoff out"`, `"rts/cts out"`. |
|
||||
| `timeBetweenTransactionsMillis` | | integer | `35` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
|
||||
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
|
||||
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
|
||||
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means thatsystem/OS default is respected. In milliseconds. |
|
||||
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
|
||||
| Parameter | Required | Type | Default if omitted | Description |
|
||||
|---------------------------------|----------|---------|--------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `receiveTimeoutMillis` | | integer | `1500` | Timeout for read operations. In milliseconds. |
|
||||
| `flowControlIn` | | text | `"none"` | Type of flow control for receiving. Valid values are: `"none"`, `"xon/xoff in"`, `"rts/cts in"`. |
|
||||
| `flowControlOut` | | text | `"none"` | Type of flow control for sending. Valid values are: `"none"`, `"xon/xoff out"`, `"rts/cts out"`. |
|
||||
| `timeBetweenTransactionsMillis` | | integer | `35` | How long to delay we must have at minimum between two consecutive MODBUS transactions. In milliseconds. |
|
||||
| `connectMaxTries` | | integer | `1` | How many times we try to establish the connection. Should be at least 1. |
|
||||
| `afterConnectionDelayMillis` | | integer | `0` | Connection warm-up time. Additional time which is spent on preparing connection which should be spent waiting while end device is getting ready to answer first modbus call. In milliseconds. |
|
||||
| `connectTimeoutMillis` | | integer | `10000` | The maximum time that is waited when establishing the connection. Value of zero means thatsystem/OS default is respected. In milliseconds. |
|
||||
| `enableDiscovery` | | boolean | false | Enable auto-discovery feature. Effective only if a supporting extension has been installed. |
|
||||
|
||||
With the exception of `id` parameters should be equal for all `serial` things sharing the same `port`.
|
||||
|
||||
@ -174,9 +174,9 @@ With low baud rates and/or long read requests (that is, many items polled), ther
|
||||
You must give each of your bridge Things a reference (thing ID) that is unique for this binding.
|
||||
|
||||
| Parameter | Type | Required | Default if omitted | Description |
|
||||
| ------------- | ------- | -------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
|---------------|---------|----------|--------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `start` | integer | | `0` | Address of the first register, coil, or discrete input to poll. Input as zero-based index number. |
|
||||
| `length` | integer | ✓ | (-) | Number of registers, coils or discrete inputs to read. Note that protocol limits max length, depending on type |
|
||||
| `length` | integer | ✓ | (-) | Number of registers, coils or discrete inputs to read. Note that protocol limits max length, depending on type |
|
||||
| `type` | text | ✓ | (-) | Type of modbus items to poll. This matches directly to Modbus request type or function code (FC). Valid values are: `"coil"` (FC01), `"discrete"` (FC02), `"holding"`(FC03), `"input"` (FC04). |
|
||||
| `refresh` | integer | | `500` | Poll interval in milliseconds. Use zero to disable automatic polling. |
|
||||
| `maxTries` | integer | | `3` | Maximum tries when reading. <br /><br />Number of tries when reading data, if some of the reading fail. For single try, enter 1. |
|
||||
@ -360,14 +360,14 @@ Note that value types less than 16 bits are not supported on write to holding re
|
||||
|
||||
See [Full examples](#full-examples) section for practical examples.
|
||||
|
||||
#### `bit`:
|
||||
#### `bit`
|
||||
|
||||
- a single bit is read from the registers
|
||||
- address is given as `X.Y`, where `Y` is between 0...15 (inclusive), representing bit of the register `X`
|
||||
- index `Y=0` refers to the least significant bit
|
||||
- index `Y=1` refers to the second least significant bit, etc.
|
||||
|
||||
#### `int8`:
|
||||
#### `int8`
|
||||
|
||||
- a byte (8 bits) from the registers is interpreted as signed integer
|
||||
- address is given as `X.Y`, where `Y` is between 0...1 (inclusive), representing byte of the register `X`
|
||||
@ -375,42 +375,42 @@ See [Full examples](#full-examples) section for practical examples.
|
||||
- index `Y=1` refers to high byte
|
||||
- it is assumed that each high and low byte is encoded in most significant bit first order
|
||||
|
||||
#### `uint8`:
|
||||
#### `uint8`
|
||||
|
||||
- same as `int8` except value is interpreted as unsigned integer
|
||||
|
||||
#### `int16`:
|
||||
#### `int16`
|
||||
|
||||
- register with index is interpreted as 16 bit signed integer.
|
||||
- it is assumed that register is encoded in most significant bit first order
|
||||
|
||||
#### `uint16`:
|
||||
#### `uint16`
|
||||
|
||||
- same as `int16` except value is interpreted as unsigned integer
|
||||
|
||||
#### `int32`:
|
||||
#### `int32`
|
||||
|
||||
- registers `index` and `(index + 1)` are interpreted as signed 32bit integer
|
||||
- it assumed that the first register contains the most significant 16 bits
|
||||
- it is assumed that each register is encoded in most significant bit first order
|
||||
|
||||
#### `uint32`:
|
||||
#### `uint32`
|
||||
|
||||
- same as `int32` except value is interpreted as unsigned integer
|
||||
|
||||
#### `float32`:
|
||||
#### `float32`
|
||||
|
||||
- registers `index` and `(index + 1)` are interpreted as signed 32bit floating point number
|
||||
- it assumed that the first register contains the most significant 16 bits
|
||||
- it is assumed that each register is encoded in most significant bit first order
|
||||
|
||||
#### `int64`:
|
||||
#### `int64`
|
||||
|
||||
- registers `index`, `(index + 1)`, `(index + 2)`, `(index + 3)` are interpreted as signed 64bit integer.
|
||||
- it assumed that the first register contains the most significant 16 bits
|
||||
- it is assumed that each register is encoded in most significant bit first order
|
||||
|
||||
#### `uint64`:
|
||||
#### `uint64`
|
||||
|
||||
- same as `int64` except value is interpreted as unsigned integer
|
||||
|
||||
@ -422,27 +422,27 @@ To resolve this the binding supports a second set of valuetypes that have the wo
|
||||
|
||||
If you get strange values using the `int32`, `uint32`, `float32`, `int64`, or `uint64` valuetypes then just try the `int32_swap`, `uint32_swap`, `float32_swap`, `int64_swap`, or `uint64_swap` valuetype, depending upon what your data type is.
|
||||
|
||||
#### `int32_swap`:
|
||||
#### `int32_swap`
|
||||
|
||||
- registers `index` and `(index + 1)` are interpreted as signed 32bit integer
|
||||
- it assumed that the first register contains the least significant 16 bits
|
||||
- it is assumed that each register is encoded in most significant bit first order (Big Endian)
|
||||
|
||||
#### `uint32_swap`:
|
||||
#### `uint32_swap`
|
||||
|
||||
- same as `int32_swap` except value is interpreted as unsigned integer
|
||||
|
||||
#### `float32_swap`:
|
||||
#### `float32_swap`
|
||||
|
||||
- registers `index` and `(index + 1)` are interpreted as signed 32bit floating point number
|
||||
- it assumed that the first register contains the least significant 16 bits
|
||||
- it is assumed that each register is encoded in most significant bit first order (Big Endian)
|
||||
|
||||
#### `int64_swap`:
|
||||
#### `int64_swap`
|
||||
|
||||
- same as `int64` but registers swapped, that is, registers (index + 3), (index + 2), (index + 1), (index + 1) are interpreted as signed 64bit integer
|
||||
|
||||
#### `uint64_swap`:
|
||||
#### `uint64_swap`
|
||||
|
||||
- same as `uint64` except value is interpreted as unsigned integer
|
||||
|
||||
|
@ -22,19 +22,19 @@ Or you can connect it for example to a Raspberry Pi and use [ser2net Linux tool]
|
||||
## Supported Things
|
||||
|
||||
Monoprice 10761 & 39261 or Dayton Audio DAX66 amplifiers use the `amplifier` thing id. Up to 18 zones with 3 linked amps and 6 source inputs are supported.
|
||||
Note: Compatible clones from McLELLAND, Factor, Soundavo, etc. should work as well.
|
||||
Note: Compatible clones from McLELLAND, Factor, Soundavo, etc. should work as well.
|
||||
|
||||
***The following thing types were implemented via available documentation only and have not been tested. Please open an issue for any bugs found when using these thing types.***
|
||||
***The following thing types were implemented via available documentation only and have not been tested. Please open an issue for any bugs found when using these thing types.***
|
||||
|
||||
Monoprice 44519 4 zone variants use the `monoprice4` thing id. Up to 12 zones with 3 linked amps and 6 source inputs are supported.
|
||||
Monoprice 44519 4 zone variants use the `monoprice4` thing id. Up to 12 zones with 3 linked amps and 6 source inputs are supported.
|
||||
|
||||
Monoprice 31028 or OSD Audio PAM1270 70 volt amplifiers use the `monoprice70` thing id. 6 zones per amp (not linkable) and 2 source inputs are supported.
|
||||
Monoprice 31028 or OSD Audio PAM1270 70 volt amplifiers use the `monoprice70` thing id. 6 zones per amp (not linkable) and 2 source inputs are supported.
|
||||
|
||||
Dayton Audio DAX88 amplifiers use the `dax88` thing id. 8 zones (2 un-amplified) per amp (not linkable) and 8 source inputs are supported.
|
||||
Dayton Audio DAX88 amplifiers use the `dax88` thing id. 8 zones (2 un-amplified) per amp (not linkable) and 8 source inputs are supported.
|
||||
|
||||
Xantech MRC88, MX88, MRAUDIO8X8 or CM8X8 amplifiers use the `xantech` thing id. Up to 16 zones with 2 linked amps and 8 source inputs are supported.
|
||||
Some Xantech amps provide unsolicited zone updates for keypad actions and may work with the `disableKeypadPolling` option set to true which will prevent un-necessary polling of the amplifier.
|
||||
Note: MRC44 amps do not support serial control.
|
||||
Some Xantech amps provide unsolicited zone updates for keypad actions and may work with the `disableKeypadPolling` option set to true which will prevent un-necessary polling of the amplifier.
|
||||
Note: MRC44 amps do not support serial control.
|
||||
|
||||
## Discovery
|
||||
|
||||
|
@ -7,11 +7,11 @@ Ruuvi Cloud Subscription is not needed at all as the integration is local.
|
||||
Compared to Ruuvi Tag Bluetooth binding, this binding has the benefit of relying on strong and reliable antenna of Ruuvi Gateway, as opposed to e.g. usually much weaker antenna integrated onto computer motherboard.
|
||||
Obvious downside compared to the bluetooth binding is the requirement of having Ruuvi Gateway device.
|
||||
|
||||
Both RuuviTag and RuuviTag Pro are supported.
|
||||
Both RuuviTag and RuuviTag Pro are supported.
|
||||
|
||||
## Setup the Gateway
|
||||
|
||||
Before using this binding, Ruuvi Gateway needs to configured to publish the sensor data via MQTT.
|
||||
Before using this binding, Ruuvi Gateway needs to configured to publish the sensor data via MQTT.
|
||||
|
||||
For further instructions, refer to relevant section in [Ruuvi Gateway documentation](https://ruuvi.com/gateway-config/).
|
||||
For most convenient usage of this binding, please ensure that "Use 'ruuvi' on the prefix' MQTT setting is enabled on Ruuvi Gateway.
|
||||
|
@ -517,7 +517,7 @@ The channel id _name_ shows the first element as default.
|
||||
All other possibilities are attached as options.
|
||||
The picture on the right shows the _Session Title_ item and 3 possible options.
|
||||
Select the desired service and the corresponding Charge Session with _Energy Charged_, _Session Status_ and
|
||||
_Session Issues_ will be shown.
|
||||
_Session Issues_ will be shown.
|
||||
|
||||
### TroubleShooting
|
||||
|
||||
@ -597,9 +597,9 @@ Bridge mybmw:account:4711 "MyBMW Account" [userName="YOUR_USERNAME",password="
|
||||
### Items File
|
||||
|
||||
```java
|
||||
Number:Length i3Mileage "Odometer [%d %unit%]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:range#mileage" }
|
||||
Number:Length i3Mileage "Odometer [%d %unit%]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:range#mileage" }
|
||||
Number:Length i3Range "Range [%d %unit%]" <motion> (i3) {channel="mybmw:bev_rex:4711:i3:range#hybrid"}
|
||||
Number:Length i3RangeElectric "Electric Range [%d %unit%]" <motion> (i3,long) {channel="mybmw:bev_rex:4711:i3:range#electric"}
|
||||
Number:Length i3RangeElectric "Electric Range [%d %unit%]" <motion> (i3,long) {channel="mybmw:bev_rex:4711:i3:range#electric"}
|
||||
Number:Length i3RangeFuel "Fuel Range [%d %unit%]" <motion> (i3) {channel="mybmw:bev_rex:4711:i3:range#fuel"}
|
||||
Number:Dimensionless i3BatterySoc "Battery Charge [%.1f %%]" <battery> (i3,long) {channel="mybmw:bev_rex:4711:i3:range#soc"}
|
||||
Number:Volume i3Fuel "Fuel [%.1f %unit%]" <oil> (i3) {channel="mybmw:bev_rex:4711:i3:range#remaining-fuel"}
|
||||
@ -613,16 +613,16 @@ String i3LockStatus "Lock Status [%s]"
|
||||
DateTime i3NextServiceDate "Next Service Date [%1$tb %1$tY]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:status#service-date" }
|
||||
String i3NextServiceMileage "Next Service Mileage [%d %unit%]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:status#service-mileage" }
|
||||
String i3CheckControl "Check Control [%s]" <error> (i3) {channel="mybmw:bev_rex:4711:i3:status#check-control" }
|
||||
String i3PlugConnection "Plug [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#plug-connection" }
|
||||
String i3ChargingStatus "[%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#charge" }
|
||||
String i3ChargingInfo "[%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#charge-info" }
|
||||
String i3PlugConnection "Plug [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#plug-connection" }
|
||||
String i3ChargingStatus "[%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#charge" }
|
||||
String i3ChargingInfo "[%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:status#charge-info" }
|
||||
DateTime i3LastUpdate "Update [%1$tA, %1$td.%1$tm. %1$tH:%1$tM]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:status#last-update"}
|
||||
|
||||
Location i3Location "Location [%s]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:location#gps" }
|
||||
Number:Angle i3Heading "Heading [%.1f %unit%]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:location#heading" }
|
||||
Location i3Location "Location [%s]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:location#gps" }
|
||||
Number:Angle i3Heading "Heading [%.1f %unit%]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:location#heading" }
|
||||
|
||||
String i3RemoteCommand "Command [%s]" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:remote#command" }
|
||||
String i3RemoteState "Remote Execution State [%s]" <status> (i3) {channel="mybmw:bev_rex:4711:i3:remote#state" }
|
||||
String i3RemoteCommand "Command [%s]" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:remote#command" }
|
||||
String i3RemoteState "Remote Execution State [%s]" <status> (i3) {channel="mybmw:bev_rex:4711:i3:remote#state" }
|
||||
|
||||
String i3DriverDoor "Driver Door [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#driver-front" }
|
||||
String i3DriverDoorRear "Driver Door Rear [%s]" <lock> (i3) {channel="mybmw:bev_rex:4711:i3:doors#driver-rear" }
|
||||
@ -645,51 +645,51 @@ DateTime i3ServiceDate "Service Date [%1$tb %1$tY]"
|
||||
String i3CCName "CheckControl Name [%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:check#name" }
|
||||
String i3CCDetails "CheckControl Details [%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:check#details" }
|
||||
String i3CCSeverity "CheckControl Severity [%s]" <line> (i3) {channel="mybmw:bev_rex:4711:i3:check#severity" }
|
||||
|
||||
Switch i3ChargeProfileClimate "Charge Profile Climatization" <temperature> (i3) {channel="mybmw:bev_rex:4711:i3:profile#climate" }
|
||||
String i3ChargeProfileMode "Charge Profile Mode [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#mode" }
|
||||
String i3ChargeProfilePrefs "Charge Profile Preference [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#prefs" }
|
||||
String i3ChargeProfileCtrl "Charge Profile Control [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#control" }
|
||||
Number i3ChargeProfileTarget "Charge Profile SoC Target [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#target" }
|
||||
Switch i3ChargeProfileLimit "Charge Profile limited" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#limit" }
|
||||
DateTime i3ChargeWindowStart "Charge Window Start [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#window-start" }
|
||||
DateTime i3ChargeWindowEnd "Charge Window End [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#window-end" }
|
||||
DateTime i3Timer1Departure "Timer 1 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-departure" }
|
||||
String i3Timer1Days "Timer 1 Days [%s]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-days" }
|
||||
Switch i3Timer1DayMon "Timer 1 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-mon" }
|
||||
Switch i3Timer1DayTue "Timer 1 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-tue" }
|
||||
Switch i3Timer1DayWed "Timer 1 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-wed" }
|
||||
Switch i3Timer1DayThu "Timer 1 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-thu" }
|
||||
Switch i3Timer1DayFri "Timer 1 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-fri" }
|
||||
Switch i3Timer1DaySat "Timer 1 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-sat" }
|
||||
Switch i3Timer1DaySun "Timer 1 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-sun" }
|
||||
Switch i3Timer1Enabled "Timer 1 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-enabled" }
|
||||
DateTime i3Timer2Departure "Timer 2 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-departure" }
|
||||
Switch i3Timer2DayMon "Timer 2 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-mon" }
|
||||
Switch i3Timer2DayTue "Timer 2 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-tue" }
|
||||
Switch i3Timer2DayWed "Timer 2 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-wed" }
|
||||
Switch i3Timer2DayThu "Timer 2 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-thu" }
|
||||
Switch i3Timer2DayFri "Timer 2 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-fri" }
|
||||
Switch i3Timer2DaySat "Timer 2 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-sat" }
|
||||
Switch i3Timer2DaySun "Timer 2 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-sun" }
|
||||
Switch i3Timer2Enabled "Timer 2 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-enabled" }
|
||||
DateTime i3Timer3Departure "Timer 3 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-departure" }
|
||||
Switch i3Timer3DayMon "Timer 3 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-mon" }
|
||||
Switch i3Timer3DayTue "Timer 3 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-tue" }
|
||||
Switch i3Timer3DayWed "Timer 3 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-wed" }
|
||||
Switch i3Timer3DayThu "Timer 3 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-thu" }
|
||||
Switch i3Timer3DayFri "Timer 3 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-fri" }
|
||||
Switch i3Timer3DaySat "Timer 3 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-sat" }
|
||||
Switch i3Timer3DaySun "Timer 3 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-sun" }
|
||||
|
||||
Switch i3ChargeProfileClimate "Charge Profile Climatization" <temperature> (i3) {channel="mybmw:bev_rex:4711:i3:profile#climate" }
|
||||
String i3ChargeProfileMode "Charge Profile Mode [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#mode" }
|
||||
String i3ChargeProfilePrefs "Charge Profile Preference [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#prefs" }
|
||||
String i3ChargeProfileCtrl "Charge Profile Control [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#control" }
|
||||
Number i3ChargeProfileTarget "Charge Profile SoC Target [%s]" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#target" }
|
||||
Switch i3ChargeProfileLimit "Charge Profile limited" <energy> (i3) {channel="mybmw:bev_rex:4711:i3:profile#limit" }
|
||||
DateTime i3ChargeWindowStart "Charge Window Start [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#window-start" }
|
||||
DateTime i3ChargeWindowEnd "Charge Window End [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#window-end" }
|
||||
DateTime i3Timer1Departure "Timer 1 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-departure" }
|
||||
String i3Timer1Days "Timer 1 Days [%s]" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-days" }
|
||||
Switch i3Timer1DayMon "Timer 1 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-mon" }
|
||||
Switch i3Timer1DayTue "Timer 1 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-tue" }
|
||||
Switch i3Timer1DayWed "Timer 1 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-wed" }
|
||||
Switch i3Timer1DayThu "Timer 1 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-thu" }
|
||||
Switch i3Timer1DayFri "Timer 1 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-fri" }
|
||||
Switch i3Timer1DaySat "Timer 1 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-sat" }
|
||||
Switch i3Timer1DaySun "Timer 1 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-day-sun" }
|
||||
Switch i3Timer1Enabled "Timer 1 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer1-enabled" }
|
||||
DateTime i3Timer2Departure "Timer 2 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-departure" }
|
||||
Switch i3Timer2DayMon "Timer 2 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-mon" }
|
||||
Switch i3Timer2DayTue "Timer 2 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-tue" }
|
||||
Switch i3Timer2DayWed "Timer 2 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-wed" }
|
||||
Switch i3Timer2DayThu "Timer 2 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-thu" }
|
||||
Switch i3Timer2DayFri "Timer 2 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-fri" }
|
||||
Switch i3Timer2DaySat "Timer 2 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-sat" }
|
||||
Switch i3Timer2DaySun "Timer 2 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-day-sun" }
|
||||
Switch i3Timer2Enabled "Timer 2 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer2-enabled" }
|
||||
DateTime i3Timer3Departure "Timer 3 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-departure" }
|
||||
Switch i3Timer3DayMon "Timer 3 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-mon" }
|
||||
Switch i3Timer3DayTue "Timer 3 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-tue" }
|
||||
Switch i3Timer3DayWed "Timer 3 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-wed" }
|
||||
Switch i3Timer3DayThu "Timer 3 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-thu" }
|
||||
Switch i3Timer3DayFri "Timer 3 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-fri" }
|
||||
Switch i3Timer3DaySat "Timer 3 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-sat" }
|
||||
Switch i3Timer3DaySun "Timer 3 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-day-sun" }
|
||||
Switch i3Timer3Enabled "Timer 3 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer3-enabled" }
|
||||
DateTime i3Timer4Departure "Timer 4 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-departure" }
|
||||
Switch i3Timer4DayMon "Timer 4 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-mon" }
|
||||
Switch i3Timer4DayTue "Timer 4 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-tue" }
|
||||
Switch i3Timer4DayWed "Timer 4 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-wed" }
|
||||
Switch i3Timer4DayThu "Timer 4 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-thu" }
|
||||
Switch i3Timer4DayFri "Timer 4 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-fri" }
|
||||
Switch i3Timer4DaySat "Timer 4 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-sat" }
|
||||
Switch i3Timer4DaySun "Timer 4 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-sun" }
|
||||
DateTime i3Timer4Departure "Timer 4 Departure [%1$tH:%1$tM]" <time> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-departure" }
|
||||
Switch i3Timer4DayMon "Timer 4 Monday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-mon" }
|
||||
Switch i3Timer4DayTue "Timer 4 Tuesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-tue" }
|
||||
Switch i3Timer4DayWed "Timer 4 Wednesday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-wed" }
|
||||
Switch i3Timer4DayThu "Timer 4 Thursday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-thu" }
|
||||
Switch i3Timer4DayFri "Timer 4 Friday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-fri" }
|
||||
Switch i3Timer4DaySat "Timer 4 Saturday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-sat" }
|
||||
Switch i3Timer4DaySun "Timer 4 Sunday" <calendar> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-day-sun" }
|
||||
Switch i3Timer4Enabled "Timer 4 Enabled" <switch> (i3) {channel="mybmw:bev_rex:4711:i3:profile#timer4-enabled" }
|
||||
|
||||
String i3StatisticsTitle "[%s]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:statistic#title" }
|
||||
@ -711,8 +711,8 @@ Number:Pressure i3TireRLTarget "Tire Rear Left Target [%.1f %
|
||||
Number:Pressure i3TireRRCurrent "Tire Rear Right [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#rr-current" }
|
||||
Number:Pressure i3TireRRTarget "Tire Rear Right Target [%.1f %unit%]" <text> (i3) {channel="mybmw:bev_rex:4711:i3:tires#rr-target" }
|
||||
|
||||
Image i3Image "Image" (i3) {channel="mybmw:bev_rex:4711:i3:image#png" }
|
||||
String i3ImageViewport "Image Viewport [%s]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:image#view" }
|
||||
Image i3Image "Image" (i3) {channel="mybmw:bev_rex:4711:i3:image#png" }
|
||||
String i3ImageViewport "Image Viewport [%s]" <zoom> (i3) {channel="mybmw:bev_rex:4711:i3:image#view" }
|
||||
```
|
||||
|
||||
### Sitemap File
|
||||
@ -720,47 +720,47 @@ String i3ImageViewport "Image Viewport [%s]"
|
||||
```perl
|
||||
sitemap BMW label="BMW" {
|
||||
Frame label="BMW i3" {
|
||||
Image item=i3Image
|
||||
|
||||
}
|
||||
Image item=i3Image
|
||||
|
||||
}
|
||||
Frame label="Status" {
|
||||
Text item=i3DoorStatus
|
||||
Text item=i3WindowStatus
|
||||
Text item=i3LockStatus
|
||||
Text item=i3NextServiceDate
|
||||
Text item=i3NextServiceMileage
|
||||
Text item=i3CheckControl
|
||||
Text item=i3ChargingStatus
|
||||
Text item=i3LastUpdate
|
||||
Text item=i3DoorStatus
|
||||
Text item=i3WindowStatus
|
||||
Text item=i3LockStatus
|
||||
Text item=i3NextServiceDate
|
||||
Text item=i3NextServiceMileage
|
||||
Text item=i3CheckControl
|
||||
Text item=i3ChargingStatus
|
||||
Text item=i3LastUpdate
|
||||
}
|
||||
Frame label="Range" {
|
||||
Text item=i3Mileage
|
||||
Text item=i3Range
|
||||
Text item=i3RangeElectric
|
||||
Text item=i3RangeFuel
|
||||
Text item=i3BatterySoc
|
||||
Text item=i3Fuel
|
||||
Text item=i3RadiusElectric
|
||||
Text item=i3RadiusHybrid
|
||||
Text item=i3Mileage
|
||||
Text item=i3Range
|
||||
Text item=i3RangeElectric
|
||||
Text item=i3RangeFuel
|
||||
Text item=i3BatterySoc
|
||||
Text item=i3Fuel
|
||||
Text item=i3RadiusElectric
|
||||
Text item=i3RadiusHybrid
|
||||
}
|
||||
Frame label="Remote Services" {
|
||||
Selection item=i3RemoteCommand
|
||||
Text item=i3RemoteState
|
||||
Selection item=i3RemoteCommand
|
||||
Text item=i3RemoteState
|
||||
}
|
||||
Frame label="Services" {
|
||||
Selection item=i3ServiceName
|
||||
Text item=i3ServiceDetails
|
||||
Text item=i3ServiceMileage
|
||||
Text item=i3ServiceDate
|
||||
Selection item=i3ServiceName
|
||||
Text item=i3ServiceDetails
|
||||
Text item=i3ServiceMileage
|
||||
Text item=i3ServiceDate
|
||||
}
|
||||
Frame label="CheckControl" {
|
||||
Selection item=i3CCName
|
||||
Text item=i3CCDetails
|
||||
Text item=i3CCSeverity
|
||||
Selection item=i3CCName
|
||||
Text item=i3CCDetails
|
||||
Text item=i3CCSeverity
|
||||
}
|
||||
Frame label="Door Details" {
|
||||
Text item=i3DriverDoor visibility=[i3DriverDoor!="INVALID"]
|
||||
Text item=i3DriverDoorRear visibility=[i3DriverDoorRear!="INVALID"]
|
||||
Text item=i3DriverDoorRear visibility=[i3DriverDoorRear!="INVALID"]
|
||||
Text item=i3PassengerDoor visibility=[i3PassengerDoor!="INVALID"]
|
||||
Text item=i3PassengerDoorRear visibility=[i3PassengerDoorRear!="INVALID"]
|
||||
Text item=i3Hood visibility=[i3Hood!="INVALID"]
|
||||
@ -773,77 +773,77 @@ sitemap BMW label="BMW" {
|
||||
Text item=i3Sunroof visibility=[i3Sunroof!="INVALID"]
|
||||
}
|
||||
Frame label="Location" {
|
||||
Text item=i3Location
|
||||
Text item=i3Heading
|
||||
Text item=i3Location
|
||||
Text item=i3Heading
|
||||
}
|
||||
Frame label="Charge Profile" {
|
||||
Switch item=i3ChargeProfileClimate
|
||||
Selection item=i3ChargeProfileMode
|
||||
Text item=i3ChargeWindowStart
|
||||
Text item=i3ChargeWindowEnd
|
||||
Text item=i3Timer1Departure
|
||||
Switch item=i3Timer1DayMon
|
||||
Switch item=i3Timer1DayTue
|
||||
Switch item=i3Timer1DayWed
|
||||
Switch item=i3Timer1DayThu
|
||||
Switch item=i3Timer1DayFri
|
||||
Switch item=i3Timer1DaySat
|
||||
Switch item=i3Timer1DaySun
|
||||
Switch item=i3Timer1Enabled
|
||||
Text item=i3Timer2Departure
|
||||
Switch item=i3Timer2DayMon
|
||||
Switch item=i3Timer2DayTue
|
||||
Switch item=i3Timer2DayWed
|
||||
Switch item=i3Timer2DayThu
|
||||
Switch item=i3Timer2DayFri
|
||||
Switch item=i3Timer2DaySat
|
||||
Switch item=i3Timer2DaySun
|
||||
Switch item=i3Timer2Enabled
|
||||
Text item=i3Timer3Departure
|
||||
Switch item=i3Timer3DayMon
|
||||
Switch item=i3Timer3DayTue
|
||||
Switch item=i3Timer3DayWed
|
||||
Switch item=i3Timer3DayThu
|
||||
Switch item=i3Timer3DayFri
|
||||
Switch item=i3Timer3DaySat
|
||||
Switch item=i3Timer3DaySun
|
||||
Switch item=i3Timer3Enabled
|
||||
Text item=i3Timer4Departure
|
||||
Switch item=i3Timer4DayMon
|
||||
Switch item=i3Timer4DayTue
|
||||
Switch item=i3Timer4DayWed
|
||||
Switch item=i3Timer4DayThu
|
||||
Switch item=i3Timer4DayFri
|
||||
Switch item=i3Timer4DaySat
|
||||
Switch item=i3Timer4DaySun
|
||||
Switch item=i3Timer4Enabled
|
||||
}
|
||||
Frame label="Charge Profile" {
|
||||
Switch item=i3ChargeProfileClimate
|
||||
Selection item=i3ChargeProfileMode
|
||||
Text item=i3ChargeWindowStart
|
||||
Text item=i3ChargeWindowEnd
|
||||
Text item=i3Timer1Departure
|
||||
Switch item=i3Timer1DayMon
|
||||
Switch item=i3Timer1DayTue
|
||||
Switch item=i3Timer1DayWed
|
||||
Switch item=i3Timer1DayThu
|
||||
Switch item=i3Timer1DayFri
|
||||
Switch item=i3Timer1DaySat
|
||||
Switch item=i3Timer1DaySun
|
||||
Switch item=i3Timer1Enabled
|
||||
Text item=i3Timer2Departure
|
||||
Switch item=i3Timer2DayMon
|
||||
Switch item=i3Timer2DayTue
|
||||
Switch item=i3Timer2DayWed
|
||||
Switch item=i3Timer2DayThu
|
||||
Switch item=i3Timer2DayFri
|
||||
Switch item=i3Timer2DaySat
|
||||
Switch item=i3Timer2DaySun
|
||||
Switch item=i3Timer2Enabled
|
||||
Text item=i3Timer3Departure
|
||||
Switch item=i3Timer3DayMon
|
||||
Switch item=i3Timer3DayTue
|
||||
Switch item=i3Timer3DayWed
|
||||
Switch item=i3Timer3DayThu
|
||||
Switch item=i3Timer3DayFri
|
||||
Switch item=i3Timer3DaySat
|
||||
Switch item=i3Timer3DaySun
|
||||
Switch item=i3Timer3Enabled
|
||||
Text item=i3Timer4Departure
|
||||
Switch item=i3Timer4DayMon
|
||||
Switch item=i3Timer4DayTue
|
||||
Switch item=i3Timer4DayWed
|
||||
Switch item=i3Timer4DayThu
|
||||
Switch item=i3Timer4DayFri
|
||||
Switch item=i3Timer4DaySat
|
||||
Switch item=i3Timer4DaySun
|
||||
Switch item=i3Timer4Enabled
|
||||
}
|
||||
Frame label="Charge Statistics" {
|
||||
Text item=i3StatisticsTitle
|
||||
Text item=i3StatisticsEnergy
|
||||
Text item=i3StatisticsSessions
|
||||
Text item=i3StatisticsTitle
|
||||
Text item=i3StatisticsEnergy
|
||||
Text item=i3StatisticsSessions
|
||||
}
|
||||
|
||||
Frame label="Charge Sessions" {
|
||||
Selection item=i3SessionTitle
|
||||
Text item=i3SessionDetails
|
||||
Text item=i3SessionCharged
|
||||
Text item=i3SessionProblems
|
||||
Text item=i3SessionStatus
|
||||
Selection item=i3SessionTitle
|
||||
Text item=i3SessionDetails
|
||||
Text item=i3SessionCharged
|
||||
Text item=i3SessionProblems
|
||||
Text item=i3SessionStatus
|
||||
}
|
||||
Frame label="Tires" {
|
||||
Text item=i3TireFLCurrent
|
||||
Text item=i3TireFLTarget
|
||||
Text item=i3TireFRCurrent
|
||||
Text item=i3TireFRTarget
|
||||
Text item=i3TireRLCurrent
|
||||
Text item=i3TireRLTarget
|
||||
Text item=i3TireRRCurrent
|
||||
Text item=i3TireRRTarget
|
||||
Text item=i3TireFLCurrent
|
||||
Text item=i3TireFLTarget
|
||||
Text item=i3TireFRCurrent
|
||||
Text item=i3TireFRTarget
|
||||
Text item=i3TireRLCurrent
|
||||
Text item=i3TireRLTarget
|
||||
Text item=i3TireRRCurrent
|
||||
Text item=i3TireRRTarget
|
||||
}
|
||||
Frame label="Image Properties" {
|
||||
Selection item=i3ImageViewport
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -64,7 +64,7 @@ The channel 'full_message' has the following configuration available:
|
||||
A manual setup through a `things/mycroft.things` file could look like this:
|
||||
|
||||
```java
|
||||
Thing mycroft:mycroft:myMycroft "Mycroft A.I." @ "Living Room" [host="192.168.X.X", port=8181] {
|
||||
Thing mycroft:mycroft:myMycroft "Mycroft A.I." @ "Living Room" [host="192.168.X.X", port=8181] {
|
||||
Channels:
|
||||
Type full-message-channel : Text [
|
||||
messageTypes="message.type.1,message.type.4"
|
||||
|
@ -56,7 +56,7 @@ Channels available for the gates are :
|
||||
(1) : Accepted commands are : STOP, MOVE
|
||||
(2) : Valid status are : OPEN, CLOSED, OPENING, CLOSING, STOPPED
|
||||
(3) : Accepted commands are : "stop","open","close"
|
||||
(4) : There is no way to retrieve the current status of the courtesy light. It is supposed to be ON when the gate is moving and turned OFF once done.
|
||||
(4) : There is no way to retrieve the current status of the courtesy light. It is supposed to be ON when the gate is moving and turned OFF once done.
|
||||
The delay between the moving end and light being turned off is a configuration parameter of the `courtesy` channel.
|
||||
|
||||
### T4 Commands
|
||||
|
@ -76,16 +76,16 @@ Thing mystrom:mystromplug:d6217a31 "Plug" [hostname="hostname|ip"]
|
||||
|
||||
```java
|
||||
Switch PlugSwitch "Plug" {channel="mystrom:mystromplug:d6217a31:switch"}
|
||||
Number:Temperature PlugTemperature "Temperature: [%.1f °C]" {channel="mystrom:mystromplug:d6217a31:temperature"}
|
||||
Number:Temperature PlugTemperature "Temperature: [%.1f °C]" {channel="mystrom:mystromplug:d6217a31:temperature"}
|
||||
Number:Power PlugPower "Power: [%.1f W]" {channel="mystrom:mystromplug:d6217a31:power"}
|
||||
Number:Energy PlugEnergyConsumedSinceLastCall "Ws: [%.1f Ws]" {channel="mystrom:mystromplug:d6217a31:energy-consumed-since-last-call"}
|
||||
Number:Energy PlugEnergyConsumedSinceLastCall "Ws: [%.1f Ws]" {channel="mystrom:mystromplug:d6217a31:energy-consumed-since-last-call"}
|
||||
```
|
||||
|
||||
|
||||
### Sitemap Configuration
|
||||
|
||||
```perl
|
||||
Frame label="myStrom Plug" {
|
||||
Frame label="myStrom Plug" {
|
||||
Switch item=PlugSwitch
|
||||
Text item=PlugTemperature
|
||||
Text item=PlugPower
|
||||
|
@ -26,7 +26,7 @@ You can set the **color** for each panel and in the case of a Nanoleaf Canvas or
|
||||
|
||||
| Nanoleaf Name | Type | Description | supported | touch support |
|
||||
| ---------------------- | ---- | ---------------------------------------------------------- | --------- | ------------- |
|
||||
| Light Panels | NL22 | Triangles 1st Generation | X | - |
|
||||
| Light Panels | NL22 | Triangles 1st Generation | X | - |
|
||||
| Shapes Hexagon | NL42 | Hexagons | X | X |
|
||||
| Shapes Triangles | NL47 | Triangles | X | X |
|
||||
| Shapes Mini Triangles | NL48 | Mini Triangles | X | X |
|
||||
@ -94,13 +94,13 @@ The `thingUID` is an optional parameter. If it is not provided, the command loop
|
||||
Compare the following output with the right picture at the beginning of the article
|
||||
|
||||
```text
|
||||
31413 9162 13276
|
||||
31413 9162 13276
|
||||
|
||||
55836 56093 48111 38724 17870 5164 64279
|
||||
|
||||
58086 8134 39755
|
||||
58086 8134 39755
|
||||
|
||||
41451
|
||||
41451
|
||||
|
||||
```
|
||||
|
||||
@ -131,7 +131,7 @@ The controller thing has the following parameters:
|
||||
|
||||
**Important note on the topic of IPV6 ip addresses:**
|
||||
|
||||
With firmware version 8.5.2 or newer, panels may change between being OFFLINE and ONLINE.
|
||||
With firmware version 8.5.2 or newer, panels may change between being OFFLINE and ONLINE.
|
||||
This is due to the fact that if they are discovered with IPv6 addresses, the binding is not able to correctly send API requests to the devices.
|
||||
It is therefore recommended to disable IPv6 on the openHAB server.
|
||||
|
||||
@ -281,11 +281,11 @@ sitemap nanoleaf label="Nanoleaf"
|
||||
Frame label="Controller" {
|
||||
Switch item=NanoleafPower
|
||||
Slider item=NanoleafBrightness
|
||||
Colorpicker item=NanoleafColor
|
||||
Colorpicker item=NanoleafColor
|
||||
Text item=NanoleafHue
|
||||
Text item=NanoleafSaturation
|
||||
Slider item=NanoleafColorTemp
|
||||
Setpoint item=NanoleafColorTempAbs step=100 minValue=1200 maxValue=6500
|
||||
Slider item=NanoleafColorTemp
|
||||
Setpoint item=NanoleafColorTempAbs step=100 minValue=1200 maxValue=6500
|
||||
Text item=NanoleafColorMode
|
||||
Selection item=NanoleafEffect
|
||||
Text item=NanoleafRhythmState
|
||||
@ -311,7 +311,7 @@ sitemap nanoleaf label="Nanoleaf"
|
||||
rule "UpdateHueAndSat"
|
||||
when Item NanoleafColor changed
|
||||
then
|
||||
val hsbValues = NanoleafColor.state as HSBType
|
||||
val hsbValues = NanoleafColor.state as HSBType
|
||||
NanoleafHue.postUpdate(hsbValues.hue.intValue)
|
||||
NanoleafSaturation.postUpdate(hsbValues.saturation.intValue)
|
||||
end
|
||||
@ -326,17 +326,17 @@ then
|
||||
var hue = 0
|
||||
var direction = 1
|
||||
|
||||
while(NanoleafRainbowScene.state == ON) {
|
||||
Thread::sleep(pause)
|
||||
while(NanoleafRainbowScene.state == ON) {
|
||||
Thread::sleep(pause)
|
||||
hue = hue + (5 * direction)
|
||||
if(hue >= 359) {
|
||||
hue = 359
|
||||
direction = direction * -1
|
||||
direction = direction * -1
|
||||
}
|
||||
else if (hue < 0) {
|
||||
hue = 0
|
||||
direction = direction * -1
|
||||
}
|
||||
direction = direction * -1
|
||||
}
|
||||
// replace NanoleafColor with Panel1Color to run rainbow on a single panel
|
||||
NanoleafColor.sendCommand(new HSBType(new DecimalType(hue), saturation, brightness))
|
||||
}
|
||||
@ -376,18 +376,18 @@ var oldEffect = null
|
||||
/*
|
||||
|
||||
The idea behind that rule is to use one panel to switch on / off brightness control for a specific openHAB item.
|
||||
|
||||
- In this case the panel with the id=36604 has been created as a thing.
|
||||
|
||||
- In this case the panel with the id=36604 has been created as a thing.
|
||||
- The controller color item is named SZNanoCanvas_Color
|
||||
- The controller effect item that holds the last chosen effect is SZNanoCanvas_Effect
|
||||
- Also that thing has channel to control the color of the panel
|
||||
|
||||
|
||||
We use that specific panel to toggle the brightness swipe mode on or off.
|
||||
We indicate that mode by setting the canvas to red. When switching it
|
||||
off we make sure we return the effect that was on before.
|
||||
Only if the brightness swipe mode is ON we then use this to control the brightness of
|
||||
Only if the brightness swipe mode is ON we then use this to control the brightness of
|
||||
another thing which in this case is a lamp. Every swipe changes the brightness by 10.
|
||||
By extending it further this would also allow to select different items to control by
|
||||
By extending it further this would also allow to select different items to control by
|
||||
tapping different panels before.
|
||||
|
||||
*/
|
||||
@ -403,16 +403,16 @@ then
|
||||
} else {
|
||||
brightnessMode = OFF
|
||||
sendCommand("SZNanoCanvas_Effect", oldEffect)
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
rule "Swipe Nano to control brightness"
|
||||
when
|
||||
Channel "nanoleaf:controller:645E3A484FFF:swipe" triggered
|
||||
Channel "nanoleaf:controller:645E3A484FFF:swipe" triggered
|
||||
then
|
||||
// Note: you can even control a rollershutter instead of a light dimmer
|
||||
var dimItem = MyLampDimmerItem
|
||||
|
||||
|
||||
// only process the swipe if brightness mode is active
|
||||
if (brightnessMode == ON) {
|
||||
var currentBrightness = dimItem.state as Number
|
||||
|
@ -13,7 +13,7 @@ Supported thing types
|
||||
- neatoaccount (bridge)
|
||||
- vacuumcleaner
|
||||
|
||||
A bridge is required to connect to your Neato Cloud account.
|
||||
A bridge is required to connect to your Neato Cloud account.
|
||||
|
||||
All "Connected" type vacuum cleaners should be supported by this binding since they are supported by the Neato API. As of todays date, it is only verified with Neato Connected and Neato D7 vacuum cleaners.
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user