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.
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%) |
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.
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.
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"
}
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:
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}
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"
}
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"
}
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}
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)
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"