Packages
grizzly
0.14.8
9.1.4
9.1.2
9.1.1
9.1.0
9.0.0
8.15.3
8.15.2
8.15.1
8.15.0
8.14.0
8.13.0
8.12.0
8.11.3
8.11.2
8.11.1
8.11.0
8.10.0
8.9.0
8.8.1
8.8.0
8.7.1
8.7.0
8.6.12
8.6.11
8.6.10
8.6.9
8.6.8
8.6.7
retired
8.6.6
8.6.5
8.6.4
8.6.3
8.6.2
8.6.1
8.6.0
8.5.3
8.5.2
8.5.1
8.5.0
8.4.0
8.3.0
8.2.3
8.2.2
8.2.1
8.2.0
8.1.0
8.0.1
8.0.0
7.4.3
7.4.2
7.4.1
7.4.0
7.3.0
7.2.0
7.1.4
7.1.3
7.1.2
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.8.8
6.8.7
6.8.6
6.8.5
6.8.4
6.8.3
6.8.2
6.8.1
6.8.0
6.7.1
6.7.0
6.6.1
6.6.0
6.5.1
6.5.0
6.4.0
6.3.0
6.2.0
6.1.1
6.1.0
6.0.1
6.0.0
5.4.1
5.4.0
5.3.0
5.2.8
5.2.7
5.2.6
5.2.5
5.2.4
5.2.3
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
5.1.0
5.0.2
5.0.1
5.0.0
4.0.1
4.0.0
3.0.0
2.1.0
2.0.0
1.0.1
1.0.0
0.22.7
0.22.6
0.22.5
0.22.4
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.7
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.9.0-rc.4
0.9.0-rc.3
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
Elixir Z-Wave library
Current section
Files
Jump to
Current section
Files
lib/grizzly/zwave/command_classes/central_scene.ex
defmodule Grizzly.ZWave.CommandClasses.CentralScene do
@moduledoc """
"CentralScene" Command Class
The Central Scene Command Class is used to communicate central scene activations to a central
controller
"""
@behaviour Grizzly.ZWave.CommandClass
@type key_attributes :: [key_attribute]
@type key_attribute ::
:key_pressed_1_time
| :key_released
| :key_held_down
| :key_pressed_2_times
| :key_pressed_3_times
| :key_pressed_4_times
| :key_pressed_5_times
@impl true
def byte(), do: 0x5B
@impl true
def name(), do: :central_scene
def validate_supported_key_attributes(
[scene_1_keys | other_scene_keys] = supported_attribute_keys,
supported_scenes,
identical?
)
when is_list(scene_1_keys) do
if identical? do
true = Enum.empty?(other_scene_keys)
else
true = Enum.count(supported_attribute_keys) == supported_scenes
end
supported_attribute_keys
end
def key_attribute_to_bit_index(:key_pressed_1_time), do: {1, 0}
def key_attribute_to_bit_index(:key_released), do: {1, 1}
def key_attribute_to_bit_index(:key_held_down), do: {1, 2}
def key_attribute_to_bit_index(:key_pressed_2_times), do: {1, 3}
def key_attribute_to_bit_index(:key_pressed_3_times), do: {1, 4}
def key_attribute_to_bit_index(:key_pressed_4_times), do: {1, 5}
def key_attribute_to_bit_index(:key_pressed_5_times), do: {1, 6}
def key_attribute_from_bit_index(1, 0), do: :key_pressed_1_time
def key_attribute_from_bit_index(1, 1), do: :key_released
def key_attribute_from_bit_index(1, 2), do: :key_held_down
def key_attribute_from_bit_index(1, 3), do: :key_pressed_2_times
def key_attribute_from_bit_index(1, 4), do: :key_pressed_3_times
def key_attribute_from_bit_index(1, 5), do: :key_pressed_4_times
def key_attribute_from_bit_index(1, 6), do: :key_pressed_5_times
def key_attribute_from_bit_index(_byte, _bit), do: :unknown
def key_attribute_to_byte(key_attribute) do
{_byte, bit_index} = key_attribute_to_bit_index(key_attribute)
bit_index
end
def key_attribute_from_byte(byte) do
key_attribute_from_bit_index(1, byte)
end
def boolean_to_bit(false), do: 0
def boolean_to_bit(true), do: 1
end