# `Grizzly.ZWave.CommandClasses.Meter`
[🔗](https://github.com/smartrent/grizzly/blob/v9.1.4/lib/grizzly/zwave/command_classes/meter.ex#L1)

"Meter" Command Class

The Meter Command Class is used to advertise instantaneous and accumulated numerical readings.

# `meter_rate_type`

```elixir
@type meter_rate_type() :: :export | :import | :import_export | :default
```

# `meter_scale`

```elixir
@type meter_scale() ::
  :a
  | :cubic_feet
  | :cubic_meters
  | :kvah
  | :kvar
  | :kvarh
  | :kwh
  | :power_factor
  | :pulse_count
  | :us_gallons
  | :v
  | :w
```

# `meter_type`

```elixir
@type meter_type() :: :electric | :gas | :water | :heating | :cooling
```

# `decode_meter_scale`

```elixir
@spec decode_meter_scale(
  {byte(), byte()},
  meter_type() | non_neg_integer()
) :: {:ok, meter_scale()} | {:error, Grizzly.ZWave.DecodeError.t()}
```

Decode meter scale

# `decode_meter_type`

```elixir
@spec decode_meter_type(non_neg_integer()) ::
  {:ok, meter_type()} | {:error, Grizzly.ZWave.DecodeError.t()}
```

Decode meter type

# `decode_rate_type`

```elixir
@spec decode_rate_type(non_neg_integer()) ::
  {:ok, meter_rate_type()} | {:error, Grizzly.ZWave.DecodeError.t()}
```

Decode rate type

# `decode_supported_scales_bitmasks`

```elixir
@spec decode_supported_scales_bitmasks(
  {binary(), binary()},
  meter_type()
) :: {:ok, [meter_scale()]}
```

Decode supported scales bitmasks.

# `encode_meter_scale`

```elixir
@spec encode_meter_scale(meter_scale()) :: {0..7, 0..1}
```

# `encode_meter_scale`

```elixir
@spec encode_meter_scale(meter_scale(), meter_type()) :: {0..7, 0..1}
```

# `encode_meter_type`

```elixir
@spec encode_meter_type(meter_type()) :: 1..5
```

Encode meter type

# `encode_rate_type`

```elixir
@spec encode_rate_type(meter_rate_type()) :: 0..3
```

Encode meter rate type

# `encode_supported_scales_bitmasks`

```elixir
@spec encode_supported_scales_bitmasks([meter_scale()], meter_type()) ::
  {byte(), byte()}
```

Encode supported meter scales as two bit masks.
The first bitmask encodes "byte 1" scales and the second bitmask encodes "byte 2" scales.
We assume that there is no byte 3, 4, encoding etc.
A bit 1 indicates support.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
