Startseite › Immobilien-Einrichtung › Zähler

7 Zähler

Richten Sie Versorgungszähler ein, verfolgen Sie Ablesungen, verwalten Sie Tarifzonen und Maßeinheiten. Das System überwacht die rechtzeitige Übermittlung der Ablesungen durch die Mieter.

Warum Zähler entscheidend sind

Die meisten wichtigen Nebenkosten — Strom, Gas, Wasser, Heizung — werden auf Basis von Zählerständen berechnet. Genaue und rechtzeitige Ablesungen gewährleisten korrekte Abrechnungen, verhindern Streitigkeiten zwischen Vermietern und Mietern und liefern transparente Verbrauchsdaten.

Was Zähler ermöglichen

  • Automatische Kostenberechnung basierend auf dem Verbrauch
  • Mehrzonen-Tarifunterstützung (Tag/Nacht, Spitze/Nebenlast)
  • Verbrauchsverfolgung pro Zeitraum mit Tagesdurchschnitten
  • Überwachung der rechtzeitigen Ableseübermittlung durch Mieter
  • Korrekturmechanismus bei Zählerwechsel oder Fehlerbehebung

Kostenarten mit Zählern

Fünf Kostenarten unterstützen zählerbasierte Erfassung. Jede hat eine Standard-Maßeinheit, die pro Zähler geändert werden kann.

ELECTRICITY kWh — Unterstützt Mehrzonen-Tarife
GAS m3 — Erdgasverbrauch
COLD_WATER m3 — Kaltwasserversorgung
HOT_WATER m3 — Warmwasserversorgung
HEATING Gcal — Zentral- oder Einzelheizung

Zählerfelder

Beim Erstellen eines Zählers geben Sie die Kostenart, Seriennummer, Tarifart und den Anfangsstand mit Datum an.

expense_type_id Kostenart (erforderlich)
serial_number Fabrik-Seriennummer, eindeutig pro Immobilie
tariff_type SINGLE_ZONE, TWO_ZONE oder THREE_ZONE
initial_value Anfangsstand (für Einzelzone)
initial_value_date Datum des Anfangsstands (erforderlich)
initial_value_t1/t2/t3 Zonenwerte für Mehrzonen-Tarife

Tarifzonen

Stromzähler unterstützen Mehrzonen-Tarife. Für Zwei- und Drei-Zonen-Zähler geben Sie separate Ablesungen pro Zone ein — die Summe wird automatisch berechnet.

Tarifart Zonen Felder Beschreibung
SINGLE_ZONE 1 value Standard-Einzelablesung-Zähler
TWO_ZONE 2 value_t1, value_t2 T1 = Tag, T2 = Nacht (Koeff. 50%)
THREE_ZONE 3 value_t1, value_t2, value_t3 T1 = Spitze (150%), T2 = Nebenlast (100%), T3 = Nacht (40%)
Automatische Summenberechnung
Bei Mehrzonen-Zählern wird der Gesamtwert immer als Summe der Zonenwerte berechnet: value = value_t1 + value_t2 [+ value_t3]. Sie müssen die Summe nicht angeben — sie wird automatisch berechnet.

Arten von Ablesungen

Das System unterstützt vier Arten von Zählerablesung, die jeweils eine bestimmte Rolle im Abrechnungsprozess erfüllen.

Anfangsstand
Wird beim Erstellen des Zählers gesetzt. Einer pro Zähler. Der einzige Typ, der bearbeitet werden kann.
Regulär
Normale Ablesung. Muss >= vorherigem Wert sein. Kann mit Kostenabrechnungen verknüpft werden.
Korrektur
Korrektur nach Zählerwechsel oder Fehler. Als negativer Deltawert gespeichert. Kann nicht mit Abrechnungen verknüpft werden.
Berechnet
Automatisch vom System für Zwischenabrechnungszeiträume interpoliert. Kann mit Abrechnungen verknüpft werden.
Validierungsregeln
Nur eine Ablesung pro Tag pro Zähler. Neue Ablesungen müssen >= aktuellem Wert sein (andernfalls automatisch als Korrektur erkannt). Wenn eine Ablesung niedriger als der aktuelle Wert ist, erstellt das System automatisch einen Korrektureintrag.

Pünktlichkeitsüberwachung

Das System überwacht, ob Mieter ihre Ablesungen rechtzeitig einreichen. Sie können für jeden Zähler einen Ablesungstag festlegen, und das System verfolgt die Einhaltung.

Tracking-Funktionen

  • Konfigurierbarer Ablesungstag (1-31) pro Zähler
  • Automatische Interpolation für versäumte Zeiträume
  • Verbrauchsstatistiken: gesamt, pro Zeitraum, Tagesdurchschnitt
  • Zählerfotos und Ablesefotos zur Überprüfung

Dokumente

Sie können Dokumente (Fotos, PDFs) an Zähler und deren Ablesungen anhängen. Dokumente werden sicher in S3 gespeichert und über signierte URLs abgerufen.

Zählerdokumente
Fügen Sie Fotos des Zählers, Installationszertifikate und Kalibrierungsdokumente hinzu. Laden Sie diese auf der Zähler-Detailseite hoch.
Ablesungsdokumente
Fügen Sie Fotos des Zählerdisplays beim Hinzufügen oder Anzeigen von Ablesungen hinzu. Laden Sie diese beim Erstellen einer Ablesung oder auf der Zähler-Detailseite hoch.
Dateilimits
Maximale Dateigröße: 20 MB. Unterstützte Formate: JPEG, PNG, GIF, WebP, HEIC, PDF. Mehrere Dateien können an jeden Zähler oder jede Ablesung angehängt werden.

Dokumente-API

POST   /properties/{propertyId}/counters/{id}/documents/upload                           # Upload counter document
POST   /properties/{propertyId}/counters/{id}/documents/{documentId}/delete              # Delete counter document
POST   /properties/{propertyId}/counters/{id}/values/{valueId}/documents/upload          # Upload reading document
POST   /properties/{propertyId}/counters/{id}/values/{valueId}/documents/{documentId}/delete  # Delete reading document

Alle hochgeladenen Dokumente erscheinen im Abschnitt Dokumente (/my/documents) und können nach Typ gefiltert werden: „Zähler" oder „Zählerablesung".

So fügen Sie einen Zähler hinzu

Navigieren Sie zu einer Immobilie und klicken Sie im Immobilienmenü auf "Zähler". Von dort können Sie neue Zähler hinzufügen und Ablesungen einreichen.

Immobilienseite > Immobilienmenü > Zähler > Zähler hinzufügen

Eine ausführliche Dokumentation finden Sie im Abschnitt Zähler der Bibliothek.

Für Entwickler: REST API

Alle Zähler- und Ablesungsoperationen sind über die REST-API verfügbar. Verwenden Sie zuerst die Demo-Zugangsdaten, um ein JWT-Token zu erhalten.

GET Zähler auflisten

▶

Alle Zähler einer Immobilie mit aktuellen Werten und Status abrufen.

GET /api/v1/properties/{propertyId}/counters

Antwort (200 OK):

{ "counters": [ { "id": 4, "expense_type": {"id": 3, "code": "ELECTRICITY"}, "serial_number": "NIK-2281-073915", "tariff_type": "THREE_ZONE", "zone_count": 3, "current_value": "5729.000", "documents_count": 2, "is_active": true, "created_at": "2026-02-20T15:45:43+00:00" }, { "id": 5, "expense_type": {"id": 10, "code": "GAS"}, "serial_number": "G4-BK-2023-041822", "tariff_type": "SINGLE_ZONE", "zone_count": 1, "current_value": "1612.400", "documents_count": 0, "is_active": true, "created_at": "2026-02-20T15:45:44+00:00" } ], "total": 5 }

POST Zähler erstellen

▶

Erstellen Sie einen neuen Zähler mit Anfangsablesung. Geben Sie Zonenwerte für Mehrzonen-Tarife an — die Summe wird automatisch berechnet.

POST /api/v1/properties/{propertyId}/counters

Header:

Authorization: Bearer {token} Content-Type: application/json

Einzelzonen-Beispiel:

{ "expense_type_id": 10, "serial_number": "G4-BK-2023-041822", "tariff_type": "SINGLE_ZONE", "initial_value": "1245.500", "initial_value_date": "2025-09-01" }

Drei-Zonen-Beispiel (Strom):

{ "expense_type_id": 3, "serial_number": "EA-2024-073915", "tariff_type": "THREE_ZONE", "initial_value_t1": "2100.000", "initial_value_t2": "1500.000", "initial_value_t3": "850.000", "initial_value_date": "2025-09-01" }
Für Mehrzonen-Tarife geben Sie initial_value_t1, initial_value_t2 (und t3 für Drei-Zonen) an. Der Gesamt-initial_value wird als deren Summe berechnet. Seriennummern müssen innerhalb der Immobilie eindeutig sein.

Antwort (201 Created):

{ "id": 1, "expense_type": {"id": 3, "code": "ELECTRICITY"}, "serial_number": "EA-2024-073915", "tariff_type": "THREE_ZONE", "zone_count": 3, "initial_value": "4450.000", "initial_value_t1": "2100.000", "initial_value_t2": "1500.000", "initial_value_t3": "850.000", "initial_value_date": "2025-09-01", "current_value": "4450.000", "documents_count": 0, "is_active": true, "can_delete": true, "created_at": "2025-09-01T00:00:00+00:00" }

GET Zählerdetails

▶

Vollständige Zählerdetails abrufen, einschließlich aller Ablesungen, sortiert nach Datum (neueste zuerst).

GET /api/v1/properties/{propertyId}/counters/{id}

Antwort (200 OK):

{ "id": 4, "expense_type": {"id": 3, "code": "ELECTRICITY"}, "serial_number": "NIK-2281-073915", "tariff_type": "THREE_ZONE", "zone_count": 3, "initial_value": "4450.000", "initial_value_t1": "2100.000", "initial_value_t2": "1500.000", "initial_value_t3": "850.000", "initial_value_date": "2025-08-01", "current_value": "5729.000", "documents_count": 2, "is_active": true, "has_linked_charges": false, "can_delete": true, "values": [ { "id": 8, "value": "5729.000", "value_t1": "2752.100", "value_t2": "1851.300", "value_t3": "1125.600", "date": "2025-12-01", "is_initial": false, "is_adjustment": false, "documents_count": 0, "has_linked_charge": false, "can_edit": false, "can_delete": true }, { "id": 5, "value": "4450.000", "value_t1": "2100.000", "value_t2": "1500.000", "value_t3": "850.000", "date": "2025-08-01", "is_initial": true, "is_adjustment": false, "documents_count": 0, "has_linked_charge": false, "can_edit": true, "can_delete": true } ] }

PUT Zähler aktualisieren

▶

Zähler-Metadaten aktualisieren (Seriennummer, Kostenart, Tarifart). Nur angegebene Felder werden aktualisiert.

PUT /api/v1/properties/{propertyId}/counters/{id}

Aktualisierbare Felder:

expense_type_id integer
serial_number string (max 100)
tariff_type SINGLE_ZONE | TWO_ZONE | THREE_ZONE

Anfragekörper:

{ "serial_number": "EA-2024-073915-NEW" }

Antwort (200 OK):

{ "id": 4, "expense_type": {"id": 3, "code": "ELECTRICITY"}, "serial_number": "EA-2024-073915-NEW", "tariff_type": "THREE_ZONE", "zone_count": 3, "current_value": "5729.000", "documents_count": 2, "is_active": true, "has_linked_charges": false, "can_delete": true, "created_at": "2026-02-20T15:45:43+00:00" }

DELETE Zähler löschen

▶

Zähler und alle Ablesungen löschen. Gibt 204 bei Erfolg zurück.

DELETE /api/v1/properties/{propertyId}/counters/{id}

Ein Zähler kann nicht gelöscht werden, wenn Ablesungen mit Kostenabrechnungen verknüpft sind. Deaktivieren Sie ihn stattdessen über den Toggle-Active-Endpunkt.

POST Aktiv/Inaktiv umschalten

▶

Zähler-Aktivstatus umschalten. Inaktive Zähler werden von automatischen Kostenberechnungen ausgeschlossen.

POST /api/v1/properties/{propertyId}/counters/{id}/toggle-active

Antwort (200 OK):

{"id": 1, "is_active": false}

POST Ablesung hinzufügen

▶

Neue Zählerablesung einreichen. Für Einzelzonen-Zähler geben Sie "value" an. Für Mehrzonen geben Sie Zonenwerte an (value_t1, value_t2, value_t3) — die Summe wird automatisch berechnet.

POST /api/v1/properties/{propertyId}/counters/{id}/values

Einzelzonen-Ablesung:

{ "value": "1587.340", "date": "2025-11-01" }

Mehrzonen-Ablesung:

{ "value_t1": "2280.000", "value_t2": "1620.000", "value_t3": "925.700", "date": "2025-11-01" }
Wenn der eingereichte Wert niedriger als die aktuelle Ablesung ist, erstellt das System automatisch einen Korrektureintrag (Werte als negativer Deltawert gespeichert). Pro Zähler ist nur eine Ablesung pro Tag erlaubt.

Antwort (201 Created):

{ "id": 5, "value": "4825.700", "value_t1": "2280.000", "value_t2": "1620.000", "value_t3": "925.700", "date": "2025-11-01", "is_initial": false, "is_adjustment": false, "documents_count": 0, "has_linked_charge": false }

PUT Ablesung aktualisieren

▶

Bestehende Zählerablesung aktualisieren. Über die Weboberfläche können nur Anfangsablesungen bearbeitet werden; die API erlaubt die Aktualisierung jeder Ablesung.

PUT /api/v1/properties/{propertyId}/counters/{id}/values/{valueId}

Anfragekörper:

{ "value": "1590.000", "date": "2025-11-02" }
Über die Weboberfläche können nur Anfangsablesungen (is_initial=true) bearbeitet werden. Reguläre Ablesungen können nur über Korrekturen berichtigt werden. Die API erzwingt bei Updates keine Mindestwervalidierung.

Antwort (200 OK):

{ "id": 5, "value": "1590.000", "value_t1": null, "value_t2": null, "value_t3": null, "date": "2025-11-02", "is_initial": false, "is_adjustment": false, "documents_count": 0, "has_linked_charge": false, "can_edit": true, "can_delete": true }

DELETE Ablesung löschen

▶

Zählerablesung löschen. Gibt 204 bei Erfolg zurück.

DELETE /api/v1/properties/{propertyId}/counters/{id}/values/{valueId}

Ablesungen, die mit Kostenabrechnungen verknüpft sind, können nicht gelöscht werden. Die verknüpfte Abrechnung muss zuerst entfernt werden.

POST Zählerdokumente

▶

Fügen Sie Fotos des Zählers, Installationszertifikate und Kalibrierungsdokumente hinzu. Laden Sie diese auf der Zähler-Detailseite hoch.

POST /properties/{propertyId}/counters/{id}/documents/upload

Header:

Content-Type: multipart/form-data

Anfragekörper (form-data):

documents[] — file (jpg, jpeg, png, gif, webp, heic, pdf), max 20 MB comment — string (optional)
Maximale Dateigröße: 20 MB. Unterstützte Formate: JPEG, PNG, GIF, WebP, HEIC, PDF. Mehrere Dateien können an jeden Zähler oder jede Ablesung angehängt werden.

Antwort (200 OK):

{ "success": true, "uploaded": 1 }

DELETE /properties/{propertyId}/counters/{id}/documents/{documentId}/delete

{ "success": true }

POST Ablesungsdokumente

▶

Fügen Sie Fotos des Zählerdisplays beim Hinzufügen oder Anzeigen von Ablesungen hinzu. Laden Sie diese beim Erstellen einer Ablesung oder auf der Zähler-Detailseite hoch.

POST /properties/{propertyId}/counters/{id}/values/{valueId}/documents/upload

Anfragekörper (form-data):

documents[] — file (jpg, jpeg, png, gif, webp, heic, pdf), max 20 MB comment — string (optional)

Antwort (200 OK):

{ "success": true, "uploaded": 2 }

DELETE /properties/{propertyId}/counters/{id}/values/{valueId}/documents/{documentId}/delete

{ "success": true }

cURL-Beispiele

▶

1. Zähler erstellen (Einzelzonen-Beispiel)

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/counters \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{ "expense_type_id": 10, "serial_number": "G4-BK-2023-041822", "tariff_type": "SINGLE_ZONE", "initial_value": "1245.500", "initial_value_date": "2025-09-01" }'

2. Zähler erstellen (Drei-Zonen-Beispiel (Strom))

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/counters \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{ "expense_type_id": 3, "serial_number": "EA-2024-073915", "tariff_type": "THREE_ZONE", "initial_value_t1": "2100.000", "initial_value_t2": "1500.000", "initial_value_t3": "850.000", "initial_value_date": "2025-09-01" }'

3. Ablesung hinzufügen

curl -X POST https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/counters/1/values \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN_HERE" \ -d '{ "value_t1": "2280.000", "value_t2": "1620.000", "value_t3": "925.700", "date": "2025-11-01" }'

4. Zähler auflisten

curl https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/counters \ -H "Authorization: Bearer YOUR_TOKEN_HERE"

5. Zählerdokumente

curl -X POST https://landlordkeeper.com/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/counters/4/documents/upload \ -H "Cookie: PHPSESSID=your_session" \ -F "documents[][email protected]" \ -F "comment=Meter photo"

6. Ablesungsdokumente

curl -X POST https://landlordkeeper.com/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/counters/4/values/8/documents/upload \ -H "Cookie: PHPSESSID=your_session" \ -F "documents[]=@reading_jan.jpg" \ -F "documents[]=@reading_jan_2.pdf"
Ersetzen Sie YOUR_TOKEN_HERE durch den JWT-Token aus dem Authentifizierungsschritt.