תארו לעצמכם: במתקן תעשייתי בהספק 500 קילוואט, אין לכם נתוני צריכה שעתיים, וחריגה מההספק החוזי מתגלה רק בסוף החודש. הקנסות יכולים להגיע ל-1.4–1.9 אלף דולר בשנה. אנו מפתחים אפליקציות מובייל לניטור צריכת אנרגיה שפותרות בעיה זו. בחמש שנים סיפקנו למעלה מ-50 פרויקטים. תרחיש טיפוסי: מונה עם יציאת Modbus RTU או P1 מוציא רגיסטרים גולמיים—מתח, זרם, הספק, אנרגיה מצטברת ב-kWh. ללא אפליקציה, נתונים אלה כלואים בתוך הארון. אנו הופכים אותם ללוח מחוונים עם גרפים והתראות, המאפשר חיסכון של עד 30% בחשמל. לדוגמה, באתר של 500 קילוואט, החיסכון מסתכם בכ-1.8–2.6 אלף דולר בשנה. צרו קשר להערכת פרויקט.
כיצד להקים ניטור צריכת אנרגיה באמצעות אפליקציית מובייל?
מוני חשמל תעשייתיים (Mercury 230, AGAT, 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. האפליקציה הניידת תמיד עובדת דרך backend או ברוקר MQTT—אין חיבור ישיר למונה. עבור יציאת P1 (הולנד, בלגיה), קיימים מתאמי P1-to-MQTT המבוססים על ESP32/Raspberry Pi המנתחים הודעות DSMR ומפרסמים ל-MQTT.
| פרוטוקול | מהירות | מרחק | יישום |
|---|---|---|---|
| Modbus RTU | עד 115.2 kbit/s | עד 1200 מ' (RS-485) | מתקנים תעשייתיים, AMR |
| DLMS/COSEM | עד 9600 bit/s (P1) | טווח קצר | בית חכם, אירופה |
| יציאת P1 | 115200 bit/s | עד 10 מטרים | מונים חכמים הולנד, בלגיה |
כיצד לאגד ולאחסן נתונים?
המונה מוציא ערכים מיידיים. האפליקציה זקוקה למגמות לפי שעה, יום, חודש—זה דורש אגרגציה עם אחסון. ב-backend, השתמשו ב-InfluxDB או TimescaleDB (הרחבת PostgreSQL). 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 בהשוואה לפיתוחים natives נפרדים. מחסנית טכנולוגית: Dart, BLoC (Business Logic Component) לניהול מצב, 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; להיסטוגרמות. דוגמת לוח מחוונים:
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)));
}
}כרטיסי לוח מחוונים: הספק פעיל (kW), מתחי פאזה (למונים תלת-פאזיים: שלושה ערכים), cosφ (מקדם הספק), צריכת היום הנוכחי, צריכת החודש הנוכחי לעומת החודש הקודם.
גרף צריכה — פיתוח אפליקציית מובייל
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))); } } לצריכה שעתית הוא הסטנדרט באפליקציות אנרגיה. קידוד צבע לפי אזורי תעריף (תעריף לילה—כחול, יום—כתום):
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)),
),
],
);
} מה כלול בפיתוח?
אנו מציעים שירות מפתח ועד סוף. פיתוח אפליקציית מובייל לניטור צריכת אנרגיה כולל:
- ניתוח הציוד ודרישות האינטגרציה שלכם
- עיצוב ארכיטקטורה: backend (TimescaleDB/InfluxDB), API, אפליקציית מובייל
- פיתוח אב טיפוס עם לוח מחוונים בסיסי לאישור
- אינטגרציה עם מונים ושערים קיימים (Modbus, DLMS, P1, APIs ענן)
- פיתוח צד שרת: אגרגציה, התראות, ניהול משתמשים
- בדיקות על ציוד אמיתי
- פרסום ב-App Store וב-Google Play בהתאם להנחיות
- תיעוד והדרכה למפעילים שלכם
אנו מבטיחים איכות אינטגרציה ותיעוד. לוח זמנים טיפוסי לפיתוח: מ-3 שבועות לאתר יחיד עד 3 חודשים למערכת רב-אתרית עם ניהול עומסים.
כיצד להגדיר התראות על חריגת הספק?
ניטור חריגה מהספק חוזי הוא מפתח למתקנים מסחריים. חריגה מהספק מרבי מובילה לקנסות מספק האנרגיה, שיכולים להגיע ל-1.4–1.9 אלף דולר בשנה. לוגיקת ה-backend בודקת מקסימום מתגלגל של 15 דקות; האפליקציה הניידת מקבלת התראה דרך FCM/APNs.
עבור Android, הודעת push עם fl_chart דרך FCM Data Message (לא Notification Message) נמסרת גם במצב Doze. FCM Data Message מטופלת ב-BarChart ומוצגת כהודעה מקומית עם צליל מותאם אישית.
שלבי פיתוח
| שלב | משך | תוצאה |
|---|---|---|
| ניתוח דרישות | 1-2 ימים | מפרט טכני |
| עיצוב | 2-3 ימים | ארכיטקטורה, אב טיפוס UI |
| פיתוח backend | 1-2 שבועות | API, מסד נתונים, אגרגציה |
| פיתוח אפליקציית מובייל | 2-4 שבועות | לוח מחוונים, התראות, היסטוריה |
| אינטגרציה ובדיקות | שבוע אחד | עבודה עם ציוד אמיתי |
| פרסום בחנויות | 3-5 ימים | הצבה ב-App Store וב-Google Play |
כיצד להזמין פיתוח?
- צרו קשר לייעוץ.
- אנו מנתחים את הציוד והדרישות שלכם.
- מכינים הצעה מסחרית עם הערכת לוח זמנים מדויקת.
- לאחר הסכמה, אנו מתחילים בפיתוח עם אב טיפוס.
- משכללים, בודקים ומפרסמים את האפליקציה באופן אינטראקטיבי.
ניטור רב-אתרי
עבור חברות ניהול המפקחות על 50-100 אתרים—רשימת אובייקטים עם מחווני סטטוס צבעוניים (תקין/חריגה/אין נתונים), ממוינת לפי צריכה. טעינה עצלה דרך 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)), ), ], ); } עם פגינציה של 20 אובייקטים.
פיתוח אפליקציה לניטור מונה יחיד עם לוח מחוונים ונתונים היסטוריים: 3-4 שבועות. ניטור רב-אתרי עם ניהול עומסים והתראות: 2-3 חודשים. העלות מחושבת לאחר ניתוח ציוד ודרישות. קבלו ייעוץ—נעריך את הפרויקט שלכם ללא תשלום.







