This page is part of archived documentation for openHAB 2.5. Go to the current stable version
# Anel NET-PwrCtrl Binding v1
Monitor and control Anel NET-PwrCtrl devices.
Anel NET-PwrCtrl HUT2 (opens new window) | Anel NET-PwrCtrl IO (opens new window) | Anel NET-PwrCtrl HOME (opens new window) |
---|---|---|
(opens new window) | (opens new window) | (opens new window) |
NET-PwrCtrl devices are power sockets / relays that can be configured via browser but they can also be controlled over the network, e.g. with an Android or iPhone app - and also with openHAB via this binding. The NET-PwrCtrl HUT and NET-PwrCtrl IO also have 8 I/O pins which can either be used to directly switch the sockets, or they can be used as general input switches in openHAB. Here is a video demonstrating a switch and a dimmer (voice is German), explanation of the setup is given in the diagram below:
Anel demo setup (opens new window)
Note that the binding is still untested for other devices than the NET-PwrCtrl HUT, because I do not own any of the others. I suppose the binding works well with the NET-PwrCtrl IO because it has the same features, but it may not yet work for the others!
# Binding Configuration
The binding can be configured in the file services/anel.cfg
. In the table below, <name>
must be an identifier that is also used for the item bindings.
Key | Default | Required | Description |
---|---|---|---|
<name>.host | net-control | recommended | IP or network address |
<name>.udpReceivePort | 77 | No | UDP receive port |
<name>.udpSendPort | 75 | No | UDP send port |
<name>.user | user7 | No | User name |
<name>.password | anel | No | Password |
refresh | 60000 | No | Global refresh interval in milliseconds |
cachePeriod | 0 | No | Cache the state for cachePeriod minutes so only changes are posted (optional, defaults to 0 = disabled). Example: if period is 60, once per hour all states are posted to the event bus; changes are always and immediately posted to the event bus. |
# Notes
- At least one option must be set for an identifier for the binding to work.
- The most obvious and important option is
host
, it is in fact mandatory if multiple devices are used. - The host name, ports, and credentials are device-specific settings that must be configured via the device's browser interface.
- Port numbers above 1024 are recommended because ports below 1024 are typically reserved and their access restricted on some devices/networks.
- For multiple devices, different ports must be used.
# Item Configuration
There are different types of item bindings, all of them are qualified with the device's identifier used in the binding configuration:
The device's name is a string type, the device's temperature is a number:
String anelName "Anel1 network name [%s]" { anel="anel1:NAME" }
Number anelTemperature "Anel1 temperature [%s]" { anel="anel1:TEMPERATURE" }
The actual relay states are also switchable if they are not locked. Note that the locked states and the relay's names are read-only.
Switch f1 { anel="anel1:F1", autoupdate="false" }
String f1name { anel="anel1:F1NAME" }
Switch f1locked { anel="anel1:F1LOCKED" }
The I/O states are only switchable if they are configured as 'input' (point of view of the anel device), otherwise they are read-only. Again, the names are also read-only.
Switch io1 { anel="anel1:IO1" }
String io1name = { anel="anel1:IO1NAME" }
Switch io1isinput { anel="anel1:IO8ISINPUT" }
Note: all read-only properties must be configured via the device's browser interface.
General format and full list of binding items:
anel="<identifier>:<item>"
item | item type | purpose | changeable |
---|---|---|---|
NAME | String | device's name | no |
TEMPERATURE | Number | device's temperature | no |
F1NAME | String | name of relay 1 | no |
F2NAME | String | name of relay 2 | no |
F3NAME | String | name of relay 3 | no |
F4NAME | String | name of relay 4 | no |
F5NAME | String | name of relay 5 | no |
F6NAME | String | name of relay 6 | no |
F7NAME | String | name of relay 7 | no |
F8NAME | String | name of relay 8 | no |
F1LOCKED | Switch | whether or not relay 1 is locked | no |
F2LOCKED | Switch | whether or not relay 2 is locked | no |
F3LOCKED | Switch | whether or not relay 3 is locked | no |
F4LOCKED | Switch | whether or not relay 4 is locked | no |
F5LOCKED | Switch | whether or not relay 5 is locked | no |
F6LOCKED | Switch | whether or not relay 6 is locked | no |
F7LOCKED | Switch | whether or not relay 7 is locked | no |
F8LOCKED | Switch | whether or not relay 8 is locked | no |
F1 | Switch | state of relay 1 | only if F1LOCKED = OFF |
F2 | Switch | state of relay 2 | only if F2LOCKED = OFF |
F3 | Switch | state of relay 3 | only if F3LOCKED = OFF |
F4 | Switch | state of relay 4 | only if F4LOCKED = OFF |
F5 | Switch | state of relay 5 | only if F5LOCKED = OFF |
F6 | Switch | state of relay 6 | only if F6LOCKED = OFF |
F7 | Switch | state of relay 7 | only if F7LOCKED = OFF |
F8 | Switch | state of relay 8 | only if F8LOCKED = OFF |
IO1NAME | String | name of I/O 1 | no |
IO2NAME | String | name of I/O 2 | no |
IO3NAME | String | name of I/O 3 | no |
IO4NAME | String | name of I/O 4 | no |
IO5NAME | String | name of I/O 5 | no |
IO6NAME | String | name of I/O 6 | no |
IO7NAME | String | name of I/O 7 | no |
IO8NAME | String | name of I/O 8 | no |
IO1ISINPUT | Switch | whether I/O 1 is input | no |
IO2ISINPUT | Switch | whether I/O 2 is input | no |
IO3ISINPUT | Switch | whether I/O 3 is input | no |
IO4ISINPUT | Switch | whether I/O 4 is input | no |
IO5ISINPUT | Switch | whether I/O 5 is input | no |
IO6ISINPUT | Switch | whether I/O 6 is input | no |
IO7ISINPUT | Switch | whether I/O 7 is input | no |
IO8ISINPUT | Switch | whether I/O 8 is input | no |
IO1 | Switch | state of I/O 1 | only if IO1ISINPUT = ON |
IO2 | Switch | state of I/O 2 | only if IO2ISINPUT = ON |
IO3 | Switch | state of I/O 3 | only if IO3ISINPUT = ON |
IO4 | Switch | state of I/O 4 | only if IO4ISINPUT = ON |
IO5 | Switch | state of I/O 5 | only if IO5ISINPUT = ON |
IO6 | Switch | state of I/O 6 | only if IO6ISINPUT = ON |
IO7 | Switch | state of I/O 7 | only if IO7ISINPUT = ON |
IO8 | Switch | state of I/O 8 | only if IO8ISINPUT = ON |
SENSOR_TEMPERATURE | Number | sensor temperature (device firmware >= 6.1) | no |
SENSOR_HUMIDITY | Number | sensor humidity (device firmware >= 6.1) | no |
SENSOR_BRIGHTNESS | Number | sensor brightness (device firmware >= 6.1) | no |
# Example Rules
Although the device's configuration can be used to directly switch a relay with an input channel, the very same can be done with this rule:
rule "regular switch on Anel1 IO1 input for relay 1"
when Item io1 changed then
f1.sendCommand(io1.state)
end
An input channel can also be used as a push button (also demonstrated in the video (opens new window)):
rule "push button switch on Anel1 IO2 input for relay 2"
when Item io2 changed to ON then
f2.sendCommand(if (f2.state != ON) ON else OFF)
end
In combination with the MiLight Binding (opens new window), this rule uses I/O 3 as dimmer for MiLight bulb milight_zone1
(also demonstrated in the video (opens new window)).
As long as I/O 3 is pressed, the bulb dims up until its brightness reaches 100%.
var org.openhab.model.script.actions.Timer timer2
rule "switch dimmer on Anel1 IO3"
when Item io3 changed to OFF then
milight_zone1.sendCommand(10)
timer2 = createTimer(now.plusMillis(333)) [|
val int newValue = (milight_zone1.state as DecimalType).intValue + 5
if (newValue > 100) {
timer2 = null
} else if (timer2 != null) {
milight_zone1.sendCommand(newValue)
if (io3.state == OFF)
timer2.reschedule(now.plusMillis(333))
}
]
end