iobroker.go-e-charger 1.4.0 → 1.5.0

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 CHANGED
@@ -78,7 +78,7 @@ Configure the object IDs of the following states:
78
78
  | Home power consumption | Total current household demand | W | Positive consumption |
79
79
  | Home battery state of charge | Current battery charge level | % | 0 to 100 |
80
80
 
81
- All three states must contain numeric values. Power values in kW must be converted to W before they are selected. A grid import/export state cannot be used directly because ChargeManager currently expects separate generation and consumption values.
81
+ All configured states must contain numeric values. Power values in kW must be converted to W before they are selected. A grid import/export state cannot be used directly because ChargeManager currently expects separate generation and consumption values.
82
82
 
83
83
  If no home battery is installed, create a numeric helper state and select it as the battery state of charge. Set this helper to the **same constant value** as `Settings.Setpoint_HomeBatSoC` (for example `70` for both). This keeps the battery offset at zero, so ChargeManager charges purely from the available PV surplus.
84
84
 
@@ -97,15 +97,22 @@ available power =
97
97
  solar power
98
98
  - home power consumption
99
99
  + wallbox power, if it is included in home power consumption
100
- - 100 W reserve
100
+ - grid reserve
101
101
  + battery SoC offset
102
102
 
103
103
  target current = floor(available power / 230 V / active phases)
104
104
  ```
105
105
 
106
- The battery offset is zero when the battery is exactly at the configured minimum state of charge and increases up to 2,000 W as the battery approaches 100%. Below `Settings.Setpoint_HomeBatSoC`, EV charging is disabled so that the home battery has priority.
106
+ Four settings on the standard configuration page tune this calculation:
107
107
 
108
- The calculated current is limited to a maximum of 16 A. The internal current target changes by at most 1 A per poll cycle to reduce sudden changes.
108
+ - **Grid reserve power** [W] (default 100) – power kept free on the grid connection instead of being assigned to the car. Increase it to keep more safety headroom; set it to `0` to hand the full surplus to the car.
109
+ - **Maximum battery bonus** [W] (default 2000) – how much extra power, on top of the pure solar surplus, may be drawn while the home battery is above its minimum state of charge. The bonus is `0` when the battery is exactly at the minimum SoC and grows linearly to this maximum as the battery approaches 100 %, so a fuller battery lets the car charge faster. Set it to `0` to charge purely from the measured solar surplus without ever discharging the home battery into the car.
110
+ - **Minimum ChargeManager current** [A] (default 6) – the surplus charging current below which the charger is switched off after a short delay. This applies to PV surplus charging only.
111
+ - **Maximum charging current** [A] (default 16, up to 32) – the highest current the adapter will ever assign. It caps **both** ChargeManager (PV surplus) **and** ChargeNOW.
112
+
113
+ > **⚠️ Do not set the maximum charging current higher than your go-e Charger hardware and your electrical installation support.** go-e Charger models are rated for different maximum currents (e.g. 16 A or 32 A), and the actual limit also depends on your cable, plug and wiring. Setting a value above the hardware/installation rating can trip protection devices or damage equipment. When in doubt, keep the default of 16 A.
114
+
115
+ Below `Settings.Setpoint_HomeBatSoC`, EV charging is disabled so that the home battery has priority. Charging starts once the internal target reaches 10 A (or the minimum current if it is set higher). The calculated current is limited to the configured maximum, and the internal current target changes by at most 1 A per poll cycle to reduce sudden changes.
109
116
 
110
117
  #### Enabling ChargeManager
111
118
 
@@ -153,7 +160,7 @@ Before relying on automatic charging, verify the selected input states in the io
153
160
  6. `Wallbox_0.info.connection` is `true`.
154
161
  7. `Wallbox_0.Power.Charge`, `Wallbox_0.Power.GridPhases`, and, on supported hardware, `Wallbox_0.Power.EnabledPhases` contain plausible values.
155
162
 
156
- Charging may take several poll cycles to start because the internal target increases by only 1 A per cycle. With the default 10-second cycle and an initial target of 0 A, reaching the 10 A starting point can take approximately 100 seconds.
163
+ Charging may take several poll cycles to start because the internal target increases by only 1 A per cycle. With the default 10-second cycle and an initial target of 0 A, reaching the default 10 A starting point can take approximately 100 seconds.
157
164
 
158
165
  ChargeManager is currently intended to control one charger. Enabling it for multiple chargers at the same time results in each charger independently using the same surplus and can cause incorrect allocation.
159
166
 
@@ -172,6 +179,20 @@ If you enjoyed this project – or are just feeling generous – consider buying
172
179
  Placeholder for the next version (at the beginning of the line):
173
180
  ### **WORK IN PROGRESS**
174
181
  -->
182
+ ### 1.5.0 (2026-08-25)
183
+
184
+ - (hombach) ChargeManager: grid reserve power and maximum battery bonus are now configurable (defaults 100 W / 2000 W) (#852)
185
+ - (hombach) ChargeManager: minimum and maximum surplus charging current are now configurable, with the maximum raised to up to 32 A (#852)
186
+ - (hombach) the configurable maximum charging current now caps ChargeNOW as well
187
+ - (hombach) admin: moved the ChargeManager settings into their own configuration tab, separate from the standard settings
188
+ - (hombach) updated dependencies
189
+
190
+ ### 1.4.1 (2026-08-23)
191
+
192
+ - (typhosj) refactored the ChargeManager control decision into a deterministic, unit-tested function (#846); behavior unchanged
193
+ - (hombach) fixed vulnerabilities
194
+ - (hombach) updated dependencies
195
+
175
196
  ### 1.4.0 (2026-08-10)
176
197
 
177
198
  - (hombach) added info.unlockedByRFIDName with the name of the current session's RFID card, in parallel to unlockedByRFIDNo (#634)
@@ -192,19 +213,6 @@ If you enjoyed this project – or are just feeling generous – consider buying
192
213
  - (hombach) tightened TypeScript types for go-e API response fields (removed any)
193
214
  - (hombach) updated dependencies
194
215
 
195
- ### 1.2.1 (2026-07-31)
196
-
197
- - (typhosj) made ChargeManager surplus control more fail-safe: input validation, current clamped to 0-16 A, resilience of state-machine loop (#841)
198
- - (hombach) added support for firmware V60.5 (#800) and V60.6 (#844)
199
- - (typhosj) added ChargeManager PV surplus configuration guide (#842)
200
- - (hombach) corrected no-battery helper-state recommendation for ChargeManager
201
- - (hombach) updated dependencies
202
-
203
- ### 1.2.0 (2026-07-12)
204
-
205
- - (hombach) added statisticsGlobal.chargePower state with the current total charging power of all chargers
206
- - (hombach) removed chai-based unit test dependencies; modernized test harness to Node.js assert (fixes Appveyor, #836)
207
-
208
216
  [Older changelogs can be found there](CHANGELOG_OLD.md)
209
217
 
210
218
  ## License
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "Minimaler Strom muss kleiner oder gleich dem maximalen Strom sein",
3
+ "ERR_maxCurrentBelowMin": "Maximaler Strom muss größer oder gleich dem minimalen Strom sein",
2
4
  "LBL_chargerName": "Name der Wallbox",
3
5
  "LBL_cycleTime": "Zeit zwischen Datenabfragen von der Wallbox [ms]",
4
6
  "LBL_ipAddress": "IP-Adresse des go-eChargers",
5
7
  "LBL_readOnlyMode": "Nur-Lese-Modus - Ladefreigabe wird nicht an die Wallbox gesendet (zur Nutzung von RFID-Tags)",
6
8
  "LBL_standardSettings": "Standardeinstellungen",
9
+ "LBL_chargeManagerSettings": "ChargeManager-Einstellungen",
7
10
  "LBL_stateHomeBatSoc": "Objekt-ID für den aktuellen Ladezustand der Hausbatterie [%]",
8
11
  "LBL_stateHomePowerConsumption": "Objekt-ID für den aktuellen Hausstromverbrauch [W]",
9
12
  "LBL_stateHomeSolarPower": "Objekt-ID für die aktuell verfügbare Solarleistung [W]",
10
13
  "LBL_subtractSelfConsumption": "Verbrauch der Wallbox ist im Hausstromverbrauch enthalten",
14
+ "LBL_chargeManagerReservePower": "Netzreserveleistung, die frei bleibt statt das Auto zu laden [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Maximaler Batteriebonus, der dem Überschuss nahe 100% SoC zugerechnet wird [W]",
16
+ "LBL_chargeManagerMinCurrent": "Minimaler ChargeManager-Strom für PV-Überschussladen [A]",
17
+ "LBL_maxChargeCurrent": "Maximaler Ladestrom für ChargeManager und ChargeNOW [A]",
11
18
  "LBL_wallBoxList": "Wallbox-Liste"
12
19
  }
@@ -1,10 +1,17 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "Minimum current must be less than or equal to maximum current",
3
+ "ERR_maxCurrentBelowMin": "Maximum current must be greater than or equal to minimum current",
2
4
  "LBL_standardSettings": "Standard settings",
5
+ "LBL_chargeManagerSettings": "ChargeManager settings",
3
6
  "LBL_cycleTime": "Time between data polls from the charger [ms]",
4
7
  "LBL_stateHomeSolarPower": "Object ID for the currently available solar power [W]",
5
8
  "LBL_stateHomeBatSoc": "Object ID for the current state of charge of the home battery [%]",
6
9
  "LBL_stateHomePowerConsumption": "Object ID for the current home power consumption [W]",
7
10
  "LBL_subtractSelfConsumption": "Charger consumption is included in the home power consumption value",
11
+ "LBL_chargeManagerReservePower": "Grid reserve power kept free instead of charging the car [W]",
12
+ "LBL_chargeManagerMaxBatteryBonus": "Maximum battery bonus added to the surplus near 100% SoC [W]",
13
+ "LBL_chargeManagerMinCurrent": "Minimum ChargeManager current for PV surplus charging [A]",
14
+ "LBL_maxChargeCurrent": "Maximum charging current for ChargeManager and ChargeNOW [A]",
8
15
  "LBL_wallBoxList": "Wallbox list",
9
16
  "LBL_chargerName": "Charger name",
10
17
  "LBL_ipAddress": "IP address of the go-eCharger",
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "La corriente mínima debe ser menor o igual que la corriente máxima",
3
+ "ERR_maxCurrentBelowMin": "La corriente máxima debe ser mayor o igual que la corriente mínima",
2
4
  "LBL_chargerName": "Nombre del cargador",
3
5
  "LBL_cycleTime": "Tiempo entre consultas de datos del cargador [ms]",
4
6
  "LBL_ipAddress": "Dirección IP del go-eCharger",
5
7
  "LBL_readOnlyMode": "Modo de solo lectura - la autorización de carga no se envía al cargador (para usar etiquetas RFID)",
6
8
  "LBL_standardSettings": "Configuración estándar",
9
+ "LBL_chargeManagerSettings": "Ajustes del ChargeManager",
7
10
  "LBL_stateHomeBatSoc": "ID de objeto para el estado de carga actual de la batería doméstica [%]",
8
11
  "LBL_stateHomePowerConsumption": "ID de objeto para el consumo eléctrico actual del hogar [W]",
9
12
  "LBL_stateHomeSolarPower": "ID de objeto para la potencia solar disponible actualmente [W]",
10
13
  "LBL_subtractSelfConsumption": "El consumo del cargador está incluido en el valor del consumo eléctrico del hogar",
14
+ "LBL_chargeManagerReservePower": "Potencia de reserva de red que se mantiene libre en lugar de cargar el coche [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Bonificación máxima de batería añadida al excedente cerca del 100% de SoC [W]",
16
+ "LBL_chargeManagerMinCurrent": "Corriente mínima de ChargeManager para carga con excedente FV [A]",
17
+ "LBL_maxChargeCurrent": "Corriente máxima de carga para ChargeManager y ChargeNOW [A]",
11
18
  "LBL_wallBoxList": "Lista de wallboxes"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "Le courant minimal doit être inférieur ou égal au courant maximal",
3
+ "ERR_maxCurrentBelowMin": "Le courant maximal doit être supérieur ou égal au courant minimal",
2
4
  "LBL_chargerName": "Nom de la borne",
3
5
  "LBL_cycleTime": "Intervalle entre les interrogations de données de la borne [ms]",
4
6
  "LBL_ipAddress": "Adresse IP du go-eCharger",
5
7
  "LBL_readOnlyMode": "Mode lecture seule - l'autorisation de charge n'est pas envoyée à la borne (pour l'utilisation de badges RFID)",
6
8
  "LBL_standardSettings": "Paramètres standard",
9
+ "LBL_chargeManagerSettings": "Paramètres du ChargeManager",
7
10
  "LBL_stateHomeBatSoc": "ID d'objet pour l'état de charge actuel de la batterie domestique [%]",
8
11
  "LBL_stateHomePowerConsumption": "ID d'objet pour la consommation électrique actuelle du domicile [W]",
9
12
  "LBL_stateHomeSolarPower": "ID d'objet pour la puissance solaire actuellement disponible [W]",
10
13
  "LBL_subtractSelfConsumption": "La consommation de la borne est incluse dans la valeur de consommation électrique du domicile",
14
+ "LBL_chargeManagerReservePower": "Puissance de réserve réseau gardée libre au lieu de charger la voiture [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Bonus batterie maximal ajouté au surplus proche de 100% de SoC [W]",
16
+ "LBL_chargeManagerMinCurrent": "Courant minimal du ChargeManager pour la charge sur surplus PV [A]",
17
+ "LBL_maxChargeCurrent": "Courant de charge maximal pour ChargeManager et ChargeNOW [A]",
11
18
  "LBL_wallBoxList": "Liste des wallbox"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "La corrente minima deve essere minore o uguale alla corrente massima",
3
+ "ERR_maxCurrentBelowMin": "La corrente massima deve essere maggiore o uguale alla corrente minima",
2
4
  "LBL_chargerName": "Nome della wallbox",
3
5
  "LBL_cycleTime": "Intervallo tra le letture dei dati dalla wallbox [ms]",
4
6
  "LBL_ipAddress": "Indirizzo IP del go-eCharger",
5
7
  "LBL_readOnlyMode": "Modalità di sola lettura - l'autorizzazione alla ricarica non viene inviata alla wallbox (per l'uso di tag RFID)",
6
8
  "LBL_standardSettings": "Impostazioni standard",
9
+ "LBL_chargeManagerSettings": "Impostazioni ChargeManager",
7
10
  "LBL_stateHomeBatSoc": "ID oggetto per l'attuale stato di carica della batteria domestica [%]",
8
11
  "LBL_stateHomePowerConsumption": "ID oggetto per il consumo elettrico domestico attuale [W]",
9
12
  "LBL_stateHomeSolarPower": "ID oggetto per la potenza solare attualmente disponibile [W]",
10
13
  "LBL_subtractSelfConsumption": "Il consumo della wallbox è incluso nel valore del consumo elettrico domestico",
14
+ "LBL_chargeManagerReservePower": "Potenza di riserva di rete mantenuta libera invece di caricare l'auto [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Bonus massimo della batteria aggiunto al surplus vicino al 100% di SoC [W]",
16
+ "LBL_chargeManagerMinCurrent": "Corrente minima del ChargeManager per la carica con surplus FV [A]",
17
+ "LBL_maxChargeCurrent": "Corrente di carica massima per ChargeManager e ChargeNOW [A]",
11
18
  "LBL_wallBoxList": "Elenco delle wallbox"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "Minimale stroom moet kleiner dan of gelijk aan de maximale stroom zijn",
3
+ "ERR_maxCurrentBelowMin": "Maximale stroom moet groter dan of gelijk aan de minimale stroom zijn",
2
4
  "LBL_chargerName": "Naam van de wallbox",
3
5
  "LBL_cycleTime": "Tijd tussen gegevensopvragingen van de wallbox [ms]",
4
6
  "LBL_ipAddress": "IP-adres van de go-eCharger",
5
7
  "LBL_readOnlyMode": "Alleen-lezen modus - laadvrijgave wordt niet naar de wallbox gestuurd (voor gebruik met RFID-tags)",
6
8
  "LBL_standardSettings": "Standaardinstellingen",
9
+ "LBL_chargeManagerSettings": "ChargeManager-instellingen",
7
10
  "LBL_stateHomeBatSoc": "Object-ID voor de huidige laadtoestand van de thuisbatterij [%]",
8
11
  "LBL_stateHomePowerConsumption": "Object-ID voor het huidige stroomverbruik van de woning [W]",
9
12
  "LBL_stateHomeSolarPower": "Object-ID voor het momenteel beschikbare zonnevermogen [W]",
10
13
  "LBL_subtractSelfConsumption": "Het verbruik van de wallbox is inbegrepen in het stroomverbruik van de woning",
14
+ "LBL_chargeManagerReservePower": "Netreservevermogen dat vrij blijft in plaats van de auto te laden [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Maximale batterijbonus die bij het surplus wordt opgeteld nabij 100% SoC [W]",
16
+ "LBL_chargeManagerMinCurrent": "Minimale ChargeManager-stroom voor laden met PV-overschot [A]",
17
+ "LBL_maxChargeCurrent": "Maximale laadstroom voor ChargeManager en ChargeNOW [A]",
11
18
  "LBL_wallBoxList": "Wallbox-lijst"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "Prąd minimalny musi być mniejszy lub równy prądowi maksymalnemu",
3
+ "ERR_maxCurrentBelowMin": "Prąd maksymalny musi być większy lub równy prądowi minimalnemu",
2
4
  "LBL_chargerName": "Nazwa ładowarki",
3
5
  "LBL_cycleTime": "Czas między odczytami danych z ładowarki [ms]",
4
6
  "LBL_ipAddress": "Adres IP go-eCharger",
5
7
  "LBL_readOnlyMode": "Tryb tylko do odczytu - zezwolenie na ładowanie nie jest wysyłane do ładowarki (do użycia z tagami RFID)",
6
8
  "LBL_standardSettings": "Ustawienia standardowe",
9
+ "LBL_chargeManagerSettings": "Ustawienia ChargeManagera",
7
10
  "LBL_stateHomeBatSoc": "ID obiektu dla aktualnego stanu naładowania baterii domowej [%]",
8
11
  "LBL_stateHomePowerConsumption": "ID obiektu dla aktualnego zużycia energii w domu [W]",
9
12
  "LBL_stateHomeSolarPower": "ID obiektu dla aktualnie dostępnej mocy solarnej [W]",
10
13
  "LBL_subtractSelfConsumption": "Zużycie ładowarki jest uwzględnione w wartości zużycia energii w domu",
14
+ "LBL_chargeManagerReservePower": "Moc rezerwowa sieci pozostawiona wolna zamiast ładowania auta [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Maksymalny bonus baterii dodawany do nadwyżki blisko 100% SoC [W]",
16
+ "LBL_chargeManagerMinCurrent": "Minimalny prąd ChargeManager dla ładowania z nadwyżki PV [A]",
17
+ "LBL_maxChargeCurrent": "Maksymalny prąd ładowania dla ChargeManager i ChargeNOW [A]",
11
18
  "LBL_wallBoxList": "Lista wallboxów"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "A corrente mínima deve ser menor ou igual à corrente máxima",
3
+ "ERR_maxCurrentBelowMin": "A corrente máxima deve ser maior ou igual à corrente mínima",
2
4
  "LBL_chargerName": "Nome do carregador",
3
5
  "LBL_cycleTime": "Tempo entre consultas de dados do carregador [ms]",
4
6
  "LBL_ipAddress": "Endereço IP do go-eCharger",
5
7
  "LBL_readOnlyMode": "Modo somente leitura - a autorização de carregamento não é enviada ao carregador (para uso com etiquetas RFID)",
6
8
  "LBL_standardSettings": "Configurações padrão",
9
+ "LBL_chargeManagerSettings": "Configurações do ChargeManager",
7
10
  "LBL_stateHomeBatSoc": "ID do objeto para o estado de carga atual da bateria doméstica [%]",
8
11
  "LBL_stateHomePowerConsumption": "ID do objeto para o consumo de energia atual da casa [W]",
9
12
  "LBL_stateHomeSolarPower": "ID do objeto para a potência solar atualmente disponível [W]",
10
13
  "LBL_subtractSelfConsumption": "O consumo do carregador está incluído no valor do consumo de energia da casa",
14
+ "LBL_chargeManagerReservePower": "Potência de reserva da rede mantida livre em vez de carregar o carro [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Bônus máximo da bateria adicionado ao excedente perto de 100% de SoC [W]",
16
+ "LBL_chargeManagerMinCurrent": "Corrente mínima do ChargeManager para carregamento com excedente FV [A]",
17
+ "LBL_maxChargeCurrent": "Corrente de carga máxima para ChargeManager e ChargeNOW [A]",
11
18
  "LBL_wallBoxList": "Lista de wallboxes"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "Минимальный ток должен быть меньше или равен максимальному току",
3
+ "ERR_maxCurrentBelowMin": "Максимальный ток должен быть больше или равен минимальному току",
2
4
  "LBL_chargerName": "Название зарядной станции",
3
5
  "LBL_cycleTime": "Интервал между опросами данных зарядной станции [мс]",
4
6
  "LBL_ipAddress": "IP-адрес go-eCharger",
5
7
  "LBL_readOnlyMode": "Режим только для чтения - разрешение на зарядку не отправляется на зарядную станцию (для использования RFID-меток)",
6
8
  "LBL_standardSettings": "Стандартные настройки",
9
+ "LBL_chargeManagerSettings": "Настройки ChargeManager",
7
10
  "LBL_stateHomeBatSoc": "ID объекта для текущего уровня заряда домашнего аккумулятора [%]",
8
11
  "LBL_stateHomePowerConsumption": "ID объекта для текущего энергопотребления дома [Вт]",
9
12
  "LBL_stateHomeSolarPower": "ID объекта для текущей доступной солнечной мощности [Вт]",
10
13
  "LBL_subtractSelfConsumption": "Потребление зарядной станции включено в значение энергопотребления дома",
14
+ "LBL_chargeManagerReservePower": "Резерв мощности сети, остающийся свободным вместо зарядки авто [Вт]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Максимальный бонус батареи, добавляемый к избытку вблизи 100% SoC [Вт]",
16
+ "LBL_chargeManagerMinCurrent": "Минимальный ток ChargeManager для зарядки от избытка ФЭ [А]",
17
+ "LBL_maxChargeCurrent": "Максимальный ток зарядки для ChargeManager и ChargeNOW [А]",
11
18
  "LBL_wallBoxList": "Список зарядных станций"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "Мінімальний струм має бути меншим або рівним максимальному струму",
3
+ "ERR_maxCurrentBelowMin": "Максимальний струм має бути більшим або рівним мінімальному струму",
2
4
  "LBL_chargerName": "Назва зарядної станції",
3
5
  "LBL_cycleTime": "Інтервал між опитуваннями даних зарядної станції [мс]",
4
6
  "LBL_ipAddress": "IP-адреса go-eCharger",
5
7
  "LBL_readOnlyMode": "Режим лише для читання - дозвіл на заряджання не надсилається на зарядну станцію (для використання RFID-міток)",
6
8
  "LBL_standardSettings": "Стандартні налаштування",
9
+ "LBL_chargeManagerSettings": "Налаштування ChargeManager",
7
10
  "LBL_stateHomeBatSoc": "ID об'єкта для поточного рівня заряду домашньої батареї [%]",
8
11
  "LBL_stateHomePowerConsumption": "ID об'єкта для поточного енергоспоживання будинку [Вт]",
9
12
  "LBL_stateHomeSolarPower": "ID об'єкта для поточної доступної сонячної потужності [Вт]",
10
13
  "LBL_subtractSelfConsumption": "Споживання зарядної станції включено у значення енергоспоживання будинку",
14
+ "LBL_chargeManagerReservePower": "Резерв потужності мережі, що лишається вільним замість заряджання авто [Вт]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "Максимальний бонус батареї, що додається до надлишку біля 100% SoC [Вт]",
16
+ "LBL_chargeManagerMinCurrent": "Мінімальний струм ChargeManager для заряджання від надлишку ФЕ [А]",
17
+ "LBL_maxChargeCurrent": "Максимальний струм заряджання для ChargeManager і ChargeNOW [А]",
11
18
  "LBL_wallBoxList": "Список зарядних станцій"
12
19
  }
@@ -1,12 +1,19 @@
1
1
  {
2
+ "ERR_minCurrentAboveMax": "最小电流必须小于或等于最大电流",
3
+ "ERR_maxCurrentBelowMin": "最大电流必须大于或等于最小电流",
2
4
  "LBL_chargerName": "充电桩名称",
3
5
  "LBL_cycleTime": "从充电桩轮询数据的时间间隔 [ms]",
4
6
  "LBL_ipAddress": "go-eCharger 的 IP 地址",
5
7
  "LBL_readOnlyMode": "只读模式 - 充电许可不会发送到充电桩(用于 RFID 标签)",
6
8
  "LBL_standardSettings": "标准设置",
9
+ "LBL_chargeManagerSettings": "ChargeManager 设置",
7
10
  "LBL_stateHomeBatSoc": "家庭电池当前充电状态的对象ID [%]",
8
11
  "LBL_stateHomePowerConsumption": "家庭当前用电量的对象ID [W]",
9
12
  "LBL_stateHomeSolarPower": "当前可用太阳能功率的对象ID [W]",
10
13
  "LBL_subtractSelfConsumption": "充电桩的耗电量已包含在家庭用电量数值中",
14
+ "LBL_chargeManagerReservePower": "电网预留功率,保持空闲而不用于给车充电 [W]",
15
+ "LBL_chargeManagerMaxBatteryBonus": "接近100% SoC时叠加到盈余的最大电池附加功率 [W]",
16
+ "LBL_chargeManagerMinCurrent": "光伏盈余充电的 ChargeManager 最小电流 [A]",
17
+ "LBL_maxChargeCurrent": "ChargeManager 和 ChargeNOW 的最大充电电流 [A]",
11
18
  "LBL_wallBoxList": "充电桩列表"
12
19
  }
@@ -19,48 +19,6 @@
19
19
  "xl": 6,
20
20
  "newLine": true
21
21
  },
22
-
23
- "stateHomeSolarPower": {
24
- "type": "objectId",
25
- "label": "LBL_stateHomeSolarPower",
26
- "xs": 12,
27
- "sm": 6,
28
- "md": 6,
29
- "lg": 6,
30
- "xl": 6,
31
- "newLine": true
32
- },
33
- "stateHomeBatSoc": {
34
- "type": "objectId",
35
- "label": "LBL_stateHomeBatSoc",
36
- "xs": 12,
37
- "sm": 6,
38
- "md": 6,
39
- "lg": 6,
40
- "xl": 6,
41
- "newLine": false
42
- },
43
-
44
- "stateHomePowerConsumption": {
45
- "type": "objectId",
46
- "label": "LBL_stateHomePowerConsumption",
47
- "xs": 12,
48
- "sm": 6,
49
- "md": 6,
50
- "lg": 6,
51
- "xl": 6,
52
- "newLine": true
53
- },
54
- "subtractSelfConsumption": {
55
- "type": "checkbox",
56
- "label": "LBL_subtractSelfConsumption",
57
- "xs": 12,
58
- "sm": 6,
59
- "md": 6,
60
- "lg": 6,
61
- "xl": 6,
62
- "newLine": false
63
- },
64
22
  "wallBoxList": {
65
23
  "type": "accordion",
66
24
  "titleAttr": "chargerName",
@@ -106,6 +64,118 @@
106
64
  ]
107
65
  }
108
66
  }
67
+ },
68
+ "_ChargeManagerTab": {
69
+ "type": "panel",
70
+ "label": "LBL_chargeManagerSettings",
71
+ "items": {
72
+ "stateHomeSolarPower": {
73
+ "type": "objectId",
74
+ "label": "LBL_stateHomeSolarPower",
75
+ "xs": 12,
76
+ "sm": 6,
77
+ "md": 6,
78
+ "lg": 6,
79
+ "xl": 6,
80
+ "newLine": true
81
+ },
82
+ "stateHomeBatSoc": {
83
+ "type": "objectId",
84
+ "label": "LBL_stateHomeBatSoc",
85
+ "xs": 12,
86
+ "sm": 6,
87
+ "md": 6,
88
+ "lg": 6,
89
+ "xl": 6,
90
+ "newLine": false
91
+ },
92
+ "stateHomePowerConsumption": {
93
+ "type": "objectId",
94
+ "label": "LBL_stateHomePowerConsumption",
95
+ "xs": 12,
96
+ "sm": 6,
97
+ "md": 6,
98
+ "lg": 6,
99
+ "xl": 6,
100
+ "newLine": true
101
+ },
102
+ "subtractSelfConsumption": {
103
+ "type": "checkbox",
104
+ "label": "LBL_subtractSelfConsumption",
105
+ "xs": 12,
106
+ "sm": 6,
107
+ "md": 6,
108
+ "lg": 6,
109
+ "xl": 6,
110
+ "newLine": false
111
+ },
112
+ "chargeManagerReservePower": {
113
+ "type": "number",
114
+ "label": "LBL_chargeManagerReservePower",
115
+ "default": 100,
116
+ "min": 0,
117
+ "max": 2000,
118
+ "step": 10,
119
+ "unit": "W",
120
+ "xs": 12,
121
+ "sm": 6,
122
+ "md": 6,
123
+ "lg": 6,
124
+ "xl": 6,
125
+ "newLine": true
126
+ },
127
+ "chargeManagerMaxBatteryBonus": {
128
+ "type": "number",
129
+ "label": "LBL_chargeManagerMaxBatteryBonus",
130
+ "default": 2000,
131
+ "min": 0,
132
+ "max": 10000,
133
+ "step": 100,
134
+ "unit": "W",
135
+ "xs": 12,
136
+ "sm": 6,
137
+ "md": 6,
138
+ "lg": 6,
139
+ "xl": 6,
140
+ "newLine": false
141
+ },
142
+ "chargeManagerMinCurrent": {
143
+ "type": "number",
144
+ "label": "LBL_chargeManagerMinCurrent",
145
+ "default": 6,
146
+ "min": 6,
147
+ "max": 16,
148
+ "step": 1,
149
+ "unit": "A",
150
+ "validator": "data.chargeManagerMinCurrent <= data.maxChargeCurrent",
151
+ "validatorNoSaveOnError": true,
152
+ "validatorErrorText": "ERR_minCurrentAboveMax",
153
+ "xs": 12,
154
+ "sm": 6,
155
+ "md": 6,
156
+ "lg": 6,
157
+ "xl": 6,
158
+ "newLine": true
159
+ },
160
+ "maxChargeCurrent": {
161
+ "type": "number",
162
+ "label": "LBL_maxChargeCurrent",
163
+ "default": 16,
164
+ "min": 10,
165
+ "max": 32,
166
+ "step": 1,
167
+ "unit": "A",
168
+ "validator": "data.maxChargeCurrent >= data.chargeManagerMinCurrent",
169
+ "validatorNoSaveOnError": true,
170
+ "validatorErrorText": "ERR_maxCurrentBelowMin",
171
+ "xs": 12,
172
+ "sm": 6,
173
+ "md": 6,
174
+ "lg": 6,
175
+ "xl": 6,
176
+ "newLine": false
177
+ }
178
+ }
109
179
  }
110
180
  }
111
181
  }
@@ -1,28 +1,53 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_CHARGE_CURRENT = exports.MIN_CHARGE_CURRENT = void 0;
3
+ exports.DEFAULT_MAXIMUM_BATTERY_BONUS = exports.DEFAULT_RESERVE_POWER = exports.SHUTDOWN_DELAY_CYCLES = exports.START_CHARGE_CURRENT = exports.MAX_CHARGE_CURRENT = exports.MIN_CHARGE_CURRENT = void 0;
4
4
  exports.calculateOptimalChargeCurrent = calculateOptimalChargeCurrent;
5
5
  exports.stepChargeCurrent = stepChargeCurrent;
6
6
  exports.updateShutdownDelay = updateShutdownDelay;
7
+ exports.decideChargeManager = decideChargeManager;
7
8
  exports.buildChargerCommands = buildChargerCommands;
8
9
  exports.MIN_CHARGE_CURRENT = 6;
9
- exports.MAX_CHARGE_CURRENT = 16;
10
+ exports.MAX_CHARGE_CURRENT = 32;
11
+ exports.START_CHARGE_CURRENT = 10;
12
+ exports.SHUTDOWN_DELAY_CYCLES = 12;
13
+ exports.DEFAULT_RESERVE_POWER = 100;
14
+ exports.DEFAULT_MAXIMUM_BATTERY_BONUS = 2000;
10
15
  function calculateOptimalChargeCurrent(input) {
11
- const numericInputs = [input.solarPower, input.houseConsumption, input.chargerPower, input.batterySoc, input.minBatterySoc, input.phases];
16
+ const numericInputs = [
17
+ input.solarPower,
18
+ input.houseConsumption,
19
+ input.chargerPower,
20
+ input.batterySoc,
21
+ input.minBatterySoc,
22
+ input.reservePower,
23
+ input.maximumBatteryBonus,
24
+ input.maximumChargeCurrent,
25
+ input.phases,
26
+ ];
12
27
  if (!numericInputs.every(value => Number.isFinite(value))) {
13
28
  return null;
14
29
  }
15
- if ((input.phases !== 1 && input.phases !== 3) || input.batterySoc < 0 || input.batterySoc > 100 || input.minBatterySoc < 0 || input.minBatterySoc > 100) {
30
+ if ((input.phases !== 1 && input.phases !== 3) ||
31
+ input.batterySoc < 0 ||
32
+ input.batterySoc > 100 ||
33
+ input.minBatterySoc < 0 ||
34
+ input.minBatterySoc > 100 ||
35
+ input.reservePower < 0 ||
36
+ input.maximumBatteryBonus < 0 ||
37
+ !Number.isInteger(input.maximumChargeCurrent) ||
38
+ input.maximumChargeCurrent < exports.START_CHARGE_CURRENT ||
39
+ input.maximumChargeCurrent > exports.MAX_CHARGE_CURRENT) {
16
40
  return null;
17
41
  }
18
- const batteryOffset = input.minBatterySoc < 100 ? (2000 / (100 - input.minBatterySoc)) * (input.batterySoc - input.minBatterySoc) : 0;
19
- const availablePower = input.solarPower - input.houseConsumption + (input.subtractChargerPower ? input.chargerPower : 0) - 100 + batteryOffset;
42
+ const batteryOffset = input.minBatterySoc < 100 ? (input.maximumBatteryBonus / (100 - input.minBatterySoc)) * (input.batterySoc - input.minBatterySoc) : 0;
43
+ const availablePower = input.solarPower - input.houseConsumption + (input.subtractChargerPower ? input.chargerPower : 0) - input.reservePower + batteryOffset;
20
44
  const calculatedCurrent = Math.floor(availablePower / 230 / input.phases);
21
- return Math.max(0, Math.min(calculatedCurrent, exports.MAX_CHARGE_CURRENT));
45
+ return Math.max(0, Math.min(calculatedCurrent, input.maximumChargeCurrent));
22
46
  }
23
- function stepChargeCurrent(current, target) {
24
- const safeCurrent = Number.isFinite(current) ? Math.max(0, Math.min(Math.trunc(current), exports.MAX_CHARGE_CURRENT)) : 0;
25
- const safeTarget = Number.isFinite(target) ? Math.max(0, Math.min(Math.trunc(target), exports.MAX_CHARGE_CURRENT)) : 0;
47
+ function stepChargeCurrent(current, target, maximum = exports.MAX_CHARGE_CURRENT) {
48
+ const safeMaximum = Number.isInteger(maximum) && maximum >= exports.MIN_CHARGE_CURRENT && maximum <= exports.MAX_CHARGE_CURRENT ? maximum : exports.MAX_CHARGE_CURRENT;
49
+ const safeCurrent = Number.isFinite(current) ? Math.max(0, Math.min(Math.trunc(current), safeMaximum)) : 0;
50
+ const safeTarget = Number.isFinite(target) ? Math.max(0, Math.min(Math.trunc(target), safeMaximum)) : 0;
26
51
  if (safeCurrent < safeTarget) {
27
52
  return safeCurrent + 1;
28
53
  }
@@ -38,6 +63,55 @@ function updateShutdownDelay(current, minimum, previousDelay) {
38
63
  const safePreviousDelay = Number.isFinite(previousDelay) ? Math.max(0, Math.trunc(previousDelay)) : 0;
39
64
  return safePreviousDelay + 1;
40
65
  }
66
+ function decideChargeManager(input) {
67
+ const optimalCurrent = calculateOptimalChargeCurrent(input);
68
+ if (optimalCurrent === null ||
69
+ !Number.isInteger(input.minimumChargeCurrent) ||
70
+ input.minimumChargeCurrent < exports.MIN_CHARGE_CURRENT ||
71
+ input.minimumChargeCurrent > input.maximumChargeCurrent) {
72
+ return {
73
+ action: "disable",
74
+ reason: "invalid-input",
75
+ optimalCurrent: null,
76
+ nextState: { currentAmp: 0, shutdownDelay: 0 },
77
+ };
78
+ }
79
+ const currentAmp = stepChargeCurrent(input.state.currentAmp, optimalCurrent, input.maximumChargeCurrent);
80
+ const startChargeCurrent = Math.max(exports.START_CHARGE_CURRENT, input.minimumChargeCurrent);
81
+ const isRampingToRaisedMinimum = input.minimumChargeCurrent > exports.START_CHARGE_CURRENT && optimalCurrent >= input.minimumChargeCurrent && currentAmp < input.minimumChargeCurrent;
82
+ let shutdownDelay = isRampingToRaisedMinimum ? 0 : updateShutdownDelay(currentAmp, input.minimumChargeCurrent, input.state.shutdownDelay);
83
+ if (currentAmp >= startChargeCurrent) {
84
+ return {
85
+ action: "enable",
86
+ reason: "charging-current",
87
+ optimalCurrent,
88
+ nextState: { currentAmp, shutdownDelay },
89
+ };
90
+ }
91
+ if (currentAmp < input.minimumChargeCurrent) {
92
+ if (shutdownDelay > exports.SHUTDOWN_DELAY_CYCLES) {
93
+ shutdownDelay = 0;
94
+ return {
95
+ action: "disable",
96
+ reason: "insufficient-surplus",
97
+ optimalCurrent,
98
+ nextState: { currentAmp, shutdownDelay },
99
+ };
100
+ }
101
+ return {
102
+ action: "hold",
103
+ reason: "shutdown-delay",
104
+ optimalCurrent,
105
+ nextState: { currentAmp, shutdownDelay },
106
+ };
107
+ }
108
+ return {
109
+ action: "hold",
110
+ reason: "hysteresis",
111
+ optimalCurrent,
112
+ nextState: { currentAmp, shutdownDelay },
113
+ };
114
+ }
41
115
  function buildChargerCommands(allow, ampere, firmware) {
42
116
  if (!allow) {
43
117
  return [{ parameter: "alw", value: 0 }];
@@ -1 +1 @@
1
- {"version":3,"file":"chargeManagerUtils.js","sourceRoot":"","sources":["../../src/lib/chargeManagerUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chargeManagerUtils.js","sourceRoot":"","sources":["../../src/lib/chargeManagerUtils.ts"],"names":[],"mappings":";;;AAiFA,sEAoCC;AAUD,8CAYC;AAWD,kDAMC;AAaD,kDA0DC;AAcD,oDAYC;AA7PY,QAAA,kBAAkB,GAAG,CAAC,CAAC;AACvB,QAAA,kBAAkB,GAAG,EAAE,CAAC;AACxB,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAC1B,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAC3B,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAC5B,QAAA,6BAA6B,GAAG,IAAI,CAAC;AA4ElD,SAAgB,6BAA6B,CAAC,KAA6B;IAC1E,MAAM,aAAa,GAAG;QACrB,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,gBAAgB;QACtB,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,aAAa;QACnB,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,mBAAmB;QACzB,KAAK,CAAC,oBAAoB;QAC1B,KAAK,CAAC,MAAM;KACZ,CAAC;IACF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IACC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1C,KAAK,CAAC,UAAU,GAAG,CAAC;QACpB,KAAK,CAAC,UAAU,GAAG,GAAG;QACtB,KAAK,CAAC,aAAa,GAAG,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,GAAG;QACzB,KAAK,CAAC,YAAY,GAAG,CAAC;QACtB,KAAK,CAAC,mBAAmB,GAAG,CAAC;QAC7B,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC7C,KAAK,CAAC,oBAAoB,GAAG,4BAAoB;QACjD,KAAK,CAAC,oBAAoB,GAAG,0BAAkB,EAC9C,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3J,MAAM,cAAc,GACnB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,aAAa,CAAC;IACxI,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC7E,CAAC;AAUD,SAAgB,iBAAiB,CAAC,OAAe,EAAE,MAAc,EAAE,OAAO,GAAG,0BAAkB;IAC9F,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,0BAAkB,IAAI,OAAO,IAAI,0BAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0BAAkB,CAAC;IAC/I,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAExG,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;QAC9B,OAAO,WAAW,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;QAC9B,OAAO,WAAW,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAWD,SAAgB,mBAAmB,CAAC,OAAe,EAAE,OAAe,EAAE,aAAqB;IAC1F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;QAClF,OAAO,CAAC,CAAC;IACV,CAAC;IACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,iBAAiB,GAAG,CAAC,CAAC;AAC9B,CAAC;AAaD,SAAgB,mBAAmB,CAAC,KAAmC;IACtE,MAAM,cAAc,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IAC5D,IACC,cAAc,KAAK,IAAI;QACvB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAC7C,KAAK,CAAC,oBAAoB,GAAG,0BAAkB;QAC/C,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,EACtD,CAAC;QACF,OAAO;YACN,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,eAAe;YACvB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE;SAC9C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACzG,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,4BAAoB,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAGtF,MAAM,wBAAwB,GAC7B,KAAK,CAAC,oBAAoB,GAAG,4BAAoB,IAAI,cAAc,IAAI,KAAK,CAAC,oBAAoB,IAAI,UAAU,GAAG,KAAK,CAAC,oBAAoB,CAAC;IAC9I,IAAI,aAAa,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAE1I,IAAI,UAAU,IAAI,kBAAkB,EAAE,CAAC;QACtC,OAAO;YACN,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,kBAAkB;YAC1B,cAAc;YACd,SAAS,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE;SACxC,CAAC;IACH,CAAC;IAED,IAAI,UAAU,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7C,IAAI,aAAa,GAAG,6BAAqB,EAAE,CAAC;YAC3C,aAAa,GAAG,CAAC,CAAC;YAClB,OAAO;gBACN,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,sBAAsB;gBAC9B,cAAc;gBACd,SAAS,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE;aACxC,CAAC;QACH,CAAC;QAED,OAAO;YACN,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,gBAAgB;YACxB,cAAc;YACd,SAAS,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE;SACxC,CAAC;IACH,CAAC;IAED,OAAO;QACN,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,YAAY;QACpB,cAAc;QACd,SAAS,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE;KACxC,CAAC;AACH,CAAC;AAcD,SAAgB,oBAAoB,CAAC,KAAc,EAAE,MAAc,EAAE,QAAgB;IACpF,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,0BAAkB,IAAI,MAAM,GAAG,0BAAkB,EAAE,CAAC;QAC7F,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;QACN,EAAE,SAAS,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;QAChE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;KAC9B,CAAC;AACH,CAAC"}
package/build/main.js CHANGED
@@ -49,6 +49,10 @@ let solarPower = 0;
49
49
  let houseConsumption = 0;
50
50
  let totalChargeEnergy = 0;
51
51
  let totalChargePower = 0;
52
+ let chargeManagerReservePower = chargeManagerUtils_1.DEFAULT_RESERVE_POWER;
53
+ let chargeManagerMaxBatteryBonus = chargeManagerUtils_1.DEFAULT_MAXIMUM_BATTERY_BONUS;
54
+ let chargeManagerMinCurrent = chargeManagerUtils_1.MIN_CHARGE_CURRENT;
55
+ let maxChargeCurrent = chargeManagerUtils_1.MAX_CHARGE_CURRENT;
52
56
  class go_e_charger extends utils.Adapter {
53
57
  projectUtils = new projectUtils_1.ProjectUtils(this);
54
58
  wallboxInfoList = [];
@@ -80,6 +84,17 @@ class go_e_charger extends utils.Adapter {
80
84
  this.log.info(`Cycletime set to: ${this.config.cycleTime / 1000} seconds`);
81
85
  minHomeBatVal = await this.projectUtils.getStateValue("Settings.Setpoint_HomeBatSoC");
82
86
  this.log.debug(`Initial value for Setpoint HomeBatSoC: ${minHomeBatVal}%`);
87
+ chargeManagerReservePower = this.validateNonNegativeConfig(this.config.chargeManagerReservePower, chargeManagerUtils_1.DEFAULT_RESERVE_POWER, "chargeManagerReservePower");
88
+ chargeManagerMaxBatteryBonus = this.validateNonNegativeConfig(this.config.chargeManagerMaxBatteryBonus, chargeManagerUtils_1.DEFAULT_MAXIMUM_BATTERY_BONUS, "chargeManagerMaxBatteryBonus");
89
+ this.log.debug(`ChargeManager reserve: ${chargeManagerReservePower} W, max battery bonus: ${chargeManagerMaxBatteryBonus} W`);
90
+ chargeManagerMinCurrent = this.validateBoundedIntConfig(this.config.chargeManagerMinCurrent, chargeManagerUtils_1.MIN_CHARGE_CURRENT, chargeManagerUtils_1.MIN_CHARGE_CURRENT, chargeManagerUtils_1.MAX_CHARGE_CURRENT, "chargeManagerMinCurrent");
91
+ maxChargeCurrent = this.validateBoundedIntConfig(this.config.maxChargeCurrent, chargeManagerUtils_1.MAX_CHARGE_CURRENT, chargeManagerUtils_1.START_CHARGE_CURRENT, chargeManagerUtils_1.MAX_CHARGE_CURRENT, "maxChargeCurrent");
92
+ if (chargeManagerMinCurrent > maxChargeCurrent) {
93
+ this.log.warn(`chargeManagerMinCurrent (${chargeManagerMinCurrent} A) exceeds maxChargeCurrent (${maxChargeCurrent} A); using ${chargeManagerUtils_1.MIN_CHARGE_CURRENT}/${chargeManagerUtils_1.MAX_CHARGE_CURRENT} A`);
94
+ chargeManagerMinCurrent = chargeManagerUtils_1.MIN_CHARGE_CURRENT;
95
+ maxChargeCurrent = chargeManagerUtils_1.MAX_CHARGE_CURRENT;
96
+ }
97
+ this.log.debug(`ChargeManager current range: ${chargeManagerMinCurrent}-${maxChargeCurrent} A`);
83
98
  const wallBoxList = Array.isArray(this.config.wallBoxList) ? this.config.wallBoxList : [];
84
99
  this.config.wallBoxList = wallBoxList;
85
100
  if (!wallBoxList.length) {
@@ -102,7 +117,7 @@ class go_e_charger extends utils.Adapter {
102
117
  EnabledPhases: 0,
103
118
  MeasuredMaxChargeAmp: 0,
104
119
  MinAmp: 6,
105
- MaxAmp: 16,
120
+ MaxAmp: maxChargeCurrent,
106
121
  DelayOff: 0,
107
122
  CurrentHysteresis: 0,
108
123
  SetOptAmp: 5,
@@ -367,7 +382,8 @@ class go_e_charger extends utils.Adapter {
367
382
  await this.Read_ChargerAPIV2(iWB);
368
383
  }
369
384
  if (this.wallboxInfoList[iWB].ChargeNOW) {
370
- await this.Charge_Config("1", this.wallboxInfoList[iWB].ChargeCurrent, `activate go-eCharger for forced charging`, iWB);
385
+ const chargeNowCurrent = Math.min(this.wallboxInfoList[iWB].ChargeCurrent, maxChargeCurrent);
386
+ await this.Charge_Config("1", chargeNowCurrent, `activate go-eCharger for forced charging`, iWB);
371
387
  await this.Switch_3Phases(this.wallboxInfoList[iWB].Charge3Phase, iWB);
372
388
  if (this.wallboxInfoList[iWB].HardwareMin3) {
373
389
  await this.Read_ChargerAPIV2(iWB);
@@ -412,6 +428,26 @@ class go_e_charger extends utils.Adapter {
412
428
  this.scheduleStateMachine();
413
429
  }
414
430
  }
431
+ validateNonNegativeConfig(value, fallback, name) {
432
+ if (value === undefined || value === null) {
433
+ return fallback;
434
+ }
435
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
436
+ this.log.warn(`Config ${name} is invalid (${JSON.stringify(value)}); using ${fallback}`);
437
+ return fallback;
438
+ }
439
+ return value;
440
+ }
441
+ validateBoundedIntConfig(value, fallback, minimum, maximum, name) {
442
+ if (value === undefined || value === null) {
443
+ return fallback;
444
+ }
445
+ if (typeof value !== "number" || !Number.isInteger(value) || value < minimum || value > maximum) {
446
+ this.log.warn(`Config ${name} is invalid (${JSON.stringify(value)}); using ${fallback}`);
447
+ return fallback;
448
+ }
449
+ return value;
450
+ }
415
451
  async stopChargeManager(reason, iWB) {
416
452
  this.wallboxInfoList[iWB].SetAmp = 0;
417
453
  this.wallboxInfoList[iWB].DelayOff = 0;
@@ -628,33 +664,38 @@ class go_e_charger extends utils.Adapter {
628
664
  const Phases = this.wallboxInfoList[iWB].HardwareMin3 && this.wallboxInfoList[iWB].EnabledPhases
629
665
  ? this.wallboxInfoList[iWB].EnabledPhases
630
666
  : this.wallboxInfoList[iWB].GridPhases;
631
- const optimalCurrent = (0, chargeManagerUtils_1.calculateOptimalChargeCurrent)({
667
+ const decision = (0, chargeManagerUtils_1.decideChargeManager)({
632
668
  solarPower,
633
669
  houseConsumption,
634
670
  chargerPower: this.wallboxInfoList[iWB].ChargePower,
635
671
  subtractChargerPower: this.config.subtractSelfConsumption,
636
672
  batterySoc: batSoC,
637
673
  minBatterySoc: minHomeBatVal,
674
+ reservePower: chargeManagerReservePower,
675
+ maximumBatteryBonus: chargeManagerMaxBatteryBonus,
676
+ maximumChargeCurrent: maxChargeCurrent,
677
+ minimumChargeCurrent: chargeManagerMinCurrent,
638
678
  phases: Phases,
679
+ state: {
680
+ currentAmp: this.wallboxInfoList[iWB].SetAmp,
681
+ shutdownDelay: this.wallboxInfoList[iWB].DelayOff,
682
+ },
639
683
  });
640
- if (optimalCurrent === null) {
684
+ if (decision.optimalCurrent === null) {
641
685
  this.log.warn(`ChargeManager inputs are invalid for charger ${iWB}; charging will be disabled`);
642
686
  await this.stopChargeManager(`Invalid ChargeManager input`, iWB);
643
687
  return;
644
688
  }
645
- this.wallboxInfoList[iWB].SetOptAmp = optimalCurrent;
689
+ this.wallboxInfoList[iWB].SetOptAmp = decision.optimalCurrent;
646
690
  this.log.debug(`Optimal charging current would be: ${this.wallboxInfoList[iWB].SetOptAmp} A`);
647
- this.wallboxInfoList[iWB].SetAmp = (0, chargeManagerUtils_1.stepChargeCurrent)(this.wallboxInfoList[iWB].SetAmp, this.wallboxInfoList[iWB].SetOptAmp);
691
+ this.wallboxInfoList[iWB].SetAmp = decision.nextState.currentAmp;
692
+ this.wallboxInfoList[iWB].DelayOff = decision.nextState.shutdownDelay;
648
693
  this.log.debug(`ZielAmpere: ${this.wallboxInfoList[iWB].SetAmp} A; Solar: ${solarPower} W; House: ${houseConsumption} W; Charger: ${this.wallboxInfoList[iWB].ChargePower} W`);
649
- this.wallboxInfoList[iWB].DelayOff = (0, chargeManagerUtils_1.updateShutdownDelay)(this.wallboxInfoList[iWB].SetAmp, this.wallboxInfoList[iWB].MinAmp, this.wallboxInfoList[iWB].DelayOff);
650
- if (this.wallboxInfoList[iWB].SetAmp > 5 + 4) {
694
+ if (decision.action === "enable") {
651
695
  await this.Charge_Config("1", this.wallboxInfoList[iWB].SetAmp, `Charging current: ${this.wallboxInfoList[iWB].SetAmp} A`, iWB);
652
696
  }
653
- else if (this.wallboxInfoList[iWB].SetAmp < this.wallboxInfoList[iWB].MinAmp) {
654
- if (this.wallboxInfoList[iWB].DelayOff > 12) {
655
- await this.Charge_Config("0", this.wallboxInfoList[iWB].MinAmp, `Insufficient surplus`, iWB);
656
- this.wallboxInfoList[iWB].DelayOff = 0;
657
- }
697
+ else if (decision.action === "disable") {
698
+ await this.Charge_Config("0", this.wallboxInfoList[iWB].MinAmp, `Insufficient surplus`, iWB);
658
699
  }
659
700
  }
660
701
  isLikeEmpty(inputVar) {
package/build/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "go-e-charger",
4
- "version": "1.4.0",
4
+ "version": "1.5.0",
5
5
  "news": {
6
+ "1.5.0": {
7
+ "en": "ChargeManager: grid reserve power and maximum battery bonus are now configurable (defaults 100 W / 2000 W) (#852)\nChargeManager: minimum and maximum surplus charging current are now configurable, with the maximum raised to up to 32 A (#852)\nthe configurable maximum charging current now caps ChargeNOW as well\nadmin: moved the ChargeManager settings into their own configuration tab, separate from the standard settings\nupdated dependencies",
8
+ "de": "ChargeManager: Netzreserveleistung und maximaler Batteriebonus sind jetzt konfigurierbar (Standardwerte 100 W / 2000 W) (#852)\nChargeManager: Minimaler und maximaler Überschussladestrom sind jetzt konfigurierbar, wobei der Maximalwert auf bis zu 32 A erhöht wurde (#852).\nDer konfigurierbare maximale Ladestrom begrenzt nun auch ChargeNOW.\nAdmin: Die ChargeManager-Einstellungen wurden in einen eigenen Konfigurationsreiter verschoben, getrennt von den Standardeinstellungen.\naktualisierte Abhängigkeiten",
9
+ "ru": "ChargeManager: теперь можно настраивать резервную мощность сети и максимальный бонус батареи (по умолчанию 100 Вт / 2000 Вт) (#852)\nChargeManager: теперь можно настраивать минимальный и максимальный избыточный зарядный ток, при этом максимальное значение увеличено до 32 А (#852)\nТеперь настраиваемый максимальный зарядный ток также ограничивает работу ChargeNOW.\nАдминистратор: переместил настройки ChargeManager в отдельную вкладку конфигурации, отдельно от стандартных настроек.\nобновленные зависимости",
10
+ "pt": "ChargeManager: a potência de reserva da rede e o bônus máximo da bateria agora são configuráveis (padrões 100 W / 2000 W) (#852)\nChargeManager: as correntes de carregamento excedentes mínimas e máximas agora são configuráveis, com o máximo aumentado para até 32 A (#852)\nA corrente máxima de carregamento configurável agora também limita o ChargeNOW.\nAdministrador: moveu as configurações do ChargeManager para uma aba de configuração própria, separada das configurações padrão.\ndependências atualizadas",
11
+ "nl": "ChargeManager: netreservevermogen en maximale batterijbonus zijn nu configureerbaar (standaard 100 W / 2000 W) (#852)\nChargeManager: de minimale en maximale overtollige laadstroom zijn nu configureerbaar, waarbij het maximum is verhoogd tot 32 A (#852)\nDe instelbare maximale laadstroom beperkt nu ook ChargeNOW.\nadmin: heeft de ChargeManager-instellingen verplaatst naar een eigen configuratietabblad, los van de standaardinstellingen.\nbijgewerkte afhankelijkheden",
12
+ "fr": "ChargeManager : la puissance de réserve du réseau et le bonus de batterie maximal sont désormais configurables (valeurs par défaut 100 W / 2000 W) (#852)\nChargeManager : le courant de charge excédentaire minimum et maximum est désormais configurable, le maximum étant porté à 32 A (#852)\nLe courant de charge maximal configurable est désormais également limité pour ChargeNOW.\nadministrateur : a déplacé les paramètres de ChargeManager dans leur propre onglet de configuration, distinct des paramètres standard\ndépendances mises à jour",
13
+ "it": "ChargeManager: la potenza di riserva della rete e il bonus massimo della batteria sono ora configurabili (valori predefiniti 100 W / 2000 W) (#852)\nChargeManager: la corrente di carica in eccesso minima e massima è ora configurabile, con il valore massimo aumentato fino a 32 A (#852)\nla corrente di carica massima configurabile ora limita anche ChargeNOW\nadmin: le impostazioni di ChargeManager sono state spostate in una scheda di configurazione separata dalle impostazioni standard.\ndipendenze aggiornate",
14
+ "es": "ChargeManager: la potencia de reserva de la red y la bonificación máxima de la batería ahora son configurables (valores predeterminados 100 W / 2000 W) (#852)\nChargeManager: ahora se puede configurar la corriente de carga excedente mínima y máxima, y el máximo se ha aumentado hasta 32 A (#852).\nLa corriente de carga máxima configurable ahora también limita ChargeNOW.\nadministrador: movió la configuración de ChargeManager a su propia pestaña de configuración, separada de la configuración estándar.\ndependencias actualizadas",
15
+ "pl": "ChargeManager: rezerwowa moc sieci i maksymalny bonus akumulatora są teraz konfigurowalne (domyślnie 100 W / 2000 W) (#852)\nChargeManager: minimalny i maksymalny nadmiarowy prąd ładowania można teraz konfigurować, przy czym maksymalny prąd został podniesiony do 32 A (#852)\nkonfigurowalny maksymalny prąd ładowania ogranicza teraz również ChargeNOW\nadmin: przeniesiono ustawienia ChargeManager do osobnej zakładki konfiguracji, oddzielonej od ustawień standardowych\nzaktualizowane zależności",
16
+ "uk": "ChargeManager: резервна потужність мережі та максимальний бонус батареї тепер налаштовуються (за замовчуванням 100 Вт / 2000 Вт) (#852)\nChargeManager: тепер можна налаштувати мінімальний та максимальний надлишковий струм заряджання, а максимальне значення збільшено до 32 А (#852).\nналаштовуваний максимальний струм заряджання тепер також обмежує ChargeNOW\nадміністратор: перемістив налаштування ChargeManager на окрему вкладку конфігурації, окремо від стандартних налаштувань\nоновлені залежності",
17
+ "zh-cn": "ChargeManager:现在可以配置电网储备功率和最大电池奖励(默认值为 100 瓦/2000 瓦)(#852)\nChargeManager:现在可以配置最小和最大剩余充电电流,最大值提高到 32 A (#852)\n可配置的最大充电电流现在也限制了 ChargeNOW 的功能。\n管理员:已将 ChargeManager 设置移至单独的配置选项卡中,与标准设置分开。\n更新依赖项"
18
+ },
19
+ "1.4.1": {
20
+ "en": "refactored the ChargeManager control decision into a deterministic, unit-tested function (#846); behavior unchanged\nfixed vulnerabilities\nupdated dependencies",
21
+ "de": "refaktorisierung der ChargeManager-Kontrollentscheidung in eine deterministische, einheitsgeprüfte Funktion (#846); Verhalten unverändert\nfestanfälligkeiten\naktualisierte abhängigkeiten",
22
+ "ru": "рефакторное решение управления ChargeManager в детерминированную, проверенную на единицу функцию (#846); поведение без изменений\nфиксированные уязвимости\nобновленные зависимости",
23
+ "pt": "refatou a decisão de controle ChargeManager em uma função determinística testada por unidade (# 846); comportamento inalterado\nvulnerabilidades fixas\ndependências atualizadas",
24
+ "nl": "refactored the ChargeManager control decision into a deterministic, unit-getest function (#846); gedrag ongewijzigd\nvaste kwetsbaarheden\nbijgewerkte afhankelijkheden",
25
+ "fr": "reformulé la décision de contrôle de ChargeManager en une fonction déterministe, testée par unité (#846); comportement inchangé\nvulnérabilités fixes\ndépendances actualisées",
26
+ "it": "refactored la decisione di controllo ChargeManager in una funzione deterministica, test unitaria (#846); comportamento invariato\nvulnerabilità fisse\ndipendenze aggiornate",
27
+ "es": "refactored la decisión de control de ChargeManager en una función determinista y comprobada por unidad (#846); comportamiento sin cambios\nvulnerabilidades fijas\ndependencias actualizadas",
28
+ "pl": "przekształciła decyzję o kontroli ChargeManager w funkcję determinującą, jednotestową (# 846); zachowanie bez zmian\nstałe słabe punkty\nzaktualizowane zależności",
29
+ "uk": "рефакторовано рішення про контроль над платником податків у детерміналістичній, блок-тестованої функції (#846); поведінка незмінно\nфіксовані вразливості\nоновлені залежності",
30
+ "zh-cn": "将充电管理器控制决定重构为确定性单位测试函数(# 846); 行为不变\n固定脆弱性\n更新的依赖关系"
31
+ },
6
32
  "1.4.0": {
7
33
  "en": "added info.unlockedByRFIDName with the name of the current session's RFID card, in parallel to unlockedByRFIDNo (#634)\nprojectUtils: use extendObject instead of setObject in forceMode so user customizations survive restarts\nprojectUtils: fixed min/max/step value of 0 being dropped from number state definitions\nupdated dependencies",
8
34
  "de": "info.unlockedByRFIDName wurde um den Namen der RFID-Karte der aktuellen Sitzung ergänzt, parallel zu unlockedByRFIDNo (#634).\nprojectUtils: Verwenden Sie in forceMode extendObject anstelle von setObject, damit Benutzeranpassungen auch nach Neustarts erhalten bleiben.\nprojectUtils: Der Fehler, dass der Wert 0 für min/max/step aus den Zahlenzustandsdefinitionen entfernt wurde, wurde behoben.\naktualisierte Abhängigkeiten",
@@ -67,32 +93,6 @@
67
93
  "pl": "dodano statystykiGlobal.chargePower stan z aktualną całkowitą mocą ładowania wszystkich ładowarek\nusunięto zależności testów jednostkowych oparte na chai; zmodernizowano zestaw testów do Node.js assert (naprawiono Appveyor, #836)",
68
94
  "uk": "додано статистикуGlobal.chargeСтан зарядки з поточною загальною потужністю зарядки всіх зарядних пристроїв\nвидалено залежності модульних тестів на основі chai; модернізовано інтеграцію тестів з Node.js assert (виправлення Appveyor, #836)",
69
95
  "zh-cn": "添加了统计信息 Global.chargePower 状态,其中包含所有充电器的当前总充电功率。\n移除了基于 Chai 的单元测试依赖项;将测试框架现代化为 Node.js assert(修复了 Appveyor,#836)"
70
- },
71
- "1.1.0": {
72
- "en": "fixed reading of \"unlocked by RFID\" (uby) on gen 3+ chargers via API V2\nread-only mode now suppresses all control commands (charge release, charging current, phase switching)\nAdapter requires admin >= 7.8.23 now.",
73
- "de": "Behobene Lesefunktion für „per RFID entsperrt“ (uby) bei Ladegeräten der 3. Generation und höher über API V2\nIm Nur-Lese-Modus werden nun alle Steuerbefehle unterdrückt (Ladungsfreigabe, Ladestrom, Phasenumschaltung).\nDer Adapter benötigt jetzt Administratorrechte ab Version 7.8.23.",
74
- "ru": "Исправлено считывание сигнала \"разблокировано по RFID\" (uby) на зарядных устройствах 3-го поколения и выше через API V2.\nВ режиме только для чтения теперь подавляются все команды управления (разрядка, зарядный ток, переключение фаз).\nДля работы адаптера теперь требуется версия admin >= 7.8.23.",
75
- "pt": "Correção na leitura de \"desbloqueado por RFID\" (uby) em carregadores de 3ª geração ou posteriores via API V2.\nO modo somente leitura agora suprime todos os comandos de controle (liberação de carga, corrente de carga, comutação de fase).\nO adaptador agora requer o admin versão >= 7.8.23.",
76
- "nl": "Vaste uitlezing van \"ontgrendeld door RFID\" (uby) op laders van de derde generatie en later via API V2.\nDe alleen-lezen-modus onderdrukt nu alle besturingscommando's (ontlading, laadstroom, faseschakeling).\nDe adapter vereist nu admin >= 7.8.23.",
77
- "fr": "Correction de la lecture de « déverrouillé par RFID » (uby) sur les chargeurs de 3e génération et plus via l'API V2\nLe mode lecture seule supprime désormais toutes les commandes de contrôle (libération de charge, courant de charge, commutation de phase).\nL'adaptateur nécessite désormais une version d'administrateur supérieure ou égale à 7.8.23.",
78
- "it": "Lettura corretta di \"sbloccato tramite RFID\" (uby) sui caricabatterie di terza generazione e successive tramite API V2\nLa modalità di sola lettura ora sopprime tutti i comandi di controllo (rilascio della carica, corrente di carica, commutazione di fase)\nL'adattatore ora richiede admin >= 7.8.23.",
79
- "es": "Lectura corregida de \"desbloqueado por RFID\" (uby) en cargadores de tercera generación o superiores a través de la API V2.\nEl modo de solo lectura ahora suprime todos los comandos de control (liberación de carga, corriente de carga, conmutación de fase).\nEl adaptador ahora requiere admin >= 7.8.23.",
80
- "pl": "naprawiono odczyt „odblokowano przez RFID” (uby) na ładowarkach gen. 3+ za pośrednictwem API V2\ntryb tylko do odczytu teraz blokuje wszystkie polecenia sterujące (zwolnienie ładowania, prąd ładowania, przełączanie faz)\nAdapter wymaga teraz uprawnień administratora >= 7.8.23.",
81
- "uk": "виправлено зчитування напису \"розблоковано RFID\" (uby) на зарядних пристроях покоління 3+ через API V2\nрежим лише для читання тепер пригнічує всі команди керування (відключення заряду, струм зарядки, перемикання фаз)\nАдаптер тепер вимагає адміністратора версії >= 7.8.23.",
82
- "zh-cn": "通过 API V2 对第三代及以上充电器进行“RFID 解锁”(uby)的固定读取\n只读模式现在会抑制所有控制命令(充电释放、充电电流、相位切换)\n适配器现在需要管理员版本 >= 7.8.23。"
83
- },
84
- "1.0.4": {
85
- "en": "harmonized i18n files\nimproved README and English texts\nreworked translations in all languages\nadded 5s timeout to all HTTP requests to chargers\nfixed adapter stop when no charger is reachable at startup; warn per unreachable charger\nfixed German fallback text for RFID card channel names\nadded upper bound validation for cycle time\nadded link to manufacturer's website\ncode optimizations",
86
- "de": "harmonisierte i18n-Dateien\nverbesserte README- und englische Texte\nüberarbeitete Übersetzungen in allen Sprachen\nAllen HTTP-Anfragen an Ladegeräte wurde ein Timeout von 5 Sekunden hinzugefügt.\nBehobene Adapterabschaltung, wenn beim Start kein Ladegerät erreichbar ist; Warnung bei nicht erreichbarem Ladegerät\nKorrigierter deutscher Ausweichtext für RFID-Kartenkanalnamen\nValidierung der oberen Grenze für die Zykluszeit hinzugefügt\nLink zur Website des Herstellers hinzugefügt.\nCodeoptimierungen",
87
- "ru": "гармонизированные файлы i18n\nУлучшены файлы README и английский текст.\nПереработаны переводы на все языки.\nДобавлен 5-секундный таймаут ко всем HTTP-запросам к зарядным устройствам.\nАдаптер автоматически отключается при запуске, если зарядное устройство недоступно; при каждой недоступности зарядного устройства выдается предупреждение.\nИсправлен немецкий резервный текст для названий каналов RFID-карт.\nДобавлена проверка верхней границы времени цикла.\nДобавлена ссылка на сайт производителя.\nоптимизация кода",
88
- "pt": "Arquivos i18n harmonizados\nArquivo README e textos em inglês aprimorados.\nTraduções revisadas em todos os idiomas\nAdicionado um tempo limite de 5 segundos a todas as solicitações HTTP para carregadores.\nO adaptador fixo para de funcionar quando nenhum carregador está disponível na inicialização; exibe um aviso para cada carregador inacessível.\nTexto alternativo em alemão corrigido para nomes de canais de cartões RFID.\nAdicionada validação de limite superior para o tempo de ciclo.\nAdicionado link para o site do fabricante.\notimizações de código",
89
- "nl": "geharmoniseerde i18n-bestanden\nVerbeterde README en Engelse teksten\nHerziene vertalingen in alle talen\nEr is een time-out van 5 seconden toegevoegd aan alle HTTP-verzoeken aan opladers.\nDe vaste adapter stopt wanneer er bij het opstarten geen oplader bereikbaar is; er wordt een waarschuwing gegeven wanneer de oplader niet bereikbaar is.\nDe Duitse fallback-tekst voor RFID-kaartkanaalnamen is gecorrigeerd.\nValidatie van de bovengrens voor de cyclustijd toegevoegd.\nLink naar de website van de fabrikant toegevoegd\ncode-optimalisaties",
90
- "fr": "fichiers i18n harmonisés\nAmélioration du fichier README et des textes en anglais\ntraductions retravaillées dans toutes les langues\nAjout d'un délai d'attente de 5 secondes à toutes les requêtes HTTP adressées aux chargeurs.\nArrêt automatique de l'adaptateur secteur si aucun chargeur n'est accessible au démarrage ; avertissement en cas de chargeur inaccessible\nTexte de repli allemand corrigé pour les noms de canaux de cartes RFID\nAjout d'une validation de limite supérieure pour le temps de cycle\najout d'un lien vers le site web du fabricant\noptimisations de code",
91
- "it": "file i18n armonizzati\nFile README e testi in inglese migliorati.\ntraduzioni rielaborate in tutte le lingue\naggiunto un timeout di 5 secondi a tutte le richieste HTTP ai caricabatterie\nArresto fisso dell'adattatore quando nessun caricabatterie è raggiungibile all'avvio; avviso per ogni caricabatterie irraggiungibile\nTesto di fallback tedesco fisso per i nomi dei canali delle schede RFID\naggiunta la convalida del limite superiore per il tempo di ciclo\naggiunto il link al sito web del produttore\nottimizzazioni del codice",
92
- "es": "Archivos i18n armonizados\nREADME y textos en inglés mejorados\nTraducciones revisadas en todos los idiomas\nSe agregó un tiempo de espera de 5 segundos a todas las solicitudes HTTP a los cargadores.\nEl adaptador fijo se detiene cuando no hay ningún cargador disponible al encenderse; avisa cuando no hay ningún cargador disponible.\nSe corrigió el texto alternativo en alemán para los nombres de los canales de las tarjetas RFID.\nSe agregó validación de límite superior para el tiempo de ciclo.\nSe agregó un enlace al sitio web del fabricante.\noptimizaciones de código",
93
- "pl": "zharmonizowane pliki i18n\nulepszone pliki README i teksty w języku angielskim\nprzerobione tłumaczenia we wszystkich językach\ndodano 5-sekundowy limit czasu do wszystkich żądań HTTP do ładowarek\nstałe zatrzymanie adaptera, gdy podczas uruchamiania nie można uzyskać dostępu do ładowarki; ostrzeżenie w przypadku braku dostępu do ładowarki\nnaprawiono niemiecki tekst zastępczy dla nazw kanałów kart RFID\ndodano walidację górnej granicy czasu cyklu\ndodano link do strony producenta\noptymalizacje kodu",
94
- "uk": "гармонізовані файли i18n\nпокращений README та англійський текст\nперероблені переклади всіма мовами\nдодано 5-секундний тайм-аут для всіх HTTP-запитів до зарядних пристроїв\nвиправлено зупинку адаптера, коли зарядний пристрій недоступний під час запуску; попередження про кожен недоступний зарядний пристрій\nвиправлено резервний текст німецькою мовою для назв каналів RFID-карт\nдодано перевірку верхньої межі для часу циклу\nдодано посилання на сайт виробника\nоптимізації коду",
95
- "zh-cn": "统一的 i18n 文件\n改进了README文件和英文文本\n对所有语言的翻译进行了重新润色\n对所有发往充电器的HTTP请求增加5秒超时时间\n启动时,如果充电器无法连接,则固定适配器停止工作;对每个无法连接的充电器发出警告。\n修复了 RFID 卡通道名称的德语备用文本\n增加了周期时间的上限验证\n添加了制造商网站的链接\n代码优化"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -171,7 +171,11 @@
171
171
  "StateHomeBatSoc": "",
172
172
  "StateHomeSolarPower": "",
173
173
  "StateHomePowerConsumption": "",
174
- "SubtractSelfConsumption": true
174
+ "SubtractSelfConsumption": true,
175
+ "chargeManagerReservePower": 100,
176
+ "chargeManagerMaxBatteryBonus": 2000,
177
+ "chargeManagerMinCurrent": 6,
178
+ "maxChargeCurrent": 16
175
179
  },
176
180
  "objects": [],
177
181
  "instanceObjects": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.go-e-charger",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Adapter for reading go-eCharger data",
5
5
  "author": {
6
6
  "name": "Hombach",
@@ -35,7 +35,7 @@
35
35
  "@iobroker/eslint-config": "^2.3.4",
36
36
  "@iobroker/testing": "^5.3.0",
37
37
  "@iobroker/types": "^7.2.2",
38
- "@tsconfig/node22": "^22.0.5",
38
+ "@tsconfig/node22": "^22.0.6",
39
39
  "@types/node": "^22.20.1",
40
40
  "source-map-support": "^0.5.21",
41
41
  "ts-node": "^10.9.2",
@@ -69,5 +69,9 @@
69
69
  "bugs": {
70
70
  "url": "https://github.com/Hombach/ioBroker.go-e-charger/issues"
71
71
  },
72
- "readmeFilename": "README.md"
72
+ "readmeFilename": "README.md",
73
+ "allowScripts": {
74
+ "esbuild@0.25.10": true,
75
+ "protobufjs@7.6.5": true
76
+ }
73
77
  }