Packages
grizzly
0.17.4
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/commands/time_offset_set.ex
defmodule Grizzly.ZWave.Commands.TimeOffsetSet do
@moduledoc """
This command is used to set Time Zone Offset (TZO) and Daylight Savings Time (DST) at the supporting
node.
Params:
* `:sign_tzo` - This field is used to indicate the sign (:plus or :minus) to apply to the Hour TZO and Minute TZO fields. (required)
* `:hour_tzo` - This field is used to indicate the number of hours that the originating time zone deviates from UTC. (required - 0..14)
* `:minute_tzo` - This field is used to indicate the number of minutes that the originating time zone deviates from UTC. (required - 0..59)
* `:sign_offset_dst` - This field is used to indicate the sign (:plus or :minus) for the Minute Offset DST field to apply to the
current time while in the Daylight Saving Time. (required)
* `:minute_offset_dst` - This field MUST indicate the number of minutes by which the current time is to be adjusted when
Daylight Saving Time starts. (required - 0..59)
* `:month_start_dst` - This field MUST indicate the month of the year when Daylight Saving Time starts. (required, 1..12)
* `:day_start_dst` - This field MUST indicate the day of the month when Daylight Saving Time starts. (required - 1..31)
* `:hour_start_dst` - This field MUST indicate the hour of the day when Daylight Saving Time starts. (required - 0..23)
* `:month_end_dst` - This field MUST indicate the month of the year when Daylight Saving Time ends. (required, 1..12)
* `:day_end_dst` - This field MUST indicate the day of the month when Daylight Saving Time ends. (required - 1..31)
* `:hour_end_dst` - This field MUST indicate the hour of the day when Daylight Saving Time ends. (required - 0..23)
"""
@behaviour Grizzly.ZWave.Command
alias Grizzly.ZWave.Command
alias Grizzly.ZWave.CommandClasses.Time
@type param ::
{:sign_tzo, Time.sign()}
| {:hour_tzo, 0..23}
| {:minute_tzo, 0..59}
| {:sign_offset_dst, Time.sign()}
| {:minute_offset_dst, byte}
| {:month_start_dst, 1..12}
| {:day_start_dst, 1..31}
| {:hour_start_dst, 0..59}
| {:month_end_dst, 1..12}
| {:day_end_dst, 1..31}
| {:hour_end_dst, 0..59}
@impl true
@spec new([param()]) :: {:ok, Command.t()}
def new(params) do
command = %Command{
name: :time_offset_set,
command_byte: 0x05,
command_class: Time,
params: params,
impl: __MODULE__
}
{:ok, command}
end
@impl true
def encode_params(command) do
sign_tzo = Command.param!(command, :sign_tzo)
hour_tzo = Command.param!(command, :hour_tzo)
minute_tzo = Command.param!(command, :minute_tzo)
sign_offset_dst = Command.param!(command, :sign_offset_dst)
minute_offset_dst = Command.param!(command, :minute_offset_dst)
month_start_dst = Command.param!(command, :month_start_dst)
day_start_dst = Command.param!(command, :day_start_dst)
hour_start_dst = Command.param!(command, :hour_start_dst)
month_end_dst = Command.param!(command, :month_end_dst)
day_end_dst = Command.param!(command, :day_end_dst)
hour_end_dst = Command.param!(command, :hour_end_dst)
<<Time.encode_sign(sign_tzo)::size(1), hour_tzo::size(7), minute_tzo,
Time.encode_sign(sign_offset_dst)::size(1), minute_offset_dst::size(7), month_start_dst,
day_start_dst, hour_start_dst, month_end_dst, day_end_dst, hour_end_dst>>
end
@impl true
def decode_params(
<<sign_tzo_bit::size(1), hour_tzo::size(7), minute_tzo, sign_offset_dst_bit::size(1),
minute_offset_dst::size(7), month_start_dst, day_start_dst, hour_start_dst,
month_end_dst, day_end_dst, hour_end_dst>>
) do
{:ok,
[
sign_tzo: Time.decode_sign(sign_tzo_bit),
hour_tzo: hour_tzo,
minute_tzo: minute_tzo,
sign_offset_dst: Time.decode_sign(sign_offset_dst_bit),
minute_offset_dst: minute_offset_dst,
month_start_dst: month_start_dst,
day_start_dst: day_start_dst,
hour_start_dst: hour_start_dst,
month_end_dst: month_end_dst,
day_end_dst: day_end_dst,
hour_end_dst: hour_end_dst
]}
end
end