Уявіть: на промисловому об'єкті потужністю 500 кВт ви не знаєте погодинного споживання, перевищення договірної потужності — сюрприз наприкінці місяця. Ми розробляємо мобільні додатки для моніторингу енергоспоживання, які вирішують цю проблему. За п'ять років реалізовано понад 50 проектів. Типова ситуація: лічильник з Modbus RTU або P1-портом віддає сирі регістри — напругу, струм, потужність, накопичену енергію в кВт·год. Без додатку ці дані залишаються замкненими в шафі. Ми перетворюємо їх на дашборд з графіками та алертами, що дозволяє економити до 30% на електроенергії. Наприклад, на об'єкті 500 кВт. Зв'яжіться з нами для оцінки вашого проекту.
Як організувати моніторинг енергоспоживання через мобільний додаток?
Лічильники електроенергії для промисловості (Меркурій 230, АГАТ, Eastron SDM630) використовують Modbus RTU через RS-485. Для побутових розумних лічильників (Sagemcom, Itron) характерні DLMS/COSEM, M-Bus або P1-порт (Dutch Smart Meter). Комерційні моделі з GPRS/NB-IoT модулем надають хмарний API виробника.
Для Modbus-лічильників потрібен RS-485 → Ethernet шлюз (Moxa NPort, Anybus X-gateway) або IoT-шлюз з Modbus-агентом. Мобільний додаток завжди працює через бекенд або MQTT-брокер — прямого підключення до лічильника немає. Для P1-порту (Нідерланди, Бельгія) існують P1-to-MQTT адаптери на ESP32/Raspberry Pi, що парсять DSMR-телеграми і публікують у MQTT.
| Протокол | Швидкість | Відстань | Сфера застосування |
|---|---|---|---|
| Modbus RTU | до 115,2 кбіт/с | до 1200 м (RS-485) | Промислові об'єкти, АСКОЕ |
| DLMS/COSEM | до 9600 біт/с (P1) | коротка | Побутова автоматизація, Європа |
| P1-порт | 115200 біт/с | до 10 метрів | Смарт-метри Нідерландів, Бельгії |
Як агрегувати та зберігати дані?
Лічильник віддає миттєві значення. Додатку потрібні тренди за годину, добу, місяць — це вимагає агрегації зі збереженням. На бекенді — InfluxDB або TimescaleDB (PostgreSQL extension). TimescaleDB підходить для невеликих інсталяцій: SQL-запити, функція time_bucket:
SELECT time_bucket('1 hour', time) AS hour,
device_id,
MAX(active_energy_kwh) - MIN(active_energy_kwh) AS consumption_kwh,
AVG(active_power_w) AS avg_power_w
FROM energy_readings
WHERE device_id = $1
AND time BETWEEN $2 AND $3
GROUP BY 1, 2
ORDER BY 1;Різниця між MAX та MIN накопиченої енергії за період — споживання за цей період. Проста та надійна формула, що не потребує дельт. TimescaleDB пришвидшує запити за часовими рядами в 2 рази порівняно зі стандартною групіровкою.
Чому Flutter та BLoC кращі для моніторингу?
Flutter з BLoC дозволяє розробляти кроссплатформенний додаток в одному коді, скорочуючи час виходу на ринок в 1.7 рази порівняно з окремими нативними розробками. Стек: Dart, BLoC (Business Logic Component) для керування станом, fl_chart для гістограм. Приклад дашборду:
class EnergyDashboardBloc extends Bloc<EnergyEvent, EnergyDashboardState> {
final EnergyRepository _repo;
StreamSubscription? _realtimeSub;
EnergyDashboardBloc(this._repo) : super(EnergyDashboardInitial()) {
on<LoadDashboard>((event, emit) async {
emit(EnergyDashboardLoading());
try {
final current = await _repo.getCurrentReadings(event.meterId);
final todayChart = await _repo.getHourlyConsumption(
event.meterId,
DateTime.now().subtract(const Duration(hours: 24)),
DateTime.now(),
);
emit(EnergyDashboardLoaded(current: current, hourlyChart: todayChart));
_startRealtimeUpdates(event.meterId);
} catch (e) {
emit(EnergyDashboardError(message: e.toString()));
}
});
on<RealtimeUpdated>((event, emit) {
if (state is EnergyDashboardLoaded) {
emit((state as EnergyDashboardLoaded).copyWith(current: event.reading));
}
});
}
void _startRealtimeUpdates(String meterId) {
_realtimeSub = _repo.realtimeStream(meterId)
.listen((reading) => add(RealtimeUpdated(reading)));
}
}Картки дашборду: активна потужність (кВт), напруга по фазах (для трифазних лічильників — три значення), cosφ (коефіцієнт потужності), споживання за поточний день, споживання за місяць vs минулий місяць.
Графік споживання — розробка мобільного додатку
fl_chart з BarChart для погодинного споживання — стандарт в енергетичних додатках. Кольорове кодування за тарифними зонами (нічний тариф — синій, денний — оранжевий):
BarChartGroupData buildHourBarGroup(int hour, double consumption) {
final isNightTariff = hour < 7 || hour >= 23;
return BarChartGroupData(
x: hour,
barRods: [
BarChartRodData(
toY: consumption,
color: isNightTariff ? Colors.blue.shade300 : Colors.orange.shade400,
width: 12,
borderRadius: const BorderRadius.vertical(top: Radius.circular(4)),
),
],
);
} Що входить у розробку?
Ми надаємо послугу під ключ. Розробка мобільного додатку для моніторингу енергоспоживання включає:
- Аналіз вашого обладнання та вимог до інтеграції
- Проектування архітектури: бекенд (TimescaleDB/InfluxDB), API, мобільний додаток
- Розробка прототипу з базовим дашбордом для погодження
- Інтеграція з існуючими лічильниками та шлюзами (Modbus, DLMS, P1, хмарні API)
- Розробка серверної частини: агрегація, алерти, керування користувачами
- Тестування на реальному обладнанні
- Публікація в App Store та Google Play з дотриманням правил
- Документація та навчання ваших операторів
Ми гарантуємо якість інтеграції та документації. Середній термін розробки — від 3 тижнів для одного об'єкта до 3 місяців для багатооб'єктної системи з керуванням навантаженням.
Як налаштувати алерти за перевищенням потужності?
Моніторинг перевищення договірної потужності — одна з ключових функцій для комерційних об'єктів. Логіка на бекенді перевіряє ковзний 15-хвилинний максимум, мобільний додаток отримує алерт через FCM/APNs.
Для Android push-сповіщення з PRIORITY_HIGH через FCM Data Message (не Notification Message) — доставляється навіть у Doze mode. FCM Data Message обробляється в FirebaseMessagingService.onMessageReceived() і відображається як локальне сповіщення з кастомним звуком.
Етапи розробки
| Етап | Тривалість | Результат |
|---|---|---|
| Аналіз вимог | 1-2 дні | Технічне завдання |
| Проектування | 2-3 дні | Архітектура, прототип UI |
| Розробка бекенду | 1-2 тижні | API, база даних, агрегація |
| Розробка мобільного додатку | 2-4 тижні | Дашборд, алерти, історія |
| Інтеграція та тестування | 1 тиждень | Робота з реальним обладнанням |
| Публікація в магазинах | 3-5 днів | Розміщення в App Store та Google Play |
Як замовити розробку?
- Зв'яжіться з нами для консультації.
- Ми аналізуємо ваше обладнання та вимоги.
- Готуємо комерційну пропозицію з точною оцінкою термінів.
- Після погодження починаємо розробку з прототипу.
- Ітеративно доопрацьовуємо, тестуємо та публікуємо додаток.
Багатооб'єктний моніторинг
Для керуючих компаній, що слідкують за 50-100 об'єктами — список об'єктів з кольоровою індикацією статусу (норма/перевищення/немає даних), сортування за споживанням. Ледаче завантаження через ListView.builder з пагінацією по 20 об'єктів.
Розробка додатку для моніторингу одного лічильника з дашбордом та історичними даними: 3-4 тижні. Багатооб'єктний моніторинг з керуванням навантаженням та алертами: 2-3 місяці. Вартість розраховується після аналізу обладнання та вимог. Напишіть нам — ми оцінимо ваш проект.







