"""
Contains Zaehlwerk class
and corresponding marshmallow schema for de-/serialization
"""
from decimal import Decimal
from typing import Optional
from ..com.konzessionsabgabe import Konzessionsabgabe
from ..com.verwendungszweckpromarktrolle import VerwendungszweckProMarktrolle
from ..com.zaehlzeitregister import Zaehlzeitregister
from ..enum.energierichtung import Energierichtung
from ..enum.mengeneinheit import Mengeneinheit
from ..enum.verbrauchsart import Verbrauchsart
from ..enum.waermenutzung import Waermenutzung
from ..utils import postprocess_docstring
from .com import COM
# pylint: disable=no-name-in-module
# pylint: disable=no-name-in-module
# pylint: disable=too-few-public-methods
[docs]
@postprocess_docstring
class Zaehlwerk(COM):
"""
Mit dieser Komponente werden Zählwerke modelliert.
.. raw:: html
<object data="../_static/images/bo4e/com/Zaehlwerk.svg" type="image/svg+xml"></object>
.. HINT::
`Zaehlwerk JSON Schema <https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/{__gh_version__}/src/bo4e_schemas/com/Zaehlwerk.json>`_
"""
zaehlwerk_id: Optional[str] = None # Identifikation des Zählwerks (Registers) innerhalb des Zählers.
# Oftmals eine laufende Nummer hinter der Zählernummer. Z.B. 47110815_1
bezeichnung: Optional[str] = None # Zusätzliche Bezeichnung, z.B. Zählwerk_Wirkarbeit.
richtung: Optional[Energierichtung] = None # Die Energierichtung, Einspeisung oder Ausspeisung.
obis_kennzahl: Optional[
str
] = None # Die OBIS-Kennzahl für das Zählwerk, die festlegt, welche auf die gemessene Größe mit dem Stand gemeldet wird.
# Nur Zählwerkstände mit dieser OBIS-Kennzahl werden an diesem Zählwerk registriert.
wandlerfaktor: Optional[
Decimal
] = None # Mit diesem Faktor wird eine Zählerstandsdifferenz multipliziert, um zum eigentlichen Verbrauch im Zeitraum
# zu kommen.
einheit: Optional[Mengeneinheit] = None # Die Einheit der gemessenen Größe, z.B. kWh
ist_schwachlastfaehig: Optional[bool] = None #: Schwachlastfaehigkeit
verwendungszwecke: Optional[
list[VerwendungszweckProMarktrolle]
] = None #: Verwendungungszweck der Werte Marktlokation
verbrauchsart: Optional[Verbrauchsart] = None #: Stromverbrauchsart/Verbrauchsart Marktlokation
ist_unterbrechbar: Optional[bool] = None #: Unterbrechbarkeit Marktlokation
waermenutzung: Optional[Waermenutzung] = None #: Wärmenutzung Marktlokation
konzessionsabgabe: Optional[Konzessionsabgabe] = None #: Konzessionsabgabe
ist_steuerbefreit: Optional[bool] = None #: Steuerbefreiung
vorkommastelle: Optional[int] = None #: Anzahl der Vorkommastellen
nachkommastelle: Optional[int] = None #: Anzahl der Nachkommastellen
ist_abrechnungsrelevant: Optional[bool] = None #: Abrechnungsrelevant
anzahlAblesungen: Optional[int] = None #: Anzahl Ablesungen pro Jahr
zaehlzeitregister: Optional[
Zaehlzeitregister
] = None #: Erweiterte Definition der Zählzeit in Bezug auf ein Register