Strona główna › Konfiguracja nieruchomości › Liczniki

7 Liczniki

Skonfiguruj liczniki mediów, śledź odczyty, zarządzaj strefami taryfowymi i jednostkami miary. System monitoruje terminowość podawania odczytów przez najemców.

Dlaczego liczniki są kluczowe

Większość kluczowych kosztów mediów — prąd, gaz, woda, ogrzewanie — jest obliczana na podstawie odczytów liczników. Dokładne i terminowe odczyty zapewniają prawidłowe rozliczenia, zapobiegają sporom między wynajmującymi a najemcami oraz zapewniają przejrzyste dane o zużyciu.

Co zapewniają liczniki

  • Automatyczne obliczanie opłat na podstawie zużycia
  • Obsługa wielostrefowych taryf (dzień/noc, szczyt/pozaszczyt)
  • Śledzenie zużycia w okresie ze średnimi dziennymi
  • Monitorowanie terminowości podawania odczytów przez najemców
  • Mechanizm korekty przy wymianie licznika lub poprawianiu błędów

Rodzaje kosztów z licznikami

Pięć rodzajów kosztów obsługuje śledzenie za pomocą liczników. Każdy ma domyślną jednostkę miary, którą można zmienić dla konkretnego licznika.

ELECTRICITY kWh — Obsługuje taryfy wielostrefowe
GAS m3 — Zużycie gazu ziemnego
COLD_WATER m3 — Zimna woda
HOT_WATER m3 — Ciepła woda
HEATING Gcal — Ogrzewanie centralne lub indywidualne

Pola licznika

Podczas tworzenia licznika podajesz rodzaj kosztu, numer seryjny, typ taryfy oraz odczyt początkowy z jego datą.

expense_type_id Rodzaj kosztu (wymagane)
serial_number Fabryczny numer seryjny, unikalny na nieruchomość
tariff_type SINGLE_ZONE, TWO_ZONE lub THREE_ZONE
initial_value Odczyt początkowy (dla jednostrefowego)
initial_value_date Data odczytu początkowego (wymagane)
initial_value_t1/t2/t3 Wartości stref dla taryf wielostrefowych

Strefy taryfowe

Liczniki energii elektrycznej obsługują taryfy wielostrefowe. Dla liczników dwu- i trzystrefowych podajesz odczyty dla każdej strefy — suma jest obliczana automatycznie.

Typ taryfy Strefy Pola Opis
SINGLE_ZONE 1 value Standardowy licznik jednostrefowy
TWO_ZONE 2 value_t1, value_t2 T1 = Dzień, T2 = Noc (wsp. 50%)
THREE_ZONE 3 value_t1, value_t2, value_t3 T1 = Szczyt (150%), T2 = Półszczyt (100%), T3 = Noc (40%)
Automatyczne obliczanie sumy
Dla liczników wielostrefowych wartość całkowita jest zawsze obliczana jako suma wartości stref: value = value_t1 + value_t2 [+ value_t3]. Nie musisz podawać sumy — jest obliczana automatycznie.

Rodzaje odczytów

System obsługuje cztery rodzaje odczytów liczników, z których każdy pełni określoną rolę w procesie rozliczeń.

Początkowy
Ustawiany przy tworzeniu licznika. Jeden na licznik. Jedyny typ, który można edytować.
Zwykły
Normalny odczyt. Musi być >= poprzedni. Może być powiązany z naliczeniami.
Korekta
Poprawka po wymianie licznika lub błędzie. Przechowywana jako ujemna delta. Nie może być powiązana z naliczeniami.
Obliczony
Automatycznie interpolowany przez system dla pośrednich okresów rozliczeniowych. Może być powiązany z naliczeniami.
Reguły walidacji
Tylko jeden odczyt dziennie na licznik. Nowe odczyty muszą być >= bieżącej wartości (w przeciwnym razie automatycznie wykrywane jako korekta). Jeśli odczyt jest niższy niż bieżący, system automatycznie tworzy wpis korekty.

Monitorowanie terminowości

System monitoruje, czy najemcy terminowo podają odczyty. Dla każdego licznika można ustawić dzień podawania odczytów, a system śledzi ich realizację.

Funkcje śledzenia

  • Konfigurowalny dzień odczytu (1-31) na licznik
  • Automatyczna interpolacja dla pominiętych okresów
  • Statystyki zużycia: łączne, za okres, średnie dzienne
  • Zdjęcia liczników i odczytów do weryfikacji

Dokumenty

Możesz dołączać dokumenty (zdjęcia, PDF) do liczników i ich odczytów. Dokumenty są bezpiecznie przechowywane w S3 i dostępne przez podpisane adresy URL.

Dokumenty licznika
Dołącz zdjęcia licznika, certyfikaty instalacji, dokumenty kalibracji. Przesyłaj na stronie szczegółów licznika.
Dokumenty odczytu
Dołącz zdjęcia wyświetlacza licznika podczas dodawania lub przeglądania odczytów. Przesyłaj podczas tworzenia odczytu lub na stronie szczegółów licznika.
Limity plików
Maksymalny rozmiar pliku: 20 MB. Obsługiwane formaty: JPEG, PNG, GIF, WebP, HEIC, PDF. Do każdego licznika lub odczytu można dołączyć wiele plików.

API dokumentów

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

Wszystkie przesłane dokumenty pojawiają się w sekcji Dokumenty (/my/documents) i można je filtrować według typu: „Licznik" lub „Odczyt licznika".

Jak dodać licznik

Przejdź do dowolnej nieruchomości, a następnie kliknij "Liczniki" w menu nieruchomości. Stamtąd możesz dodać nowe liczniki i podać odczyty.

Strona nieruchomości > Menu nieruchomości > Liczniki > Dodaj licznik

Szczegółową dokumentację znajdziesz w sekcji Liczniki biblioteki.

Dla programistów: REST API

Wszystkie operacje na licznikach i odczytach są dostępne przez REST API. Najpierw użyj danych demo, aby uzyskać token JWT.

GET Lista liczników

▶

Pobierz wszystkie liczniki nieruchomości z ich bieżącymi wartościami i statusem.

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

Odpowiedź (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 Utwórz licznik

▶

Utwórz nowy licznik z odczytem początkowym. Podaj wartości stref dla taryf wielostrefowych — suma jest obliczana automatycznie.

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

Nagłówki:

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

Przykład jednostrefowy:

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

Przykład trzystrefowy (prą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" }
Dla taryf wielostrefowych podaj initial_value_t1, initial_value_t2 (i t3 dla trzystrefowego). Całkowite initial_value jest obliczane jako ich suma. Numery seryjne muszą być unikalne w obrębie nieruchomości.

Odpowiedź (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 Szczegóły licznika

▶

Pobierz pełne szczegóły licznika, w tym wszystkie odczyty posortowane wg daty (najnowsze najpierw).

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

Odpowiedź (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 Zaktualizuj licznik

▶

Zaktualizuj metadane licznika (numer seryjny, rodzaj kosztu, typ taryfy). Aktualizowane są tylko podane pola.

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

Aktualizowalne pola:

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

Treść żądania:

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

Odpowiedź (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 Usuń licznik

▶

Usuń licznik i wszystkie jego odczyty. Zwraca 204 po pomyślnym usunięciu.

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

Licznika nie można usunąć, jeśli jego odczyty są powiązane z naliczeniami. W takim przypadku dezaktywuj go za pomocą toggle-active.

POST Przełącz aktywny/nieaktywny

▶

Przełącz status aktywności licznika. Nieaktywne liczniki są wyłączone z automatycznego obliczania opłat.

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

Odpowiedź (200 OK):

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

POST Dodaj odczyt

▶

Podaj nowy odczyt licznika. Dla jednostrefowych podaj "value". Dla wielostrefowych podaj wartości stref (value_t1, value_t2, value_t3) — suma jest obliczana automatycznie.

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

Odczyt jednostrefowy:

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

Odczyt wielostrefowy:

{ "value_t1": "2280.000", "value_t2": "1620.000", "value_t3": "925.700", "date": "2025-11-01" }
Jeśli podana wartość jest niższa niż bieżący odczyt, system automatycznie tworzy wpis korekty (wartości przechowywane jako ujemna delta). Dozwolony jest tylko jeden odczyt dziennie na licznik.

Odpowiedź (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 Zaktualizuj odczyt

▶

Zaktualizuj istniejący odczyt licznika. Przez interfejs webowy można edytować tylko odczyty początkowe; API pozwala aktualizować dowolny odczyt.

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

Treść żądania:

{ "value": "1590.000", "date": "2025-11-02" }
Przez interfejs webowy można edytować tylko odczyty początkowe (is_initial=true). Zwykłe odczyty można poprawić tylko za pomocą korekt. API nie sprawdza minimalnej wartości przy aktualizacji.

Odpowiedź (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 Usuń odczyt

▶

Usuń odczyt licznika. Zwraca 204 po pomyślnym usunięciu.

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

Odczytów powiązanych z naliczeniami nie można usunąć. Najpierw należy usunąć powiązane naliczenie.

POST Dokumenty licznika

▶

Dołącz zdjęcia licznika, certyfikaty instalacji, dokumenty kalibracji. Przesyłaj na stronie szczegółów licznika.

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

Nagłówki:

Content-Type: multipart/form-data

Treść żądania (form-data):

documents[] — file (jpg, jpeg, png, gif, webp, heic, pdf), max 20 MB comment — string (optional)
Maksymalny rozmiar pliku: 20 MB. Obsługiwane formaty: JPEG, PNG, GIF, WebP, HEIC, PDF. Do każdego licznika lub odczytu można dołączyć wiele plików.

Odpowiedź (200 OK):

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

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

{ "success": true }

POST Dokumenty odczytu

▶

Dołącz zdjęcia wyświetlacza licznika podczas dodawania lub przeglądania odczytów. Przesyłaj podczas tworzenia odczytu lub na stronie szczegółów licznika.

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

Treść żądania (form-data):

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

Odpowiedź (200 OK):

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

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

{ "success": true }

Przykłady cURL

▶

1. Utwórz licznik (Przykład jednostrefowy)

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. Utwórz licznik (Przykład trzystrefowy (prąd))

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. Dodaj odczyt

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. Lista liczników

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

5. Dokumenty licznika

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. Dokumenty odczytu

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"
Zastąp YOUR_TOKEN_HERE tokenem JWT z kroku uwierzytelniania.