iobroker.go-e-charger 1.2.0 → 1.2.1

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
@@ -45,7 +45,7 @@ For more information about the go-e Charger hardware, visit the manufacturer's w
45
45
  - energy statistics per RFID card (card name, ID, and charged energy)
46
46
  - read-only mode per wallbox – monitor a charger purely, without sending **any** control commands to it (no charge release, no charging current, no phase switching), e.g. when charging is controlled elsewhere or access is managed via RFID tags
47
47
 
48
- Tested with firmware V033, V040.0, V041.0, V054.7, V054.11, V055.5, V055.7, V055.8, V56.1, V56.2, V56.8, V56.9, V56.11, V57.0, V57.1, V59.4, V60.0, V60.1, V60.2 and with up to 3 chargers operated in parallel.
48
+ Tested with firmware V033, V040.0, V041.0, V054.7, V054.11, V055.5, V055.7, V055.8, V56.1, V56.2, V56.8, V56.9, V56.11, V57.0, V57.1, V59.4, V60.0, V60.1, V60.2, V60.5, V60.6 and with up to 3 chargers operated in parallel.
49
49
 
50
50
  ### Requirements
51
51
 
@@ -58,15 +58,104 @@ Add one entry per go-e Charger to the wallbox list and enter its IP address. Opt
58
58
 
59
59
  Enable **read-only mode** for a charger if the adapter should only read its data and never write to it. In read-only mode the adapter sends no control commands at all – neither the charge release, nor the charging current, nor phase switching. The ChargeNOW and ChargeManager states can still be toggled, but they have no effect on a read-only charger. Use this mode when the charging of that wallbox is controlled by another system or managed locally via RFID tags.
60
60
 
61
- For PV surplus charging with ChargeManager, configure the object IDs of the following states from your PV system:
61
+ The poll cycle time defines how often the adapter reads data from the chargers and adjusts the charging current (minimum 3 seconds, default 10 seconds).
62
+
63
+ ### PV surplus charging with ChargeManager
64
+
65
+ ChargeManager calculates the charging current from numeric ioBroker states supplied by an energy-management, inverter, meter, or user-created data source. It does not depend on a particular vendor, but the selected states must represent the quantities described below.
66
+
67
+ Configure the object IDs of the following states:
62
68
 
63
69
  - currently available solar power [W]
64
70
  - current home power consumption [W]
65
71
  - current state of charge of your home battery [%]
66
72
 
67
- If the power consumption of the wallbox is already included in your home power consumption value, enable the corresponding checkbox so the adapter can correctly calculate the available surplus.
73
+ #### Input requirements
68
74
 
69
- The poll cycle time defines how often the adapter reads data from the chargers and adjusts the charging current (minimum 3 seconds, default 10 seconds).
75
+ | Input | Expected value | Unit | Sign |
76
+ | ---------------------------- | ------------------------------ | ---- | -------------------- |
77
+ | Solar power | Total current PV generation | W | Positive generation |
78
+ | Home power consumption | Total current household demand | W | Positive consumption |
79
+ | Home battery state of charge | Current battery charge level | % | 0 to 100 |
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.
82
+
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
+
85
+ #### Wallbox consumption in the home-consumption value
86
+
87
+ Enable **Charger consumption is included in the home power consumption value** when the selected home-consumption state rises by approximately the charging power after charging starts. ChargeManager then adds the measured wallbox power back before calculating the available surplus. This prevents the controller from treating its own charging load as additional household demand.
88
+
89
+ Leave the option disabled when the selected state already excludes wallbox consumption.
90
+
91
+ #### Calculation
92
+
93
+ ChargeManager uses the following calculation once per poll cycle:
94
+
95
+ ```text
96
+ available power =
97
+ solar power
98
+ - home power consumption
99
+ + wallbox power, if it is included in home power consumption
100
+ - 100 W reserve
101
+ + battery SoC offset
102
+
103
+ target current = floor(available power / 230 V / active phases)
104
+ ```
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.
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.
109
+
110
+ #### Enabling ChargeManager
111
+
112
+ After the adapter has started, use the writable states below. Replace instance `0` and wallbox number `0` where necessary.
113
+
114
+ | State | Purpose |
115
+ | ------------------------------------------------- | --------------------------------------------------------------- |
116
+ | `go-e-charger.0.Settings.Setpoint_HomeBatSoC` | Minimum home-battery SoC before surplus charging is allowed |
117
+ | `go-e-charger.0.Wallbox_0.Settings.ChargeManager` | Enables or disables PV surplus control |
118
+ | `go-e-charger.0.Wallbox_0.Settings.ChargeNOW` | Overrides ChargeManager and forces charging |
119
+ | `go-e-charger.0.Wallbox_0.Settings.ChargeCurrent` | Current used by ChargeNOW |
120
+ | `go-e-charger.0.Wallbox_0.Settings.Charge3Phase` | Selects one-phase or three-phase charging on supported hardware |
121
+
122
+ For surplus charging, set `ChargeNOW` to `false` and `ChargeManager` to `true`. When both are enabled, ChargeNOW takes precedence and uses the configured `ChargeCurrent` without considering the available surplus.
123
+
124
+ #### One-phase and three-phase charging
125
+
126
+ ChargeManager does not automatically switch between one and three phases according to the available surplus. On hardware generation 3 and newer, `Charge3Phase` selects the phase mode:
127
+
128
+ - `false`: one-phase charging
129
+ - `true`: three-phase charging
130
+
131
+ Because the current implementation starts charging when its internal target exceeds 9 A, the effective starting point is 10 A. This requires approximately 2.3 kW in one-phase mode or 6.9 kW in three-phase mode after the reserve and battery adjustments. One-phase mode therefore provides a wider operating range for smaller PV systems or variable weather.
132
+
133
+ #### Operating modes
134
+
135
+ | ChargeNOW | ChargeManager | Result |
136
+ | --------- | ------------- | ------------------------------------------ |
137
+ | `false` | `false` | Charging is disabled |
138
+ | `false` | `true` | Charging follows the calculated PV surplus |
139
+ | `true` | `false` | Forced charging at `ChargeCurrent` |
140
+ | `true` | `true` | ChargeNOW takes precedence |
141
+
142
+ In read-only mode, these states can still be changed but no resulting control command is sent to the charger.
143
+
144
+ #### Verification and troubleshooting
145
+
146
+ Before relying on automatic charging, verify the selected input states in the ioBroker object view:
147
+
148
+ 1. Solar power is close to zero at night and follows current generation during the day.
149
+ 2. Home power consumption remains positive and reacts plausibly when household loads are switched on.
150
+ 3. Battery state of charge remains between 0 and 100.
151
+ 4. All power values are expressed in W rather than kW.
152
+ 5. The wallbox-consumption option matches whether charging power is included in the selected home-consumption value.
153
+ 6. `Wallbox_0.info.connection` is `true`.
154
+ 7. `Wallbox_0.Power.Charge`, `Wallbox_0.Power.GridPhases`, and, on supported hardware, `Wallbox_0.Power.EnabledPhases` contain plausible values.
155
+
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.
157
+
158
+ 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.
70
159
 
71
160
  ## Sentry
72
161
 
@@ -83,6 +172,14 @@ If you enjoyed this project – or are just feeling generous – consider buying
83
172
  Placeholder for the next version (at the beginning of the line):
84
173
  ### **WORK IN PROGRESS**
85
174
  -->
175
+ ### 1.2.1 (2026-07-31)
176
+
177
+ - (typhosj) made ChargeManager surplus control more fail-safe: input validation, current clamped to 0-16 A, resilience of state-machine loop (#841)
178
+ - (hombach) added support for firmware V60.5 (#800) and V60.6 (#844)
179
+ - (typhosj) added ChargeManager PV surplus configuration guide (#842)
180
+ - (hombach) corrected no-battery helper-state recommendation for ChargeManager
181
+ - (hombach) updated dependencies
182
+
86
183
  ### 1.2.0 (2026-07-12)
87
184
 
88
185
  - (hombach) added statisticsGlobal.chargePower state with the current total charging power of all chargers
@@ -111,15 +208,6 @@ If you enjoyed this project – or are just feeling generous – consider buying
111
208
  - (hombach) added translations
112
209
  - (hombach) fixed state roles
113
210
 
114
- ### 1.0.2 (2026-07-01)
115
-
116
- - (hombach) fix RFID data readout for gen 3+ chargers via API V2 (#802)
117
- - (hombach) prepared for beta repo
118
- - (hombach) eliminate yarn
119
- - (hombach) upgraded adapter-core
120
- - (hombach) updated axios
121
- - (hombach) updated dependencies
122
-
123
211
  [Older changelogs can be found there](CHANGELOG_OLD.md)
124
212
 
125
213
  ## License
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Standardeinstellungen",
2
+ "LBL_chargerName": "Name der Wallbox",
3
3
  "LBL_cycleTime": "Zeit zwischen Datenabfragen von der Wallbox [ms]",
4
- "LBL_stateHomeSolarPower": "Objekt-ID für die aktuell verfügbare Solarleistung [W]",
4
+ "LBL_ipAddress": "IP-Adresse des go-eChargers",
5
+ "LBL_readOnlyMode": "Nur-Lese-Modus - Ladefreigabe wird nicht an die Wallbox gesendet (zur Nutzung von RFID-Tags)",
6
+ "LBL_standardSettings": "Standardeinstellungen",
5
7
  "LBL_stateHomeBatSoc": "Objekt-ID für den aktuellen Ladezustand der Hausbatterie [%]",
6
8
  "LBL_stateHomePowerConsumption": "Objekt-ID für den aktuellen Hausstromverbrauch [W]",
9
+ "LBL_stateHomeSolarPower": "Objekt-ID für die aktuell verfügbare Solarleistung [W]",
7
10
  "LBL_subtractSelfConsumption": "Verbrauch der Wallbox ist im Hausstromverbrauch enthalten",
8
- "LBL_wallBoxList": "Wallbox-Liste",
9
- "LBL_chargerName": "Name der Wallbox",
10
- "LBL_ipAddress": "IP-Adresse des go-eChargers",
11
- "LBL_readOnlyMode": "Nur-Lese-Modus - Ladefreigabe wird nicht an die Wallbox gesendet (zur Nutzung von RFID-Tags)"
11
+ "LBL_wallBoxList": "Wallbox-Liste"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Configuración estándar",
2
+ "LBL_chargerName": "Nombre del cargador",
3
3
  "LBL_cycleTime": "Tiempo entre consultas de datos del cargador [ms]",
4
- "LBL_stateHomeSolarPower": "ID de objeto para la potencia solar disponible actualmente [W]",
4
+ "LBL_ipAddress": "Dirección IP del go-eCharger",
5
+ "LBL_readOnlyMode": "Modo de solo lectura - la autorización de carga no se envía al cargador (para usar etiquetas RFID)",
6
+ "LBL_standardSettings": "Configuración estándar",
5
7
  "LBL_stateHomeBatSoc": "ID de objeto para el estado de carga actual de la batería doméstica [%]",
6
8
  "LBL_stateHomePowerConsumption": "ID de objeto para el consumo eléctrico actual del hogar [W]",
9
+ "LBL_stateHomeSolarPower": "ID de objeto para la potencia solar disponible actualmente [W]",
7
10
  "LBL_subtractSelfConsumption": "El consumo del cargador está incluido en el valor del consumo eléctrico del hogar",
8
- "LBL_wallBoxList": "Lista de wallboxes",
9
- "LBL_chargerName": "Nombre del cargador",
10
- "LBL_ipAddress": "Dirección IP del go-eCharger",
11
- "LBL_readOnlyMode": "Modo de solo lectura - la autorización de carga no se envía al cargador (para usar etiquetas RFID)"
11
+ "LBL_wallBoxList": "Lista de wallboxes"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Paramètres standard",
2
+ "LBL_chargerName": "Nom de la borne",
3
3
  "LBL_cycleTime": "Intervalle entre les interrogations de données de la borne [ms]",
4
- "LBL_stateHomeSolarPower": "ID d'objet pour la puissance solaire actuellement disponible [W]",
4
+ "LBL_ipAddress": "Adresse IP du go-eCharger",
5
+ "LBL_readOnlyMode": "Mode lecture seule - l'autorisation de charge n'est pas envoyée à la borne (pour l'utilisation de badges RFID)",
6
+ "LBL_standardSettings": "Paramètres standard",
5
7
  "LBL_stateHomeBatSoc": "ID d'objet pour l'état de charge actuel de la batterie domestique [%]",
6
8
  "LBL_stateHomePowerConsumption": "ID d'objet pour la consommation électrique actuelle du domicile [W]",
9
+ "LBL_stateHomeSolarPower": "ID d'objet pour la puissance solaire actuellement disponible [W]",
7
10
  "LBL_subtractSelfConsumption": "La consommation de la borne est incluse dans la valeur de consommation électrique du domicile",
8
- "LBL_wallBoxList": "Liste des wallbox",
9
- "LBL_chargerName": "Nom de la borne",
10
- "LBL_ipAddress": "Adresse IP du go-eCharger",
11
- "LBL_readOnlyMode": "Mode lecture seule - l'autorisation de charge n'est pas envoyée à la borne (pour l'utilisation de badges RFID)"
11
+ "LBL_wallBoxList": "Liste des wallbox"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Impostazioni standard",
2
+ "LBL_chargerName": "Nome della wallbox",
3
3
  "LBL_cycleTime": "Intervallo tra le letture dei dati dalla wallbox [ms]",
4
- "LBL_stateHomeSolarPower": "ID oggetto per la potenza solare attualmente disponibile [W]",
4
+ "LBL_ipAddress": "Indirizzo IP del go-eCharger",
5
+ "LBL_readOnlyMode": "Modalità di sola lettura - l'autorizzazione alla ricarica non viene inviata alla wallbox (per l'uso di tag RFID)",
6
+ "LBL_standardSettings": "Impostazioni standard",
5
7
  "LBL_stateHomeBatSoc": "ID oggetto per l'attuale stato di carica della batteria domestica [%]",
6
8
  "LBL_stateHomePowerConsumption": "ID oggetto per il consumo elettrico domestico attuale [W]",
9
+ "LBL_stateHomeSolarPower": "ID oggetto per la potenza solare attualmente disponibile [W]",
7
10
  "LBL_subtractSelfConsumption": "Il consumo della wallbox è incluso nel valore del consumo elettrico domestico",
8
- "LBL_wallBoxList": "Elenco delle wallbox",
9
- "LBL_chargerName": "Nome della wallbox",
10
- "LBL_ipAddress": "Indirizzo IP del go-eCharger",
11
- "LBL_readOnlyMode": "Modalità di sola lettura - l'autorizzazione alla ricarica non viene inviata alla wallbox (per l'uso di tag RFID)"
11
+ "LBL_wallBoxList": "Elenco delle wallbox"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Standaardinstellingen",
2
+ "LBL_chargerName": "Naam van de wallbox",
3
3
  "LBL_cycleTime": "Tijd tussen gegevensopvragingen van de wallbox [ms]",
4
- "LBL_stateHomeSolarPower": "Object-ID voor het momenteel beschikbare zonnevermogen [W]",
4
+ "LBL_ipAddress": "IP-adres van de go-eCharger",
5
+ "LBL_readOnlyMode": "Alleen-lezen modus - laadvrijgave wordt niet naar de wallbox gestuurd (voor gebruik met RFID-tags)",
6
+ "LBL_standardSettings": "Standaardinstellingen",
5
7
  "LBL_stateHomeBatSoc": "Object-ID voor de huidige laadtoestand van de thuisbatterij [%]",
6
8
  "LBL_stateHomePowerConsumption": "Object-ID voor het huidige stroomverbruik van de woning [W]",
9
+ "LBL_stateHomeSolarPower": "Object-ID voor het momenteel beschikbare zonnevermogen [W]",
7
10
  "LBL_subtractSelfConsumption": "Het verbruik van de wallbox is inbegrepen in het stroomverbruik van de woning",
8
- "LBL_wallBoxList": "Wallbox-lijst",
9
- "LBL_chargerName": "Naam van de wallbox",
10
- "LBL_ipAddress": "IP-adres van de go-eCharger",
11
- "LBL_readOnlyMode": "Alleen-lezen modus - laadvrijgave wordt niet naar de wallbox gestuurd (voor gebruik met RFID-tags)"
11
+ "LBL_wallBoxList": "Wallbox-lijst"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Ustawienia standardowe",
2
+ "LBL_chargerName": "Nazwa ładowarki",
3
3
  "LBL_cycleTime": "Czas między odczytami danych z ładowarki [ms]",
4
- "LBL_stateHomeSolarPower": "ID obiektu dla aktualnie dostępnej mocy solarnej [W]",
4
+ "LBL_ipAddress": "Adres IP go-eCharger",
5
+ "LBL_readOnlyMode": "Tryb tylko do odczytu - zezwolenie na ładowanie nie jest wysyłane do ładowarki (do użycia z tagami RFID)",
6
+ "LBL_standardSettings": "Ustawienia standardowe",
5
7
  "LBL_stateHomeBatSoc": "ID obiektu dla aktualnego stanu naładowania baterii domowej [%]",
6
8
  "LBL_stateHomePowerConsumption": "ID obiektu dla aktualnego zużycia energii w domu [W]",
9
+ "LBL_stateHomeSolarPower": "ID obiektu dla aktualnie dostępnej mocy solarnej [W]",
7
10
  "LBL_subtractSelfConsumption": "Zużycie ładowarki jest uwzględnione w wartości zużycia energii w domu",
8
- "LBL_wallBoxList": "Lista wallboxów",
9
- "LBL_chargerName": "Nazwa ładowarki",
10
- "LBL_ipAddress": "Adres IP go-eCharger",
11
- "LBL_readOnlyMode": "Tryb tylko do odczytu - zezwolenie na ładowanie nie jest wysyłane do ładowarki (do użycia z tagami RFID)"
11
+ "LBL_wallBoxList": "Lista wallboxów"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Configurações padrão",
2
+ "LBL_chargerName": "Nome do carregador",
3
3
  "LBL_cycleTime": "Tempo entre consultas de dados do carregador [ms]",
4
- "LBL_stateHomeSolarPower": "ID do objeto para a potência solar atualmente disponível [W]",
4
+ "LBL_ipAddress": "Endereço IP do go-eCharger",
5
+ "LBL_readOnlyMode": "Modo somente leitura - a autorização de carregamento não é enviada ao carregador (para uso com etiquetas RFID)",
6
+ "LBL_standardSettings": "Configurações padrão",
5
7
  "LBL_stateHomeBatSoc": "ID do objeto para o estado de carga atual da bateria doméstica [%]",
6
8
  "LBL_stateHomePowerConsumption": "ID do objeto para o consumo de energia atual da casa [W]",
9
+ "LBL_stateHomeSolarPower": "ID do objeto para a potência solar atualmente disponível [W]",
7
10
  "LBL_subtractSelfConsumption": "O consumo do carregador está incluído no valor do consumo de energia da casa",
8
- "LBL_wallBoxList": "Lista de wallboxes",
9
- "LBL_chargerName": "Nome do carregador",
10
- "LBL_ipAddress": "Endereço IP do go-eCharger",
11
- "LBL_readOnlyMode": "Modo somente leitura - a autorização de carregamento não é enviada ao carregador (para uso com etiquetas RFID)"
11
+ "LBL_wallBoxList": "Lista de wallboxes"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Стандартные настройки",
2
+ "LBL_chargerName": "Название зарядной станции",
3
3
  "LBL_cycleTime": "Интервал между опросами данных зарядной станции [мс]",
4
- "LBL_stateHomeSolarPower": "ID объекта для текущей доступной солнечной мощности [Вт]",
4
+ "LBL_ipAddress": "IP-адрес go-eCharger",
5
+ "LBL_readOnlyMode": "Режим только для чтения - разрешение на зарядку не отправляется на зарядную станцию (для использования RFID-меток)",
6
+ "LBL_standardSettings": "Стандартные настройки",
5
7
  "LBL_stateHomeBatSoc": "ID объекта для текущего уровня заряда домашнего аккумулятора [%]",
6
8
  "LBL_stateHomePowerConsumption": "ID объекта для текущего энергопотребления дома [Вт]",
9
+ "LBL_stateHomeSolarPower": "ID объекта для текущей доступной солнечной мощности [Вт]",
7
10
  "LBL_subtractSelfConsumption": "Потребление зарядной станции включено в значение энергопотребления дома",
8
- "LBL_wallBoxList": "Список зарядных станций",
9
- "LBL_chargerName": "Название зарядной станции",
10
- "LBL_ipAddress": "IP-адрес go-eCharger",
11
- "LBL_readOnlyMode": "Режим только для чтения - разрешение на зарядку не отправляется на зарядную станцию (для использования RFID-меток)"
11
+ "LBL_wallBoxList": "Список зарядных станций"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "Стандартні налаштування",
2
+ "LBL_chargerName": "Назва зарядної станції",
3
3
  "LBL_cycleTime": "Інтервал між опитуваннями даних зарядної станції [мс]",
4
- "LBL_stateHomeSolarPower": "ID об'єкта для поточної доступної сонячної потужності [Вт]",
4
+ "LBL_ipAddress": "IP-адреса go-eCharger",
5
+ "LBL_readOnlyMode": "Режим лише для читання - дозвіл на заряджання не надсилається на зарядну станцію (для використання RFID-міток)",
6
+ "LBL_standardSettings": "Стандартні налаштування",
5
7
  "LBL_stateHomeBatSoc": "ID об'єкта для поточного рівня заряду домашньої батареї [%]",
6
8
  "LBL_stateHomePowerConsumption": "ID об'єкта для поточного енергоспоживання будинку [Вт]",
9
+ "LBL_stateHomeSolarPower": "ID об'єкта для поточної доступної сонячної потужності [Вт]",
7
10
  "LBL_subtractSelfConsumption": "Споживання зарядної станції включено у значення енергоспоживання будинку",
8
- "LBL_wallBoxList": "Список зарядних станцій",
9
- "LBL_chargerName": "Назва зарядної станції",
10
- "LBL_ipAddress": "IP-адреса go-eCharger",
11
- "LBL_readOnlyMode": "Режим лише для читання - дозвіл на заряджання не надсилається на зарядну станцію (для використання RFID-міток)"
11
+ "LBL_wallBoxList": "Список зарядних станцій"
12
12
  }
@@ -1,12 +1,12 @@
1
1
  {
2
- "LBL_standardSettings": "标准设置",
2
+ "LBL_chargerName": "充电桩名称",
3
3
  "LBL_cycleTime": "从充电桩轮询数据的时间间隔 [ms]",
4
- "LBL_stateHomeSolarPower": "当前可用太阳能功率的对象ID [W]",
4
+ "LBL_ipAddress": "go-eCharger 的 IP 地址",
5
+ "LBL_readOnlyMode": "只读模式 - 充电许可不会发送到充电桩(用于 RFID 标签)",
6
+ "LBL_standardSettings": "标准设置",
5
7
  "LBL_stateHomeBatSoc": "家庭电池当前充电状态的对象ID [%]",
6
8
  "LBL_stateHomePowerConsumption": "家庭当前用电量的对象ID [W]",
9
+ "LBL_stateHomeSolarPower": "当前可用太阳能功率的对象ID [W]",
7
10
  "LBL_subtractSelfConsumption": "充电桩的耗电量已包含在家庭用电量数值中",
8
- "LBL_wallBoxList": "充电桩列表",
9
- "LBL_chargerName": "充电桩名称",
10
- "LBL_ipAddress": "go-eCharger 的 IP 地址",
11
- "LBL_readOnlyMode": "只读模式 - 充电许可不会发送到充电桩(用于 RFID 标签)"
11
+ "LBL_wallBoxList": "充电桩列表"
12
12
  }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_CHARGE_CURRENT = exports.MIN_CHARGE_CURRENT = void 0;
4
+ exports.calculateOptimalChargeCurrent = calculateOptimalChargeCurrent;
5
+ exports.stepChargeCurrent = stepChargeCurrent;
6
+ exports.updateShutdownDelay = updateShutdownDelay;
7
+ exports.buildChargerCommands = buildChargerCommands;
8
+ exports.MIN_CHARGE_CURRENT = 6;
9
+ exports.MAX_CHARGE_CURRENT = 16;
10
+ function calculateOptimalChargeCurrent(input) {
11
+ const numericInputs = [input.solarPower, input.houseConsumption, input.chargerPower, input.batterySoc, input.minBatterySoc, input.phases];
12
+ if (!numericInputs.every(value => Number.isFinite(value))) {
13
+ return null;
14
+ }
15
+ if ((input.phases !== 1 && input.phases !== 3) || input.batterySoc < 0 || input.batterySoc > 100 || input.minBatterySoc < 0 || input.minBatterySoc > 100) {
16
+ return null;
17
+ }
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;
20
+ const calculatedCurrent = Math.floor(availablePower / 230 / input.phases);
21
+ return Math.max(0, Math.min(calculatedCurrent, exports.MAX_CHARGE_CURRENT));
22
+ }
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;
26
+ if (safeCurrent < safeTarget) {
27
+ return safeCurrent + 1;
28
+ }
29
+ if (safeCurrent > safeTarget) {
30
+ return safeCurrent - 1;
31
+ }
32
+ return safeCurrent;
33
+ }
34
+ function updateShutdownDelay(current, minimum, previousDelay) {
35
+ if (!Number.isFinite(current) || !Number.isFinite(minimum) || current >= minimum) {
36
+ return 0;
37
+ }
38
+ const safePreviousDelay = Number.isFinite(previousDelay) ? Math.max(0, Math.trunc(previousDelay)) : 0;
39
+ return safePreviousDelay + 1;
40
+ }
41
+ function buildChargerCommands(allow, ampere, firmware) {
42
+ if (!allow) {
43
+ return [{ parameter: "alw", value: 0 }];
44
+ }
45
+ if (!Number.isInteger(ampere) || ampere < exports.MIN_CHARGE_CURRENT || ampere > exports.MAX_CHARGE_CURRENT) {
46
+ return null;
47
+ }
48
+ return [
49
+ { parameter: firmware === "033" ? "amp" : "amx", value: ampere },
50
+ { parameter: "alw", value: 1 },
51
+ ];
52
+ }
53
+ //# sourceMappingURL=chargeManagerUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chargeManagerUtils.js","sourceRoot":"","sources":["../../src/lib/chargeManagerUtils.ts"],"names":[],"mappings":";;;AAqCA,sEAcC;AASD,8CAWC;AAWD,kDAMC;AAcD,oDAYC;AAlHY,QAAA,kBAAkB,GAAG,CAAC,CAAC;AACvB,QAAA,kBAAkB,GAAG,EAAE,CAAC;AAoCrC,SAAgB,6BAA6B,CAAC,KAA6B;IAC1E,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1I,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,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC;QAC1J,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtI,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,aAAa,CAAC;IAC/I,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,0BAAkB,CAAC,CAAC,CAAC;AACrE,CAAC;AASD,SAAgB,iBAAiB,CAAC,OAAe,EAAE,MAAc;IAChE,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,0BAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,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,0BAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/G,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;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
@@ -38,6 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  const utils = __importStar(require("@iobroker/adapter-core"));
40
40
  const axios_1 = __importDefault(require("axios"));
41
+ const chargeManagerUtils_1 = require("./lib/chargeManagerUtils");
41
42
  const projectUtils_1 = require("./lib/projectUtils");
42
43
  const axiosInstance = axios_1.default.create({
43
44
  timeout: 5000,
@@ -50,8 +51,9 @@ let totalChargeEnergy = 0;
50
51
  let totalChargePower = 0;
51
52
  class go_e_charger extends utils.Adapter {
52
53
  projectUtils = new projectUtils_1.ProjectUtils(this);
53
- timeoutList;
54
54
  wallboxInfoList = [];
55
+ stateMachineTimeout;
56
+ isUnloading = false;
55
57
  constructor(options = {}) {
56
58
  super({
57
59
  ...options,
@@ -60,7 +62,6 @@ class go_e_charger extends utils.Adapter {
60
62
  this.on("ready", this.onReady.bind(this));
61
63
  this.on("stateChange", this.onStateChange.bind(this));
62
64
  this.on("unload", this.onUnload.bind(this));
63
- this.timeoutList = [];
64
65
  this.wallboxInfoList = [];
65
66
  }
66
67
  async onReady() {
@@ -170,10 +171,7 @@ class go_e_charger extends utils.Adapter {
170
171
  }
171
172
  this.log.debug(`Start init done, launching state machine interval`);
172
173
  void this.setState(`info.connection`, { val: true, ack: true });
173
- const stateMachine = this.setTimeout(this.StateMachine.bind(this), Number(this.config.cycleTime));
174
- if (stateMachine != null) {
175
- this.timeoutList.push(stateMachine);
176
- }
174
+ this.scheduleStateMachine();
177
175
  }
178
176
  onStateChange(id, state) {
179
177
  try {
@@ -268,7 +266,11 @@ class go_e_charger extends utils.Adapter {
268
266
  }
269
267
  onUnload(callback) {
270
268
  try {
271
- this.timeoutList.forEach(timeoutJob => this.clearTimeout(timeoutJob));
269
+ this.isUnloading = true;
270
+ if (this.stateMachineTimeout) {
271
+ this.clearTimeout(this.stateMachineTimeout);
272
+ this.stateMachineTimeout = undefined;
273
+ }
272
274
  this.log.info(`Adapter go-eCharger cleaned up everything...`);
273
275
  for (const [iWB] of this.config.wallBoxList.entries()) {
274
276
  void this.setState(`Wallbox_${iWB}.info.connection`, { val: false, ack: true });
@@ -311,6 +313,8 @@ class go_e_charger extends utils.Adapter {
311
313
  case "60.0":
312
314
  case "60.1":
313
315
  case "60.2":
316
+ case "60.5":
317
+ case "60.6":
314
318
  this.log.debug(`Init done, launching state machine`);
315
319
  await this.setState(`Wallbox_${iWB}.info.connection`, { val: true, ack: true });
316
320
  reachableChargers++;
@@ -340,71 +344,100 @@ class go_e_charger extends utils.Adapter {
340
344
  }
341
345
  return true;
342
346
  }
347
+ scheduleStateMachine() {
348
+ if (this.isUnloading || this.stateMachineTimeout) {
349
+ return;
350
+ }
351
+ this.stateMachineTimeout = this.setTimeout(() => {
352
+ this.stateMachineTimeout = undefined;
353
+ void this.StateMachine();
354
+ }, Number(this.config.cycleTime));
355
+ }
343
356
  async StateMachine() {
344
- this.log.debug(`StateMachine cycle start`);
345
- totalChargeEnergy = 0;
346
- totalChargePower = 0;
347
- for (let iWB = 0; iWB < this.config.wallBoxList.length; iWB++) {
348
- if (this.wallboxInfoList[iWB].ChargeNOW || this.wallboxInfoList[iWB].ChargeManager) {
349
- await this.Read_ChargerAPIV1(iWB);
350
- if (this.wallboxInfoList[iWB].HardwareMin3) {
351
- await this.Read_ChargerAPIV2(iWB);
352
- }
353
- }
354
- if (this.wallboxInfoList[iWB].ChargeNOW) {
355
- await this.Charge_Config("1", this.wallboxInfoList[iWB].ChargeCurrent, `activate go-eCharger for forced charging`, iWB);
356
- await this.Switch_3Phases(this.wallboxInfoList[iWB].Charge3Phase, iWB);
357
- if (this.wallboxInfoList[iWB].HardwareMin3) {
358
- await this.Read_ChargerAPIV2(iWB);
359
- }
360
- }
361
- else if (this.wallboxInfoList[iWB].ChargeManager) {
362
- batSoC = await this.projectUtils.asyncGetForeignStateVal(this.config.stateHomeBatSoc);
363
- this.log.debug(`Got external state of battery SoC: ${batSoC}%`);
364
- if (batSoC >= minHomeBatVal) {
365
- await this.Switch_3Phases(this.wallboxInfoList[iWB].Charge3Phase, iWB);
366
- await this.Charge_Manager(iWB);
367
- }
368
- else {
369
- if ((await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.ChargingAllowed`)) == true) {
370
- this.wallboxInfoList[iWB].SetAmp = 6;
371
- await this.Charge_Config("0", this.wallboxInfoList[iWB].SetAmp, `Charging home battery until ${minHomeBatVal}%`, iWB);
372
- }
373
- }
374
- }
375
- else {
376
- if ((await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.ChargingAllowed`)) == true) {
357
+ if (this.isUnloading) {
358
+ return;
359
+ }
360
+ try {
361
+ this.log.debug(`StateMachine cycle start`);
362
+ totalChargeEnergy = 0;
363
+ totalChargePower = 0;
364
+ for (let iWB = 0; iWB < this.config.wallBoxList.length; iWB++) {
365
+ if (this.wallboxInfoList[iWB].ChargeNOW || this.wallboxInfoList[iWB].ChargeManager) {
377
366
  await this.Read_ChargerAPIV1(iWB);
378
367
  if (this.wallboxInfoList[iWB].HardwareMin3) {
379
368
  await this.Read_ChargerAPIV2(iWB);
380
369
  }
381
- this.wallboxInfoList[iWB].SetAmp = 6;
382
- await this.Charge_Config("0", this.wallboxInfoList[iWB].SetAmp, `Deactivate go-eCharger`, iWB);
383
370
  }
384
- else if (Number(await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.Charge`)) > 0) {
385
- await this.Read_ChargerAPIV1(iWB);
371
+ if (this.wallboxInfoList[iWB].ChargeNOW) {
372
+ await this.Charge_Config("1", this.wallboxInfoList[iWB].ChargeCurrent, `activate go-eCharger for forced charging`, iWB);
373
+ await this.Switch_3Phases(this.wallboxInfoList[iWB].Charge3Phase, iWB);
386
374
  if (this.wallboxInfoList[iWB].HardwareMin3) {
387
375
  await this.Read_ChargerAPIV2(iWB);
388
376
  }
389
377
  }
378
+ else if (this.wallboxInfoList[iWB].ChargeManager) {
379
+ batSoC = await this.projectUtils.asyncGetForeignStateVal(this.config.stateHomeBatSoc);
380
+ this.log.debug(`Got external state of battery SoC: ${batSoC}%`);
381
+ if (typeof batSoC !== "number" ||
382
+ !Number.isFinite(batSoC) ||
383
+ batSoC < 0 ||
384
+ batSoC > 100 ||
385
+ !Number.isFinite(minHomeBatVal) ||
386
+ minHomeBatVal < 0 ||
387
+ minHomeBatVal > 100) {
388
+ await this.stopChargeManager(`Invalid battery state of charge or setpoint`, iWB);
389
+ }
390
+ else if (batSoC >= minHomeBatVal) {
391
+ await this.Switch_3Phases(this.wallboxInfoList[iWB].Charge3Phase, iWB);
392
+ await this.Charge_Manager(iWB);
393
+ }
394
+ else {
395
+ await this.stopChargeManager(`Charging home battery until ${minHomeBatVal}%`, iWB);
396
+ }
397
+ }
398
+ else {
399
+ if ((await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.ChargingAllowed`)) == true) {
400
+ await this.Read_ChargerAPIV1(iWB);
401
+ if (this.wallboxInfoList[iWB].HardwareMin3) {
402
+ await this.Read_ChargerAPIV2(iWB);
403
+ }
404
+ this.wallboxInfoList[iWB].SetAmp = 0;
405
+ await this.Charge_Config("0", this.wallboxInfoList[iWB].MinAmp, `Deactivate go-eCharger`, iWB);
406
+ }
407
+ else if (Number(await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.Charge`)) > 0) {
408
+ await this.Read_ChargerAPIV1(iWB);
409
+ if (this.wallboxInfoList[iWB].HardwareMin3) {
410
+ await this.Read_ChargerAPIV2(iWB);
411
+ }
412
+ }
413
+ }
414
+ totalChargeEnergy += Number(await this.projectUtils.getStateValue(`Wallbox_${iWB}.statistics.chargedEnergy`)) || 0;
415
+ totalChargePower += Number(await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.Charge`)) || 0;
390
416
  }
391
- totalChargeEnergy += Number(await this.projectUtils.getStateValue(`Wallbox_${iWB}.statistics.chargedEnergy`)) || 0;
392
- totalChargePower += Number(await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.Charge`)) || 0;
417
+ await this.projectUtils.checkAndSetValueNumber(`statisticsGlobal.chargedEnergy`, totalChargeEnergy, `Totally charged sum of all go-e in lifetime`, "kWh", "value.energy.consumed");
418
+ await this.projectUtils.checkAndSetValueNumber(`statisticsGlobal.chargePower`, totalChargePower, `Current charging power sum of all chargers`, "W", "value.power");
393
419
  }
394
- await this.projectUtils.checkAndSetValueNumber(`statisticsGlobal.chargedEnergy`, totalChargeEnergy, `Totally charged sum of all go-e in lifetime`, "kWh", "value.energy.consumed");
395
- await this.projectUtils.checkAndSetValueNumber(`statisticsGlobal.chargePower`, totalChargePower, `Current charging power sum of all chargers`, "W", "value.power");
396
- const stateMachine = this.setTimeout(this.StateMachine.bind(this), Number(this.config.cycleTime));
397
- if (stateMachine != null) {
398
- this.timeoutList.push(stateMachine);
420
+ catch (error) {
421
+ this.log.error(`Unhandled error in state machine cycle: ${error.message}`);
422
+ }
423
+ finally {
424
+ this.scheduleStateMachine();
425
+ }
426
+ }
427
+ async stopChargeManager(reason, iWB) {
428
+ this.wallboxInfoList[iWB].SetAmp = 0;
429
+ this.wallboxInfoList[iWB].DelayOff = 0;
430
+ if ((await this.projectUtils.getStateValue(`Wallbox_${iWB}.Power.ChargingAllowed`)) == true) {
431
+ await this.Charge_Config("0", this.wallboxInfoList[iWB].MinAmp, reason, iWB);
399
432
  }
400
433
  }
401
434
  async Read_ChargerAPIV1(iWB) {
402
435
  await axiosInstance
403
436
  .get(`http://${this.config.wallBoxList[iWB].ipAddress}/status`, { transformResponse: r => r })
404
- .then(response => {
437
+ .then(async (response) => {
405
438
  const result = JSON.parse(response.data);
406
439
  this.log.debug(`Read charger ${iWB} API V1: ${response.data}`);
407
- void this.ParseStatusAPIV1(result, iWB);
440
+ await this.ParseStatusAPIV1(result, iWB);
408
441
  })
409
442
  .catch(error => {
410
443
  if (error.message && error.message.includes("EHOSTUNREACH")) {
@@ -556,57 +589,32 @@ class go_e_charger extends utils.Adapter {
556
589
  this.log.debug(`Charger ${iWB} is in read-only mode - skipping charge config write`);
557
590
  return;
558
591
  }
559
- await axiosInstance
560
- .get(`http://${this.config.wallBoxList[iWB].ipAddress}/mqtt?payload=alw=${Allow}`, { transformResponse: r => r })
561
- .then(response => {
562
- this.log.debug(`Sent to charger ${iWB}: ${response.data}`);
563
- })
564
- .catch(error => {
565
- this.log.warn(`Error: ${error} by writing to wallbox ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} alw=${Allow}`);
566
- this.log.error(`Please verify IP address of wallbox ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} !!!`);
567
- });
568
- switch (this.wallboxInfoList[iWB].Firmware) {
569
- case "033":
570
- await axiosInstance
571
- .get(`http://${this.config.wallBoxList[iWB].ipAddress}/mqtt?payload=amp=${Ampere}`, { transformResponse: r => r })
572
- .then(async (response) => {
573
- this.log.debug(`Sent to charger ${iWB} with firmware 033: ${response.data}`);
574
- const result = JSON.parse(response.data);
575
- void this.projectUtils.checkAndSetValueNumber(`${basePath}.Power.ChargeCurrent`, Number(result.amp), `Charge current output`, "A", "level.current");
576
- switch (result.alw) {
577
- case "0":
578
- await this.projectUtils.checkAndSetValueBoolean(`${basePath}.Power.ChargingAllowed`, false, `Charging allowed`, `indicator`);
579
- break;
580
- case "1":
581
- await this.projectUtils.checkAndSetValueBoolean(`${basePath}.Power.ChargingAllowed`, true, `Charging allowed`, `indicator`);
582
- break;
583
- }
584
- })
585
- .catch(error => {
586
- this.log.warn(`Error: ${error} by writing to charger ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} amp=${Ampere}`);
587
- this.log.error(`Please verify IP address of charger ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} !!!`);
588
- });
589
- break;
590
- default:
591
- await axiosInstance
592
- .get(`http://${this.config.wallBoxList[iWB].ipAddress}/mqtt?payload=amx=${Ampere}`, { transformResponse: r => r })
593
- .then(async (response) => {
594
- this.log.debug(`Sent to charger ${iWB} with firmware > 033: ${response.data}`);
592
+ if (Allow !== "0" && Allow !== "1") {
593
+ this.log.warn(`Invalid charge release value for charger ${iWB}: ${Allow}`);
594
+ return;
595
+ }
596
+ const commands = (0, chargeManagerUtils_1.buildChargerCommands)(Allow === "1", Ampere, this.wallboxInfoList[iWB].Firmware);
597
+ if (!commands) {
598
+ this.log.warn(`Invalid charging current for charger ${iWB}: ${Ampere} A`);
599
+ return;
600
+ }
601
+ for (const command of commands) {
602
+ try {
603
+ const response = await axiosInstance.get(`http://${this.config.wallBoxList[iWB].ipAddress}/mqtt?payload=${command.parameter}=${command.value}`, { transformResponse: r => r });
604
+ this.log.debug(`Sent to charger ${iWB}: ${command.parameter}=${command.value}`);
605
+ if (command.parameter === "alw") {
606
+ await this.projectUtils.checkAndSetValueBoolean(`${basePath}.Power.ChargingAllowed`, command.value === 1, `Charging allowed`, `indicator`);
607
+ }
608
+ else {
595
609
  const result = JSON.parse(response.data);
596
- void this.projectUtils.checkAndSetValueNumber(`${basePath}.Power.ChargeCurrent`, Number(result.amp), `Charge current output`, "A", "level.current");
597
- switch (result.alw) {
598
- case "0":
599
- await this.projectUtils.checkAndSetValueBoolean(`${basePath}.Power.ChargingAllowed`, false, `Charging allowed`, `indicator`);
600
- break;
601
- case "1":
602
- await this.projectUtils.checkAndSetValueBoolean(`${basePath}.Power.ChargingAllowed`, true, `Charging allowed`, `indicator`);
603
- break;
604
- }
605
- })
606
- .catch(error => {
607
- this.log.warn(`Error: ${error} by writing to charger ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} amx=${Ampere}`);
608
- this.log.error(`Please verify IP address of charger ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} !!!`);
609
- });
610
+ await this.projectUtils.checkAndSetValueNumber(`${basePath}.Power.ChargeCurrent`, Number(result.amp), `Charge current output`, "A", "level.current");
611
+ }
612
+ }
613
+ catch (error) {
614
+ this.log.warn(`Error: ${String(error)} by writing to charger ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} ${command.parameter}=${command.value}`);
615
+ this.log.error(`Please verify IP address of charger ${iWB}: ${this.config.wallBoxList[iWB].ipAddress} !!!`);
616
+ return;
617
+ }
610
618
  }
611
619
  }
612
620
  async Charge_Manager(iWB) {
@@ -620,29 +628,31 @@ class go_e_charger extends utils.Adapter {
620
628
  const Phases = this.wallboxInfoList[iWB].HardwareMin3 && this.wallboxInfoList[iWB].EnabledPhases
621
629
  ? this.wallboxInfoList[iWB].EnabledPhases
622
630
  : this.wallboxInfoList[iWB].GridPhases;
623
- this.wallboxInfoList[iWB].SetOptAmp = Math.floor((solarPower -
624
- houseConsumption +
625
- (this.config.subtractSelfConsumption ? this.wallboxInfoList[iWB].ChargePower : 0) -
626
- 100 +
627
- (2000 / (100 - minHomeBatVal)) * (batSoC - minHomeBatVal)) /
628
- 230 /
629
- Phases);
630
- this.wallboxInfoList[iWB].SetOptAmp = Math.min(this.wallboxInfoList[iWB].SetOptAmp, 16);
631
- this.log.debug(`Optimal charging current would be: ${this.wallboxInfoList[iWB].SetOptAmp} A`);
632
- if (this.wallboxInfoList[iWB].SetAmp < this.wallboxInfoList[iWB].SetOptAmp) {
633
- this.wallboxInfoList[iWB].SetAmp++;
634
- }
635
- else if (this.wallboxInfoList[iWB].SetAmp > this.wallboxInfoList[iWB].SetOptAmp) {
636
- this.wallboxInfoList[iWB].SetAmp--;
631
+ const optimalCurrent = (0, chargeManagerUtils_1.calculateOptimalChargeCurrent)({
632
+ solarPower,
633
+ houseConsumption,
634
+ chargerPower: this.wallboxInfoList[iWB].ChargePower,
635
+ subtractChargerPower: this.config.subtractSelfConsumption,
636
+ batterySoc: batSoC,
637
+ minBatterySoc: minHomeBatVal,
638
+ phases: Phases,
639
+ });
640
+ if (optimalCurrent === null) {
641
+ this.log.warn(`ChargeManager inputs are invalid for charger ${iWB}; charging will be disabled`);
642
+ await this.stopChargeManager(`Invalid ChargeManager input`, iWB);
643
+ return;
637
644
  }
645
+ this.wallboxInfoList[iWB].SetOptAmp = optimalCurrent;
646
+ 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);
638
648
  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);
639
650
  if (this.wallboxInfoList[iWB].SetAmp > 5 + 4) {
640
651
  await this.Charge_Config("1", this.wallboxInfoList[iWB].SetAmp, `Charging current: ${this.wallboxInfoList[iWB].SetAmp} A`, iWB);
641
652
  }
642
- else if (this.wallboxInfoList[iWB].SetAmp < 6) {
643
- this.wallboxInfoList[iWB].DelayOff++;
653
+ else if (this.wallboxInfoList[iWB].SetAmp < this.wallboxInfoList[iWB].MinAmp) {
644
654
  if (this.wallboxInfoList[iWB].DelayOff > 12) {
645
- await this.Charge_Config("0", this.wallboxInfoList[iWB].SetAmp, `Insufficient surplus`, iWB);
655
+ await this.Charge_Config("0", this.wallboxInfoList[iWB].MinAmp, `Insufficient surplus`, iWB);
646
656
  this.wallboxInfoList[iWB].DelayOff = 0;
647
657
  }
648
658
  }
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,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "go-e-charger",
4
- "version": "1.2.0",
4
+ "version": "1.2.1",
5
5
  "news": {
6
+ "1.2.1": {
7
+ "en": "made ChargeManager surplus control more fail-safe: input validation, current clamped to 0-16 A, resilience of state-machine loop (#841)\nadded support for firmware V60.5 (#800) and V60.6 (#844)\nadded ChargeManager PV surplus configuration guide (#842)\ncorrected no-battery helper-state recommendation for ChargeManager\nupdated dependencies",
8
+ "de": "machte ChargeManager Überschusskontrolle ausfallsicherer: Eingangsvalidierung, Strom auf 0-16 A geklemmt, Widerstandsfähigkeit der State-Machine-Schleife (#841)\nzusätzliche Unterstützung für Firmware V60.5 (#800) und V60.6 (#844)\nzusätzliches ChargeManager PV Überschusskonfigurationshandbuch (#842)\nkorrigierte No-Battery-Helfer-State-Empfehlung für ChargeManager\naktualisierte abhängigkeiten",
9
+ "ru": "сделал избыточный контроль ChargeManager более отказоустойчивым: валидация входа, ток, зажатый до 0-16 А, устойчивость петли государственной машины (#841)\nдобавлена поддержка прошивки V60.5 (#800) и V60.6 (#844)\nруководство по конфигурации излишков зарядного устройства ChargeManager PV (#842)\nисправлена рекомендация штата без батареи для ChargeManager\nобновленные зависимости",
10
+ "pt": "feito ChargeManager superávit controle mais fail-safe: validação de entrada, corrente fixada a 0-16 A, resiliência do estado-máquina loop (#841)\nsuporte adicionado para firmware V60.5 (# 800) e V60.6 (# 844)\nguia de configuração do excedente PV do ChargeManager (# 842)\nrecomendação de estado de ajuda não-bateria corrigida para ChargeManager\ndependências atualizadas",
11
+ "nl": "chargeManager overtollige controle meer fail-safe: input validatie, stroom geklemd op 0-16 A, veerkracht van state-machine loop (#841)\ntoegevoegde ondersteuning voor firmware V60.5 (#800) en V60,6 (#844)\ntoegevoegde ChargeManager PV surplus configuratie gids (#842)\ngecorrigeerde no-battery helper-state aanbeveling voor ChargeManager\nbijgewerkte afhankelijkheden",
12
+ "fr": "made ChargeManager contrôle de surplus plus sûr-échec: validation d'entrée, courant serré à 0-16 A, résilience de la boucle de machine d'état (#841)\nsoutien supplémentaire au firmware V60.5 (#800) et V60.6 (#844)\najouté ChargeManager PV surplus guide de configuration (#842)\ncorrection de la recommandation de l'aide sans batterie pour ChargeManager\ndépendances actualisées",
13
+ "it": "ha reso ChargeManager il controllo in eccesso più sicuro: la validazione dell'ingresso, la corrente bloccata a 0-16 A, la resilienza del loop della macchina statale (#841)\nsupporto aggiunto per firmware V60.5 (#800) e V60.6 (#844)\naggiunto ChargeManager PV surplus di configurazione guida (#842)\nraccomandazione corretto no-battery helper-stato per ChargeManager\ndipendenze aggiornate",
14
+ "es": "hecho ChargeManager control de excedentes más seguro de fallo: validación de entrada, corriente sujeta a 0-16 A, resiliencia del bucle de máquina de estado (#841)\nsoporte añadido para firmware V60.5 (#800) y V60.6 (#844)\nañadido ChargeManager PV guía de configuración sobrante (#842)\ncorregido recomendación de estado-ayuda de no-batería para ChargeManager\ndependencias actualizadas",
15
+ "pl": "sprawiła, że kontrola nadmiaru ChargeManager była bardziej bezpieczna: walidacja wejścia, prąd zaciśnięty do 0-16 A, odporność pętli state- machine (# 841)\ndodane wsparcie dla firmware V60.5 (# 800) i V60.6 (# 844)\ndodany poradnik konfiguracji nadwyżek PV ChargeManager (# 842)\npoprawiona rekomendacja dla ChargeManager\nzaktualizowane zależności",
16
+ "uk": "зроблено ChargeManager надлишок управління більш небезпечним: вентиляція введення, затисканий до 0-16 А, стійкість петля державного двигуна (#841)\nдодана підтримка прошивки V60.5 (#800) і V60.6 (#844)\nдоданий контролер для налаштування Surplus ChargeManager PV (#842)\nвиправлено no-battery helper-state рекомендації для ChargeManager\nоновлені залежності",
17
+ "zh-cn": "使充电管理器剩余控制更安全:输入验证,当前被夹到0-16 A,国家机器循环的弹性(# 841)\n添加对固件 V60.5 (# 800) 和 V60.6 (# 844)的支持\n添加充电管理器 PV 剩余配置指南 (# 842)\n纠正关于充电管理器的无电池助手状态建议\n更新的依赖关系"
18
+ },
6
19
  "1.2.0": {
7
20
  "en": "added statisticsGlobal.chargePower state with the current total charging power of all chargers\nremoved chai-based unit test dependencies; modernized test harness to Node.js assert (fixes Appveyor, #836)",
8
21
  "de": "Der Status „Global.chargePower“ wurde um die aktuelle Gesamtladeleistung aller Ladegeräte erweitert.\nChai-basierte Unit-Test-Abhängigkeiten entfernt; Test-Framework auf Node.js-Assert modernisiert (behebt Appveyor, #836)",
@@ -80,19 +93,6 @@
80
93
  "pl": "napraw statystyki całkowite\nnapraw wyniki sprawdzania adaptera\nnapraw dokument\nnapraw tsconfig",
81
94
  "uk": "виправити загальну статистику\nвиправити висновки перевірки адаптера\nвиправити док\nвиправити tsconfig",
82
95
  "zh-cn": "修复总统计数据\n修复适配器检查器结果\n修复文档\n修复 tsconfig"
83
- },
84
- "1.0.0": {
85
- "en": "BREAKING: switched to multi charger support (#801), (#807)\nBREAKING: adapter needs node 22 now\nadapter requires admin >=7.6.20 now\nupdated typescript from 5.9.3 to 6.0.3\nadded RFID info (name, id, consumption) (#802)",
86
- "de": "BREAKING: auf Multi-Ladegerät-Unterstützung umgestellt (#801), (#807)\nBREAKING: Der Adapter benötigt jetzt node 22\nDer Adapter erfordert jetzt admin >=7.6.20\nAktualisiertes Typeskript von 5.9.3 auf 6.0.3\nRFID-Info hinzugefügt (Name, ID, Verbrauch) (#802)",
87
- "ru": "СРОЧНО: переключено на поддержку нескольких зарядных устройств (#801), (#807).\nСРОЧНО: адаптеру теперь нужен узел 22\nадаптеру сейчас требуется администратор >=7.6.20\nобновлен машинописный текст с 5.9.3 до 6.0.3\nдобавлена информация RFID (имя, идентификатор, потребление) (#802)",
88
- "pt": "QUEBRANDO: mudou para suporte a vários carregadores (#801), (#807)\nQUEBRANDO: o adaptador precisa do nó 22 agora\nadaptador requer admin >=7.6.20 agora\ntexto datilografado atualizado de 5.9.3 para 6.0.3\nadicionadas informações RFID (nome, id, consumo) (#802)",
89
- "nl": "BREAKING: overgeschakeld naar ondersteuning voor meerdere opladers (#801), (#807)\nBREAKING: adapter heeft nu knooppunt 22 nodig\nadapter vereist nu admin >=7.6.20\nbijgewerkt typoscript van 5.9.3 naar 6.0.3\nRFID-info toegevoegd (naam, id, verbruik) (#802)",
90
- "fr": "RUPTURE : passage au support multi-chargeurs (#801), (#807)\nRUPTURE : l'adaptateur a besoin du nœud 22 maintenant\nl'adaptateur nécessite un administrateur >=7.6.20 maintenant\ndactylographié mis à jour de 5.9.3 à 6.0.3\najout d'informations RFID (nom, identifiant, consommation) (#802)",
91
- "it": "ROTTURA: passato al supporto per caricabatterie multipli (#801), (#807)\nBREAKING: l'adattatore necessita ora del nodo 22\nl'adattatore richiede ora l'amministratore >=7.6.20\ndattiloscritto aggiornato da 5.9.3 a 6.0.3\naggiunte informazioni RFID (nome, ID, consumo) (#802)",
92
- "es": "ÚLTIMA HORA: cambiado a soporte de cargador múltiple (#801), (#807)\nÚLTIMA HORA: el adaptador necesita el nodo 22 ahora\nEl adaptador requiere administrador >=7.6.20 ahora\nmecanografiado actualizado de 5.9.3 a 6.0.3\ninformación RFID agregada (nombre, identificación, consumo) (#802)",
93
- "pl": "ŁAMANIE: przełączono na obsługę wielu ładowarek (#801), (#807)\nŁAMANIE: adapter potrzebuje teraz węzła 22\nadapter wymaga teraz administratora >=7.6.20\nzaktualizowano maszynopis z wersji 5.9.3 do 6.0.3\ndodano informacje RFID (nazwa, identyfikator, zużycie) (#802)",
94
- "uk": "ПОЛИМКА: переведено на підтримку кількох зарядних пристроїв (#801), (#807)\nПОРУШЕННЯ: адаптеру зараз потрібен вузол 22\nдля адаптера потрібен адміністратор >=7.6.20\nоновлено машинопис з 5.9.3 до 6.0.3\nдодана інформація RFID (ім'я, ідентифікатор, споживання) (#802)",
95
- "zh-cn": "突破:切换到多充电器支持 (#801)、(#807)\n中断:适配器现在需要节点 22\n适配器现在需要 admin >=7.6.20\n将打字稿从 5.9.3 更新到 6.0.3\n添加了 RFID 信息(名称、ID、消费)(#802)"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.go-e-charger",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Adapter for reading go-eCharger data",
5
5
  "author": {
6
6
  "name": "Hombach",
@@ -23,7 +23,7 @@
23
23
  "node": ">= 22.18.0"
24
24
  },
25
25
  "dependencies": {
26
- "@iobroker/adapter-core": "^3.4.1",
26
+ "@iobroker/adapter-core": "^3.4.3",
27
27
  "axios": "^1.18.1"
28
28
  },
29
29
  "devDependencies": {
@@ -33,10 +33,10 @@
33
33
  "@alcalzone/release-script-plugin-manual-review": "^5.2.0",
34
34
  "@iobroker/adapter-dev": "^1.5.0",
35
35
  "@iobroker/eslint-config": "^2.3.4",
36
- "@iobroker/testing": "^5.2.2",
36
+ "@iobroker/testing": "^5.3.0",
37
37
  "@iobroker/types": "^7.2.2",
38
38
  "@tsconfig/node22": "^22.0.5",
39
- "@types/node": "^22.20.0",
39
+ "@types/node": "^22.20.1",
40
40
  "source-map-support": "^0.5.21",
41
41
  "ts-node": "^10.9.2",
42
42
  "typescript": "^6.0.3"