Представьте: на промышленном объекте мощностью 500 кВт вы не знаете почасовое потребление, превышение договорной мощности — сюрприз в конце месяца. Штрафы могут достигать 150 000 руб/год. Мы разрабатываем мобильные приложения для мониторинга энергопотребления, которые решают эту проблему. За пять лет реализовано более 50 проектов. Типичная ситуация: счётчик с Modbus RTU или P1-портом отдаёт сырые регистры — напряжение, ток, мощность, накопленную энергию в кВт·ч. Без приложения эти данные остаются запертыми в шкафу. Мы превращаем их в дашборд с графиками и алертами, что позволяет экономить до 30% на электроэнергии. Например, на объекте 500 кВт экономия составляет около 200 000 руб/год. Свяжитесь с нами для бесплатной оценки вашего проекта.
Как организовать мониторинг энергопотребления через мобильное приложение?
Счётчики электроэнергии для промышленности (Меркурий 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 месяцев для многообъектной системы с управлением нагрузкой.
Как настроить алерты по превышению мощности?
Мониторинг превышения договорной мощности — одна из ключевых функций для коммерческих объектов. Превышение максимальной мощности ведёт к штрафам от энергосбыта, которые могут достигать 150 000 рублей в год. Логика на бэкенде проверяет скользящий 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 месяца. Стоимость рассчитывается после анализа оборудования и требований. Получите консультацию — мы бесплатно оценим ваш проект.







