diff --git a/homeassistant/components/vicare/__init__.py b/homeassistant/components/vicare/__init__.py
index 76de3a8a7ac..2e3284c37c4 100644
--- a/homeassistant/components/vicare/__init__.py
+++ b/homeassistant/components/vicare/__init__.py
@@ -41,7 +41,7 @@ _TOKEN_FILENAME = "vicare_token.save"
 class ViCareRequiredKeysMixin:
     """Mixin for required keys."""
 
-    value_getter: Callable[[Device], bool]
+    value_getter: Callable[[Device], Any]
 
 
 @dataclass()
diff --git a/homeassistant/components/vicare/binary_sensor.py b/homeassistant/components/vicare/binary_sensor.py
index 525099e7d4e..95a4bcdc9f0 100644
--- a/homeassistant/components/vicare/binary_sensor.py
+++ b/homeassistant/components/vicare/binary_sensor.py
@@ -1,6 +1,7 @@
 """Viessmann ViCare sensor device."""
 from __future__ import annotations
 
+from collections.abc import Callable
 from contextlib import suppress
 from dataclasses import dataclass
 import logging
@@ -40,6 +41,8 @@ class ViCareBinarySensorEntityDescription(
 ):
     """Describes ViCare binary sensor entity."""
 
+    value_getter: Callable[[PyViCareDevice], bool]
+
 
 CIRCUIT_SENSORS: tuple[ViCareBinarySensorEntityDescription, ...] = (
     ViCareBinarySensorEntityDescription(
diff --git a/homeassistant/components/vicare/number.py b/homeassistant/components/vicare/number.py
index 5511f2a5294..965b5a619fc 100644
--- a/homeassistant/components/vicare/number.py
+++ b/homeassistant/components/vicare/number.py
@@ -19,7 +19,11 @@ from PyViCare.PyViCareUtils import (
 )
 from requests.exceptions import ConnectionError as RequestConnectionError
 
-from homeassistant.components.number import NumberEntity, NumberEntityDescription
+from homeassistant.components.number import (
+    NumberDeviceClass,
+    NumberEntity,
+    NumberEntityDescription,
+)
 from homeassistant.config_entries import ConfigEntry
 from homeassistant.const import EntityCategory, UnitOfTemperature
 from homeassistant.core import HomeAssistant
@@ -37,6 +41,7 @@ _LOGGER = logging.getLogger(__name__)
 class ViCareNumberEntityDescription(NumberEntityDescription, ViCareRequiredKeysMixin):
     """Describes ViCare number entity."""
 
+    value_getter: Callable[[PyViCareDevice], float]
     value_setter: Callable[[PyViCareDevice, float], Any] | None = None
     min_value_getter: Callable[[PyViCareDevice], float | None] | None = None
     max_value_getter: Callable[[PyViCareDevice], float | None] | None = None
@@ -49,6 +54,7 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
         translation_key="heating_curve_shift",
         icon="mdi:plus-minus-variant",
         entity_category=EntityCategory.CONFIG,
+        device_class=NumberDeviceClass.TEMPERATURE,
         native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         value_getter=lambda api: api.getHeatingCurveShift(),
         value_setter=lambda api, shift: (
@@ -77,6 +83,42 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
         native_max_value=3.5,
         native_step=0.1,
     ),
+    ViCareNumberEntityDescription(
+        key="normal_temperature",
+        translation_key="normal_temperature",
+        entity_category=EntityCategory.CONFIG,
+        device_class=NumberDeviceClass.TEMPERATURE,
+        native_unit_of_measurement=UnitOfTemperature.CELSIUS,
+        value_getter=lambda api: api.getDesiredTemperatureForProgram("normal"),
+        value_setter=lambda api, value: api.setProgramTemperature("normal", value),
+        min_value_getter=lambda api: api.getProgramMinTemperature("normal"),
+        max_value_getter=lambda api: api.getProgramMaxTemperature("normal"),
+        stepping_getter=lambda api: api.getProgramStepping("normal"),
+    ),
+    ViCareNumberEntityDescription(
+        key="reduced_temperature",
+        translation_key="reduced_temperature",
+        entity_category=EntityCategory.CONFIG,
+        device_class=NumberDeviceClass.TEMPERATURE,
+        native_unit_of_measurement=UnitOfTemperature.CELSIUS,
+        value_getter=lambda api: api.getDesiredTemperatureForProgram("reduced"),
+        value_setter=lambda api, value: api.setProgramTemperature("reduced", value),
+        min_value_getter=lambda api: api.getProgramMinTemperature("reduced"),
+        max_value_getter=lambda api: api.getProgramMaxTemperature("reduced"),
+        stepping_getter=lambda api: api.getProgramStepping("reduced"),
+    ),
+    ViCareNumberEntityDescription(
+        key="comfort_temperature",
+        translation_key="comfort_temperature",
+        entity_category=EntityCategory.CONFIG,
+        device_class=NumberDeviceClass.TEMPERATURE,
+        native_unit_of_measurement=UnitOfTemperature.CELSIUS,
+        value_getter=lambda api: api.getDesiredTemperatureForProgram("comfort"),
+        value_setter=lambda api, value: api.setProgramTemperature("comfort", value),
+        min_value_getter=lambda api: api.getProgramMinTemperature("comfort"),
+        max_value_getter=lambda api: api.getProgramMaxTemperature("comfort"),
+        stepping_getter=lambda api: api.getProgramStepping("comfort"),
+    ),
 )
 
 
@@ -149,6 +191,7 @@ class ViCareNumber(ViCareEntity, NumberEntity):
                 self._attr_native_value = self.entity_description.value_getter(
                     self._api
                 )
+
                 if min_value := _get_value(
                     self.entity_description.min_value_getter, self._api
                 ):
diff --git a/homeassistant/components/vicare/strings.json b/homeassistant/components/vicare/strings.json
index 47ee60b2ea8..6c08215a9c1 100644
--- a/homeassistant/components/vicare/strings.json
+++ b/homeassistant/components/vicare/strings.json
@@ -80,9 +80,6 @@
       },
       "comfort_temperature": {
         "name": "Comfort temperature"
-      },
-      "eco_temperature": {
-        "name": "Eco temperature"
       }
     },
     "sensor": {