iobroker.poolcontrol 1.3.31 → 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 +7 -10
- package/io-package.json +14 -14
- package/lib/helpers/runtimeHelper.js +158 -4
- 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 +1 -1
package/README.md
CHANGED
|
@@ -271,6 +271,13 @@ New features are added regularly – please refer to the changelog.
|
|
|
271
271
|
---
|
|
272
272
|
|
|
273
273
|
## Changelog
|
|
274
|
+
### 1.3.32 (2026-06-08)
|
|
275
|
+
|
|
276
|
+
- Added circulation plausibility diagnostics for daily circulation calculations.
|
|
277
|
+
- Added detection of implausible pump power values, flow rates and daily circulation volume jumps.
|
|
278
|
+
- Added detailed diagnostic states under `circulation.plausibility` for troubleshooting and analysis.
|
|
279
|
+
- Improved diagnostics for circulation calculations without changing existing pump, PV or solar control logic.
|
|
280
|
+
|
|
274
281
|
### 1.3.31 (2026-06-07)
|
|
275
282
|
|
|
276
283
|
- Fixed automatic circulation top-up logic when temperature sensors are missing. Automatic top-up is now only blocked by collector/pool temperature comparison when solar control is active and both temperatures are valid.
|
|
@@ -295,16 +302,6 @@ New features are added regularly – please refer to the changelog.
|
|
|
295
302
|
- Default behavior remains unchanged (5 seconds).
|
|
296
303
|
- Improved compatibility with delayed power measurements from smart plugs and power meters.
|
|
297
304
|
|
|
298
|
-
### 1.3.27 (2026-05-30)
|
|
299
|
-
|
|
300
|
-
- Added new Chemistry Tools section
|
|
301
|
-
- Added pH Plus Calculator
|
|
302
|
-
- Added pH Minus Calculator
|
|
303
|
-
- Added Salt Calculator
|
|
304
|
-
- Added validation, result texts and error handling for all calculators
|
|
305
|
-
- Added automatic pool volume prefill support
|
|
306
|
-
- Expanded documentation and function overviews
|
|
307
|
-
|
|
308
305
|
## Archived Release History
|
|
309
306
|
|
|
310
307
|
For older releases and archived version history see:
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "poolcontrol",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.32",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.3.32": {
|
|
7
|
+
"en": "Added circulation plausibility diagnostics. New checks detect implausible pump power, flow rates, and daily circulation jumps. Added detailed diagnostic states under circulation.plausibility to simplify troubleshooting and analysis of circulation calculations.",
|
|
8
|
+
"de": "Plausibilitätsdiagnose für die Umwälzberechnung hinzugefügt. Neue Prüfungen erkennen unplausible Pumpenleistungen, Durchflusswerte und Sprünge der Tagesumwälzung. Detaillierte Diagnose-States unter circulation.plausibility erleichtern die Fehlersuche und Analyse der Umwälzberechnung.",
|
|
9
|
+
"ru": "Добавлена диагностика достоверности циркуляции. Новые проверки выявляют неправдоподобную мощность насоса, скорость потока и скачки суточной циркуляции. Добавлены подробные диагностические состояния в разделе «циркуляция.достоверность» для упрощения поиска и устранения неисправностей и анализа расчетов циркуляции.",
|
|
10
|
+
"pt": "Adicionados diagnósticos de plausibilidade de circulação. Novas verificações detectam potências de bomba, taxas de fluxo e saltos diários de circulação implausíveis. Adicionados estados de diagnóstico detalhados em circulação.plausibilidade para simplificar a solução de problemas e a análise de cálculos de circulação.",
|
|
11
|
+
"nl": "Diagnostiek van circulatieplausibiliteit toegevoegd. Nieuwe controles detecteren onwaarschijnlijk pompvermogen, debieten en dagelijkse circulatiesprongen. Gedetailleerde diagnostische statussen toegevoegd onder circulatie.plausibiliteit om probleemoplossing en analyse van circulatieberekeningen te vereenvoudigen.",
|
|
12
|
+
"fr": "Ajout de diagnostics de plausibilité de la circulation. De nouveaux contrôles détectent une puissance de pompe, des débits et des sauts de circulation quotidiens invraisemblables. Ajout d'états de diagnostic détaillés sous circulation.plausibilité pour simplifier le dépannage et l'analyse des calculs de circulation.",
|
|
13
|
+
"it": "Aggiunta diagnostica di plausibilità della circolazione. Nuovi controlli rilevano potenza della pompa, portate e salti di circolazione giornalieri non plausibili. Aggiunti stati diagnostici dettagliati in circolazione.plausibilità per semplificare la risoluzione dei problemi e l'analisi dei calcoli della circolazione.",
|
|
14
|
+
"es": "Se agregaron diagnósticos de plausibilidad de circulación. Las nuevas comprobaciones detectan potencias de bombeo, caudales y saltos diarios de circulación inverosímiles. Se agregaron estados de diagnóstico detallados bajo circulación. Plausibilidad para simplificar la resolución de problemas y el análisis de los cálculos de circulación.",
|
|
15
|
+
"pl": "Dodano diagnostykę wiarygodności obiegu. Nowe kontrole wykrywają nieprawdopodobną moc pompy, natężenie przepływu i codzienne skoki cyrkulacji. Dodano szczegółowe stany diagnostyczne w obszarze cyrkulacja.wiarygodność, aby uprościć rozwiązywanie problemów i analizę obliczeń cyrkulacji.",
|
|
16
|
+
"uk": "Додана діагностика вірогідності циркуляції. Нові перевірки виявляють неправдоподібну потужність насоса, швидкість потоку та щоденні стрибки циркуляції. Додано детальні діагностичні стани під циркуляцією. Правдоподібність для спрощення пошуку несправностей і аналізу розрахунків циркуляції.",
|
|
17
|
+
"zh-cn": "添加了循环合理性诊断。新的检查可以检测到难以置信的泵功率、流量和每日循环跳跃。在循环下添加了详细的诊断状态。合理性以简化循环计算的故障排除和分析。"
|
|
18
|
+
},
|
|
6
19
|
"1.3.31": {
|
|
7
20
|
"en": "Fixed automatic circulation top-up logic when temperature sensors are missing. Automatic top-up is now only blocked by collector/pool temperature comparison when solar control is active and both temperatures are valid.",
|
|
8
21
|
"de": "Fehler in der automatischen Nachpump-Logik bei fehlenden Temperatursensoren behoben. Das automatische Nachpumpen wird jetzt nur noch durch den Kollektor-/Pooltemperaturvergleich blockiert, wenn die Solarsteuerung aktiv ist und beide Temperaturwerte gültig vorliegen.",
|
|
@@ -54,19 +67,6 @@
|
|
|
54
67
|
"pl": "Dodano konfigurowalny limit czasu sprawdzania mocy rozruchowej dla monitorowania pompy (5-10 sekund). Poprawiona kompatybilność z opóźnionymi pomiarami mocy z inteligentnych wtyczek i mierników mocy.",
|
|
55
68
|
"uk": "Додано настроюваний тайм-аут перевірки живлення при запуску для моніторингу насоса (5-10 секунд). Покращена сумісність із затримкою вимірювання потужності від розумних розеток і лічильників.",
|
|
56
69
|
"zh-cn": "添加了用于泵监控的可配置启动电源检查超时(5-10 秒)。改进了与智能插头和功率计的延迟功率测量的兼容性。"
|
|
57
|
-
},
|
|
58
|
-
"1.3.27": {
|
|
59
|
-
"en": "Added new Chemistry Tools with pH Plus Calculator, pH Minus Calculator and Salt Calculator. Added validation, result texts, error handling and automatic pool volume prefill. Expanded documentation and function overviews.",
|
|
60
|
-
"de": "Neuen Bereich Chemistry Tools mit pH-Plus-Rechner, pH-Minus-Rechner und Salz-Rechner hinzugefügt. Validierungen, Ergebnistexte, Fehlerbehandlung und automatische Vorbelegung des Poolvolumens ergänzt. Dokumentation und Funktionsübersichten erweitert.",
|
|
61
|
-
"ru": "Добавлены новые химические инструменты с калькулятором pH плюс, калькулятором pH минус и калькулятором соли. Добавлена проверка, тексты результатов, обработка ошибок и автоматическое предварительное заполнение объема пула. Расширенная документация и обзоры функций.",
|
|
62
|
-
"pt": "Adicionadas novas ferramentas de química com calculadora pH Plus, calculadora pH menos e calculadora de sal. Adicionados validação, textos de resultados, tratamento de erros e preenchimento automático do volume do pool. Documentação expandida e visões gerais de funções.",
|
|
63
|
-
"nl": "Nieuwe chemiehulpmiddelen toegevoegd met pH Plus-calculator, pH-minuscalculator en Zoutcalculator. Validatie, resultaatteksten, foutafhandeling en automatisch vooraf invullen van poolvolumes toegevoegd. Uitgebreide documentatie en functieoverzichten.",
|
|
64
|
-
"fr": "Ajout de nouveaux outils de chimie avec calculateur de pH Plus, calculateur de pH Moins et calculateur de sel. Ajout de la validation, des textes de résultats, de la gestion des erreurs et du pré-remplissage automatique du volume du pool. Documentation étendue et aperçus des fonctions.",
|
|
65
|
-
"it": "Aggiunti nuovi strumenti di chimica con calcolatore di pH più, calcolatore di pH meno e calcolatore di sale. Aggiunta convalida, testi dei risultati, gestione degli errori e precompilazione automatica del volume del pool. Documentazione estesa e panoramiche delle funzioni.",
|
|
66
|
-
"es": "Se agregaron nuevas herramientas de química con calculadora de pH Plus, calculadora de pH Minus y calculadora de sal. Se agregó validación, textos de resultados, manejo de errores y precarga automática del volumen del grupo. Documentación ampliada y descripciones generales de funciones.",
|
|
67
|
-
"pl": "Dodano nowe narzędzia chemiczne z kalkulatorem pH Plus, kalkulatorem pH Minus i kalkulatorem soli. Dodano weryfikację, teksty wyników, obsługę błędów i automatyczne wstępne wypełnianie objętości puli. Rozszerzona dokumentacja i przeglądy funkcji.",
|
|
68
|
-
"uk": "Додано нові хімічні інструменти з калькулятором pH Plus, калькулятором pH мінус і калькулятором солі. Додано перевірку, тексти результатів, обробку помилок і автоматичне попереднє заповнення обсягу пулу. Розширена документація та огляд функцій.",
|
|
69
|
-
"zh-cn": "添加了新的化学工具,包括 pH 加计算器、pH 减计算器和盐计算器。添加了验证、结果文本、错误处理和自动池容量预填充。扩展的文档和功能概述。"
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"titleLang": {
|
|
@@ -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();
|
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
|
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* - circulation.daily_total
|
|
15
15
|
* - circulation.daily_required
|
|
16
16
|
* - circulation.daily_remaining
|
|
17
|
+
* - circulation.plausibility.*
|
|
17
18
|
*
|
|
18
19
|
* States sind persistent - behalten Werte über Neustart
|
|
19
20
|
*
|
|
@@ -341,6 +342,301 @@ async function createRuntimeStates(adapter) {
|
|
|
341
342
|
},
|
|
342
343
|
native: {},
|
|
343
344
|
});
|
|
345
|
+
|
|
346
|
+
// -------------------------------------------------------------------------
|
|
347
|
+
// --- Plausibility check for circulation calculation ---
|
|
348
|
+
await adapter.setObjectNotExistsAsync('circulation.plausibility', {
|
|
349
|
+
type: 'channel',
|
|
350
|
+
common: {
|
|
351
|
+
name: {
|
|
352
|
+
en: 'Plausibility check for circulation calculation',
|
|
353
|
+
de: 'Plausibilitätsprüfung der Umwälzberechnung',
|
|
354
|
+
},
|
|
355
|
+
},
|
|
356
|
+
native: {},
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
const plausibilityStates = [
|
|
360
|
+
{
|
|
361
|
+
id: '00_status',
|
|
362
|
+
type: 'string',
|
|
363
|
+
role: 'text',
|
|
364
|
+
def: 'unchecked',
|
|
365
|
+
name: { en: 'Plausibility check status', de: 'Status der Plausibilitätsprüfung' },
|
|
366
|
+
desc: {
|
|
367
|
+
en: 'Current status of the circulation plausibility check',
|
|
368
|
+
de: 'Aktueller Status der Plausibilitätsprüfung für die Umwälzberechnung',
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
id: '01_level',
|
|
373
|
+
type: 'string',
|
|
374
|
+
role: 'text',
|
|
375
|
+
def: 'info',
|
|
376
|
+
states: { ok: 'ok', info: 'info', warning: 'warning' },
|
|
377
|
+
name: { en: 'Plausibility check level', de: 'Bewertungsstufe der Plausibilitätsprüfung' },
|
|
378
|
+
desc: {
|
|
379
|
+
en: 'Severity level of the circulation plausibility check',
|
|
380
|
+
de: 'Bewertungsstufe der Plausibilitätsprüfung für die Umwälzberechnung',
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
id: '02_message_key',
|
|
385
|
+
type: 'string',
|
|
386
|
+
role: 'text',
|
|
387
|
+
def: 'circulation_plausibility_initializing',
|
|
388
|
+
name: { en: 'Plausibility message key', de: 'Meldungsschlüssel der Plausibilitätsprüfung' },
|
|
389
|
+
desc: {
|
|
390
|
+
en: 'Technical message key for the current plausibility result',
|
|
391
|
+
de: 'Technischer Meldungsschlüssel für das aktuelle Plausibilitätsergebnis',
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
id: '03_last_update',
|
|
396
|
+
type: 'string',
|
|
397
|
+
role: 'date',
|
|
398
|
+
def: '',
|
|
399
|
+
name: { en: 'Last plausibility check', de: 'Letzte Plausibilitätsprüfung' },
|
|
400
|
+
desc: {
|
|
401
|
+
en: 'Timestamp of the last circulation plausibility check',
|
|
402
|
+
de: 'Zeitpunkt der letzten Plausibilitätsprüfung der Umwälzberechnung',
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
id: '10_power_warning',
|
|
407
|
+
type: 'boolean',
|
|
408
|
+
role: 'indicator',
|
|
409
|
+
def: false,
|
|
410
|
+
name: { en: 'Power warning', de: 'Warnung bei Pumpenleistung' },
|
|
411
|
+
desc: {
|
|
412
|
+
en: 'Indicates that the current pump power is implausibly high compared to the configured maximum power',
|
|
413
|
+
de: 'Zeigt an, dass die aktuelle Pumpenleistung im Verhältnis zur konfigurierten Maximalleistung unplausibel hoch ist',
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
id: '11_power_value_w',
|
|
418
|
+
type: 'number',
|
|
419
|
+
role: 'value.power',
|
|
420
|
+
unit: 'W',
|
|
421
|
+
def: 0,
|
|
422
|
+
name: { en: 'Measured pump power', de: 'Gemessene Pumpenleistung' },
|
|
423
|
+
desc: {
|
|
424
|
+
en: 'Pump power value used during the last plausibility warning or check',
|
|
425
|
+
de: 'Pumpenleistungswert, der bei der letzten Plausibilitätswarnung oder Prüfung verwendet wurde',
|
|
426
|
+
},
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
id: '12_power_limit_w',
|
|
430
|
+
type: 'number',
|
|
431
|
+
role: 'value.power',
|
|
432
|
+
unit: 'W',
|
|
433
|
+
def: 0,
|
|
434
|
+
name: { en: 'Pump power warning limit', de: 'Warngrenze der Pumpenleistung' },
|
|
435
|
+
desc: {
|
|
436
|
+
en: 'Calculated warning limit for the pump power',
|
|
437
|
+
de: 'Berechnete Warngrenze für die Pumpenleistung',
|
|
438
|
+
},
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
id: '13_power_warning_at',
|
|
442
|
+
type: 'string',
|
|
443
|
+
role: 'date',
|
|
444
|
+
def: '',
|
|
445
|
+
name: { en: 'Power warning timestamp', de: 'Zeitpunkt der Pumpenleistungswarnung' },
|
|
446
|
+
desc: {
|
|
447
|
+
en: 'Timestamp of the last pump power plausibility warning',
|
|
448
|
+
de: 'Zeitpunkt der letzten Plausibilitätswarnung zur Pumpenleistung',
|
|
449
|
+
},
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
id: '20_flow_warning',
|
|
453
|
+
type: 'boolean',
|
|
454
|
+
role: 'indicator',
|
|
455
|
+
def: false,
|
|
456
|
+
name: { en: 'Flow warning', de: 'Warnung bei Durchfluss' },
|
|
457
|
+
desc: {
|
|
458
|
+
en: 'Indicates that the calculated flow rate is implausibly high compared to the configured nominal flow',
|
|
459
|
+
de: 'Zeigt an, dass der berechnete Durchfluss im Verhältnis zur konfigurierten Nennförderleistung unplausibel hoch ist',
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
id: '21_flow_value_lh',
|
|
464
|
+
type: 'number',
|
|
465
|
+
role: 'value',
|
|
466
|
+
unit: 'l/h',
|
|
467
|
+
def: 0,
|
|
468
|
+
name: { en: 'Calculated flow rate', de: 'Berechneter Durchfluss' },
|
|
469
|
+
desc: {
|
|
470
|
+
en: 'Flow rate value used during the last plausibility warning or check',
|
|
471
|
+
de: 'Durchflusswert, der bei der letzten Plausibilitätswarnung oder Prüfung verwendet wurde',
|
|
472
|
+
},
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
id: '22_flow_limit_lh',
|
|
476
|
+
type: 'number',
|
|
477
|
+
role: 'value',
|
|
478
|
+
unit: 'l/h',
|
|
479
|
+
def: 0,
|
|
480
|
+
name: { en: 'Flow warning limit', de: 'Warngrenze des Durchflusses' },
|
|
481
|
+
desc: {
|
|
482
|
+
en: 'Calculated warning limit for the flow rate',
|
|
483
|
+
de: 'Berechnete Warngrenze für den Durchfluss',
|
|
484
|
+
},
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
id: '23_flow_warning_at',
|
|
488
|
+
type: 'string',
|
|
489
|
+
role: 'date',
|
|
490
|
+
def: '',
|
|
491
|
+
name: { en: 'Flow warning timestamp', de: 'Zeitpunkt der Durchflusswarnung' },
|
|
492
|
+
desc: {
|
|
493
|
+
en: 'Timestamp of the last flow plausibility warning',
|
|
494
|
+
de: 'Zeitpunkt der letzten Plausibilitätswarnung zum Durchfluss',
|
|
495
|
+
},
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
id: '24_flow_available',
|
|
499
|
+
type: 'boolean',
|
|
500
|
+
role: 'indicator',
|
|
501
|
+
def: false,
|
|
502
|
+
name: { en: 'Flow value available', de: 'Durchflusswert verfügbar' },
|
|
503
|
+
desc: {
|
|
504
|
+
en: 'Indicates whether a valid live flow value was available for the circulation calculation',
|
|
505
|
+
de: 'Zeigt an, ob ein gültiger Live-Durchflusswert für die Umwälzberechnung verfügbar war',
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
id: '30_jump_warning',
|
|
510
|
+
type: 'boolean',
|
|
511
|
+
role: 'indicator',
|
|
512
|
+
def: false,
|
|
513
|
+
name: { en: 'Daily circulation jump warning', de: 'Warnung bei Sprung der Tagesumwälzung' },
|
|
514
|
+
desc: {
|
|
515
|
+
en: 'Indicates that the daily circulation volume increased faster than physically plausible',
|
|
516
|
+
de: 'Zeigt an, dass das Tagesumwälzvolumen schneller gestiegen ist als physikalisch plausibel',
|
|
517
|
+
},
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
id: '31_jump_value_liters',
|
|
521
|
+
type: 'number',
|
|
522
|
+
role: 'value.volume',
|
|
523
|
+
unit: 'l',
|
|
524
|
+
def: 0,
|
|
525
|
+
name: { en: 'Daily circulation volume jump', de: 'Sprung des Tagesumwälzvolumens' },
|
|
526
|
+
desc: {
|
|
527
|
+
en: 'Detected increase of the daily circulation volume since the previous plausibility check',
|
|
528
|
+
de: 'Erkannter Anstieg des Tagesumwälzvolumens seit der vorherigen Plausibilitätsprüfung',
|
|
529
|
+
},
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
id: '32_jump_limit_liters',
|
|
533
|
+
type: 'number',
|
|
534
|
+
role: 'value.volume',
|
|
535
|
+
unit: 'l',
|
|
536
|
+
def: 0,
|
|
537
|
+
name: { en: 'Maximum plausible volume increase', de: 'Maximal plausibler Volumenzuwachs' },
|
|
538
|
+
desc: {
|
|
539
|
+
en: 'Maximum plausible circulation volume increase for the elapsed time',
|
|
540
|
+
de: 'Maximal plausibler Umwälzvolumen-Zuwachs für die vergangene Zeit',
|
|
541
|
+
},
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
id: '33_jump_warning_at',
|
|
545
|
+
type: 'string',
|
|
546
|
+
role: 'date',
|
|
547
|
+
def: '',
|
|
548
|
+
name: { en: 'Daily circulation jump warning timestamp', de: 'Zeitpunkt der Sprungwarnung' },
|
|
549
|
+
desc: {
|
|
550
|
+
en: 'Timestamp of the last implausible daily circulation jump warning',
|
|
551
|
+
de: 'Zeitpunkt der letzten Warnung wegen eines unplausiblen Sprungs der Tagesumwälzung',
|
|
552
|
+
},
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
id: '40_last_daily_total',
|
|
556
|
+
type: 'number',
|
|
557
|
+
role: 'value.volume',
|
|
558
|
+
unit: 'l',
|
|
559
|
+
def: 0,
|
|
560
|
+
name: { en: 'Previous daily circulation volume', de: 'Vorheriges Tagesumwälzvolumen' },
|
|
561
|
+
desc: {
|
|
562
|
+
en: 'Daily circulation volume used as previous value for the plausibility check',
|
|
563
|
+
de: 'Tagesumwälzvolumen, das als vorheriger Wert für die Plausibilitätsprüfung verwendet wurde',
|
|
564
|
+
},
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
id: '41_current_daily_total',
|
|
568
|
+
type: 'number',
|
|
569
|
+
role: 'value.volume',
|
|
570
|
+
unit: 'l',
|
|
571
|
+
def: 0,
|
|
572
|
+
name: { en: 'Current daily circulation volume', de: 'Aktuelles Tagesumwälzvolumen' },
|
|
573
|
+
desc: {
|
|
574
|
+
en: 'Current daily circulation volume used for the plausibility check',
|
|
575
|
+
de: 'Aktuelles Tagesumwälzvolumen, das für die Plausibilitätsprüfung verwendet wurde',
|
|
576
|
+
},
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
id: '42_delta_liters',
|
|
580
|
+
type: 'number',
|
|
581
|
+
role: 'value.volume',
|
|
582
|
+
unit: 'l',
|
|
583
|
+
def: 0,
|
|
584
|
+
name: { en: 'Daily circulation volume change', de: 'Änderung des Tagesumwälzvolumens' },
|
|
585
|
+
desc: {
|
|
586
|
+
en: 'Difference between current and previous daily circulation volume',
|
|
587
|
+
de: 'Differenz zwischen aktuellem und vorherigem Tagesumwälzvolumen',
|
|
588
|
+
},
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
id: '43_elapsed_seconds',
|
|
592
|
+
type: 'number',
|
|
593
|
+
role: 'value',
|
|
594
|
+
unit: 's',
|
|
595
|
+
def: 0,
|
|
596
|
+
name: { en: 'Elapsed time since previous check', de: 'Zeit seit vorheriger Prüfung' },
|
|
597
|
+
desc: {
|
|
598
|
+
en: 'Elapsed time since the previous circulation plausibility check',
|
|
599
|
+
de: 'Vergangene Zeit seit der vorherigen Plausibilitätsprüfung der Umwälzberechnung',
|
|
600
|
+
},
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
id: '44_max_plausible_delta_liters',
|
|
604
|
+
type: 'number',
|
|
605
|
+
role: 'value.volume',
|
|
606
|
+
unit: 'l',
|
|
607
|
+
def: 0,
|
|
608
|
+
name: { en: 'Maximum plausible change', de: 'Maximal plausible Änderung' },
|
|
609
|
+
desc: {
|
|
610
|
+
en: 'Maximum plausible daily circulation volume change for the elapsed time',
|
|
611
|
+
de: 'Maximal plausible Änderung des Tagesumwälzvolumens für die vergangene Zeit',
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
];
|
|
615
|
+
|
|
616
|
+
for (const state of plausibilityStates) {
|
|
617
|
+
const id = `circulation.plausibility.${state.id}`;
|
|
618
|
+
await adapter.setObjectNotExistsAsync(id, {
|
|
619
|
+
type: 'state',
|
|
620
|
+
common: {
|
|
621
|
+
name: state.name,
|
|
622
|
+
desc: state.desc,
|
|
623
|
+
type: state.type,
|
|
624
|
+
role: state.role,
|
|
625
|
+
read: true,
|
|
626
|
+
write: false,
|
|
627
|
+
persist: true,
|
|
628
|
+
def: state.def,
|
|
629
|
+
...(state.unit ? { unit: state.unit } : {}),
|
|
630
|
+
...(state.states ? { states: state.states } : {}),
|
|
631
|
+
},
|
|
632
|
+
native: {},
|
|
633
|
+
});
|
|
634
|
+
|
|
635
|
+
const existing = await adapter.getStateAsync(id);
|
|
636
|
+
if (!existing || existing.val === null || existing.val === undefined) {
|
|
637
|
+
await adapter.setStateAsync(id, { val: state.def, ack: true });
|
|
638
|
+
}
|
|
639
|
+
}
|
|
344
640
|
}
|
|
345
641
|
|
|
346
642
|
module.exports = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.poolcontrol",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.32",
|
|
4
4
|
"description": "Steuerung & Automatisierung für den Pool (Pumpe, Heizung, Ventile, Sensoren).",
|
|
5
5
|
"author": "DasBo1975 <dasbo1975@outlook.de>",
|
|
6
6
|
"homepage": "https://github.com/DasBo1975/ioBroker.poolcontrol",
|