# `NervesHubLink.Extensions.Health.DeviceStatus`
[🔗](https://github.com/nerves-hub/nerves_hub_link/blob/v2.12.0/lib/nerves_hub_link/extensions/health/device_status.ex#L6)

Structure for device status.

# `alarm_description`

```elixir
@type alarm_description() :: String.t()
```

# `alarm_id`

```elixir
@type alarm_id() :: String.t()
```

# `connection_status`

```elixir
@type connection_status() :: :lan | :internet | :disconnected
```

# `interface_identifier`

```elixir
@type interface_identifier() :: String.t()
```

# `interface_type`

```elixir
@type interface_type() :: :ethernet | :wifi | :mobile | :local | :unknown
```

# `t`

```elixir
@type t() :: %NervesHubLink.Extensions.Health.DeviceStatus{
  alarms: %{required(alarm_id()) =&gt; alarm_description()},
  checks: %{required(String.t()) =&gt; %{pass: boolean(), note: String.t()}},
  connectivity: %{
    required(interface_identifier()) =&gt; %{
      type: interface_type(),
      present: boolean(),
      state: atom(),
      connection_status: connection_status(),
      metrics: %{required(String.t()) =&gt; number()},
      metadata: %{required(String.t()) =&gt; String.t()}
    }
  },
  metadata: %{required(String.t()) =&gt; String.t()},
  metrics: %{required(String.t()) =&gt; number()},
  timestamp: DateTime.t()
}
```

# `new`

```elixir
@spec new(Access.t()) :: t()
```

---

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