A KNX library written in Python
Binary sensors which have either the state “on” or “off”. Binary sensors could be e.g. a switch in the wall (the thing you press on when switching on the light) or a motion detector.
Switches are mainly intended to act on input, which means to execute so called Actions. An action can be the switching of an outlet or light or the moving of a cover.
The logic within switches can further handle if a button is pressed once or twice - and trigger different actions. Use the attribute counter for this purpose.
binarysensor = BinarySensor(xknx, 'TestInput', group_address='1/2/3', device_class='motion')
xknx is the XKNX object.name is the name of the object.group_address is the KNX group address of the sensor device.device_class may be used to store the type of sensor, e.g. “motion” for motion detectors.outlet = Outlet(xknx, 'TestOutlet', group_address='1/2/3')
xknx.devices.devices.append(outlet)
binarysensor = BinarySensor(xknx, 'TestInput', group_address='1/2/3')
action_on = Action(
xknx,
hook='on',
target='TestOutlet',
method='on')
binarysensor.actions.append(action_on)
action_off = Action(
xknx,
hook='off',
target='TestOutlet',
method='off')
binarysensor.actions.append(action_off)
xknx.devices.add(binarysensor)
Binary sensor objects are usually configured via xknx.yaml:
groups:
binary_sensor:
Livingroom.Switch_1:
group_address: "1/2/7"
actions:
- {target: Livingroom.Outlet_1, method: "on"}
- {target: Livingroom.Outlet_2, method: "on"}
Livingroom.Switch_2:
group_address: "1/2/8"
actions:
- {target: Livingroom.Outlet_1, method: "off"}
- {target: Livingroom.Outlet_2, method: "off"}
Livingroom.Switch_3:
group_address: "1/2/5"
actions:
- {target: Livingroom.Shutter_1, method: up}
# Only executed if the button was switched twice:
- {counter: 2, target: Livingroom.Shutter_1, method: short_up}
Livingroom.Switch_4:
group_address: "1/2/6"
actions:
- {target: Livingroom.Shutter_1, method: down}
# Only executed if the button was switched twice:
- {counter: 2, target: Livingroom.Shutter_1, method: short_down}
switch:
Livingroom.Outlet_1: {group_address: '1/3/1'}
Livingroom.Outlet_2: {group_address: '1/3/2'}
cover:
Livingroom.Shutter_1: {group_address_long: 3171, group_address_short: 3172, group_address_position_state: 3173, group_address_position: 3174, travelling_time_down: 51, travelling_time_up: 61}