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

An entry from Home Assistant's entity registry (`config/entity_registry/list`).

This is registry metadata, not state: use `Hassock.EntityState` for the
current value. HA's list doesn't include `device_class`; read it from the
entity state's `"device_class"` attribute.

An entity's effective area is its own `area_id`, or its device's when that
is `nil`. `hidden_by`, `disabled_by` and `entity_category` (`"config"`,
`"diagnostic"`) are what HA's auto-generated dashboards filter on; they are
kept as HA's strings.

# `t`

```elixir
@type t() :: %Hassock.EntityEntry{
  area_id: String.t() | nil,
  categories: %{required(String.t()) =&gt; String.t()},
  config_entry_id: String.t() | nil,
  device_id: String.t() | nil,
  disabled_by: String.t() | nil,
  entity_category: String.t() | nil,
  entity_id: String.t(),
  has_entity_name: boolean(),
  hidden_by: String.t() | nil,
  icon: String.t() | nil,
  id: String.t() | nil,
  labels: [String.t()],
  name: String.t() | nil,
  original_name: String.t() | nil,
  platform: String.t() | nil,
  translation_key: String.t() | nil
}
```

# `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*
