diff --git a/homeassistant/components/vodafone_station/diagnostics.py b/homeassistant/components/vodafone_station/diagnostics.py
new file mode 100644
index 0000000000000000000000000000000000000000..e306d6caca2b49e05aa93e5ef25d4b4558425e45
--- /dev/null
+++ b/homeassistant/components/vodafone_station/diagnostics.py
@@ -0,0 +1,47 @@
+"""Diagnostics support for Vodafone Station."""
+
+from __future__ import annotations
+
+from typing import Any
+
+from homeassistant.components.diagnostics import async_redact_data
+from homeassistant.config_entries import ConfigEntry
+from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
+from homeassistant.core import HomeAssistant
+
+from .const import DOMAIN
+from .coordinator import VodafoneStationRouter
+
+TO_REDACT = {CONF_USERNAME, CONF_PASSWORD}
+
+
+async def async_get_config_entry_diagnostics(
+    hass: HomeAssistant, entry: ConfigEntry
+) -> dict[str, Any]:
+    """Return diagnostics for a config entry."""
+
+    coordinator: VodafoneStationRouter = hass.data[DOMAIN][entry.entry_id]
+
+    sensors_data = coordinator.data.sensors
+    return {
+        "entry": async_redact_data(entry.as_dict(), TO_REDACT),
+        "device_info": {
+            "sys_model_name": sensors_data.get("sys_model_name"),
+            "sys_firmware_version": sensors_data["sys_firmware_version"],
+            "sys_hardware_version": sensors_data["sys_hardware_version"],
+            "sys_cpu_usage": sensors_data["sys_cpu_usage"][:-1],
+            "sys_memory_usage": sensors_data["sys_memory_usage"][:-1],
+            "sys_reboot_cause": sensors_data["sys_reboot_cause"],
+            "last_update success": coordinator.last_update_success,
+            "last_exception": coordinator.last_exception,
+            "client_devices": [
+                {
+                    "hostname": device_info.device.name,
+                    "connection_type": device_info.device.connection_type,
+                    "connected": device_info.device.connected,
+                    "type": device_info.device.type,
+                }
+                for _, device_info in coordinator.data.devices.items()
+            ],
+        },
+    }
diff --git a/tests/components/vodafone_station/const.py b/tests/components/vodafone_station/const.py
index 1b3d36def03ae19382cadaa1282eede3af823b1e..9adf32b339d6af6cc0dae0d6c67f4afaa7771d9d 100644
--- a/tests/components/vodafone_station/const.py
+++ b/tests/components/vodafone_station/const.py
@@ -1,5 +1,7 @@
 """Common stuff for Vodafone Station tests."""
 
+from aiovodafone.api import VodafoneStationDevice
+
 from homeassistant.components.vodafone_station.const import DOMAIN
 from homeassistant.const import CONF_DEVICES, CONF_HOST, CONF_PASSWORD, CONF_USERNAME
 
@@ -16,3 +18,98 @@ MOCK_CONFIG = {
 }
 
 MOCK_USER_DATA = MOCK_CONFIG[DOMAIN][CONF_DEVICES][0]
+
+
+DEVICE_DATA_QUERY = {
+    "xx:xx:xx:xx:xx:xx": VodafoneStationDevice(
+        connected=True,
+        connection_type="wifi",
+        ip_address="192.168.1.10",
+        name="WifiDevice0",
+        mac="xx:xx:xx:xx:xx:xx",
+        type="laptop",
+        wifi="2.4G",
+    )
+}
+
+SENSOR_DATA_QUERY = {
+    "sys_serial_number": "M123456789",
+    "sys_firmware_version": "XF6_4.0.05.04",
+    "sys_bootloader_version": "0220",
+    "sys_hardware_version": "RHG3006 v1",
+    "omci_software_version": "\t\t1.0.0.1_41032\t\t\n",
+    "sys_uptime": "12:16:41",
+    "sys_cpu_usage": "97%",
+    "sys_reboot_cause": "Web Reboot",
+    "sys_memory_usage": "51.94%",
+    "sys_wireless_driver_version": "17.10.188.75;17.10.188.75",
+    "sys_wireless_driver_version_5g": "17.10.188.75;17.10.188.75",
+    "vf_internet_key_online_since": "",
+    "vf_internet_key_ip_addr": "0.0.0.0",
+    "vf_internet_key_system": "0.0.0.0",
+    "vf_internet_key_mode": "Auto",
+    "sys_voip_version": "v02.01.00_01.13a\n",
+    "sys_date_time": "20.10.2024 | 03:44 pm",
+    "sys_build_time": "Sun Jun 23 17:55:49 CST 2024\n",
+    "sys_model_name": "RHG3006",
+    "inter_ip_address": "1.1.1.1",
+    "inter_gateway": "1.1.1.2",
+    "inter_primary_dns": "1.1.1.3",
+    "inter_secondary_dns": "1.1.1.4",
+    "inter_firewall": "601036",
+    "inter_wan_ip_address": "1.1.1.1",
+    "inter_ipv6_link_local_address": "",
+    "inter_ipv6_link_global_address": "",
+    "inter_ipv6_gateway": "",
+    "inter_ipv6_prefix_delegation": "",
+    "inter_ipv6_dns_address1": "",
+    "inter_ipv6_dns_address2": "",
+    "lan_ip_network": "192.168.0.1/24",
+    "lan_default_gateway": "192.168.0.1",
+    "lan_subnet_address_subnet1": "",
+    "lan_mac_address": "11:22:33:44:55:66",
+    "lan_dhcp_server": "601036",
+    "lan_dhcpv6_server": "601036",
+    "lan_router_advertisement": "601036",
+    "lan_ipv6_default_gateway": "fe80::1",
+    "lan_port1_switch_mode": "1301722",
+    "lan_port2_switch_mode": "1301722",
+    "lan_port3_switch_mode": "1301722",
+    "lan_port4_switch_mode": "1301722",
+    "lan_port1_switch_speed": "10",
+    "lan_port2_switch_speed": "100",
+    "lan_port3_switch_speed": "1000",
+    "lan_port4_switch_speed": "1000",
+    "lan_port1_switch_status": "1301724",
+    "lan_port2_switch_status": "1301724",
+    "lan_port3_switch_status": "1301724",
+    "lan_port4_switch_status": "1301724",
+    "wifi_status": "601036",
+    "wifi_name": "Wifi-Main-Network",
+    "wifi_mac_address": "AA:BB:CC:DD:EE:FF",
+    "wifi_security": "401027",
+    "wifi_channel": "8",
+    "wifi_bandwidth": "573",
+    "guest_wifi_status": "601037",
+    "guest_wifi_name": "Wifi-Guest",
+    "guest_wifi_mac_addr": "AA:BB:CC:DD:EE:GG",
+    "guest_wifi_security": "401027",
+    "guest_wifi_channel": "N/A",
+    "guest_wifi_ip": "192.168.2.1",
+    "guest_wifi_subnet_addr": "255.255.255.0",
+    "guest_wifi_dhcp_server": "192.168.2.1",
+    "wifi_status_5g": "601036",
+    "wifi_name_5g": "Wifi-Main-Network",
+    "wifi_mac_address_5g": "AA:BB:CC:DD:EE:HH",
+    "wifi_security_5g": "401027",
+    "wifi_channel_5g": "36",
+    "wifi_bandwidth_5g": "4803",
+    "guest_wifi_status_5g": "601037",
+    "guest_wifi_name_5g": "Wifi-Guest",
+    "guest_wifi_mac_addr_5g": "AA:BB:CC:DD:EE:II",
+    "guest_wifi_channel_5g": "N/A",
+    "guest_wifi_security_5g": "401027",
+    "guest_wifi_ip_5g": "192.168.2.1",
+    "guest_wifi_subnet_addr_5g": "255.255.255.0",
+    "guest_wifi_dhcp_server_5g": "192.168.2.1",
+}
diff --git a/tests/components/vodafone_station/snapshots/test_diagnostics.ambr b/tests/components/vodafone_station/snapshots/test_diagnostics.ambr
new file mode 100644
index 0000000000000000000000000000000000000000..c258b14dc2d4f598b68f8614e438abb7c770ca0d
--- /dev/null
+++ b/tests/components/vodafone_station/snapshots/test_diagnostics.ambr
@@ -0,0 +1,43 @@
+# serializer version: 1
+# name: test_entry_diagnostics
+  dict({
+    'device_info': dict({
+      'client_devices': list([
+        dict({
+          'connected': True,
+          'connection_type': 'wifi',
+          'hostname': 'WifiDevice0',
+          'type': 'laptop',
+        }),
+      ]),
+      'last_exception': None,
+      'last_update success': True,
+      'sys_cpu_usage': '97',
+      'sys_firmware_version': 'XF6_4.0.05.04',
+      'sys_hardware_version': 'RHG3006 v1',
+      'sys_memory_usage': '51.94',
+      'sys_model_name': 'RHG3006',
+      'sys_reboot_cause': 'Web Reboot',
+    }),
+    'entry': dict({
+      'data': dict({
+        'host': 'fake_host',
+        'password': '**REDACTED**',
+        'username': '**REDACTED**',
+      }),
+      'disabled_by': None,
+      'discovery_keys': dict({
+      }),
+      'domain': 'vodafone_station',
+      'minor_version': 1,
+      'options': dict({
+      }),
+      'pref_disable_new_entities': False,
+      'pref_disable_polling': False,
+      'source': 'user',
+      'title': 'Mock Title',
+      'unique_id': None,
+      'version': 1,
+    }),
+  })
+# ---
diff --git a/tests/components/vodafone_station/test_diagnostics.py b/tests/components/vodafone_station/test_diagnostics.py
new file mode 100644
index 0000000000000000000000000000000000000000..02918d8191226c8b8e1da9c3207222026e32e3f5
--- /dev/null
+++ b/tests/components/vodafone_station/test_diagnostics.py
@@ -0,0 +1,51 @@
+"""Tests for Vodafone Station diagnostics platform."""
+
+from __future__ import annotations
+
+from unittest.mock import patch
+
+from syrupy import SnapshotAssertion
+from syrupy.filters import props
+
+from homeassistant.components.vodafone_station.const import DOMAIN
+from homeassistant.config_entries import ConfigEntryState
+from homeassistant.core import HomeAssistant
+
+from .const import DEVICE_DATA_QUERY, MOCK_USER_DATA, SENSOR_DATA_QUERY
+
+from tests.common import MockConfigEntry
+from tests.components.diagnostics import get_diagnostics_for_config_entry
+from tests.typing import ClientSessionGenerator
+
+
+async def test_entry_diagnostics(
+    hass: HomeAssistant,
+    hass_client: ClientSessionGenerator,
+    snapshot: SnapshotAssertion,
+) -> None:
+    """Test config entry diagnostics."""
+    entry = MockConfigEntry(domain=DOMAIN, data=MOCK_USER_DATA)
+    entry.add_to_hass(hass)
+
+    with (
+        patch("aiovodafone.api.VodafoneStationSercommApi.login"),
+        patch(
+            "aiovodafone.api.VodafoneStationSercommApi.get_devices_data",
+            return_value=DEVICE_DATA_QUERY,
+        ),
+        patch(
+            "aiovodafone.api.VodafoneStationSercommApi.get_sensor_data",
+            return_value=SENSOR_DATA_QUERY,
+        ),
+    ):
+        await hass.config_entries.async_setup(entry.entry_id)
+        await hass.async_block_till_done()
+
+    assert entry.state == ConfigEntryState.LOADED
+    assert await get_diagnostics_for_config_entry(hass, hass_client, entry) == snapshot(
+        exclude=props(
+            "entry_id",
+            "created_at",
+            "modified_at",
+        )
+    )