7 Лічильники
Налаштуйте лічильники комунальних послуг, відстежуйте показання, керуйте тарифними зонами та одиницями виміру. Система контролює своєчасність подання показань орендарями.
Чому лічильники — це важливо
Більшість ключових комунальних витрат — електроенергія, газ, вода, опалення — розраховуються на основі показань лічильників. Точні та своєчасні показання забезпечують правильний розрахунок, запобігають суперечкам між орендодавцями та орендарями і надають прозорі дані про споживання.
Що забезпечують лічильники
- Автоматичний розрахунок нарахувань на основі споживання
- Підтримка багатозонних тарифів (день/ніч, пік/напівпік)
- Відстеження споживання за період із середньодобовими показниками
- Контроль своєчасності подання показань орендарями
- Механізм коригування при заміні лічильника або виправленні помилок
Типи витрат з лічильниками
П'ять типів витрат підтримують облік за лічильниками. Кожен має одиницю виміру за замовчуванням, яку можна змінити для конкретного лічильника.
Поля лічильника
При створенні лічильника ви вказуєте тип витрат, серійний номер, тип тарифу та початкове показання з його датою.
expense_type_id
Тип витрат (обов'язково)
serial_number
Заводський серійний номер, унікальний для об'єкта
tariff_type
SINGLE_ZONE, TWO_ZONE або THREE_ZONE
initial_value
Початкове показання (для однозонного)
initial_value_date
Дата початкового показання (обов'язково)
initial_value_t1/t2/t3
Зонні показання для багатозонних тарифів
Тарифні зони
Лічильники електроенергії підтримують багатозонні тарифи. Для двозонних і тризонних лічильників ви вводите окремі показання по зонах — загальне значення розраховується автоматично.
| Тип тарифу | Зони | Поля | Опис |
|---|---|---|---|
| SINGLE_ZONE | 1 | value |
Стандартний однозонний лічильник |
| TWO_ZONE | 2 | value_t1, value_t2 |
T1 = День, T2 = Ніч (коеф. 50%) |
| THREE_ZONE | 3 | value_t1, value_t2, value_t3 |
T1 = Пік (150%), T2 = Напівпік (100%), T3 = Ніч (40%) |
Для багатозонних лічильників загальне значення завжди розраховується як сума зонних значень: value = value_t1 + value_t2 [+ value_t3]. Вам не потрібно вказувати загальне — воно обчислюється автоматично.
Типи показань
Система підтримує чотири типи показань лічильників, кожен з яких виконує певну роль у процесі нарахувань.
Лише одне показання на день на лічильник. Нові показання повинні бути >= поточного значення (інакше автоматично визначається як коригування). Якщо показання менше поточного, система автоматично створює запис коригування.
Контроль своєчасності
Система відстежує, чи вчасно орендарі подають показання. Для кожного лічильника можна встановити день подання показань, і система контролює виконання.
Функції відстеження
- Налаштований день подання показань (1-31) для кожного лічильника
- Автоматична інтерполяція для пропущених періодів
- Статистика споживання: загальна, за період, середньодобова
- Фото лічильників і фото показань для верифікації
Документи
Ви можете прикріплювати документи (фото, PDF) до лічильників та їхніх показань. Документи безпечно зберігаються в S3 і доступні через підписані URL.
Максимальний розмір файлу: 20 МБ. Підтримувані формати: JPEG, PNG, GIF, WebP, HEIC, PDF. До кожного лічильника або показання можна прикріпити кілька файлів.
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
Усі завантажені документи відображаються в розділі Документи (/my/documents) і можуть бути відфільтровані за типом: «Лічильник» або «Показання лічильника».
Як додати лічильник
Перейдіть до будь-якого об'єкта, потім натисніть "Лічильники" у меню об'єкта. Звідти ви можете додати нові лічильники та подати показання.
Сторінка об'єкта > Меню об'єкта > Лічильники > Додати лічильник
Детальну документацію дивіться у розділі Лічильники бібліотеки.
Для розробників: REST API
Усі операції з лічильниками та показаннями доступні через REST API. Спочатку використовуйте демо-дані для отримання JWT-токена.
GET Список лічильників
▶Отримати всі лічильники об'єкта з їх поточними показаннями та статусом.
GET /api/v1/properties/{propertyId}/counters
Відповідь (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 Створити лічильник
▶Створити новий лічильник із початковим показанням. Вкажіть зонні значення для багатозонних тарифів — сума розраховується автоматично.
POST /api/v1/properties/{propertyId}/counters
Заголовки:
Authorization: Bearer {token}
Content-Type: application/json
Приклад однозонного:
{
"expense_type_id": 10,
"serial_number": "G4-BK-2023-041822",
"tariff_type": "SINGLE_ZONE",
"initial_value": "1245.500",
"initial_value_date": "2025-09-01"
}
Приклад тризонного (електроенергія):
{
"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"
}
Відповідь (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 Деталі лічильника
▶Отримати повні деталі лічильника, включаючи всі показання, відсортовані за датою (найновіші спочатку).
GET /api/v1/properties/{propertyId}/counters/{id}
Відповідь (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 Оновити лічильник
▶Оновити метадані лічильника (серійний номер, тип витрат, тип тарифу). Оновлюються лише надані поля.
PUT /api/v1/properties/{propertyId}/counters/{id}
Поля для оновлення:
Тіло запиту:
{
"serial_number": "EA-2024-073915-NEW"
}
Відповідь (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 Видалити лічильник
▶Видалити лічильник та всі його показання. Повертає 204 при успіху.
DELETE /api/v1/properties/{propertyId}/counters/{id}
POST Перемкнути активний/неактивний
▶Перемкнути статус активності лічильника. Неактивні лічильники виключаються з автоматичного розрахунку нарахувань.
POST /api/v1/properties/{propertyId}/counters/{id}/toggle-active
Відповідь (200 OK):
{"id": 1, "is_active": false}
POST Додати показання
▶Подати нове показання лічильника. Для однозонних лічильників вкажіть "value". Для багатозонних вкажіть зонні значення (value_t1, value_t2, value_t3) — сума обчислюється автоматично.
POST /api/v1/properties/{propertyId}/counters/{id}/values
Однозонне показання:
{
"value": "1587.340",
"date": "2025-11-01"
}
Багатозонне показання:
{
"value_t1": "2280.000",
"value_t2": "1620.000",
"value_t3": "925.700",
"date": "2025-11-01"
}
Відповідь (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 Оновити показання
▶Оновити існуюче показання лічильника. Через веб-інтерфейс можна редагувати лише початкові показання; API дозволяє оновлювати будь-яке показання.
PUT /api/v1/properties/{propertyId}/counters/{id}/values/{valueId}
Тіло запиту:
{
"value": "1590.000",
"date": "2025-11-02"
}
Відповідь (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 Видалити показання
▶Видалити показання лічильника. Повертає 204 при успіху.
DELETE /api/v1/properties/{propertyId}/counters/{id}/values/{valueId}
POST Документи лічильника
▶Прикріпіть фото лічильника, акти встановлення, документи повірки. Завантажуйте на сторінці деталей лічильника.
POST /properties/{propertyId}/counters/{id}/documents/upload
Заголовки:
Content-Type: multipart/form-data
Тіло запиту (form-data):
documents[] — file (jpg, jpeg, png, gif, webp, heic, pdf), max 20 MB
comment — string (optional)
Відповідь (200 OK):
{
"success": true,
"uploaded": 1
}
DELETE /properties/{propertyId}/counters/{id}/documents/{documentId}/delete
{
"success": true
}
POST Документи показання
▶Прикріпіть фото дисплея лічильника при додаванні або перегляді показань. Завантажуйте при створенні показання або на сторінці деталей лічильника.
POST /properties/{propertyId}/counters/{id}/values/{valueId}/documents/upload
Тіло запиту (form-data):
documents[] — file (jpg, jpeg, png, gif, webp, heic, pdf), max 20 MB
comment — string (optional)
Відповідь (200 OK):
{
"success": true,
"uploaded": 2
}
DELETE /properties/{propertyId}/counters/{id}/values/{valueId}/documents/{documentId}/delete
{
"success": true
}
Приклади cURL
▶1. Створити лічильник (Приклад однозонного)
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. Створити лічильник (Приклад тризонного (електроенергія))
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. Додати показання
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. Список лічильників
curl https://landlordkeeper.com/api/v1/properties/019a1b2c-3d4e-7f5a-8b9c-0123456789ab/counters \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
5. Документи лічильника
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. Документи показання
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"