diff --git a/src/bo4e/__init__.py b/src/bo4e/__init__.py
index 17ac712d4..a20691e1a 100644
--- a/src/bo4e/__init__.py
+++ b/src/bo4e/__init__.py
@@ -149,6 +149,7 @@
"Messart",
"Messgroesse",
"Messpreistyp",
+ "Messwert",
"Messwerterfassung",
"Messwertstatus",
"Messwertstatuszusatz",
@@ -277,6 +278,7 @@
from .com.lastprofil import Lastprofil
from .com.marktgebietinfo import MarktgebietInfo
from .com.menge import Menge
+from .com.messwert import Messwert
from .com.positionsaufabschlag import PositionsAufAbschlag
from .com.preis import Preis
from .com.preisgarantie import Preisgarantie
diff --git a/src/bo4e/com/messwert.py b/src/bo4e/com/messwert.py
new file mode 100644
index 000000000..869dc85ac
--- /dev/null
+++ b/src/bo4e/com/messwert.py
@@ -0,0 +1,43 @@
+"""
+Contains Messwert class
+"""
+
+from typing import TYPE_CHECKING, Annotated, Literal, Optional
+
+import pydantic
+from pydantic import Field
+
+from ..enum.comtyp import ComTyp
+from ..utils import postprocess_docstring
+from .com import COM
+
+if TYPE_CHECKING:
+ from ..com.menge import Menge
+ from ..enum.messwertstatus import Messwertstatus
+ from ..enum.messwertstatuszusatz import Messwertstatuszusatz
+
+
+@postprocess_docstring
+class Messwert(COM):
+ """
+ Abbildung eines Messwertes mit Stati, Zeitpunkt und Wert.
+
+ .. raw:: html
+
+
+
+ .. HINT::
+ `Messwert JSON Schema `_
+
+ """
+
+ typ: Annotated[Literal[ComTyp.MESSWERT], Field(alias="_typ")] = ComTyp.MESSWERT
+
+ messwertstatus: Optional["Messwertstatus"] = None
+ """Gibt den Status des Messwerts an."""
+ messwertstatuszusatz: Optional["Messwertstatuszusatz"] = None
+ """Gibt den Status Zusatz des Messwerts an."""
+ zeitpunkt: Optional[pydantic.AwareDatetime] = None
+ """Gibt den Zeitpunkt des Messwerts an."""
+ wert: Optional["Menge"] = None
+ """Gibt die gemessene Menge an."""
diff --git a/src/bo4e/enum/comtyp.py b/src/bo4e/enum/comtyp.py
index afca3294d..0666bdb81 100644
--- a/src/bo4e/enum/comtyp.py
+++ b/src/bo4e/enum/comtyp.py
@@ -38,6 +38,7 @@ class ComTyp(StrEnum):
LASTPROFIL = "LASTPROFIL"
MARKTGEBIETINFO = "MARKTGEBIETINFO"
MENGE = "MENGE"
+ MESSWERT = "MESSWERT"
POSITIONSAUFABSCHLAG = "POSITIONSAUFABSCHLAG"
PREIS = "PREIS"
PREISGARANTIE = "PREISGARANTIE"
diff --git a/tests/test_messwert.py b/tests/test_messwert.py
new file mode 100644
index 000000000..5641c7bd0
--- /dev/null
+++ b/tests/test_messwert.py
@@ -0,0 +1,28 @@
+from datetime import datetime, timezone
+
+import pytest
+
+from bo4e import Menge, Messwert, Messwertstatus, Messwertstatuszusatz
+from tests.serialization_helper import assert_serialization_roundtrip
+
+
+class TestMesswert:
+ @pytest.mark.parametrize(
+ "messwert",
+ [
+ pytest.param(
+ Messwert(
+ messwertstatus=Messwertstatus.ABGELESEN,
+ messwertstatuszusatz=Messwertstatuszusatz.Z84_LEERSTAND,
+ zeitpunkt=datetime(2022, 2, 1, 0, 0, 0, tzinfo=timezone.utc),
+ wert=Menge(),
+ ),
+ id="all attributes at first level",
+ ),
+ ],
+ )
+ def test_serialization_roundtrip(self, messwert: Messwert) -> None:
+ """
+ Test de-/serialisation roundtrip.
+ """
+ assert_serialization_roundtrip(messwert)