iobroker.marstek-venus 0.1.4
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 +184 -0
- package/admin/jsonConfig.json +71 -0
- package/admin/marstek-venus.png +0 -0
- package/admin/words.js +68 -0
- package/io-package.json +206 -0
- package/lib/adapter-config.js +13 -0
- package/lib/adapter.js +372 -0
- package/lib/control.js +80 -0
- package/lib/discovery.js +53 -0
- package/lib/polling.js +210 -0
- package/lib/request-queue.js +156 -0
- package/main.js +418 -0
- package/package.json +89 -0
package/README.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# ioBroker.marstek-venus Adapter
|
|
2
|
+
|
|
3
|
+
The ioBroker.marstek-venus adapter provides full integration with Marstek Venus series energy storage systems, implementing the official Open API for complete device control and monitoring.
|
|
4
|
+
|
|
5
|
+
## Key Features
|
|
6
|
+
|
|
7
|
+
- ✅ **Full device auto-discovery** on local network
|
|
8
|
+
- ✅ **3-tier polling system** for optimized updates:
|
|
9
|
+
- **Fast poll** (default 1s): Power values (pv, grid, battery, load)
|
|
10
|
+
- **Normal poll** (default 10s): All status values
|
|
11
|
+
- **Slow poll** (10min): Network status
|
|
12
|
+
- ✅ **Request deduplication** - prevents overlapping requests
|
|
13
|
+
- ✅ **Automatic retry** - 1 retry with 2000ms timeout per request
|
|
14
|
+
- ✅ **Complete state coverage** (battery, power, energy, network, device info)
|
|
15
|
+
- ✅ **Full control support** (Auto/AI/Manual/Passive modes)
|
|
16
|
+
- ✅ **Manual mode configuration** (time slots, weekdays, power, enable/disable)
|
|
17
|
+
- ✅ **Passive mode configuration** (power, duration)
|
|
18
|
+
- ✅ **Energy monitoring** (PV, grid import/export, load)
|
|
19
|
+
- ✅ **Network status monitoring** (IP, WiFi, BLE)
|
|
20
|
+
- ✅ **Energy meter with phase measurements** (A/B/C phases)
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
1. **Enable Open API** in Marstek mobile app and note UDP port (default 30000)
|
|
25
|
+
2. **Install adapter** via ioBroker admin interface
|
|
26
|
+
3. **Configure instance**:
|
|
27
|
+
- Auto discovery (recommended) or manual IP entry
|
|
28
|
+
- Set UDP port as configured in app
|
|
29
|
+
- Adjust poll interval and fastPollInterval (default 1000ms)
|
|
30
|
+
4. **Save and start** adapter
|
|
31
|
+
|
|
32
|
+
## Configuration Options
|
|
33
|
+
|
|
34
|
+
| Parameter | Description | Default |
|
|
35
|
+
|-----------|-------------|---------|
|
|
36
|
+
| **ipAddress** | Leave empty for auto-discovery, or enter device IP | (empty) |
|
|
37
|
+
| **udpPort** | UDP port for communication | 30000 |
|
|
38
|
+
| **pollInterval** | Normal poll interval for all status values (ms) | 10000 |
|
|
39
|
+
| **fastPollInterval** | Fast poll interval for power values (ms) | 1000 |
|
|
40
|
+
| **requestTimeout** | Request timeout before retry (ms) | 2000 |
|
|
41
|
+
| **maxRetries** | Max retry attempts per request | 1 |
|
|
42
|
+
| **autoDiscovery** | Enable automatic device discovery | true |
|
|
43
|
+
|
|
44
|
+
## States Documentation
|
|
45
|
+
|
|
46
|
+
### Battery States
|
|
47
|
+
- **`marstek-venus.0.battery.soc`** - State of charge (0-100%) | %, ro
|
|
48
|
+
- **`marstek-venus.0.battery.temperature`** - Battery temperature in °C | °C, ro
|
|
49
|
+
- **`marstek-venus.0.battery.capacity`** - Remaining capacity in Wh | Wh, ro
|
|
50
|
+
- **`marstek-venus.0.battery.ratedCapacity`** - Rated capacity in Wh | Wh, ro
|
|
51
|
+
- **`marstek-venus.0.battery.chargingAllowed`** - Charging permitted (true/false) | bool, rw
|
|
52
|
+
- **`marstek-venus.0.battery.dischargingAllowed`** - Discharging permitted (true/false) | bool, rw
|
|
53
|
+
|
|
54
|
+
### Power States
|
|
55
|
+
- **`marstek-venus.0.power.pv`** - PV power generation in W | W, ro
|
|
56
|
+
- **`marstek-venus.0.power.pvVoltage`** - PV voltage in V | V, ro
|
|
57
|
+
- **`marstek-venus.0.power.pvCurrent`** - PV current in A | A, ro
|
|
58
|
+
- **`marstek-venus.0.power.grid`** - Grid power flow (positive=import, negative=export) | W, ro
|
|
59
|
+
- **`marstek-venus.0.power.battery`** - Battery power flow in W | W, ro
|
|
60
|
+
- **`marstek-venus.0.power.load`** - Load consumption in W | W, ro
|
|
61
|
+
|
|
62
|
+
### Energy States
|
|
63
|
+
- **`marstek-venus.0.energy.pvTotal`** - Total PV energy generated in Wh | Wh, ro
|
|
64
|
+
- **`marstek-venus.0.energy.gridImport`** - Total grid energy imported in Wh | Wh, ro
|
|
65
|
+
- **`marstek-venus.0.energy.gridExport`** - Total grid energy exported in Wh | Wh, ro
|
|
66
|
+
- **`marstek-venus.0.energy.loadTotal`** - Total load energy consumed in Wh | Wh, ro
|
|
67
|
+
|
|
68
|
+
### Control States
|
|
69
|
+
- **`marstek-venus.0.control.mode`** - Operating mode (Auto/AI/Manual/Passive) | enum, rw
|
|
70
|
+
- **`marstek-venus.0.control.passivePower`** - Passive mode power target in W (positive=charge, negative=discharge) | W, rw
|
|
71
|
+
- **`marstek-venus.0.control.passiveDuration`** - Passive mode duration in seconds | s, rw
|
|
72
|
+
- **`marstek-venus.0.control.manualTimeNum`** - Manual mode time slot (0-9) | number, rw
|
|
73
|
+
- **`marstek-venus.0.control.manualStartTime`** - Manual mode start time (HH:MM) | string, rw
|
|
74
|
+
- **`marstek-venus.0.control.manualEndTime`** - Manual mode end time (HH:MM) | string, rw
|
|
75
|
+
- **`marstek-venus.0.control.manualWeekdays`** - Manual mode weekdays (1=Mon, 127=all) | number, rw
|
|
76
|
+
- **`marstek-venus.0.control.manualPower`** - Manual mode power target in W | W, rw
|
|
77
|
+
- **`marstek-venus.0.control.manualEnable`** - Enable manual mode schedule (true/false) | bool, rw
|
|
78
|
+
|
|
79
|
+
### Network States
|
|
80
|
+
- **`marstek-venus.0.network.ip`** - Device IP address | ip, ro
|
|
81
|
+
- **`marstek-venus.0.network.ssid`** - WiFi SSID | string, ro
|
|
82
|
+
- **`marstek-venus.0.network.rssi`** - WiFi signal strength in dBm | dBm, ro
|
|
83
|
+
- **`marstek-venus.0.network.bleState`** - BLE connection state (connected/disconnected) | enum, ro
|
|
84
|
+
|
|
85
|
+
### Info States
|
|
86
|
+
- **`marstek-venus.0.info.device`** - Device model (Venus A, B, C, D, E) | string, ro
|
|
87
|
+
- **`marstek-venus.0.info.firmware`** - Firmware version number | string, ro
|
|
88
|
+
- **`marstek-venus.0.info.mac`** - Device MAC address | mac, ro
|
|
89
|
+
- **`marstek-venus.0.info.connection`** - Connection status (true/false) | bool, ro
|
|
90
|
+
|
|
91
|
+
### Energy Meter States
|
|
92
|
+
- **`marstek-venus.0.energymeter.ctState`** - CT sensor connection state (0=disconnected, 1=connected) | enum, ro
|
|
93
|
+
- **`marstek-venus.0.energymeter.powerA`** - Phase A power in W | W, ro
|
|
94
|
+
- **`marstek-venus.0.energymeter.powerB`** - Phase B power in W | W, ro
|
|
95
|
+
- **`marstek-venus.0.energymeter.powerC`** - Phase C power in W | W, ro
|
|
96
|
+
- **`marstek-venus.0.energymeter.powerTotal`** - Total three-phase power in W | W, ro
|
|
97
|
+
|
|
98
|
+
## Control and Operation
|
|
99
|
+
|
|
100
|
+
### Switching Modes
|
|
101
|
+
- **Auto**: Fully automatic operation based on device algorithms
|
|
102
|
+
- **AI**: AI-powered optimization mode
|
|
103
|
+
- **Manual**: Schedule-based manual control with 10 time slots
|
|
104
|
+
- **Passive**: Maintain battery at specified power level for specified duration
|
|
105
|
+
|
|
106
|
+
### Manual Mode Configuration
|
|
107
|
+
Manual mode uses 10 time slots per day (0-9). Configure:
|
|
108
|
+
- **`control.manualTimeNum`** - Select time slot (0-9)
|
|
109
|
+
- **`control.manualStartTime`** - Start time for the slot (HH:MM)
|
|
110
|
+
- **`control.manualEndTime`** - End time for the slot (HH:MM)
|
|
111
|
+
- **`control.manualWeekdays`** - Bitmask for weekdays (1=Mon, 127=all)
|
|
112
|
+
- **`control.manualPower`** - Target power for the slot in W
|
|
113
|
+
- **`control.manualEnable`** - Enable this time slot
|
|
114
|
+
|
|
115
|
+
### Passive Mode Configuration
|
|
116
|
+
- **`control.passivePower`** - Target power level in W (positive=charge, negative=discharge)
|
|
117
|
+
- **`control.passiveDuration`** - Duration in seconds (0-86400)
|
|
118
|
+
|
|
119
|
+
## API Implementation
|
|
120
|
+
|
|
121
|
+
The adapter implements 100% of the official Marstek Open API Revision 1.0:
|
|
122
|
+
|
|
123
|
+
- `Marstek.GetDevice` - Device discovery and information
|
|
124
|
+
- `Wifi.GetStatus` - WiFi connection status
|
|
125
|
+
- `BLE.GetStatus` - Bluetooth status
|
|
126
|
+
- `Bat.GetStatus` - Battery detailed status
|
|
127
|
+
- `PV.GetStatus` - PV array status
|
|
128
|
+
- `ES.GetStatus` - Energy storage system status
|
|
129
|
+
- `ES.GetMode` - Current operating mode
|
|
130
|
+
- `ES.SetMode` - Set operating mode and configuration
|
|
131
|
+
- `EM.GetStatus` - Energy meter measurements
|
|
132
|
+
|
|
133
|
+
## Troubleshooting
|
|
134
|
+
|
|
135
|
+
### Discovery Issues
|
|
136
|
+
- Ensure UDP port 30000 is open and matches mobile app configuration
|
|
137
|
+
- Check that device is on the same network subnet
|
|
138
|
+
- Try manually entering IP address if auto-discovery fails
|
|
139
|
+
- Verify device WiFi connection is working
|
|
140
|
+
|
|
141
|
+
### Connection Problems
|
|
142
|
+
- Check firewall settings allowing UDP traffic
|
|
143
|
+
- Verify network connectivity to device
|
|
144
|
+
- Restart adapter and device
|
|
145
|
+
- Check WiFi signal strength (network.rssi)
|
|
146
|
+
|
|
147
|
+
### Polling Issues
|
|
148
|
+
- Adjust `fastPollInterval` for power value update frequency (default 1000ms)
|
|
149
|
+
- Adjust `pollInterval` for normal status update frequency (default 10000ms)
|
|
150
|
+
- Adjust `requestTimeout` if device needs more time to respond (default 2000ms)
|
|
151
|
+
- Increase `maxRetries` for unreliable network connections
|
|
152
|
+
- Slow poll runs every 10 minutes for network status
|
|
153
|
+
|
|
154
|
+
### State Updates Not Working
|
|
155
|
+
- Verify control states are writable (some are read-only)
|
|
156
|
+
- Check that mode changes are properly configured
|
|
157
|
+
- Ensure manual mode settings are valid
|
|
158
|
+
|
|
159
|
+
## Changelog
|
|
160
|
+
|
|
161
|
+
### 0.1.2
|
|
162
|
+
- Removed invalid ES.GetInfo call which was causing Method not found errors
|
|
163
|
+
- Device information is now obtained exclusively during discovery
|
|
164
|
+
|
|
165
|
+
### 0.1.1
|
|
166
|
+
- Added 3-tier polling system (fast/normal/slow)
|
|
167
|
+
- Added request deduplication to prevent overlapping requests
|
|
168
|
+
- Added automatic retry (1 attempt with 2000ms timeout per request)
|
|
169
|
+
- Optimized power value updates with dedicated fast poll
|
|
170
|
+
|
|
171
|
+
### 0.1.0
|
|
172
|
+
- Initial release
|
|
173
|
+
- Full API implementation
|
|
174
|
+
- Auto discovery support
|
|
175
|
+
- All operating modes implemented
|
|
176
|
+
|
|
177
|
+
## Support
|
|
178
|
+
|
|
179
|
+
For support, visit the ioBroker forum or GitHub repository. When reporting issues, please include:
|
|
180
|
+
- Adapter version
|
|
181
|
+
- Device model
|
|
182
|
+
- Firmware version
|
|
183
|
+
- Network configuration
|
|
184
|
+
- Detailed error messages
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "panel",
|
|
3
|
+
"items": {
|
|
4
|
+
"_header": {
|
|
5
|
+
"type": "header",
|
|
6
|
+
"text": "Marstek Venus Configuration",
|
|
7
|
+
"size": 2
|
|
8
|
+
},
|
|
9
|
+
"_info": {
|
|
10
|
+
"type": "staticText",
|
|
11
|
+
"label": "Pre-requirements: Enable Open API in the official Marstek mobile app first, note the configured UDP port (default: 30000), and ensure device and ioBroker are on the same local network.",
|
|
12
|
+
"newLine": true
|
|
13
|
+
},
|
|
14
|
+
"ipAddress": {
|
|
15
|
+
"type": "text",
|
|
16
|
+
"label": "Device IP Address",
|
|
17
|
+
"placeholder": "192.168.1.xxx",
|
|
18
|
+
"sm": 6,
|
|
19
|
+
"newLine": true
|
|
20
|
+
},
|
|
21
|
+
"udpPort": {
|
|
22
|
+
"type": "number",
|
|
23
|
+
"label": "UDP Port",
|
|
24
|
+
"min": 1,
|
|
25
|
+
"max": 65535,
|
|
26
|
+
"default": 30000,
|
|
27
|
+
"sm": 6
|
|
28
|
+
},
|
|
29
|
+
"pollInterval": {
|
|
30
|
+
"type": "number",
|
|
31
|
+
"label": "Poll interval (ms)",
|
|
32
|
+
"min": 500,
|
|
33
|
+
"max": 60000,
|
|
34
|
+
"default": 10000,
|
|
35
|
+
"sm": 6,
|
|
36
|
+
"newLine": true
|
|
37
|
+
},
|
|
38
|
+
"fastPollInterval": {
|
|
39
|
+
"type": "number",
|
|
40
|
+
"label": "Fast poll interval (ms)",
|
|
41
|
+
"min": 100,
|
|
42
|
+
"max": 10000,
|
|
43
|
+
"default": 1000,
|
|
44
|
+
"sm": 6
|
|
45
|
+
},
|
|
46
|
+
"requestTimeout": {
|
|
47
|
+
"type": "number",
|
|
48
|
+
"label": "Request timeout (ms)",
|
|
49
|
+
"min": 1000,
|
|
50
|
+
"max": 30000,
|
|
51
|
+
"default": 5000,
|
|
52
|
+
"sm": 6,
|
|
53
|
+
"newLine": true
|
|
54
|
+
},
|
|
55
|
+
"maxRetries": {
|
|
56
|
+
"type": "number",
|
|
57
|
+
"label": "Max retries",
|
|
58
|
+
"min": 0,
|
|
59
|
+
"max": 5,
|
|
60
|
+
"default": 1,
|
|
61
|
+
"sm": 6
|
|
62
|
+
},
|
|
63
|
+
"autoDiscovery": {
|
|
64
|
+
"type": "checkbox",
|
|
65
|
+
"label": "Auto discover devices on network",
|
|
66
|
+
"default": true,
|
|
67
|
+
"sm": 6,
|
|
68
|
+
"newLine": true
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
Binary file
|
package/admin/words.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
/* exported systemDictionary */
|
|
3
|
+
systemDictionary = {
|
|
4
|
+
"marstek-venus settings": {
|
|
5
|
+
en: "Marstek Venus settings",
|
|
6
|
+
de: "Marstek Venus Einstellungen",
|
|
7
|
+
},
|
|
8
|
+
ipAddress: {
|
|
9
|
+
en: "Device IP Address",
|
|
10
|
+
de: "Geräte IP Adresse",
|
|
11
|
+
},
|
|
12
|
+
udpPort: {
|
|
13
|
+
en: "UDP Port",
|
|
14
|
+
de: "UDP Port",
|
|
15
|
+
},
|
|
16
|
+
pollInterval: {
|
|
17
|
+
en: "Poll interval (ms)",
|
|
18
|
+
de: "Abfrageintervall (ms)",
|
|
19
|
+
},
|
|
20
|
+
autoDiscovery: {
|
|
21
|
+
en: "Auto discover devices",
|
|
22
|
+
de: "Geräte automatisch erkennen",
|
|
23
|
+
},
|
|
24
|
+
ipAddress_help: {
|
|
25
|
+
en: "Leave empty to use auto-discovery, or enter the device's IP address if known",
|
|
26
|
+
de: "Leer lassen um automatische Erkennung zu verwenden, oder geben Sie die IP-Adresse des Geräts ein, falls bekannt",
|
|
27
|
+
},
|
|
28
|
+
udpPort_help: {
|
|
29
|
+
en: "UDP port for communication with the device (default 30000, must match the port configured in the Marstek mobile app)",
|
|
30
|
+
de: "UDP-Port für die Kommunikation mit dem Gerät (Standard 30000, muss mit dem in der Marstek-Mobile-App konfigurierten Port übereinstimmen)",
|
|
31
|
+
},
|
|
32
|
+
pollInterval_help: {
|
|
33
|
+
en: "How often to query the device for data (lower values for more real-time updates, higher for less device load)",
|
|
34
|
+
de: "Wie oft das Gerät nach Daten abgefragt wird (niedrigere Werte für Echtzeit-Updates, höhere für geringere Gerätebelastung)",
|
|
35
|
+
},
|
|
36
|
+
fastPollInterval: {
|
|
37
|
+
en: "Fast poll interval (ms) - power values",
|
|
38
|
+
de: "Schnelles Abfrageintervall (ms) - Leistungswerte",
|
|
39
|
+
},
|
|
40
|
+
fastPollInterval_help: {
|
|
41
|
+
en: "How often to query power values (pv, grid, battery, load). Lower values = faster updates for power data",
|
|
42
|
+
de: "Wie oft Leistungswerte abgefragt werden (pv, grid, battery, load). Niedrigere Werte = schnellere Updates für Leistungsdaten",
|
|
43
|
+
},
|
|
44
|
+
requestTimeout: {
|
|
45
|
+
en: "Request timeout (ms)",
|
|
46
|
+
de: "Anfrage-Timeout (ms)",
|
|
47
|
+
},
|
|
48
|
+
requestTimeout_help: {
|
|
49
|
+
en: "How long to wait for a response before retrying (higher for slow devices)",
|
|
50
|
+
de: "Wie lange auf eine Antwort gewartet wird, bevor erneut versucht wird (höher für langsame Geräte)",
|
|
51
|
+
},
|
|
52
|
+
maxRetries: {
|
|
53
|
+
en: "Max retries per request",
|
|
54
|
+
de: "Max. Wiederholungen pro Anfrage",
|
|
55
|
+
},
|
|
56
|
+
maxRetries_help: {
|
|
57
|
+
en: "Number of retry attempts if a request times out (0 = no retries)",
|
|
58
|
+
de: "Anzahl der Wiederholungsversuche bei Timeout (0 = keine Wiederholungen)",
|
|
59
|
+
},
|
|
60
|
+
autoDiscovery_help: {
|
|
61
|
+
en: "Enable automatic device discovery on the local network (recommended for first-time setup)",
|
|
62
|
+
de: "Automatische Geräteerkennung im lokalen Netzwerk aktivieren (empfohlen für die Ersteinrichtung)",
|
|
63
|
+
},
|
|
64
|
+
discover: {
|
|
65
|
+
en: "Discover devices",
|
|
66
|
+
de: "Geräte suchen",
|
|
67
|
+
},
|
|
68
|
+
};
|
package/io-package.json
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common": {
|
|
3
|
+
"name": "marstek-venus",
|
|
4
|
+
"version": "0.1.4",
|
|
5
|
+
"titleLang": {
|
|
6
|
+
"en": "Marstek Venus Energy Storage",
|
|
7
|
+
"de": "Marstek Venus Energiespeicher",
|
|
8
|
+
"ru": "Marstek Venus накопитель энергии",
|
|
9
|
+
"pt": "Marstek Venus Armazenamento de Energia",
|
|
10
|
+
"nl": "Marstek Venus Energieopslag",
|
|
11
|
+
"fr": "Marstek Venus Stockage d'énergie",
|
|
12
|
+
"it": "Marstek Venus Accumulo di energia",
|
|
13
|
+
"es": "Marstek Venus Almacenamiento de energía",
|
|
14
|
+
"pl": "Marstek Venus Magazyn energii",
|
|
15
|
+
"uk": "Marstek Venus Накопичувач енергії",
|
|
16
|
+
"zh-cn": "Marstek Venus 储能"
|
|
17
|
+
},
|
|
18
|
+
"desc": {
|
|
19
|
+
"en": "Adapter for Marstek Venus C/D/E energy storage devices",
|
|
20
|
+
"de": "Adapter für Marstek Venus C/D/E Energiespeichergeräte",
|
|
21
|
+
"ru": "Адаптер для устройств накопления энергии Marstek Venus C/D/E",
|
|
22
|
+
"pt": "Adaptador para dispositivos de armazenamento de energia Marstek Venus C/D/E",
|
|
23
|
+
"nl": "Adapter voor Marstek Venus C/D/E energieopslagapparaten",
|
|
24
|
+
"fr": "Adaptateur pour les dispositifs de stockage d'énergie Marstek Venus C/D/E",
|
|
25
|
+
"it": "Adapter per dispositivi di accumulo energetico Marstek Venus C/D/E",
|
|
26
|
+
"es": "Adaptador para dispositivos de almacenamiento de energía Marstek Venus C/D/E",
|
|
27
|
+
"pl": "Adapter do urządzeń magazynowania energii Marstek Venus C/D/E",
|
|
28
|
+
"uk": "Адаптер для пристроїв накопичення енергії Marstek Venus C/D/E",
|
|
29
|
+
"zh-cn": "Marstek Venus C/D/E 储能设备适配器"
|
|
30
|
+
},
|
|
31
|
+
"descLang": {
|
|
32
|
+
"en": "Integrates Marstek Venus battery inverters with ioBroker using official local Open API",
|
|
33
|
+
"de": "Integriert Marstek Venus Batteriewechselrichter mit ioBroker über die offizielle lokale Open API"
|
|
34
|
+
},
|
|
35
|
+
"news": {
|
|
36
|
+
"0.1.4": {
|
|
37
|
+
"en": "Fixed repository validation issues, updated adapter naming conventions",
|
|
38
|
+
"de": "Repository-Validierungsprobleme behoben, Adapter-Namenskonventionen aktualisiert",
|
|
39
|
+
"ru": "Исправлены проблемы проверки репозитория, обновлены соглашения об именовании адаптеров",
|
|
40
|
+
"pt": "Corrigidos problemas de validação do repositório, atualizadas convenções de nomenclatura do adaptador",
|
|
41
|
+
"nl": "Repository-validatieproblemen opgelost, adapter naamgevingsconventies bijgewerkt",
|
|
42
|
+
"fr": "Corrigé les problèmes de validation du dépôt, mis à jour les conventions de nommage des adaptateurs",
|
|
43
|
+
"it": "Risolti problemi di validazione del repository, aggiornate le convenzioni di denominazione dell'adapter",
|
|
44
|
+
"es": "Corregidos problemas de validación del repositorio, actualizadas convenciones de nomenclatura del adaptador",
|
|
45
|
+
"pl": "Naprawiono problemy z walidacją repozytorium, zaktualizowano konwencje nazewnictwa adaptera",
|
|
46
|
+
"uk": "Виправлено проблеми перевірки репозиторію, оновлено угоди про найменування адаптерів",
|
|
47
|
+
"zh-cn": "修复了存储库验证问题,更新了适配器命名规范"
|
|
48
|
+
},
|
|
49
|
+
"0.1.2": {
|
|
50
|
+
"en": "Removed invalid ES.GetInfo call, device info obtained via discovery only",
|
|
51
|
+
"de": "Ungültiger ES.GetInfo Aufruf entfernt, Geräteinformationen werden nur über Discovery abgerufen",
|
|
52
|
+
"ru": "Удален недопустимый вызов ES.GetInfo, информация об устройстве получается только через обнаружение",
|
|
53
|
+
"pt": "Removida chamada ES.GetInfo inválida, informações do dispositivo obtidas apenas via descoberta",
|
|
54
|
+
"nl": "Ongeldige ES.GetInfo-aanroep verwijderd, apparaatinformatie alleen verkregen via discovery",
|
|
55
|
+
"fr": "Supprimé l'appel ES.GetInfo invalide, informations sur l'appareil obtenues uniquement via la découverte",
|
|
56
|
+
"it": "Rimossa chiamata ES.GetInfo non valida, informazioni sul dispositivo ottenute solo tramite discovery",
|
|
57
|
+
"es": "Eliminada llamada ES.GetInfo no válida, información del dispositivo obtenida solo a través de discovery",
|
|
58
|
+
"pl": "Usunięto nieprawidłowe wywołanie ES.GetInfo, informacje o urządzeniu uzyskiwane tylko poprzez odnajdywanie",
|
|
59
|
+
"uk": "Видалено недійсний виклик ES.GetInfo, інформація про пристрій отримується лише через виявлення",
|
|
60
|
+
"zh-cn": "移除了无效的 ES.GetInfo 调用,设备信息仅通过发现获取"
|
|
61
|
+
},
|
|
62
|
+
"0.1.1": {
|
|
63
|
+
"en": "Added 3-tier polling system, request deduplication, automatic retry, optimized power updates",
|
|
64
|
+
"de": "3-stufiges Polling-System hinzugefügt, Anfrage-Deduplizierung, automatische Wiederholung, optimierte Leistungsaktualisierungen",
|
|
65
|
+
"ru": "Добавлена 3-уровневая система опроса, дедупликация запросов, автоматический повтор, оптимизированные обновления мощности",
|
|
66
|
+
"pt": "Adicionado sistema de polling de 3 níveis, desduplicação de solicitações, repetição automática, atualizações de energia otimizadas",
|
|
67
|
+
"nl": "3-tier polling systeem toegevoegd, aanvraagdeduplicatie, automatische herhaal, geoptimaliseerde vermogensupdates",
|
|
68
|
+
"fr": "Ajouté un système de polling à 3 niveaux, déduplication des requêtes, retry automatique, mises à jour de puissance optimisées",
|
|
69
|
+
"it": "Aggiunto sistema di polling a 3 livelli, deduplicazione delle richieste, retry automatico, aggiornamenti di potenza ottimizzati",
|
|
70
|
+
"es": "Añadido sistema de polling de 3 niveles, deduplicación de solicitudes, reintento automático, actualizaciones de potencia optimizadas",
|
|
71
|
+
"pl": "Dodano 3-poziomowy system odpytywania, deduplikację żądań, automatyczne ponawianie, zoptymalizowane aktualizacje mocy",
|
|
72
|
+
"uk": "Додано 3-рівневу систему опитування, дедуплікацію запитів, автоматичне повторювання, оптимізовані оновлення потужності",
|
|
73
|
+
"zh-cn": "添加了3层轮询系统,请求去重,自动重试,优化了功率更新"
|
|
74
|
+
},
|
|
75
|
+
"0.1.0": {
|
|
76
|
+
"en": "Initial release",
|
|
77
|
+
"de": "Erstveröffentlichung",
|
|
78
|
+
"ru": "Первоначальный выпуск",
|
|
79
|
+
"pt": "Versão inicial",
|
|
80
|
+
"nl": "Eerste release",
|
|
81
|
+
"fr": "Version initiale",
|
|
82
|
+
"it": "Release iniziale",
|
|
83
|
+
"es": "Lanzamiento inicial",
|
|
84
|
+
"pl": "Pierwsze wydanie",
|
|
85
|
+
"uk": "Початковий випуск",
|
|
86
|
+
"zh-cn": "初始版本"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"icon": "marstek-venus.png",
|
|
90
|
+
"extIcon": "https://raw.githubusercontent.com/Slugger2k/ioBroker.marstek-venus/master/admin/marstek-venus.png",
|
|
91
|
+
"type": "energy",
|
|
92
|
+
"authors": [
|
|
93
|
+
"ioBroker Community"
|
|
94
|
+
],
|
|
95
|
+
"licenseInformation": {
|
|
96
|
+
"license": "MIT",
|
|
97
|
+
"type": "free"
|
|
98
|
+
},
|
|
99
|
+
"platform": "Javascript/Node.js",
|
|
100
|
+
"mode": "daemon",
|
|
101
|
+
"compact": true,
|
|
102
|
+
"tier": 3,
|
|
103
|
+
"supportedCompact": true,
|
|
104
|
+
"noConfig": false,
|
|
105
|
+
"noIntro": false,
|
|
106
|
+
"connectionType": "local",
|
|
107
|
+
"dataSource": "poll",
|
|
108
|
+
"dependencies": [
|
|
109
|
+
{
|
|
110
|
+
"js-controller": ">=5.0.19"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"keywords": [
|
|
114
|
+
"marstek",
|
|
115
|
+
"venus",
|
|
116
|
+
"battery",
|
|
117
|
+
"solar",
|
|
118
|
+
"energy storage",
|
|
119
|
+
"inverter",
|
|
120
|
+
"pv"
|
|
121
|
+
],
|
|
122
|
+
"logLevel": "info",
|
|
123
|
+
"translated": false,
|
|
124
|
+
"adminUI": {"config": "json"},
|
|
125
|
+
"supportedMessages": [
|
|
126
|
+
"sendTo"
|
|
127
|
+
],
|
|
128
|
+
"readme": "https://github.com/Slugger2k/ioBroker.marstek-venus#readme",
|
|
129
|
+
"bugs": "https://github.com/Slugger2k/ioBroker.marstek-venus/issues",
|
|
130
|
+
"changelog": "https://github.com/Slugger2k/ioBroker.marstek-venus/blob/master/CHANGELOG.md"
|
|
131
|
+
},
|
|
132
|
+
"native": {
|
|
133
|
+
"ipAddress": "",
|
|
134
|
+
"udpPort": 30000,
|
|
135
|
+
"pollInterval": 10000,
|
|
136
|
+
"fastPollInterval": 1000,
|
|
137
|
+
"requestTimeout": 5000,
|
|
138
|
+
"maxRetries": 1,
|
|
139
|
+
"autoDiscovery": true
|
|
140
|
+
},
|
|
141
|
+
"instanceObjects": [
|
|
142
|
+
{
|
|
143
|
+
"_id": "info",
|
|
144
|
+
"type": "channel",
|
|
145
|
+
"common": {
|
|
146
|
+
"name": "Information",
|
|
147
|
+
"role": "info"
|
|
148
|
+
},
|
|
149
|
+
"native": {}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"_id": "battery",
|
|
153
|
+
"type": "channel",
|
|
154
|
+
"common": {
|
|
155
|
+
"name": "Battery",
|
|
156
|
+
"role": "battery"
|
|
157
|
+
},
|
|
158
|
+
"native": {}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"_id": "power",
|
|
162
|
+
"type": "channel",
|
|
163
|
+
"common": {
|
|
164
|
+
"name": "Power",
|
|
165
|
+
"role": "power"
|
|
166
|
+
},
|
|
167
|
+
"native": {}
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"_id": "energy",
|
|
171
|
+
"type": "channel",
|
|
172
|
+
"common": {
|
|
173
|
+
"name": "Energy",
|
|
174
|
+
"role": "energy"
|
|
175
|
+
},
|
|
176
|
+
"native": {}
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"_id": "control",
|
|
180
|
+
"type": "channel",
|
|
181
|
+
"common": {
|
|
182
|
+
"name": "Control",
|
|
183
|
+
"role": "control"
|
|
184
|
+
},
|
|
185
|
+
"native": {}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"_id": "network",
|
|
189
|
+
"type": "channel",
|
|
190
|
+
"common": {
|
|
191
|
+
"name": "Network",
|
|
192
|
+
"role": "info.network"
|
|
193
|
+
},
|
|
194
|
+
"native": {}
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"_id": "energymeter",
|
|
198
|
+
"type": "channel",
|
|
199
|
+
"common": {
|
|
200
|
+
"name": "Energy Meter",
|
|
201
|
+
"role": "meter"
|
|
202
|
+
},
|
|
203
|
+
"native": {}
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Adapter Config for Marstek Venus
|
|
2
|
+
// This file is required by ioBroker's adapter system
|
|
3
|
+
// It's typically generated during build process, but we'll create a minimal version
|
|
4
|
+
|
|
5
|
+
// This is a placeholder that allows the adapter to load properly
|
|
6
|
+
// In a real build, this would contain the actual adapter configuration logic
|
|
7
|
+
|
|
8
|
+
if (typeof module !== "undefined" && module.exports) {
|
|
9
|
+
module.exports = {
|
|
10
|
+
// Minimal adapter config object
|
|
11
|
+
// Actual implementation would be in main.js
|
|
12
|
+
};
|
|
13
|
+
}
|