diff --git a/.coveragerc b/.coveragerc
index 97f26d8adc5f2b5cb45ea42be6b7d4e75db0365f..4e252fb9c9204927662deb3e3ca24d01c55e1ea6 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -266,6 +266,7 @@ omit =
     homeassistant/components/eliqonline/sensor.py
     homeassistant/components/elkm1/__init__.py
     homeassistant/components/elkm1/alarm_control_panel.py
+    homeassistant/components/elkm1/binary_sensor.py
     homeassistant/components/elkm1/climate.py
     homeassistant/components/elkm1/discovery.py
     homeassistant/components/elkm1/light.py
diff --git a/homeassistant/components/elkm1/__init__.py b/homeassistant/components/elkm1/__init__.py
index 00fcadfe57a6e788e94330ce8fef24054198223d..472d31ccb93858ef6b17eada069a85380b68469d 100644
--- a/homeassistant/components/elkm1/__init__.py
+++ b/homeassistant/components/elkm1/__init__.py
@@ -74,6 +74,7 @@ _LOGGER = logging.getLogger(__name__)
 
 PLATFORMS = [
     Platform.ALARM_CONTROL_PANEL,
+    Platform.BINARY_SENSOR,
     Platform.CLIMATE,
     Platform.LIGHT,
     Platform.SCENE,
diff --git a/homeassistant/components/elkm1/alarm_control_panel.py b/homeassistant/components/elkm1/alarm_control_panel.py
index 6b6a5b44d55af39541f86b93526e78f4182d3cb0..3f5163a849dce463a125a68824a7fc5f93607134 100644
--- a/homeassistant/components/elkm1/alarm_control_panel.py
+++ b/homeassistant/components/elkm1/alarm_control_panel.py
@@ -69,7 +69,7 @@ async def async_setup_entry(
     elk = elk_data["elk"]
     entities: list[ElkEntity] = []
     create_elk_entities(elk_data, elk.areas, "area", ElkArea, entities)
-    async_add_entities(entities, True)
+    async_add_entities(entities)
 
     platform = entity_platform.async_get_current_platform()
 
diff --git a/homeassistant/components/elkm1/binary_sensor.py b/homeassistant/components/elkm1/binary_sensor.py
new file mode 100644
index 0000000000000000000000000000000000000000..38a727964829340804023ef205b2324c956488f0
--- /dev/null
+++ b/homeassistant/components/elkm1/binary_sensor.py
@@ -0,0 +1,57 @@
+"""Support for control of ElkM1 binary sensors."""
+from __future__ import annotations
+
+from typing import Any
+
+from elkm1_lib.const import ZoneLogicalStatus, ZoneType
+from elkm1_lib.elements import Element
+from elkm1_lib.zones import Zone
+
+from homeassistant.components.binary_sensor import BinarySensorEntity
+from homeassistant.config_entries import ConfigEntry
+from homeassistant.core import HomeAssistant
+from homeassistant.helpers.entity_platform import AddEntitiesCallback
+
+from . import ElkAttachedEntity, ElkEntity
+from .const import DOMAIN
+
+
+async def async_setup_entry(
+    hass: HomeAssistant,
+    config_entry: ConfigEntry,
+    async_add_entities: AddEntitiesCallback,
+) -> None:
+    """Create the Elk-M1 sensor platform."""
+
+    elk_data = hass.data[DOMAIN][config_entry.entry_id]
+    auto_configure = elk_data["auto_configure"]
+    elk = elk_data["elk"]
+
+    entities: list[ElkEntity] = []
+    for element in elk.zones:
+        # Don't create binary sensors for zones that are analog
+        if element.definition in {ZoneType.TEMPERATURE, ZoneType.ANALOG_ZONE}:
+            continue
+
+        if auto_configure:
+            if not element.configured:
+                continue
+        elif not elk_data["config"]["zone"]["included"][element.index]:
+            continue
+
+        entities.append(ElkBinarySensor(element, elk, elk_data))
+
+    async_add_entities(entities)
+
+
+class ElkBinarySensor(ElkAttachedEntity, BinarySensorEntity):
+    """Representation of ElkM1 binary sensor."""
+
+    _element: Zone
+    _attr_entity_registry_enabled_default = False
+
+    def _element_changed(self, _: Element, changeset: Any) -> None:
+        # Zone in NORMAL state is OFF; any other state is ON
+        self._attr_is_on = bool(
+            self._element.logical_status != ZoneLogicalStatus.NORMAL
+        )
diff --git a/homeassistant/components/elkm1/climate.py b/homeassistant/components/elkm1/climate.py
index 9f6dc359f6fd9d1f30f1777941c95910e0fae156..8bbf776c47549e3d482776ac492b59756ea6c046 100644
--- a/homeassistant/components/elkm1/climate.py
+++ b/homeassistant/components/elkm1/climate.py
@@ -68,7 +68,7 @@ async def async_setup_entry(
     create_elk_entities(
         elk_data, elk.thermostats, "thermostat", ElkThermostat, entities
     )
-    async_add_entities(entities, True)
+    async_add_entities(entities)
 
 
 class ElkThermostat(ElkEntity, ClimateEntity):
diff --git a/homeassistant/components/elkm1/light.py b/homeassistant/components/elkm1/light.py
index 9e008359e8cbcd049b9b3f4cacdb8bcd262342c6..3db457761aacd650bf8b39ce3dacd797364947ae 100644
--- a/homeassistant/components/elkm1/light.py
+++ b/homeassistant/components/elkm1/light.py
@@ -26,7 +26,7 @@ async def async_setup_entry(
     entities: list[ElkEntity] = []
     elk = elk_data["elk"]
     create_elk_entities(elk_data, elk.lights, "plc", ElkLight, entities)
-    async_add_entities(entities, True)
+    async_add_entities(entities)
 
 
 class ElkLight(ElkEntity, LightEntity):
diff --git a/homeassistant/components/elkm1/scene.py b/homeassistant/components/elkm1/scene.py
index d8100c5bcb1aad84c321b89d45937066ef1dc553..1869e5ba0f34461413182ebaa825f7b5307e9bb4 100644
--- a/homeassistant/components/elkm1/scene.py
+++ b/homeassistant/components/elkm1/scene.py
@@ -24,7 +24,7 @@ async def async_setup_entry(
     entities: list[ElkEntity] = []
     elk = elk_data["elk"]
     create_elk_entities(elk_data, elk.tasks, "task", ElkTask, entities)
-    async_add_entities(entities, True)
+    async_add_entities(entities)
 
 
 class ElkTask(ElkAttachedEntity, Scene):
diff --git a/homeassistant/components/elkm1/sensor.py b/homeassistant/components/elkm1/sensor.py
index 57f989d5cb5f4d64d3feaf0ba7e20b8b045c24f7..1d84af259ee3b7f67e55f59bcdbbf53b7b6e9b14 100644
--- a/homeassistant/components/elkm1/sensor.py
+++ b/homeassistant/components/elkm1/sensor.py
@@ -51,7 +51,7 @@ async def async_setup_entry(
     create_elk_entities(elk_data, [elk.panel], "panel", ElkPanel, entities)
     create_elk_entities(elk_data, elk.settings, "setting", ElkSetting, entities)
     create_elk_entities(elk_data, elk.zones, "zone", ElkZone, entities)
-    async_add_entities(entities, True)
+    async_add_entities(entities)
 
     platform = entity_platform.async_get_current_platform()
 
diff --git a/homeassistant/components/elkm1/switch.py b/homeassistant/components/elkm1/switch.py
index 54588958e61431863f2123a02c5c4cd2212759f5..a17557b15077e747af5c6234d3f1bbcc1af0e002 100644
--- a/homeassistant/components/elkm1/switch.py
+++ b/homeassistant/components/elkm1/switch.py
@@ -24,7 +24,7 @@ async def async_setup_entry(
     entities: list[ElkEntity] = []
     elk = elk_data["elk"]
     create_elk_entities(elk_data, elk.outputs, "output", ElkOutput, entities)
-    async_add_entities(entities, True)
+    async_add_entities(entities)
 
 
 class ElkOutput(ElkAttachedEntity, SwitchEntity):