diff --git a/homeassistant/components/demo/__init__.py b/homeassistant/components/demo/__init__.py
index 952b7cbd9b2..e4ec3bd671c 100644
--- a/homeassistant/components/demo/__init__.py
+++ b/homeassistant/components/demo/__init__.py
@@ -1,13 +1,20 @@
 """Set up the demo environment that mimics interaction with devices."""
 import asyncio
+import datetime
+from random import random
 
 from homeassistant import bootstrap, config_entries
+from homeassistant.components.recorder.statistics import (
+    async_add_external_statistics,
+    get_last_statistics,
+)
 from homeassistant.const import (
     ATTR_ENTITY_ID,
     EVENT_HOMEASSISTANT_START,
     SOUND_PRESSURE_DB,
 )
 import homeassistant.core as ha
+import homeassistant.util.dt as dt_util
 
 DOMAIN = "demo"
 
@@ -150,6 +157,82 @@ async def async_setup(hass, config):
     return True
 
 
+def _generate_mean_statistics(start, end, init_value, max_diff):
+    statistics = []
+    mean = init_value
+    now = start
+    while now < end:
+        mean = mean + random() * max_diff - max_diff / 2
+        statistics.append(
+            {
+                "start": now,
+                "mean": mean,
+                "min": mean - random() * max_diff,
+                "max": mean + random() * max_diff,
+            }
+        )
+        now = now + datetime.timedelta(hours=1)
+
+    return statistics
+
+
+def _generate_sum_statistics(start, end, init_value, max_diff):
+    statistics = []
+    now = start
+    sum_ = init_value
+    while now < end:
+        sum_ = sum_ + random() * max_diff
+        statistics.append(
+            {
+                "start": now,
+                "sum": sum_,
+            }
+        )
+        now = now + datetime.timedelta(hours=1)
+
+    return statistics
+
+
+async def _insert_statistics(hass):
+    """Insert some fake statistics."""
+    now = dt_util.now()
+    yesterday = now - datetime.timedelta(days=1)
+    yesterday_midnight = yesterday.replace(hour=0, minute=0, second=0, microsecond=0)
+
+    # Fake yesterday's temperatures
+    metadata = {
+        "source": DOMAIN,
+        "statistic_id": f"{DOMAIN}:temperature_outdoor",
+        "unit_of_measurement": "°C",
+        "has_mean": True,
+        "has_sum": False,
+    }
+    statistics = _generate_mean_statistics(
+        yesterday_midnight, yesterday_midnight + datetime.timedelta(days=1), 15, 1
+    )
+    async_add_external_statistics(hass, metadata, statistics)
+
+    # Fake yesterday's energy consumption
+    metadata = {
+        "source": DOMAIN,
+        "statistic_id": f"{DOMAIN}:energy_consumption",
+        "unit_of_measurement": "kWh",
+        "has_mean": False,
+        "has_sum": True,
+    }
+    statistic_id = f"{DOMAIN}:energy_consumption"
+    sum_ = 0
+    last_stats = await hass.async_add_executor_job(
+        get_last_statistics, hass, 1, statistic_id, True
+    )
+    if "domain:energy_consumption" in last_stats:
+        sum_ = last_stats["domain.electricity_total"]["sum"] or 0
+    statistics = _generate_sum_statistics(
+        yesterday_midnight, yesterday_midnight + datetime.timedelta(days=1), sum_, 1
+    )
+    async_add_external_statistics(hass, metadata, statistics)
+
+
 async def async_setup_entry(hass, config_entry):
     """Set the config entry up."""
     # Set up demo platforms with config entry
@@ -157,6 +240,8 @@ async def async_setup_entry(hass, config_entry):
         hass.async_create_task(
             hass.config_entries.async_forward_entry_setup(config_entry, platform)
         )
+    if "recorder" in hass.config.components:
+        await _insert_statistics(hass)
     return True
 
 
diff --git a/homeassistant/components/demo/manifest.json b/homeassistant/components/demo/manifest.json
index 0997868fbfd..df6fa494079 100644
--- a/homeassistant/components/demo/manifest.json
+++ b/homeassistant/components/demo/manifest.json
@@ -2,7 +2,8 @@
   "domain": "demo",
   "name": "Demo",
   "documentation": "https://www.home-assistant.io/integrations/demo",
-  "dependencies": ["conversation", "zone", "group"],
+  "after_dependencies": ["recorder"],
+  "dependencies": ["conversation", "group", "zone"],
   "codeowners": ["@home-assistant/core"],
   "quality_scale": "internal",
   "iot_class": "calculated"
diff --git a/tests/components/demo/test_init.py b/tests/components/demo/test_init.py
index 68d4dfbf379..a446856de7b 100644
--- a/tests/components/demo/test_init.py
+++ b/tests/components/demo/test_init.py
@@ -7,8 +7,11 @@ import pytest
 
 from homeassistant.components.demo import DOMAIN
 from homeassistant.components.device_tracker.legacy import YAML_DEVICES
+from homeassistant.components.recorder.statistics import list_statistic_ids
 from homeassistant.helpers.json import JSONEncoder
-from homeassistant.setup import async_setup_component
+from homeassistant.setup import async_setup_component, setup_component
+
+from tests.components.recorder.common import wait_recording_done
 
 
 @pytest.fixture(autouse=True)
@@ -40,3 +43,27 @@ async def test_setting_up_demo(hass):
             "Unable to convert all demo entities to JSON. "
             "Wrong data in state machine!"
         )
+
+
+def test_demo_statistics(hass_recorder):
+    """Test that the demo components makes some statistics available."""
+    hass = hass_recorder()
+
+    assert setup_component(hass, DOMAIN, {DOMAIN: {}})
+    hass.block_till_done()
+    hass.start()
+    wait_recording_done(hass)
+
+    statistic_ids = list_statistic_ids(hass)
+    assert {
+        "name": None,
+        "source": "demo",
+        "statistic_id": "demo:temperature_outdoor",
+        "unit_of_measurement": "°C",
+    } in statistic_ids
+    assert {
+        "name": None,
+        "source": "demo",
+        "statistic_id": "demo:energy_consumption",
+        "unit_of_measurement": "kWh",
+    } in statistic_ids