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.
Files changed (42) hide show
  1. package/README.md +11 -16
  2. package/admin/i18n/de.json +158 -0
  3. package/admin/i18n/en.json +158 -0
  4. package/admin/i18n/es.json +158 -0
  5. package/admin/i18n/fr.json +158 -0
  6. package/admin/i18n/it.json +158 -0
  7. package/admin/i18n/nl.json +158 -0
  8. package/admin/i18n/pl.json +158 -0
  9. package/admin/i18n/pt.json +158 -0
  10. package/admin/i18n/ru.json +158 -0
  11. package/admin/i18n/uk.json +158 -0
  12. package/admin/i18n/zh-cn.json +158 -0
  13. package/io-package.json +27 -27
  14. package/lib/helpers/controlHelper.js +37 -6
  15. package/lib/helpers/controlHelper2.js +3 -3
  16. package/lib/helpers/debugLogHelper.js +6 -2
  17. package/lib/helpers/runtimeHelper.js +158 -4
  18. package/lib/helpers/statusHelper.js +3 -3
  19. package/lib/i18n/de.json +9 -1
  20. package/lib/i18n/en.json +9 -1
  21. package/lib/i18n/es.json +10 -1
  22. package/lib/i18n/fr.json +9 -1
  23. package/lib/i18n/it.json +9 -1
  24. package/lib/i18n/nl.json +9 -1
  25. package/lib/i18n/pl.json +9 -1
  26. package/lib/i18n/pt.json +9 -1
  27. package/lib/i18n/ru.json +9 -1
  28. package/lib/i18n/uk.json +9 -1
  29. package/lib/i18n/zh-cn.json +9 -1
  30. package/lib/stateDefinitions/runtimeStates.js +296 -0
  31. package/package.json +2 -1
  32. package/admin/i18n/de/translations.json +0 -158
  33. package/admin/i18n/en/translations.json +0 -169
  34. package/admin/i18n/es/translations.json +0 -158
  35. package/admin/i18n/fr/translations.json +0 -158
  36. package/admin/i18n/it/translations.json +0 -158
  37. package/admin/i18n/nl/translations.json +0 -158
  38. package/admin/i18n/pl/translations.json +0 -158
  39. package/admin/i18n/pt/translations.json +0 -158
  40. package/admin/i18n/ru/translations.json +0 -158
  41. package/admin/i18n/uk/translations.json +0 -158
  42. package/admin/i18n/zh-cn/translations.json +0 -158
@@ -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.30",
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",
@@ -31,6 +31,7 @@
31
31
  "@iobroker/adapter-dev": "^1.5.0",
32
32
  "@iobroker/eslint-config": "^2.2.0",
33
33
  "@iobroker/testing": "^5.2.2",
34
+ "@tsconfig/node22": "^22.0.5",
34
35
  "@types/node": "^22.0.0",
35
36
  "baseline-browser-mapping": "^2.8.32",
36
37
  "proxyquire": "^2.1.3"
@@ -1,158 +0,0 @@
1
- {
2
- "0.5x": "0,5x",
3
- "1.0x": "1,0x",
4
- "1.5x": "1,5x",
5
- "2.0x": "2,0x",
6
- "2.5x": "2,5x",
7
- "3.0x": "3,0x",
8
- "Additional Actuators": "Zusätzliche Aktuatoren",
9
- "Additional actuators (valves, lighting & auxiliary pumps)": "Zusätzliche Aktoren (Ventile, Beleuchtung & Hilfspumpen)",
10
- "Alexa device": "Alexa-Gerät",
11
- "All text and speech outputs of the adapter – including AI forecasts, warnings, pump status, solar hints and diagnostic messages – are emitted via the central 'speech.queue' datapoint. This datapoint should be used for VIS displays, Alexa or Telegram outputs.": "Alle Text- und Sprachausgaben des Adapters – einschließlich KI-Vorhersagen, Warnungen, Pumpenstatus, Solarhinweise und Diagnosemeldungen – werden über den zentralen Datenpunkt „speech.queue“ ausgegeben. Dieser Datenpunkt sollte für VIS-Anzeigen, Alexa- oder Telegram-Ausgaben verwendet werden.",
12
- "Amazon Alexa": "Amazon Alexa",
13
- "Announce / Notify on Warning": "Bei Warnung ansagen / benachrichtigen",
14
- "Announce error messages": "Fehlermeldungen ankündigen",
15
- "Auxiliary pump 1 active": "Hilfspumpe 1 aktiv",
16
- "Auxiliary pump 2 active": "Hilfspumpe 2 aktiv",
17
- "Auxiliary pump 3 active": "Hilfspumpe 3 aktiv",
18
- "Auxiliary pumps & attractions": "Hilfspumpen und Attraktionen",
19
- "Central speech output (speech.queue)": "Zentrale Sprachausgabe (speech.queue)",
20
- "Collector Temperature Off Threshold (°C)": "Ausschaltschwelle Kollektortemperatur (°C)",
21
- "Collector Temperature On Threshold (°C)": "Einschaltschwelle Kollektortemperatur (°C)",
22
- "Collector Temperature Warning": "Kollektortemperaturwarnung",
23
- "Collector Temperature Warning Threshold (°C)": "Kollektortemperatur-Warnschwelle (°C)",
24
- "Consumption and cost calculation": "Verbrauchs- und Kostenberechnung",
25
- "Datapoint containing current PV power (Watts)": "Datenpunkt mit aktueller PV-Leistung (Watt)",
26
- "Datapoint containing current house consumption (Watts)": "Datenpunkt mit aktuellem Hausverbrauch (Watt)",
27
- "Default (female)": "Standard (weiblich)",
28
- "Difference between PV generation and house consumption that counts as surplus": "Differenz zwischen PV-Erzeugung und Hausverbrauch, die als Überschuss gilt",
29
- "Electricity price (€ / kWh)": "Strompreis (€/kWh)",
30
- "Email adapter instance": "E-Mail-Adapterinstanz",
31
- "Email subject": "E-Mail-Betreff",
32
- "Enable Alexa output": "Alexa-Ausgabe aktivieren",
33
- "Enable Collector Temperature Warning": "Kollektortemperaturwarnung aktivieren",
34
- "Enable Frost Protection": "Frostschutz aktivieren",
35
- "Enable Heating Control": "Heizungssteuerung aktivieren",
36
- "Enable Solar Control": "Solarsteuerung aktivieren",
37
- "Enable Telegram output": "Telegram-Ausgabe aktivieren",
38
- "Enable Time Window 1": "Zeitfenster 1 aktivieren",
39
- "Enable Time Window 2": "Zeitfenster 2 aktivieren",
40
- "Enable Time Window 3": "Zeitfenster 3 aktivieren",
41
- "Enable consumption and cost calculation": "Verbrauchs- und Kostenberechnung aktivieren",
42
- "Enable email output": "E-Mail-Ausgabe aktivieren",
43
- "Enable safety functions also in 'Manual' mode": "Sicherheitsfunktionen auch im Modus „Manuell“ aktivieren",
44
- "Enable speech output": "Sprachausgabe aktivieren",
45
- "End (HH:MM)": "Ende (HH:MM)",
46
- "Example: Dirk,Dennis (empty = send to all users)": "Beispiel: Dirk,Dennis (leer = an alle Benutzer senden)",
47
- "Friday": "Freitag",
48
- "Frost Protection": "Frostschutz",
49
- "Frost Protection Temperature (°C)": "Frostschutztemperatur (°C)",
50
- "General": "Allgemein",
51
- "General Pool Settings": "Allgemeine Pooleinstellungen",
52
- "General Settings": "Allgemeine Einstellungen",
53
- "Heating / Heat Pump": "Heizung / Wärmepumpe",
54
- "Help & Info": "Hilfe und Informationen",
55
- "Help and Information": "Hilfe und Informationen",
56
- "Here you will find the complete documentation and information about all settings. Additional information about future versions will follow.": "Hier finden Sie die vollständige Dokumentation und Informationen zu allen Einstellungen. Weitere Informationen zu zukünftigen Versionen folgen.",
57
- "Hysteresis": "Hysterese",
58
- "If enabled, safety functions such as frost protection and overheating protection (solar) remain active.": "Wenn aktiviert, bleiben Sicherheitsfunktionen wie Frostschutz und Überhitzungsschutz (Solar) aktiv",
59
- "Important information about the AI system": "Wichtige Informationen zum KI-System",
60
- "Internet access & data protection": "Internetzugang & Datenschutz",
61
- "Lighting": "Beleuchtung",
62
- "Lighting 1 active": "Beleuchtung 1 aktiv",
63
- "Lighting 2 active": "Beleuchtung 2 aktiv",
64
- "Lighting 3 active": "Beleuchtung 3 aktiv",
65
- "Logical Control State (true / false)": "Logischer Kontrollstatus (wahr/falsch)",
66
- "Mail": "E-Mail",
67
- "Male": "Männlich",
68
- "Many automatic features (e.g. solar control, photovoltaic mode, AI weather logic and diagnostic functions) only operate when the pool season is active. The season status can be changed at any time via the 'status.season_active' datapoint or your visualization. The instance configuration only provides the initial value when the datapoint is created for the first time.": "Viele automatische Funktionen (z. B. Solarsteuerung, Photovoltaikmodus, KI-Wetterlogik und Diagnosefunktionen) funktionieren nur, wenn die Poolsaison aktiv ist. Der Saisonstatus kann jederzeit über den Datenpunkt „status.season_active“ oder Ihre Visualisierung geändert werden. Die Instanzkonfiguration liefert nur den Anfangswert, wenn der Datenpunkt zum ersten Mal erstellt wird.",
69
- "Max Power (Watt)": "Maximale Leistung (Watt)",
70
- "Maximum Pool Temperature (°C – Safety Cutoff)": "Maximale Pooltemperatur (°C – Sicherheitsabschaltung)",
71
- "Minimum Circulation per Day": "Mindestumwälzung pro Tag",
72
- "Monday": "Montag",
73
- "Name Auxiliary pump 1": "Name Hilfspumpe 1",
74
- "Name Auxiliary pump 2": "Name Hilfspumpe 2",
75
- "Name Auxiliary pump 3": "Name Hilfspumpe 3",
76
- "Name Lighting 1": "Name Beleuchtung 1",
77
- "Name Lighting 2": "Name Beleuchtung 2",
78
- "Name Lighting 3": "Name Beleuchtung 3",
79
- "Note about pool season": "Hinweis zur Poolsaison",
80
- "Note: An external kWh meter is required for consumption calculation (e.g. smart plug).": "Hinweis: Für die Verbrauchsberechnung ist ein externer kWh-Zähler erforderlich (z. B. Smart Plug).",
81
- "Note: Heating control is temperature-driven and only active during pool season. Depending on the selected control type, either a smart plug is switched or a logical control state (true/false) is set.": "Hinweis: Die Heizungsregelung ist temperaturgesteuert und nur während der Poolsaison aktiv. Abhängig von der gewählten Steuerungsart wird entweder ein Smart Plug geschaltet oder ein logischer Steuerungszustand (wahr/falsch) gesetzt.",
82
- "Note: Supports external sensors as well as the PoolControl pressure box.": "Hinweis: Unterstützt externe Sensoren sowie die PoolControl-Druckbox.",
83
- "Note: The AI features are completely optional and can be disabled at any time via the 'ai.enabled' datapoint. Weather features (e.g. weather hints, pool tips, forecast for tomorrow) can also be individually enabled or disabled via 'ai.weather.switches.*'. The adapter uses the Open-Meteo service to generate weather data. For this, the geo-coordinates stored in ioBroker (latitude and longitude from system.config) are required.": "Hinweis: Die KI-Funktionen sind völlig optional und können jederzeit über den Datenpunkt „ai.enabled“ deaktiviert werden. Wetterfunktionen (z. B. Wetterhinweise, Pooltipps, Vorhersage für morgen) können auch einzeln über „ai.weather.switches.*“ aktiviert oder deaktiviert werden. Der Adapter nutzt den Open-Meteo-Dienst zur Generierung von Wetterdaten. Hierzu werden die in ioBroker hinterlegten Geokoordinaten (Breitengrad und Längengrad aus system.config) benötigt.",
84
- "Note: The warning resets automatically once the temperature drops 10% below the configured threshold.": "Hinweis: Die Warnung wird automatisch zurückgesetzt, sobald die Temperatur 10 % unter den konfigurierten Schwellenwert fällt.",
85
- "Note: These settings are mainly used as initial values when PoolControl is set up for the first time. Later operation should be done via the PoolControl datapoints or your visualization. Existing runtime datapoints are not overwritten on adapter restart.": "Hinweis: Diese Einstellungen werden hauptsächlich als Anfangswerte bei der ersten Einrichtung von PoolControl verwendet. Die spätere Bedienung sollte über die PoolControl-Datenpunkte oder Ihre Visualisierung erfolgen. Vorhandene Laufzeitdatenpunkte werden beim Neustart des Adapters nicht überschrieben.",
86
- "Object ID Auxiliary pump 1": "Objekt-ID Hilfspumpe 1",
87
- "Object ID Auxiliary pump 2": "Objekt-ID Hilfspumpe 2",
88
- "Object ID Auxiliary pump 3": "Objekt-ID Hilfspumpe 3",
89
- "Object ID Collector Sensor": "Objekt-ID Kollektortemperatursensor",
90
- "Object ID Current Power (W)": "Objekt-ID aktuelle Leistung (W)",
91
- "Object ID Flow Sensor": "Objekt-ID Vorlauftemperatursensor",
92
- "Object ID Ground Sensor": "Objekt-ID Bodentemperatursensor",
93
- "Object ID Heating / Heat Pump": "Objekt-ID Heizung/Wärmepumpe",
94
- "Object ID Lighting 1": "Objekt-ID Beleuchtung 1",
95
- "Object ID Lighting 2": "Objekt-ID Beleuchtung 2",
96
- "Object ID Lighting 3": "Objekt-ID Beleuchtung 3",
97
- "Object ID Outside Temperature Sensor": "Objekt-ID Außentemperatursensor",
98
- "Object ID PV generation power (W)": "Objekt-ID PV-Erzeugungsleistung (W)",
99
- "Object ID Pressure Sensor (bar)": "Objekt-ID Drucksensor (bar)",
100
- "Object ID Pump Switch Socket": "Objekt-ID Pumpensteckdose",
101
- "Object ID Return Sensor": "Objekt-ID Rücklauftemperatursensor",
102
- "Object ID Surface Sensor": "Objekt-ID Oberflächentemperatursensor",
103
- "Object ID external kWh meter": "Objekt-ID externer kWh-Zähler",
104
- "Object ID house consumption (W)": "Objekt-ID Hausverbrauch (W)",
105
- "Open documentation (English) on GitHub": "Öffnen Sie die Dokumentation (Englisch) auf GitHub",
106
- "Open documentation (German) on GitHub": "Öffnen Sie die Dokumentation (Deutsch) auf GitHub",
107
- "Optional additional actuators can be configured here. Actuators are only created in the adapter if they are explicitly enabled.": "Hier können optional weitere Aktoren konfiguriert werden. Aktoren werden nur dann im Adapter angelegt, wenn sie explizit aktiviert sind.",
108
- "PV, Consumption & Costs": "PV, Verbrauch & Kosten",
109
- "Photovoltaics (Surplus detection)": "Photovoltaik (Überschusserkennung)",
110
- "Pool Name": "Poolname",
111
- "Pool Season Active": "Poolsaison aktiv",
112
- "Pool Size (Liters)": "Poolgröße (Liter)",
113
- "Pressure Sensor (Filter Pressure)": "Drucksensor (Filterdruck)",
114
- "Pump": "Pumpe",
115
- "Pump Data Points (Smart Socket & Current Power Consumption)": "Pumpendatenpunkte (Smart Plug und aktueller Stromverbrauch)",
116
- "Pump Flow Rate (l/h)": "Pumpendurchflussrate (l/h)",
117
- "Pump Settings (Rated Power)": "Pumpeneinstellungen (Nennleistung)",
118
- "Pump mode (Auto/Manual/Off/Timer) can be controlled via data point 'pump.mode'.": "Der Pumpenmodus (Auto/Manuell/Aus/Timer) kann über den Datenpunkt „pump.mode“ gesteuert werden.",
119
- "Recipient address": "Empfängeradresse",
120
- "Safety Functions": "Sicherheitsfunktionen",
121
- "Saturday": "Samstag",
122
- "Season Settings": "Saisoneinstellungen",
123
- "Solar / Heating Control": "Solar-/Heizungssteuerung",
124
- "Speech Output": "Sprachausgabe",
125
- "Start (HH:MM)": "Start (HH:MM)",
126
- "Sunday": "Sonntag",
127
- "Switch Smart Plug (On / Off)": "Smart Plug ein-/ausschalten",
128
- "Target Pool Temperature (°C)": "Soll-Pooltemperatur (°C)",
129
- "Telegram": "Telegram",
130
- "Telegram instance": "Telegram-Instanz",
131
- "Telegram recipients (usernames, comma separated / empty = send to all users)": "Telegram-Empfänger (Benutzernamen, durch Kommas getrennt / leer = an alle Benutzer senden)",
132
- "Temperature Management": "Temperaturmanagement",
133
- "Temperature Sensors": "Temperatursensoren",
134
- "Temperature threshold for announcement (°C)": "Temperaturschwelle für Ansagen (°C)",
135
- "The AI system (aiHelper & aiForecastHelper) retrieves weather data from Open-Meteo via HTTPS. It uses the geo-coordinates from the ioBroker system configuration (system.config › latitude/longitude). No data is stored or transmitted to third parties. Without valid geo-coordinates, the AI system cannot generate forecasts.": "Das KI-System (aiHelper & aiForecastHelper) ruft Wetterdaten von Open-Meteo über HTTPS ab. Es verwendet die Geokoordinaten aus der ioBroker-Systemkonfiguration (system.config › Breitengrad/Längengrad). Es werden keine Daten gespeichert oder an Dritte übermittelt. Ohne gültige Geokoordinaten kann das KI-System keine Prognosen erstellen.",
136
- "The PoolControl adapter works completely locally by default. Currently, only the AI features access weather data from Open-Meteo via encrypted HTTPS. Only the geo-coordinates stored in ioBroker (latitude and longitude) are transmitted. No additional data is stored or sent to third parties. Future optional internet services may be added, but they will always be clearly marked.": "Der PoolControl-Adapter arbeitet standardmäßig vollständig lokal. Derzeit greifen nur die KI-Funktionen über verschlüsseltes HTTPS auf Wetterdaten von Open-Meteo zu. Es werden ausschließlich die im ioBroker hinterlegten Geokoordinaten (Breitengrad und Längengrad) übermittelt. Es werden keine darüber hinausgehenden Daten gespeichert oder an Dritte weitergegeben. Zukünftige optionale Internetdienste können hinzugefügt werden, sie werden jedoch immer deutlich gekennzeichnet sein.",
137
- "These warning values are used as initial values when the datapoints are created for the first time. Later changes should be made via 'solar.warn_active', 'solar.warn_temp' and 'solar.warn_speech' or your visualization.": "Diese Warnwerte werden als Anfangswerte verwendet, wenn die Datenpunkte zum ersten Mal erstellt werden. Spätere Änderungen sollten über „solar.warn_active“, „solar.warn_temp“ und „solar.warn_speech“ oder Ihre Visualisierung vorgenommen werden.",
138
- "This value is used as the initial season status when the datapoint is created for the first time. Later changes should be made via 'status.season_active' or your visualization.": "Dieser Wert wird als anfänglicher Saisonstatus verwendet, wenn der Datenpunkt zum ersten Mal erstellt wird. Spätere Änderungen sollten über „status.season_active“ oder Ihre Visualisierung vorgenommen werden.",
139
- "Threshold for PV surplus (W)": "Schwelle für PV-Überschuss (W)",
140
- "Thursday": "Donnerstag",
141
- "Time Control": "Zeitsteuerung",
142
- "Time Window 2": "Zeitfenster 2",
143
- "Time Window 3": "Zeitfenster 3",
144
- "Time Windows": "Zeitfenster",
145
- "Tuesday": "Dienstag",
146
- "Type of Heating Control": "Art der Heizungssteuerung",
147
- "Use Collector Sensor": "Kollektortemperatursensor verwenden",
148
- "Use Flow Sensor": "Vorlauftemperatursensor verwenden",
149
- "Use Ground Sensor": "Bodentemperatursensor verwenden",
150
- "Use Hysteresis Control": "Hysterese verwenden",
151
- "Use Outside Temperature Sensor": "Außentemperatursensor verwenden",
152
- "Use Pressure Sensor": "Drucksensor verwenden",
153
- "Use Return Sensor": "Rücklauftemperatursensor verwenden",
154
- "Use Surface Sensor": "Oberflächentemperatursensor verwenden",
155
- "Voice": "Stimme",
156
- "Volume (0–100)": "Lautstärke (0–100)",
157
- "Wednesday": "Mittwoch"
158
- }