iobroker.poolcontrol 1.3.30 → 1.3.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -16
- package/admin/i18n/de.json +158 -0
- package/admin/i18n/en.json +158 -0
- package/admin/i18n/es.json +158 -0
- package/admin/i18n/fr.json +158 -0
- package/admin/i18n/it.json +158 -0
- package/admin/i18n/nl.json +158 -0
- package/admin/i18n/pl.json +158 -0
- package/admin/i18n/pt.json +158 -0
- package/admin/i18n/ru.json +158 -0
- package/admin/i18n/uk.json +158 -0
- package/admin/i18n/zh-cn.json +158 -0
- package/io-package.json +27 -27
- package/lib/helpers/controlHelper.js +37 -6
- package/lib/helpers/controlHelper2.js +3 -3
- package/lib/helpers/debugLogHelper.js +6 -2
- package/lib/helpers/runtimeHelper.js +158 -4
- package/lib/helpers/statusHelper.js +3 -3
- package/lib/i18n/de.json +9 -1
- package/lib/i18n/en.json +9 -1
- package/lib/i18n/es.json +10 -1
- package/lib/i18n/fr.json +9 -1
- package/lib/i18n/it.json +9 -1
- package/lib/i18n/nl.json +9 -1
- package/lib/i18n/pl.json +9 -1
- package/lib/i18n/pt.json +9 -1
- package/lib/i18n/ru.json +9 -1
- package/lib/i18n/uk.json +9 -1
- package/lib/i18n/zh-cn.json +9 -1
- package/lib/stateDefinitions/runtimeStates.js +296 -0
- package/package.json +2 -1
- package/admin/i18n/de/translations.json +0 -158
- package/admin/i18n/en/translations.json +0 -169
- package/admin/i18n/es/translations.json +0 -158
- package/admin/i18n/fr/translations.json +0 -158
- package/admin/i18n/it/translations.json +0 -158
- package/admin/i18n/nl/translations.json +0 -158
- package/admin/i18n/pl/translations.json +0 -158
- package/admin/i18n/pt/translations.json +0 -158
- package/admin/i18n/ru/translations.json +0 -158
- package/admin/i18n/uk/translations.json +0 -158
- package/admin/i18n/zh-cn/translations.json +0 -158
|
@@ -22,6 +22,8 @@ const runtimeHelper = {
|
|
|
22
22
|
resetTimer: null,
|
|
23
23
|
liveTimer: null, // Timer für Live-Updates
|
|
24
24
|
syncTimer: null, // FIX: Timer zur Selbstheilung bei verpasstem Pumpenstart/-stopp
|
|
25
|
+
lastPlausibilityDailyTotal: null,
|
|
26
|
+
lastPlausibilityCheckTs: null,
|
|
25
27
|
|
|
26
28
|
/**
|
|
27
29
|
* Initialisiert den Runtime-Helper.
|
|
@@ -236,9 +238,21 @@ const runtimeHelper = {
|
|
|
236
238
|
|
|
237
239
|
// Umwälzmenge berechnen
|
|
238
240
|
// Reeller Durchflusswert aus pump.live.flow_current_lh
|
|
239
|
-
const liveFlowLh = (await this.adapter.getStateAsync('pump.live.flow_current_lh'))?.val || 0;
|
|
241
|
+
const liveFlowLh = Number((await this.adapter.getStateAsync('pump.live.flow_current_lh'))?.val || 0);
|
|
242
|
+
|
|
243
|
+
// Bestehende Werte für Total/Remaining laden
|
|
244
|
+
const oldTotal = Number((await this.adapter.getStateAsync('circulation.daily_total'))?.val || 0);
|
|
245
|
+
const oldRemaining = Number((await this.adapter.getStateAsync('circulation.daily_remaining'))?.val || 0);
|
|
240
246
|
|
|
241
247
|
if (liveFlowLh <= 0) {
|
|
248
|
+
await this._updateCirculationPlausibility({
|
|
249
|
+
dailyTotal: oldTotal,
|
|
250
|
+
oldTotal,
|
|
251
|
+
liveFlowLh,
|
|
252
|
+
dailyRequired,
|
|
253
|
+
effectiveToday,
|
|
254
|
+
currentSessionSeconds,
|
|
255
|
+
});
|
|
242
256
|
this.adapter.log.debug('[runtimeHelper] No live flow value available, calculation skipped');
|
|
243
257
|
return;
|
|
244
258
|
}
|
|
@@ -247,9 +261,14 @@ const runtimeHelper = {
|
|
|
247
261
|
const dailyTotal = Math.round((effectiveToday / 3600) * liveFlowLh);
|
|
248
262
|
const dailyRemaining = Math.max(dailyRequired - dailyTotal, 0);
|
|
249
263
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
264
|
+
await this._updateCirculationPlausibility({
|
|
265
|
+
dailyTotal,
|
|
266
|
+
oldTotal,
|
|
267
|
+
liveFlowLh,
|
|
268
|
+
dailyRequired,
|
|
269
|
+
effectiveToday,
|
|
270
|
+
currentSessionSeconds,
|
|
271
|
+
});
|
|
253
272
|
|
|
254
273
|
// Nur schreiben, wenn tatsächlich sinnvolle Livewerte vorliegen
|
|
255
274
|
if (liveFlowLh > 0 && dailyTotal > 0) {
|
|
@@ -268,6 +287,130 @@ const runtimeHelper = {
|
|
|
268
287
|
}
|
|
269
288
|
},
|
|
270
289
|
|
|
290
|
+
async _updateCirculationPlausibility({
|
|
291
|
+
dailyTotal,
|
|
292
|
+
oldTotal,
|
|
293
|
+
liveFlowLh,
|
|
294
|
+
dailyRequired,
|
|
295
|
+
effectiveToday,
|
|
296
|
+
currentSessionSeconds,
|
|
297
|
+
}) {
|
|
298
|
+
try {
|
|
299
|
+
const nowMs = Date.now();
|
|
300
|
+
const nowIso = new Date(nowMs).toISOString();
|
|
301
|
+
const readNumber = async id => {
|
|
302
|
+
const value = Number((await this.adapter.getStateAsync(id))?.val);
|
|
303
|
+
return Number.isFinite(value) ? value : 0;
|
|
304
|
+
};
|
|
305
|
+
const write = (id, val) => this.adapter.setStateAsync(`circulation.plausibility.${id}`, { val, ack: true });
|
|
306
|
+
|
|
307
|
+
const currentPower = await readNumber('pump.current_power');
|
|
308
|
+
const pumpMaxWatt = await readNumber('pump.pump_max_watt');
|
|
309
|
+
const pumpPowerLph = await readNumber('pump.pump_power_lph');
|
|
310
|
+
const flowValue = Number.isFinite(Number(liveFlowLh)) ? Number(liveFlowLh) : 0;
|
|
311
|
+
const flowAvailable = flowValue > 0;
|
|
312
|
+
const currentTotal = Number.isFinite(Number(dailyTotal)) ? Number(dailyTotal) : 0;
|
|
313
|
+
const previousTotal =
|
|
314
|
+
this.lastPlausibilityDailyTotal === null ? Number(oldTotal) || 0 : this.lastPlausibilityDailyTotal;
|
|
315
|
+
|
|
316
|
+
const powerLimit = pumpMaxWatt > 0 ? pumpMaxWatt * 1.2 : 0;
|
|
317
|
+
const flowLimit = pumpPowerLph > 0 ? pumpPowerLph * 1.2 : 0;
|
|
318
|
+
let powerWarning = currentPower > 0 && powerLimit > 0 && currentPower > powerLimit;
|
|
319
|
+
let flowWarning = flowAvailable && flowLimit > 0 && flowValue > flowLimit;
|
|
320
|
+
|
|
321
|
+
let elapsedSeconds = 0;
|
|
322
|
+
let deltaLiters = 0;
|
|
323
|
+
let maxPlausibleDelta = 0;
|
|
324
|
+
let jumpWarning = false;
|
|
325
|
+
const hasPreviousCheck = this.lastPlausibilityCheckTs !== null && this.lastPlausibilityDailyTotal !== null;
|
|
326
|
+
|
|
327
|
+
if (hasPreviousCheck) {
|
|
328
|
+
elapsedSeconds = Math.max(0, Math.round((nowMs - this.lastPlausibilityCheckTs) / 1000));
|
|
329
|
+
deltaLiters = Math.max(0, currentTotal - this.lastPlausibilityDailyTotal);
|
|
330
|
+
|
|
331
|
+
if (elapsedSeconds > 0 && elapsedSeconds <= 3600 && pumpPowerLph > 0) {
|
|
332
|
+
maxPlausibleDelta = (pumpPowerLph * 1.5 * elapsedSeconds) / 3600;
|
|
333
|
+
jumpWarning = deltaLiters > maxPlausibleDelta;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
if (!flowAvailable) {
|
|
338
|
+
flowWarning = false;
|
|
339
|
+
jumpWarning = false;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
const warningCount = [powerWarning, flowWarning, jumpWarning].filter(Boolean).length;
|
|
343
|
+
let status = 'ok';
|
|
344
|
+
let level = 'ok';
|
|
345
|
+
let messageKey = 'circulation_plausibility_ok';
|
|
346
|
+
|
|
347
|
+
if (warningCount > 0) {
|
|
348
|
+
status = 'warning';
|
|
349
|
+
level = 'warning';
|
|
350
|
+
if (warningCount > 1) {
|
|
351
|
+
messageKey = 'circulation_plausibility_multiple_warnings';
|
|
352
|
+
} else if (powerWarning) {
|
|
353
|
+
messageKey = 'circulation_plausibility_power_warning';
|
|
354
|
+
} else if (flowWarning) {
|
|
355
|
+
messageKey = 'circulation_plausibility_flow_warning';
|
|
356
|
+
} else {
|
|
357
|
+
messageKey = 'circulation_plausibility_daily_total_jump_warning';
|
|
358
|
+
}
|
|
359
|
+
} else if (!flowAvailable) {
|
|
360
|
+
status = 'unchecked';
|
|
361
|
+
level = 'info';
|
|
362
|
+
messageKey = 'circulation_plausibility_no_flow';
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
await write('00_status', status);
|
|
366
|
+
await write('01_level', level);
|
|
367
|
+
await write('02_message_key', messageKey);
|
|
368
|
+
await write('03_last_update', nowIso);
|
|
369
|
+
await write('10_power_warning', powerWarning);
|
|
370
|
+
await write('11_power_value_w', currentPower > 0 ? currentPower : 0);
|
|
371
|
+
await write('12_power_limit_w', powerLimit > 0 ? powerLimit : 0);
|
|
372
|
+
await write('20_flow_warning', flowWarning);
|
|
373
|
+
await write('21_flow_value_lh', flowAvailable ? flowValue : 0);
|
|
374
|
+
await write('22_flow_limit_lh', flowLimit > 0 ? flowLimit : 0);
|
|
375
|
+
await write('24_flow_available', flowAvailable);
|
|
376
|
+
await write('30_jump_warning', jumpWarning);
|
|
377
|
+
await write('31_jump_value_liters', deltaLiters);
|
|
378
|
+
await write('32_jump_limit_liters', maxPlausibleDelta);
|
|
379
|
+
await write('40_last_daily_total', previousTotal);
|
|
380
|
+
await write('41_current_daily_total', currentTotal);
|
|
381
|
+
await write('42_delta_liters', deltaLiters);
|
|
382
|
+
await write('43_elapsed_seconds', elapsedSeconds);
|
|
383
|
+
await write('44_max_plausible_delta_liters', maxPlausibleDelta);
|
|
384
|
+
|
|
385
|
+
if (powerWarning) {
|
|
386
|
+
await write('13_power_warning_at', nowIso);
|
|
387
|
+
}
|
|
388
|
+
if (flowWarning) {
|
|
389
|
+
await write('23_flow_warning_at', nowIso);
|
|
390
|
+
}
|
|
391
|
+
if (jumpWarning) {
|
|
392
|
+
await write('33_jump_warning_at', nowIso);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
this.lastPlausibilityDailyTotal = currentTotal;
|
|
396
|
+
this.lastPlausibilityCheckTs = nowMs;
|
|
397
|
+
|
|
398
|
+
if (warningCount > 0) {
|
|
399
|
+
this.adapter.log.warn(
|
|
400
|
+
`[runtimeHelper] Circulation plausibility warning: power=${powerWarning}, flow=${flowWarning}, jump=${jumpWarning}, dailyTotal=${currentTotal}, delta=${deltaLiters}, maxDelta=${maxPlausibleDelta}`,
|
|
401
|
+
);
|
|
402
|
+
} else {
|
|
403
|
+
this.adapter.log.debug(
|
|
404
|
+
`[runtimeHelper] Circulation plausibility updated (status=${status}, dailyTotal=${currentTotal}, flow=${flowValue}, required=${dailyRequired}, effectiveToday=${effectiveToday}, currentSession=${currentSessionSeconds})`,
|
|
405
|
+
);
|
|
406
|
+
}
|
|
407
|
+
} catch (err) {
|
|
408
|
+
this.adapter.log.warn(
|
|
409
|
+
`[runtimeHelper] Error while updating circulation plausibility states: ${err.message}`,
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
|
|
271
414
|
_formatTime(seconds) {
|
|
272
415
|
seconds = Math.max(0, Math.floor(seconds));
|
|
273
416
|
const h = Math.floor(seconds / 3600);
|
|
@@ -351,6 +494,17 @@ const runtimeHelper = {
|
|
|
351
494
|
this.runtimeToday = 0;
|
|
352
495
|
this.startCountToday = 0;
|
|
353
496
|
this.lastOn = this.isRunning ? Date.now() : null;
|
|
497
|
+
this.lastPlausibilityDailyTotal = 0;
|
|
498
|
+
this.lastPlausibilityCheckTs = Date.now();
|
|
499
|
+
|
|
500
|
+
await this.adapter.setStateAsync('circulation.plausibility.40_last_daily_total', { val: 0, ack: true });
|
|
501
|
+
await this.adapter.setStateAsync('circulation.plausibility.41_current_daily_total', { val: 0, ack: true });
|
|
502
|
+
await this.adapter.setStateAsync('circulation.plausibility.42_delta_liters', { val: 0, ack: true });
|
|
503
|
+
await this.adapter.setStateAsync('circulation.plausibility.43_elapsed_seconds', { val: 0, ack: true });
|
|
504
|
+
await this.adapter.setStateAsync('circulation.plausibility.44_max_plausible_delta_liters', {
|
|
505
|
+
val: 0,
|
|
506
|
+
ack: true,
|
|
507
|
+
});
|
|
354
508
|
|
|
355
509
|
// Laufzeiten zurücksetzen
|
|
356
510
|
await this._updateStates();
|
|
@@ -226,14 +226,14 @@ const statusHelper = {
|
|
|
226
226
|
|
|
227
227
|
scheduleMidnightReset() {
|
|
228
228
|
if (this.midnightTimer) {
|
|
229
|
-
clearTimeout(this.midnightTimer);
|
|
229
|
+
this.adapter.clearTimeout(this.midnightTimer);
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
const now = new Date();
|
|
233
233
|
const nextMidnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1, 0, 0, 5, 0);
|
|
234
234
|
const msToMidnight = nextMidnight.getTime() - now.getTime();
|
|
235
235
|
|
|
236
|
-
this.midnightTimer = setTimeout(async () => {
|
|
236
|
+
this.midnightTimer = this.adapter.setTimeout(async () => {
|
|
237
237
|
await this.doMidnightReset();
|
|
238
238
|
this.scheduleMidnightReset(); // neu einplanen
|
|
239
239
|
}, msToMidnight);
|
|
@@ -253,7 +253,7 @@ const statusHelper = {
|
|
|
253
253
|
|
|
254
254
|
cleanup() {
|
|
255
255
|
if (this.midnightTimer) {
|
|
256
|
-
clearTimeout(this.midnightTimer);
|
|
256
|
+
this.adapter.clearTimeout(this.midnightTimer);
|
|
257
257
|
this.midnightTimer = null;
|
|
258
258
|
}
|
|
259
259
|
},
|
package/lib/i18n/de.json
CHANGED
|
@@ -372,5 +372,13 @@
|
|
|
372
372
|
"pool_insights_observation_pv_runtime_today": "PV-Unterstützung lief heute {minutes} Minuten.",
|
|
373
373
|
"pool_insights_observation_ph_evaluation_available": "Eine pH-Bewertung ist verfügbar.",
|
|
374
374
|
"pool_insights_observation_tds_evaluation_available": "Eine TDS-Bewertung ist verfügbar.",
|
|
375
|
-
"pool_insights_observation_orp_evaluation_available": "Eine ORP-Bewertung ist verfügbar."
|
|
375
|
+
"pool_insights_observation_orp_evaluation_available": "Eine ORP-Bewertung ist verfügbar.",
|
|
376
|
+
|
|
377
|
+
"circulation_plausibility_initializing": "Die Plausibilitätsprüfung der Umwälzberechnung wird initialisiert.",
|
|
378
|
+
"circulation_plausibility_ok": "Die Plausibilitätsprüfung der Umwälzberechnung ist in Ordnung.",
|
|
379
|
+
"circulation_plausibility_no_flow": "Für die Umwälzberechnung ist kein gültiger Live-Durchflusswert verfügbar.",
|
|
380
|
+
"circulation_plausibility_power_warning": "Die Pumpenleistung ist im Verhältnis zur konfigurierten Maximalleistung unplausibel hoch.",
|
|
381
|
+
"circulation_plausibility_flow_warning": "Der berechnete Durchfluss ist im Verhältnis zur konfigurierten Nennförderleistung unplausibel hoch.",
|
|
382
|
+
"circulation_plausibility_daily_total_jump_warning": "Das Tagesumwälzvolumen ist schneller gestiegen als physikalisch plausibel.",
|
|
383
|
+
"circulation_plausibility_multiple_warnings": "Mehrere Plausibilitätswarnungen zur Umwälzberechnung sind aktiv."
|
|
376
384
|
}
|
package/lib/i18n/en.json
CHANGED
|
@@ -399,5 +399,13 @@
|
|
|
399
399
|
"pool_insights_observation_pv_runtime_today": "PV support ran for {minutes} minutes today.",
|
|
400
400
|
"pool_insights_observation_ph_evaluation_available": "A pH evaluation is available.",
|
|
401
401
|
"pool_insights_observation_tds_evaluation_available": "A TDS evaluation is available.",
|
|
402
|
-
"pool_insights_observation_orp_evaluation_available": "An ORP evaluation is available."
|
|
402
|
+
"pool_insights_observation_orp_evaluation_available": "An ORP evaluation is available.",
|
|
403
|
+
|
|
404
|
+
"circulation_plausibility_initializing": "Circulation plausibility check is initializing.",
|
|
405
|
+
"circulation_plausibility_ok": "Circulation plausibility check is OK.",
|
|
406
|
+
"circulation_plausibility_no_flow": "No valid live flow value is available for the circulation calculation.",
|
|
407
|
+
"circulation_plausibility_power_warning": "Pump power is implausibly high compared to the configured maximum power.",
|
|
408
|
+
"circulation_plausibility_flow_warning": "Calculated flow rate is implausibly high compared to the configured nominal flow.",
|
|
409
|
+
"circulation_plausibility_daily_total_jump_warning": "Daily circulation volume increased faster than physically plausible.",
|
|
410
|
+
"circulation_plausibility_multiple_warnings": "Multiple circulation plausibility warnings are active."
|
|
403
411
|
}
|
package/lib/i18n/es.json
CHANGED
|
@@ -395,5 +395,14 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "La asistencia PV funcionó hoy durante {minutes} minutos.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "Hay una evaluación de pH disponible.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "Hay una evaluación de TDS disponible.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "Hay una evaluación de ORP disponible."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "Hay una evaluación de ORP disponible.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "La comprobación de plausibilidad de la circulación se está inicializando.",
|
|
401
|
+
"circulation_plausibility_ok": "La comprobación de plausibilidad de la circulación es correcta.",
|
|
402
|
+
"circulation_plausibility_no_flow": "No hay un valor válido de caudal disponible para el cálculo de la circulación.",
|
|
403
|
+
"circulation_plausibility_power_warning": "La potencia de la bomba es excesiva en relación con la potencia máxima configurada.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "El caudal calculado es excesivo en relación con el caudal nominal configurado.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "El volumen diario de circulación ha aumentado más rápido de lo físicamente plausible.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Hay varias advertencias de plausibilidad de circulación activas."
|
|
399
407
|
}
|
|
408
|
+
|
package/lib/i18n/fr.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "L’assistance PV a fonctionné pendant {minutes} minutes aujourd’hui.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "Une évaluation du pH est disponible.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "Une évaluation TDS est disponible.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "Une évaluation ORP est disponible."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "Une évaluation ORP est disponible.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "La vérification de plausibilité de la circulation est en cours d'initialisation.",
|
|
401
|
+
"circulation_plausibility_ok": "La vérification de plausibilité de la circulation est correcte.",
|
|
402
|
+
"circulation_plausibility_no_flow": "Aucune valeur de débit valide n'est disponible pour le calcul de circulation.",
|
|
403
|
+
"circulation_plausibility_power_warning": "La puissance de la pompe est anormalement élevée par rapport à la puissance maximale configurée.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "Le débit calculé est anormalement élevé par rapport au débit nominal configuré.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "Le volume quotidien de circulation a augmenté plus rapidement que physiquement plausible.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Plusieurs avertissements de plausibilité de circulation sont actifs."
|
|
399
407
|
}
|
package/lib/i18n/it.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "Il supporto PV ha funzionato oggi per {minutes} minuti.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "È disponibile una valutazione pH.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "È disponibile una valutazione TDS.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "È disponibile una valutazione ORP."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "È disponibile una valutazione ORP.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "Il controllo di plausibilità della circolazione è in fase di inizializzazione.",
|
|
401
|
+
"circulation_plausibility_ok": "Il controllo di plausibilità della circolazione è corretto.",
|
|
402
|
+
"circulation_plausibility_no_flow": "Non è disponibile un valore di flusso valido per il calcolo della circolazione.",
|
|
403
|
+
"circulation_plausibility_power_warning": "La potenza della pompa è eccessivamente alta rispetto alla potenza massima configurata.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "La portata calcolata è eccessivamente alta rispetto alla portata nominale configurata.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "Il volume giornaliero di circolazione è aumentato più velocemente di quanto fisicamente plausibile.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Sono attivi più avvisi di plausibilità della circolazione."
|
|
399
407
|
}
|
package/lib/i18n/nl.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "PV-ondersteuning liep vandaag {minutes} minuten.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "Er is een pH-beoordeling beschikbaar.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "Er is een TDS-beoordeling beschikbaar.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "Er is een ORP-beoordeling beschikbaar."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "Er is een ORP-beoordeling beschikbaar.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "De plausibiliteitscontrole van de circulatie wordt geïnitialiseerd.",
|
|
401
|
+
"circulation_plausibility_ok": "De plausibiliteitscontrole van de circulatie is in orde.",
|
|
402
|
+
"circulation_plausibility_no_flow": "Er is geen geldige debietwaarde beschikbaar voor de circulatieberekening.",
|
|
403
|
+
"circulation_plausibility_power_warning": "Het pompvermogen is onwaarschijnlijk hoog ten opzichte van het ingestelde maximale vermogen.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "Het berekende debiet is onwaarschijnlijk hoog ten opzichte van het ingestelde nominale debiet.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "Het dagelijkse circulatievolume is sneller gestegen dan fysiek plausibel.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Er zijn meerdere waarschuwingen voor circulatie-plausibiliteit actief."
|
|
399
407
|
}
|
package/lib/i18n/pl.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "Wsparcie PV działało dziś przez {minutes} minut.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "Dostępna jest ocena pH.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "Dostępna jest ocena TDS.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "Dostępna jest ocena ORP."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "Dostępna jest ocena ORP.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "Trwa inicjalizacja kontroli wiarygodności obiegu.",
|
|
401
|
+
"circulation_plausibility_ok": "Kontrola wiarygodności obiegu jest prawidłowa.",
|
|
402
|
+
"circulation_plausibility_no_flow": "Brak prawidłowej wartości przepływu dla obliczeń obiegu.",
|
|
403
|
+
"circulation_plausibility_power_warning": "Moc pompy jest nienaturalnie wysoka względem skonfigurowanej mocy maksymalnej.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "Obliczony przepływ jest nienaturalnie wysoki względem skonfigurowanego przepływu nominalnego.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "Dzienna objętość obiegu wzrosła szybciej niż jest to fizycznie możliwe.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Aktywnych jest kilka ostrzeżeń dotyczących wiarygodności obiegu."
|
|
399
407
|
}
|
package/lib/i18n/pt.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "O apoio PV funcionou hoje durante {minutes} minutos.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "Está disponível uma avaliação de pH.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "Está disponível uma avaliação TDS.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "Está disponível uma avaliação ORP."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "Está disponível uma avaliação ORP.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "A verificação de plausibilidade da circulação está a ser inicializada.",
|
|
401
|
+
"circulation_plausibility_ok": "A verificação de plausibilidade da circulação está correta.",
|
|
402
|
+
"circulation_plausibility_no_flow": "Não existe um valor de caudal válido para o cálculo da circulação.",
|
|
403
|
+
"circulation_plausibility_power_warning": "A potência da bomba é excessivamente elevada em relação à potência máxima configurada.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "O caudal calculado é excessivamente elevado em relação ao caudal nominal configurado.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "O volume diário de circulação aumentou mais rapidamente do que seria fisicamente plausível.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Existem vários avisos de plausibilidade da circulação ativos."
|
|
399
407
|
}
|
package/lib/i18n/ru.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "Поддержка PV сегодня работала {minutes} минут.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "Доступна оценка pH.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "Доступна оценка TDS.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "Доступна оценка ORP."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "Доступна оценка ORP.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "Инициализируется проверка достоверности циркуляции.",
|
|
401
|
+
"circulation_plausibility_ok": "Проверка достоверности циркуляции выполнена успешно.",
|
|
402
|
+
"circulation_plausibility_no_flow": "Нет допустимого значения потока для расчёта циркуляции.",
|
|
403
|
+
"circulation_plausibility_power_warning": "Мощность насоса слишком велика по сравнению с настроенной максимальной мощностью.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "Расчётный поток слишком велик по сравнению с настроенным номинальным потоком.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "Суточный объём циркуляции увеличился быстрее, чем это физически возможно.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Активны несколько предупреждений проверки достоверности циркуляции."
|
|
399
407
|
}
|
package/lib/i18n/uk.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "Підтримка PV сьогодні працювала {minutes} хвилин.",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "Доступна оцінка pH.",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "Доступна оцінка TDS.",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "Доступна оцінка ORP."
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "Доступна оцінка ORP.",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "Ініціалізується перевірка правдоподібності циркуляції.",
|
|
401
|
+
"circulation_plausibility_ok": "Перевірка правдоподібності циркуляції успішна.",
|
|
402
|
+
"circulation_plausibility_no_flow": "Відсутнє коректне значення потоку для розрахунку циркуляції.",
|
|
403
|
+
"circulation_plausibility_power_warning": "Потужність насоса надто висока відносно налаштованої максимальної потужності.",
|
|
404
|
+
"circulation_plausibility_flow_warning": "Розрахований потік надто високий відносно налаштованого номінального потоку.",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "Добовий обсяг циркуляції збільшився швидше, ніж це фізично можливо.",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "Активні кілька попереджень перевірки правдоподібності циркуляції."
|
|
399
407
|
}
|
package/lib/i18n/zh-cn.json
CHANGED
|
@@ -395,5 +395,13 @@
|
|
|
395
395
|
"pool_insights_observation_pv_runtime_today": "今天 PV 支持运行了 {minutes} 分钟。",
|
|
396
396
|
"pool_insights_observation_ph_evaluation_available": "已有 pH 评估。",
|
|
397
397
|
"pool_insights_observation_tds_evaluation_available": "已有 TDS 评估。",
|
|
398
|
-
"pool_insights_observation_orp_evaluation_available": "已有 ORP 评估。"
|
|
398
|
+
"pool_insights_observation_orp_evaluation_available": "已有 ORP 评估。",
|
|
399
|
+
|
|
400
|
+
"circulation_plausibility_initializing": "循环合理性检查正在初始化。",
|
|
401
|
+
"circulation_plausibility_ok": "循环合理性检查正常。",
|
|
402
|
+
"circulation_plausibility_no_flow": "没有可用于循环计算的有效流量值。",
|
|
403
|
+
"circulation_plausibility_power_warning": "泵功率相对于配置的最大功率异常偏高。",
|
|
404
|
+
"circulation_plausibility_flow_warning": "计算出的流量相对于配置的额定流量异常偏高。",
|
|
405
|
+
"circulation_plausibility_daily_total_jump_warning": "每日循环量增长速度超过物理合理范围。",
|
|
406
|
+
"circulation_plausibility_multiple_warnings": "存在多个循环合理性警告。"
|
|
399
407
|
}
|