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"