# `Hassock.Device`
[🔗](https://github.com/bbangert/hassock/blob/v0.3.0/lib/hassock/device.ex#L1)

A device from Home Assistant's device registry (`config/device_registry/list`).

`disabled_by` (`"user"`, `"integration"`, `"config_entry"`, ...) and
`entry_type` (`"service"` for integrations that aren't physical devices)
are kept as HA's strings.

# `t`

```elixir
@type t() :: %Hassock.Device{
  area_id: String.t() | nil,
  disabled_by: String.t() | nil,
  entry_type: String.t() | nil,
  hw_version: String.t() | nil,
  id: String.t(),
  labels: [String.t()],
  manufacturer: String.t() | nil,
  model: String.t() | nil,
  model_id: String.t() | nil,
  name: String.t() | nil,
  name_by_user: String.t() | nil,
  sw_version: String.t() | nil,
  via_device_id: String.t() | nil
}
```

# `display_name`

```elixir
@spec display_name(t()) :: String.t() | nil
```

The name HA shows: the user's name if set, else the integration's.

# `from_map`

```elixir
@spec from_map(map()) :: t()
```

Build from an HA registry map. Unknown keys are ignored, missing keys are `nil`.

---

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