diff --git a/.strict-typing b/.strict-typing
index 1eec42ad209cf1b7fdd51adeb2a30820983b2fc4..51ca93bb9fa371112f32e065ab664992e8c938db 100644
--- a/.strict-typing
+++ b/.strict-typing
@@ -197,6 +197,7 @@ homeassistant.components.fritzbox_callmonitor.*
 homeassistant.components.fronius.*
 homeassistant.components.frontend.*
 homeassistant.components.fully_kiosk.*
+homeassistant.components.fyta.*
 homeassistant.components.generic_hygrostat.*
 homeassistant.components.generic_thermostat.*
 homeassistant.components.geo_location.*
diff --git a/homeassistant/components/fyta/__init__.py b/homeassistant/components/fyta/__init__.py
index b666c5a1f525478d2dc6d7cdb48e54253a85a16a..efbb145345634a00c148869dd01e8c743f96c1ec 100644
--- a/homeassistant/components/fyta/__init__.py
+++ b/homeassistant/components/fyta/__init__.py
@@ -4,7 +4,6 @@ from __future__ import annotations
 
 from datetime import datetime
 import logging
-from typing import Any
 
 from fyta_cli.fyta_connector import FytaConnector
 
@@ -73,11 +72,11 @@ async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
             fyta = FytaConnector(
                 config_entry.data[CONF_USERNAME], config_entry.data[CONF_PASSWORD]
             )
-            credentials: dict[str, Any] = await fyta.login()
+            credentials = await fyta.login()
             await fyta.client.close()
 
-            new[CONF_ACCESS_TOKEN] = credentials[CONF_ACCESS_TOKEN]
-            new[CONF_EXPIRATION] = credentials[CONF_EXPIRATION].isoformat()
+            new[CONF_ACCESS_TOKEN] = credentials.access_token
+            new[CONF_EXPIRATION] = credentials.expiration.isoformat()
 
             hass.config_entries.async_update_entry(
                 config_entry, data=new, minor_version=2, version=1
diff --git a/homeassistant/components/fyta/config_flow.py b/homeassistant/components/fyta/config_flow.py
index 4cb8bddbf106635a9830855c962518361a129688..f2b5163c9dbbc0553560d6b81e6f41f592ac17ad 100644
--- a/homeassistant/components/fyta/config_flow.py
+++ b/homeassistant/components/fyta/config_flow.py
@@ -12,10 +12,11 @@ from fyta_cli.fyta_exceptions import (
     FytaConnectionError,
     FytaPasswordError,
 )
+from fyta_cli.fyta_models import Credentials
 import voluptuous as vol
 
 from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
-from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
+from homeassistant.const import CONF_ACCESS_TOKEN, CONF_PASSWORD, CONF_USERNAME
 from homeassistant.helpers.selector import (
     TextSelector,
     TextSelectorConfig,
@@ -49,14 +50,11 @@ DATA_SCHEMA = vol.Schema(
 class FytaConfigFlow(ConfigFlow, domain=DOMAIN):
     """Handle a config flow for Fyta."""
 
+    credentials: Credentials
+    _entry: FytaConfigEntry | None = None
     VERSION = 1
     MINOR_VERSION = 2
 
-    def __init__(self) -> None:
-        """Initialize FytaConfigFlow."""
-        self.credentials: dict[str, Any] = {}
-        self._entry: FytaConfigEntry | None = None
-
     async def async_auth(self, user_input: Mapping[str, Any]) -> dict[str, str]:
         """Reusable Auth Helper."""
         fyta = FytaConnector(user_input[CONF_USERNAME], user_input[CONF_PASSWORD])
@@ -75,10 +73,6 @@ class FytaConfigFlow(ConfigFlow, domain=DOMAIN):
         finally:
             await fyta.client.close()
 
-        self.credentials[CONF_EXPIRATION] = self.credentials[
-            CONF_EXPIRATION
-        ].isoformat()
-
         return {}
 
     async def async_step_user(
@@ -90,7 +84,10 @@ class FytaConfigFlow(ConfigFlow, domain=DOMAIN):
             self._async_abort_entries_match({CONF_USERNAME: user_input[CONF_USERNAME]})
 
             if not (errors := await self.async_auth(user_input)):
-                user_input |= self.credentials
+                user_input |= {
+                    CONF_ACCESS_TOKEN: self.credentials.access_token,
+                    CONF_EXPIRATION: self.credentials.expiration.isoformat(),
+                }
                 return self.async_create_entry(
                     title=user_input[CONF_USERNAME], data=user_input
                 )
@@ -114,7 +111,10 @@ class FytaConfigFlow(ConfigFlow, domain=DOMAIN):
         assert self._entry is not None
 
         if user_input and not (errors := await self.async_auth(user_input)):
-            user_input |= self.credentials
+            user_input |= {
+                CONF_ACCESS_TOKEN: self.credentials.access_token,
+                CONF_EXPIRATION: self.credentials.expiration.isoformat(),
+            }
             return self.async_update_reload_and_abort(
                 self._entry, data={**self._entry.data, **user_input}
             )
diff --git a/homeassistant/components/fyta/coordinator.py b/homeassistant/components/fyta/coordinator.py
index b6fbf73ec25d42aa304a99cf6d11c4e699320262..c92a96eed63d652ce6b4df0589584f930979c401 100644
--- a/homeassistant/components/fyta/coordinator.py
+++ b/homeassistant/components/fyta/coordinator.py
@@ -4,7 +4,7 @@ from __future__ import annotations
 
 from datetime import datetime, timedelta
 import logging
-from typing import TYPE_CHECKING, Any
+from typing import TYPE_CHECKING
 
 from fyta_cli.fyta_connector import FytaConnector
 from fyta_cli.fyta_exceptions import (
@@ -13,6 +13,7 @@ from fyta_cli.fyta_exceptions import (
     FytaPasswordError,
     FytaPlantError,
 )
+from fyta_cli.fyta_models import Plant
 
 from homeassistant.const import CONF_ACCESS_TOKEN
 from homeassistant.core import HomeAssistant
@@ -27,7 +28,7 @@ if TYPE_CHECKING:
 _LOGGER = logging.getLogger(__name__)
 
 
-class FytaCoordinator(DataUpdateCoordinator[dict[int, dict[str, Any]]]):
+class FytaCoordinator(DataUpdateCoordinator[dict[int, Plant]]):
     """Fyta custom coordinator."""
 
     config_entry: FytaConfigEntry
@@ -44,7 +45,7 @@ class FytaCoordinator(DataUpdateCoordinator[dict[int, dict[str, Any]]]):
 
     async def _async_update_data(
         self,
-    ) -> dict[int, dict[str, Any]]:
+    ) -> dict[int, Plant]:
         """Fetch data from API endpoint."""
 
         if (
@@ -60,7 +61,6 @@ class FytaCoordinator(DataUpdateCoordinator[dict[int, dict[str, Any]]]):
 
     async def renew_authentication(self) -> bool:
         """Renew access token for FYTA API."""
-        credentials: dict[str, Any] = {}
 
         try:
             credentials = await self.fyta.login()
@@ -70,8 +70,8 @@ class FytaCoordinator(DataUpdateCoordinator[dict[int, dict[str, Any]]]):
             raise ConfigEntryAuthFailed from ex
 
         new_config_entry = {**self.config_entry.data}
-        new_config_entry[CONF_ACCESS_TOKEN] = credentials[CONF_ACCESS_TOKEN]
-        new_config_entry[CONF_EXPIRATION] = credentials[CONF_EXPIRATION].isoformat()
+        new_config_entry[CONF_ACCESS_TOKEN] = credentials.access_token
+        new_config_entry[CONF_EXPIRATION] = credentials.expiration.isoformat()
 
         self.hass.config_entries.async_update_entry(
             self.config_entry, data=new_config_entry
diff --git a/homeassistant/components/fyta/diagnostics.py b/homeassistant/components/fyta/diagnostics.py
index 55720b75ee67afbcf7ac2eb99814b35114030ab1..d02f8cacfa38f20e30059fb7c04a5979183f7266 100644
--- a/homeassistant/components/fyta/diagnostics.py
+++ b/homeassistant/components/fyta/diagnostics.py
@@ -25,5 +25,5 @@ async def async_get_config_entry_diagnostics(
 
     return {
         "config_entry": async_redact_data(config_entry.as_dict(), TO_REDACT),
-        "plant_data": data,
+        "plant_data": {key: value.to_dict() for key, value in data.items()},
     }
diff --git a/homeassistant/components/fyta/entity.py b/homeassistant/components/fyta/entity.py
index 681a50f4cf546b054f8d4bbb4737da16e1b038ff..18c52d74e251f329455d58468bd2d2805eaa28f2 100644
--- a/homeassistant/components/fyta/entity.py
+++ b/homeassistant/components/fyta/entity.py
@@ -1,6 +1,6 @@
 """Entities for FYTA integration."""
 
-from typing import Any
+from fyta_cli.fyta_models import Plant
 
 from homeassistant.components.sensor import SensorEntityDescription
 from homeassistant.config_entries import ConfigEntry
@@ -32,13 +32,13 @@ class FytaPlantEntity(CoordinatorEntity[FytaCoordinator]):
             manufacturer="Fyta",
             model="Plant",
             identifiers={(DOMAIN, f"{entry.entry_id}-{plant_id}")},
-            name=self.plant.get("name"),
-            sw_version=self.plant.get("sw_version"),
+            name=self.plant.name,
+            sw_version=self.plant.sw_version,
         )
         self.entity_description = description
 
     @property
-    def plant(self) -> dict[str, Any]:
+    def plant(self) -> Plant:
         """Get plant data."""
         return self.coordinator.data[self.plant_id]
 
diff --git a/homeassistant/components/fyta/manifest.json b/homeassistant/components/fyta/manifest.json
index f0953dd2a33db19e5c351f68fcfba82def62badc..07387f4ab0569e2fb93eddefa589b7754845e817 100644
--- a/homeassistant/components/fyta/manifest.json
+++ b/homeassistant/components/fyta/manifest.json
@@ -7,5 +7,5 @@
   "integration_type": "hub",
   "iot_class": "cloud_polling",
   "quality_scale": "platinum",
-  "requirements": ["fyta_cli==0.4.1"]
+  "requirements": ["fyta_cli==0.6.0"]
 }
diff --git a/homeassistant/components/fyta/sensor.py b/homeassistant/components/fyta/sensor.py
index 27576ae5065528fc284f74f11466756a4e0e2571..262d0b6d1f4f7ac84ae255377c43dfeaa76f33da 100644
--- a/homeassistant/components/fyta/sensor.py
+++ b/homeassistant/components/fyta/sensor.py
@@ -7,7 +7,7 @@ from dataclasses import dataclass
 from datetime import datetime
 from typing import Final
 
-from fyta_cli.fyta_connector import PLANT_MEASUREMENT_STATUS, PLANT_STATUS
+from fyta_cli.fyta_models import Plant
 
 from homeassistant.components.sensor import (
     SensorDeviceClass,
@@ -23,19 +23,18 @@ from homeassistant.const import (
 )
 from homeassistant.core import HomeAssistant
 from homeassistant.helpers.entity_platform import AddEntitiesCallback
+from homeassistant.helpers.typing import StateType
 
 from . import FytaConfigEntry
 from .coordinator import FytaCoordinator
 from .entity import FytaPlantEntity
 
 
-@dataclass(frozen=True)
+@dataclass(frozen=True, kw_only=True)
 class FytaSensorEntityDescription(SensorEntityDescription):
     """Describes Fyta sensor entity."""
 
-    value_fn: Callable[[str | int | float | datetime], str | int | float | datetime] = (
-        lambda value: value
-    )
+    value_fn: Callable[[Plant], StateType | datetime]
 
 
 PLANT_STATUS_LIST: list[str] = ["deleted", "doing_great", "need_attention", "no_sensor"]
@@ -48,63 +47,68 @@ PLANT_MEASUREMENT_STATUS_LIST: list[str] = [
     "too_high",
 ]
 
+
 SENSORS: Final[list[FytaSensorEntityDescription]] = [
     FytaSensorEntityDescription(
         key="scientific_name",
         translation_key="scientific_name",
+        value_fn=lambda plant: plant.scientific_name,
     ),
     FytaSensorEntityDescription(
         key="status",
         translation_key="plant_status",
         device_class=SensorDeviceClass.ENUM,
         options=PLANT_STATUS_LIST,
-        value_fn=PLANT_STATUS.get,
+        value_fn=lambda plant: plant.status.name.lower(),
     ),
     FytaSensorEntityDescription(
         key="temperature_status",
         translation_key="temperature_status",
         device_class=SensorDeviceClass.ENUM,
         options=PLANT_MEASUREMENT_STATUS_LIST,
-        value_fn=PLANT_MEASUREMENT_STATUS.get,
+        value_fn=lambda plant: plant.temperature_status.name.lower(),
     ),
     FytaSensorEntityDescription(
         key="light_status",
         translation_key="light_status",
         device_class=SensorDeviceClass.ENUM,
         options=PLANT_MEASUREMENT_STATUS_LIST,
-        value_fn=PLANT_MEASUREMENT_STATUS.get,
+        value_fn=lambda plant: plant.light_status.name.lower(),
     ),
     FytaSensorEntityDescription(
         key="moisture_status",
         translation_key="moisture_status",
         device_class=SensorDeviceClass.ENUM,
         options=PLANT_MEASUREMENT_STATUS_LIST,
-        value_fn=PLANT_MEASUREMENT_STATUS.get,
+        value_fn=lambda plant: plant.moisture_status.name.lower(),
     ),
     FytaSensorEntityDescription(
         key="salinity_status",
         translation_key="salinity_status",
         device_class=SensorDeviceClass.ENUM,
         options=PLANT_MEASUREMENT_STATUS_LIST,
-        value_fn=PLANT_MEASUREMENT_STATUS.get,
+        value_fn=lambda plant: plant.salinity_status.name.lower(),
     ),
     FytaSensorEntityDescription(
         key="temperature",
         native_unit_of_measurement=UnitOfTemperature.CELSIUS,
         device_class=SensorDeviceClass.TEMPERATURE,
         state_class=SensorStateClass.MEASUREMENT,
+        value_fn=lambda plant: plant.temperature,
     ),
     FytaSensorEntityDescription(
         key="light",
         translation_key="light",
         native_unit_of_measurement="μmol/s⋅m²",
         state_class=SensorStateClass.MEASUREMENT,
+        value_fn=lambda plant: plant.light,
     ),
     FytaSensorEntityDescription(
         key="moisture",
         native_unit_of_measurement=PERCENTAGE,
         device_class=SensorDeviceClass.MOISTURE,
         state_class=SensorStateClass.MEASUREMENT,
+        value_fn=lambda plant: plant.moisture,
     ),
     FytaSensorEntityDescription(
         key="salinity",
@@ -112,11 +116,13 @@ SENSORS: Final[list[FytaSensorEntityDescription]] = [
         native_unit_of_measurement=UnitOfConductivity.MILLISIEMENS,
         device_class=SensorDeviceClass.CONDUCTIVITY,
         state_class=SensorStateClass.MEASUREMENT,
+        value_fn=lambda plant: plant.salinity,
     ),
     FytaSensorEntityDescription(
         key="ph",
         device_class=SensorDeviceClass.PH,
         state_class=SensorStateClass.MEASUREMENT,
+        value_fn=lambda plant: plant.ph,
     ),
     FytaSensorEntityDescription(
         key="battery_level",
@@ -124,6 +130,7 @@ SENSORS: Final[list[FytaSensorEntityDescription]] = [
         device_class=SensorDeviceClass.BATTERY,
         state_class=SensorStateClass.MEASUREMENT,
         entity_category=EntityCategory.DIAGNOSTIC,
+        value_fn=lambda plant: plant.battery_level,
     ),
 ]
 
@@ -138,7 +145,7 @@ async def async_setup_entry(
         FytaPlantSensor(coordinator, entry, sensor, plant_id)
         for plant_id in coordinator.fyta.plant_list
         for sensor in SENSORS
-        if sensor.key in coordinator.data[plant_id]
+        if sensor.key in dir(coordinator.data[plant_id])
     ]
 
     async_add_entities(plant_entities)
@@ -150,8 +157,7 @@ class FytaPlantSensor(FytaPlantEntity, SensorEntity):
     entity_description: FytaSensorEntityDescription
 
     @property
-    def native_value(self) -> str | int | float | datetime:
+    def native_value(self) -> StateType | datetime:
         """Return the state for this sensor."""
 
-        val = self.plant[self.entity_description.key]
-        return self.entity_description.value_fn(val)
+        return self.entity_description.value_fn(self.plant)
diff --git a/mypy.ini b/mypy.ini
index c5478689702733806c968c521b1681295bb1aa15..f0a941f20eb20d2e4adc48844ced7df60a8f2304 100644
--- a/mypy.ini
+++ b/mypy.ini
@@ -1726,6 +1726,16 @@ disallow_untyped_defs = true
 warn_return_any = true
 warn_unreachable = true
 
+[mypy-homeassistant.components.fyta.*]
+check_untyped_defs = true
+disallow_incomplete_defs = true
+disallow_subclassing_any = true
+disallow_untyped_calls = true
+disallow_untyped_decorators = true
+disallow_untyped_defs = true
+warn_return_any = true
+warn_unreachable = true
+
 [mypy-homeassistant.components.generic_hygrostat.*]
 check_untyped_defs = true
 disallow_incomplete_defs = true
diff --git a/requirements_all.txt b/requirements_all.txt
index 522ee846847de1927717f224ed47777d7de81d1f..59b8b35730e08ac8f2dae525003dd2ef8d6e3d7a 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -921,7 +921,7 @@ freesms==0.2.0
 fritzconnection[qr]==1.13.2
 
 # homeassistant.components.fyta
-fyta_cli==0.4.1
+fyta_cli==0.6.0
 
 # homeassistant.components.google_translate
 gTTS==2.2.4
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 31e448dbbe4e552ab563744a80fc5e77a8058983..90ea1d2c806c6298f3b304d02a79f80606161a9f 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -774,7 +774,7 @@ freebox-api==1.1.0
 fritzconnection[qr]==1.13.2
 
 # homeassistant.components.fyta
-fyta_cli==0.4.1
+fyta_cli==0.6.0
 
 # homeassistant.components.google_translate
 gTTS==2.2.4
diff --git a/tests/components/fyta/conftest.py b/tests/components/fyta/conftest.py
index 6a67ae75ec252a0f4894f377e7a1d5671392c915..2bcad9b3c80666ab169a50d5268aca3716cb6e5b 100644
--- a/tests/components/fyta/conftest.py
+++ b/tests/components/fyta/conftest.py
@@ -4,6 +4,7 @@ from collections.abc import Generator
 from datetime import UTC, datetime
 from unittest.mock import AsyncMock, patch
 
+from fyta_cli.fyta_models import Credentials, Plant
 import pytest
 
 from homeassistant.components.fyta.const import CONF_EXPIRATION, DOMAIN as FYTA_DOMAIN
@@ -35,23 +36,27 @@ def mock_config_entry() -> MockConfigEntry:
 def mock_fyta_connector():
     """Build a fixture for the Fyta API that connects successfully and returns one device."""
 
+    plants: dict[int, Plant] = {
+        0: Plant.from_dict(load_json_object_fixture("plant_status1.json", FYTA_DOMAIN)),
+        1: Plant.from_dict(load_json_object_fixture("plant_status2.json", FYTA_DOMAIN)),
+    }
+
     mock_fyta_connector = AsyncMock()
     mock_fyta_connector.expiration = datetime.fromisoformat(EXPIRATION).replace(
         tzinfo=UTC
     )
     mock_fyta_connector.client = AsyncMock(autospec=True)
-    mock_fyta_connector.update_all_plants.return_value = load_json_object_fixture(
-        "plant_status.json", FYTA_DOMAIN
-    )
-    mock_fyta_connector.plant_list = load_json_object_fixture(
-        "plant_list.json", FYTA_DOMAIN
-    )
+    mock_fyta_connector.update_all_plants.return_value = plants
+    mock_fyta_connector.plant_list = {
+        0: "Gummibaum",
+        1: "Kakaobaum",
+    }
 
     mock_fyta_connector.login = AsyncMock(
-        return_value={
-            CONF_ACCESS_TOKEN: ACCESS_TOKEN,
-            CONF_EXPIRATION: datetime.fromisoformat(EXPIRATION).replace(tzinfo=UTC),
-        }
+        return_value=Credentials(
+            access_token=ACCESS_TOKEN,
+            expiration=datetime.fromisoformat(EXPIRATION).replace(tzinfo=UTC),
+        )
     )
     with (
         patch(
diff --git a/tests/components/fyta/fixtures/plant_list.json b/tests/components/fyta/fixtures/plant_list.json
deleted file mode 100644
index 9527c7d9d96a709d10ae90fb8472c9ab742d8dc5..0000000000000000000000000000000000000000
--- a/tests/components/fyta/fixtures/plant_list.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "0": "Gummibaum",
-  "1": "Kakaobaum"
-}
diff --git a/tests/components/fyta/fixtures/plant_status.json b/tests/components/fyta/fixtures/plant_status.json
deleted file mode 100644
index 5d9cb2d31d92be2222df72e62c6c002319889820..0000000000000000000000000000000000000000
--- a/tests/components/fyta/fixtures/plant_status.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "0": {
-    "name": "Gummibaum",
-    "scientific_name": "Ficus elastica",
-    "status": 1,
-    "sw_version": "1.0"
-  },
-  "1": {
-    "name": "Kakaobaum",
-    "scientific_name": "Theobroma cacao",
-    "status": 2,
-    "sw_version": "1.0"
-  }
-}
diff --git a/tests/components/fyta/fixtures/plant_status1.json b/tests/components/fyta/fixtures/plant_status1.json
new file mode 100644
index 0000000000000000000000000000000000000000..f2e8dc9c97033e7b576bfff68aa9a94db409e9ce
--- /dev/null
+++ b/tests/components/fyta/fixtures/plant_status1.json
@@ -0,0 +1,23 @@
+{
+  "battery_level": 80,
+  "battery_status": true,
+  "last_updated": "2023-01-10 10:10:00",
+  "light": 2,
+  "light_status": 3,
+  "nickname": "Gummibaum",
+  "moisture": 61,
+  "moisture_status": 3,
+  "sensor_available": true,
+  "sw_version": "1.0",
+  "status": 3,
+  "online": true,
+  "ph": null,
+  "plant_id": 0,
+  "plant_origin_path": "",
+  "plant_thumb_path": "",
+  "salinity": 1,
+  "salinity_status": 4,
+  "scientific_name": "Ficus elastica",
+  "temperature": 25.2,
+  "temperature_status": 3
+}
diff --git a/tests/components/fyta/fixtures/plant_status2.json b/tests/components/fyta/fixtures/plant_status2.json
new file mode 100644
index 0000000000000000000000000000000000000000..a5c2735ca7c300e7944d76451ee63febb40d4105
--- /dev/null
+++ b/tests/components/fyta/fixtures/plant_status2.json
@@ -0,0 +1,23 @@
+{
+  "battery_level": 80,
+  "battery_status": true,
+  "last_updated": "2023-01-02 10:10:00",
+  "light": 2,
+  "light_status": 3,
+  "nickname": "Kakaobaum",
+  "moisture": 61,
+  "moisture_status": 3,
+  "sensor_available": true,
+  "sw_version": "1.0",
+  "status": 3,
+  "online": true,
+  "ph": 7,
+  "plant_id": 0,
+  "plant_origin_path": "",
+  "plant_thumb_path": "",
+  "salinity": 1,
+  "salinity_status": 4,
+  "scientific_name": "Theobroma cacao",
+  "temperature": 25.2,
+  "temperature_status": 3
+}
diff --git a/tests/components/fyta/snapshots/test_diagnostics.ambr b/tests/components/fyta/snapshots/test_diagnostics.ambr
index 7491310129bc79db42862b66d7a223d7e3a3bf7e..cf6bcdb77ad087eba5cdb771682742a23b8ba43d 100644
--- a/tests/components/fyta/snapshots/test_diagnostics.ambr
+++ b/tests/components/fyta/snapshots/test_diagnostics.ambr
@@ -23,16 +23,50 @@
     }),
     'plant_data': dict({
       '0': dict({
+        'battery_level': 80.0,
+        'battery_status': True,
+        'last_updated': '2023-01-10T10:10:00',
+        'light': 2.0,
+        'light_status': 3,
+        'moisture': 61.0,
+        'moisture_status': 3,
         'name': 'Gummibaum',
+        'online': True,
+        'ph': None,
+        'plant_id': 0,
+        'plant_origin_path': '',
+        'plant_thumb_path': '',
+        'salinity': 1.0,
+        'salinity_status': 4,
         'scientific_name': 'Ficus elastica',
-        'status': 1,
+        'sensor_available': True,
+        'status': 3,
         'sw_version': '1.0',
+        'temperature': 25.2,
+        'temperature_status': 3,
       }),
       '1': dict({
+        'battery_level': 80.0,
+        'battery_status': True,
+        'last_updated': '2023-01-02T10:10:00',
+        'light': 2.0,
+        'light_status': 3,
+        'moisture': 61.0,
+        'moisture_status': 3,
         'name': 'Kakaobaum',
+        'online': True,
+        'ph': 7.0,
+        'plant_id': 0,
+        'plant_origin_path': '',
+        'plant_thumb_path': '',
+        'salinity': 1.0,
+        'salinity_status': 4,
         'scientific_name': 'Theobroma cacao',
-        'status': 2,
+        'sensor_available': True,
+        'status': 3,
         'sw_version': '1.0',
+        'temperature': 25.2,
+        'temperature_status': 3,
       }),
     }),
   })
diff --git a/tests/components/fyta/snapshots/test_sensor.ambr b/tests/components/fyta/snapshots/test_sensor.ambr
index 1041fff501e9002fd948bb89e10246550c5a5b44..2e96de0a283f27b478ed1d93cd5dc4032fd36ca3 100644
--- a/tests/components/fyta/snapshots/test_sensor.ambr
+++ b/tests/components/fyta/snapshots/test_sensor.ambr
@@ -1,4 +1,334 @@
 # serializer version: 1
+# name: test_all_entities[sensor.gummibaum_battery-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
+    'entity_id': 'sensor.gummibaum_battery',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.BATTERY: 'battery'>,
+    'original_icon': None,
+    'original_name': 'Battery',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-battery_level',
+    'unit_of_measurement': '%',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_battery-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'battery',
+      'friendly_name': 'Gummibaum Battery',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': '%',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_battery',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '80.0',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_light-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_light',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': None,
+    'original_icon': None,
+    'original_name': 'Light',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'light',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-light',
+    'unit_of_measurement': 'μmol/s⋅m²',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_light-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'friendly_name': 'Gummibaum Light',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': 'μmol/s⋅m²',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_light',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '2.0',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_light_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_light_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Light state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'light_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-light_status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_light_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Gummibaum Light state',
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_light_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'perfect',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_moisture-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_moisture',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.MOISTURE: 'moisture'>,
+    'original_icon': None,
+    'original_name': 'Moisture',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-moisture',
+    'unit_of_measurement': '%',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_moisture-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'moisture',
+      'friendly_name': 'Gummibaum Moisture',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': '%',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_moisture',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '61.0',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_moisture_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_moisture_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Moisture state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'moisture_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-moisture_status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_moisture_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Gummibaum Moisture state',
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_moisture_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'perfect',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_ph-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_ph',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.PH: 'ph'>,
+    'original_icon': None,
+    'original_name': 'pH',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-ph',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_ph-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'ph',
+      'friendly_name': 'Gummibaum pH',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_ph',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'unknown',
+  })
+# ---
 # name: test_all_entities[sensor.gummibaum_plant_state-entry]
   EntityRegistryEntrySnapshot({
     'aliases': set({
@@ -6,10 +336,564 @@
     'area_id': None,
     'capabilities': dict({
       'options': list([
-        'deleted',
-        'doing_great',
-        'need_attention',
-        'no_sensor',
+        'deleted',
+        'doing_great',
+        'need_attention',
+        'no_sensor',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_plant_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Plant state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'plant_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_plant_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Gummibaum Plant state',
+      'options': list([
+        'deleted',
+        'doing_great',
+        'need_attention',
+        'no_sensor',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_plant_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'no_sensor',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_salinity-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_salinity',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.CONDUCTIVITY: 'conductivity'>,
+    'original_icon': None,
+    'original_name': 'Salinity',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'salinity',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-salinity',
+    'unit_of_measurement': <UnitOfConductivity.MILLISIEMENS: 'mS/cm'>,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_salinity-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'conductivity',
+      'friendly_name': 'Gummibaum Salinity',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': <UnitOfConductivity.MILLISIEMENS: 'mS/cm'>,
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_salinity',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '1.0',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_salinity_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_salinity_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Salinity state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'salinity_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-salinity_status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_salinity_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Gummibaum Salinity state',
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_salinity_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'high',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_scientific_name-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': None,
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_scientific_name',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': None,
+    'original_icon': None,
+    'original_name': 'Scientific name',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'scientific_name',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-scientific_name',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_scientific_name-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'friendly_name': 'Gummibaum Scientific name',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_scientific_name',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'Ficus elastica',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_temperature-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_temperature',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
+    'original_icon': None,
+    'original_name': 'Temperature',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-temperature',
+    'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_temperature-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'temperature',
+      'friendly_name': 'Gummibaum Temperature',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_temperature',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '25.2',
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_temperature_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.gummibaum_temperature_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Temperature state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'temperature_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-temperature_status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.gummibaum_temperature_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Gummibaum Temperature state',
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.gummibaum_temperature_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'perfect',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_battery-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
+    'entity_id': 'sensor.kakaobaum_battery',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.BATTERY: 'battery'>,
+    'original_icon': None,
+    'original_name': 'Battery',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-battery_level',
+    'unit_of_measurement': '%',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_battery-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'battery',
+      'friendly_name': 'Kakaobaum Battery',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': '%',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_battery',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '80.0',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_light-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.kakaobaum_light',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': None,
+    'original_icon': None,
+    'original_name': 'Light',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'light',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-light',
+    'unit_of_measurement': 'μmol/s⋅m²',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_light-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'friendly_name': 'Kakaobaum Light',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': 'μmol/s⋅m²',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_light',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '2.0',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_light_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.kakaobaum_light_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Light state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'light_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-light_status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_light_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Kakaobaum Light state',
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_light_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'perfect',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_moisture-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.kakaobaum_moisture',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.MOISTURE: 'moisture'>,
+    'original_icon': None,
+    'original_name': 'Moisture',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-moisture',
+    'unit_of_measurement': '%',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_moisture-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'moisture',
+      'friendly_name': 'Kakaobaum Moisture',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': '%',
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_moisture',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '61.0',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_moisture_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
       ]),
     }),
     'config_entry_id': <ANY>,
@@ -18,7 +902,7 @@
     'disabled_by': None,
     'domain': 'sensor',
     'entity_category': None,
-    'entity_id': 'sensor.gummibaum_plant_state',
+    'entity_id': 'sensor.kakaobaum_moisture_state',
     'has_entity_name': True,
     'hidden_by': None,
     'icon': None,
@@ -30,48 +914,52 @@
     }),
     'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
     'original_icon': None,
-    'original_name': 'Plant state',
+    'original_name': 'Moisture state',
     'platform': 'fyta',
     'previous_unique_id': None,
     'supported_features': 0,
-    'translation_key': 'plant_status',
-    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-status',
+    'translation_key': 'moisture_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-moisture_status',
     'unit_of_measurement': None,
   })
 # ---
-# name: test_all_entities[sensor.gummibaum_plant_state-state]
+# name: test_all_entities[sensor.kakaobaum_moisture_state-state]
   StateSnapshot({
     'attributes': ReadOnlyDict({
       'device_class': 'enum',
-      'friendly_name': 'Gummibaum Plant state',
+      'friendly_name': 'Kakaobaum Moisture state',
       'options': list([
-        'deleted',
-        'doing_great',
-        'need_attention',
-        'no_sensor',
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
       ]),
     }),
     'context': <ANY>,
-    'entity_id': 'sensor.gummibaum_plant_state',
+    'entity_id': 'sensor.kakaobaum_moisture_state',
     'last_changed': <ANY>,
     'last_reported': <ANY>,
     'last_updated': <ANY>,
-    'state': 'doing_great',
+    'state': 'perfect',
   })
 # ---
-# name: test_all_entities[sensor.gummibaum_scientific_name-entry]
+# name: test_all_entities[sensor.kakaobaum_ph-entry]
   EntityRegistryEntrySnapshot({
     'aliases': set({
     }),
     'area_id': None,
-    'capabilities': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
     'config_entry_id': <ANY>,
     'device_class': None,
     'device_id': <ANY>,
     'disabled_by': None,
     'domain': 'sensor',
     'entity_category': None,
-    'entity_id': 'sensor.gummibaum_scientific_name',
+    'entity_id': 'sensor.kakaobaum_ph',
     'has_entity_name': True,
     'hidden_by': None,
     'icon': None,
@@ -81,28 +969,30 @@
     'name': None,
     'options': dict({
     }),
-    'original_device_class': None,
+    'original_device_class': <SensorDeviceClass.PH: 'ph'>,
     'original_icon': None,
-    'original_name': 'Scientific name',
+    'original_name': 'pH',
     'platform': 'fyta',
     'previous_unique_id': None,
     'supported_features': 0,
-    'translation_key': 'scientific_name',
-    'unique_id': 'ce5f5431554d101905d31797e1232da8-0-scientific_name',
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-ph',
     'unit_of_measurement': None,
   })
 # ---
-# name: test_all_entities[sensor.gummibaum_scientific_name-state]
+# name: test_all_entities[sensor.kakaobaum_ph-state]
   StateSnapshot({
     'attributes': ReadOnlyDict({
-      'friendly_name': 'Gummibaum Scientific name',
+      'device_class': 'ph',
+      'friendly_name': 'Kakaobaum pH',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
     }),
     'context': <ANY>,
-    'entity_id': 'sensor.gummibaum_scientific_name',
+    'entity_id': 'sensor.kakaobaum_ph',
     'last_changed': <ANY>,
     'last_reported': <ANY>,
     'last_updated': <ANY>,
-    'state': 'Ficus elastica',
+    'state': '7.0',
   })
 # ---
 # name: test_all_entities[sensor.kakaobaum_plant_state-entry]
@@ -162,7 +1052,122 @@
     'last_changed': <ANY>,
     'last_reported': <ANY>,
     'last_updated': <ANY>,
-    'state': 'need_attention',
+    'state': 'no_sensor',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_salinity-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.kakaobaum_salinity',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.CONDUCTIVITY: 'conductivity'>,
+    'original_icon': None,
+    'original_name': 'Salinity',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'salinity',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-salinity',
+    'unit_of_measurement': <UnitOfConductivity.MILLISIEMENS: 'mS/cm'>,
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_salinity-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'conductivity',
+      'friendly_name': 'Kakaobaum Salinity',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': <UnitOfConductivity.MILLISIEMENS: 'mS/cm'>,
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_salinity',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '1.0',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_salinity_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.kakaobaum_salinity_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Salinity state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'salinity_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-salinity_status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_salinity_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Kakaobaum Salinity state',
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_salinity_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'high',
   })
 # ---
 # name: test_all_entities[sensor.kakaobaum_scientific_name-entry]
@@ -211,3 +1216,118 @@
     'state': 'Theobroma cacao',
   })
 # ---
+# name: test_all_entities[sensor.kakaobaum_temperature-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.kakaobaum_temperature',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.TEMPERATURE: 'temperature'>,
+    'original_icon': None,
+    'original_name': 'Temperature',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': None,
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-temperature',
+    'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_temperature-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'temperature',
+      'friendly_name': 'Kakaobaum Temperature',
+      'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
+      'unit_of_measurement': <UnitOfTemperature.CELSIUS: '°C'>,
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_temperature',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': '25.2',
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_temperature_state-entry]
+  EntityRegistryEntrySnapshot({
+    'aliases': set({
+    }),
+    'area_id': None,
+    'capabilities': dict({
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'config_entry_id': <ANY>,
+    'device_class': None,
+    'device_id': <ANY>,
+    'disabled_by': None,
+    'domain': 'sensor',
+    'entity_category': None,
+    'entity_id': 'sensor.kakaobaum_temperature_state',
+    'has_entity_name': True,
+    'hidden_by': None,
+    'icon': None,
+    'id': <ANY>,
+    'labels': set({
+    }),
+    'name': None,
+    'options': dict({
+    }),
+    'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
+    'original_icon': None,
+    'original_name': 'Temperature state',
+    'platform': 'fyta',
+    'previous_unique_id': None,
+    'supported_features': 0,
+    'translation_key': 'temperature_status',
+    'unique_id': 'ce5f5431554d101905d31797e1232da8-1-temperature_status',
+    'unit_of_measurement': None,
+  })
+# ---
+# name: test_all_entities[sensor.kakaobaum_temperature_state-state]
+  StateSnapshot({
+    'attributes': ReadOnlyDict({
+      'device_class': 'enum',
+      'friendly_name': 'Kakaobaum Temperature state',
+      'options': list([
+        'no_data',
+        'too_low',
+        'low',
+        'perfect',
+        'high',
+        'too_high',
+      ]),
+    }),
+    'context': <ANY>,
+    'entity_id': 'sensor.kakaobaum_temperature_state',
+    'last_changed': <ANY>,
+    'last_reported': <ANY>,
+    'last_updated': <ANY>,
+    'state': 'perfect',
+  })
+# ---