diff --git a/docs/widgets/services/esphome.md b/docs/widgets/services/esphome.md index 6038cb61f..e14431fd8 100644 --- a/docs/widgets/services/esphome.md +++ b/docs/widgets/services/esphome.md @@ -7,7 +7,10 @@ Learn more about [ESPHome](https://esphome.io/). Show the number of ESPHome devices based on their state. -Allowed fields: `["total", "online", "offline", "unknown"]`. +Allowed fields: `["total", "online", "offline", "offline_alt", "unknown"]` (maximum of 4). + +By default ESPHome will only mark devices as `offline` if their address cannot be pinged. If it has an invalid config or its name cannot be resolved (by DNS) its status will be marked as `unknown`. +To group both `offline` and `unknown` devices together, users should use the `offline_alt` field instead. This sums all devices that are _not_ online together. ```yaml widget: diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 9f4c4b133..c7339c0b3 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -109,6 +109,7 @@ }, "esphome": { "offline": "Offline", + "offline_alt": "Offline", "online": "Online", "total": "Total", "unknown": "Unknown" diff --git a/src/widgets/esphome/component.jsx b/src/widgets/esphome/component.jsx index c44352fa4..ea2e5db39 100644 --- a/src/widgets/esphome/component.jsx +++ b/src/widgets/esphome/component.jsx @@ -19,6 +19,7 @@ export default function Component({ service }) { + @@ -27,6 +28,7 @@ export default function Component({ service }) { const total = Object.keys(resultData).length; const online = Object.entries(resultData).filter(([, v]) => v === true).length; + const notOnline = Object.entries(resultData).filter(([, v]) => v !== true).length; const offline = Object.entries(resultData).filter(([, v]) => v === false).length; const unknown = Object.entries(resultData).filter(([, v]) => v === null).length; @@ -34,6 +36,7 @@ export default function Component({ service }) { +