Growatt WiFi Module Protocol
Table of Contents
1 Growatt Wifi Module Data Protocol
1.1 Protocol set-up
DataLogger (client) connects to server.
Every 3 minutes, there's a PING that is echoed by the server. This is independent of the other messages.
0000: 00 01 00 02 00 0c 01 16 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 77
Client announces the inverter.
0000: 00 01 00 02 00 d9 01 03 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 4f 50 32 34 35 31 30 30 31 37 00 00 00 00 77OP24510017.... 0020: 00 00 02 00 00 00 2c 01 01 00 00 00 00 00 ff 00 ......,......... 0030: ff ff ff 00 01 11 70 17 70 30 43 30 2e 39 20 30 ......p.p0C0.9 0 0040: 44 30 2e 39 20 00 01 00 00 0d ac 00 1e 07 35 0a D0.9 .........5. 0050: 55 12 91 13 9c 4f 50 32 34 35 31 30 30 31 37 00 U....OP24510017. 0060: 10 f1 71 00 01 00 00 00 00 00 00 00 00 07 35 0a ..q...........5. 0070: 55 12 91 13 9c 06 40 0a 8c 11 f8 15 18 08 53 02 U.....@.......S. 0080: 03 00 2d 00 59 07 df 00 07 00 17 00 05 00 2a 00 ..-.Y.........*. 0090: 05 03 e8 03 e8 00 64 00 64 03 e8 03 e8 00 00 00 ......d.d....... 00a0: 00 47 72 6f 77 61 74 74 20 49 6e 76 65 72 74 65 .Growatt Inverte 00b0: 72 44 43 41 41 30 34 30 34 00 00 00 05 01 30 00 rDCAA0404.....0. 00c0: 01 00 00 00 00 00 00 00 00 00 00 00 01 13 a6 00 ................ 00d0: c8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
Initially, the server will ACK and then ask for client details.
0000: 00 01 00 02 00 03 01 03 00 00 01 00 02 00 03 header + length (3) 01 03 00 ACK 01 03 message 0000: 00 01 00 02 00 10 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 04 00 15 77.... 00 01 00 02 00 10 header + length (16) 01 19 query 41..37 data logger id 00 04 00 15 First / last config item
The client will send a number of messages with details, one for every config item requested. Note some items are skipped.
0000: 00 01 00 02 00 10 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 04 00 15 77....
0000: 00 01 00 02 00 11 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 04 00 01 35 77....5
0000: 00 01 00 02 00 11 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 05 00 01 31 77....1
0000: 00 01 00 02 00 12 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 06 00 02 33 32 77....32
0000: 00 01 00 02 00 1a 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 08 00 0a 41 48 34 34 34 36 30 34 37 37 77....AH44460477
0000: 00 01 00 02 00 11 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 0a 00 01 30 77....0
0000: 00 01 00 02 00 1e 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 0b 00 0e 30 23 30 23 30 2e 30 2e 30 2e 77....0#0#0.0.0. 0020: 30 23 30 23 0#0#
0000: 00 01 00 02 00 11 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 0d 00 01 32 77....2
0000: 00 01 00 02 00 1e 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 0e 00 0e 31 39 32 2e 31 36 38 2e 31 30 77....192.168.10 0020: 2e 31 30 30 .100
0000: 00 01 00 02 00 14 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 0f 00 04 38 38 39 36 77....8896
0000: 00 01 00 02 00 21 01 19 41 48 34 34 34 36 30 34 .....!..AH444604 0010: 37 37 00 10 00 11 41 43 3a 43 46 3a 32 33 3a 33 77....AC:CF:23:3 0020: 44 3a 38 31 3a 45 35 D:81:E5
0000: 00 01 00 02 00 22 01 19 41 48 34 34 34 36 30 34 ....."..AH444604 0010: 37 37 00 11 00 12 73 65 72 76 65 72 2e 67 72 6f 77....server.gro 0020: 77 61 74 74 2e 63 6f 6d watt.com
0000: 00 01 00 02 00 14 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 12 00 04 35 32 37 39 77....5279
0000: 00 01 00 02 00 22 01 19 41 48 34 34 34 36 30 34 ....."..AH444604 0010: 37 37 00 13 00 12 73 65 72 76 65 72 2e 67 72 6f 77....server.gro 0020: 77 61 74 74 2e 63 6f 6d watt.com
0000: 00 01 00 02 00 17 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 15 00 07 33 2e 31 2e 30 2e 30 77....3.1.0.0
If no data has been sent yet, it starts repeating the inverter announce message every 30 seconds, until the server replies with ACK.
Alternatively, the server may ACK and ask for details again. The above process is repeated.
1.2 Data exchange
Once the communication is established and ACKed, the client will send a DATA message (containing inverter energy data) every 5 minutes.
0000: 00 01 00 02 00 d9 01 04 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 4f 50 32 34 35 31 30 30 31 37 00 00 00 00 77OP24510017.... 0020: 00 00 02 00 00 00 2c 00 00 00 00 00 00 0b 15 00 ......,......... 0030: 00 00 00 00 00 0d 08 00 00 00 00 00 00 00 00 00 ................ 0040: 00 13 87 09 2c 00 00 00 00 00 00 09 2e 00 00 00 ....,........... 0050: 00 00 00 09 36 00 00 00 00 00 00 00 00 00 00 00 ....6........... 0060: 00 14 91 00 27 4b 60 00 eb 00 00 00 00 00 00 00 ....'K`......... 0070: 00 00 00 00 00 00 00 00 00 00 e9 08 8f 08 7e 00 ..............~. 0080: 00 00 2d 00 59 4e 20 00 00 00 00 00 00 00 00 00 ..-.YN ......... 0090: 00 04 39 00 00 00 00 00 00 0f 99 00 00 13 d2 00 ..9............. 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00b0: 00 00 01 11 70 00 00 00 00 00 00 00 00 00 00 00 ....p........... 00c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
Which is immedeately ACKed by the server
0000: 00 01 00 02 00 03 01 04 00 .........
If no response is received from the server for 15 messages (data, ack, …) the connection is dropped and immedeately re-established.
The server can ask for client details at any time, without interrupting the stream of messages, e.g.
client sends DATA server sends IDENTIFY client sends configure data server ACKs the DATA
1.3 Message details
1.3.1 Basic message format
00 01 00 02 ll ll tt tt data ll ll = length of tt tt + data tt tt = message type 01 03 DATA3 (data > 00) 01 03 DATA3 ACK (data = 00) 01 04 DATA4 (data > 00) 01 04 DATA4 ACK (data = 00) 01 16 PING (data = DataloggerId/a) 01 18 CONFIGURE 01 19 IDENTIFY (DataloggerId/a + 00 04 00 15)
1.3.2 PING
0000: 00 01 00 02 00 0c 01 16 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 77 00 01 00 02 header 00 0c length 01 16 type = PING 41..37 AH44460477 (data logger id)
1.3.3 DATA4 ACK
0000: 00 01 00 02 00 03 01 04 00 ......... 00 01 00 02 header 00 03 length 01 04 type = DATA4 00 additional info
1.3.4 DATA3 ACK + IDENTIFY
0000: 00 01 00 02 00 03 01 03 00 00 01 00 02 00 10 01 ................ 0010: 19 41 48 34 34 34 36 30 34 37 37 00 04 00 15 .AH44460477.... 00 01 00 02 header 00 03 length 01 03 type = DATA3 00 additional info 00 01 00 02 header 00 10 length (16) 01 19 type = QUERY 41..37 data logger id 00 04 00 15 Identify?
1.3.5 ANNOUNCE
ANNOUNCE is a DATA3 message (type = 0x0103).
0000: 00 01 00 02 00 d9 01 03 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 4f 50 32 34 35 31 30 30 31 37 00 00 00 00 77OP24510017.... 0020: 00 00 02 00 00 00 2c 01 01 00 00 00 00 00 ff 00 ......,......... 0030: ff ff ff 00 01 11 70 17 70 30 43 30 2e 39 20 30 ......p.p0C0.9 0 0040: 44 30 2e 39 20 00 01 00 00 0d ac 00 1e 07 35 0a D0.9 .........5. 0050: 55 12 91 13 9c 4f 50 32 34 35 31 30 30 31 37 00 U....OP24510017. 0060: 10 f1 71 00 01 00 00 00 00 00 00 00 00 07 35 0a ..q...........5. 0070: 55 12 91 13 9c 06 40 0a 8c 11 f8 15 18 08 53 02 U.....@.......S. 0080: 03 00 2d 00 59 07 dc 00 01 00 02 00 10 00 39 00 ..-.Y.........9. 0090: 00 03 e8 03 e8 00 64 00 64 03 e8 03 e8 00 00 00 ......d.d....... 00a0: 00 47 72 6f 77 61 74 74 20 49 6e 76 65 72 74 65 .Growatt Inverte 00b0: 72 44 43 41 41 30 34 30 34 00 00 00 05 01 30 00 rDCAA0404.....0. 00c0: 01 00 00 00 00 00 00 00 00 00 00 00 01 13 a6 00 ................ 00d0: c8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
This message is confirmed by the server with an empty DATA3 message.
00 01 00 02 00 d9 01 03 AH44460477 OP24510017 00 00 00 00 00 00 02 00 00 00 2c 01 01 00 00 00 00 00 ff 00 ff ff ff 00 01 11 70 17 70 0C0.9 0D0.9 !trailing space! 00 01 00 00 0d ac 00 1e 07 35 0a 55 12 91 13 9c OP24510017 00 10 f1 71 00 01 00 00 00 00 00 00 00 00 07 35 0a 55 12 91 13 9c 06 40 0a 8c 11 f8 15 18 08 53 02 03 00 2d 00 59 07 dc 00 01 00 02 00 10 00 39 00 00 03 e8 03 e8 00 64 00 64 03 e8 03 e8 00 00 00 00 Growatt Inverter DCAA0404 00 00 00 05 01 30 00 01 00 00 00 00 00 00 00 00 00 00 00 01 13 a6 00 c8 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(inverter > property:0C0.9/DCAA0404/A0B0D1T0PFU1M7S1)?
1.3.6 CLIENT DETAILS
00 01 00 02 ll ll 01 19 DataloggerId/a ss ss ll ll data ss ss = subtype ll ll = length of data to follow 00 04 00 01 35 5 loginterval/a 00 05 00 01 31 1/a dev addr range? 00 06 00 02 33 32 32/a dev addr range? 00 08 00 ll AH44460477 DataloggerId/a 00 0a 00 01 30 0/a 00 0b 00 0e 0#0#0.0.0.0#0# ?listen?/a 00 0d 00 01 32 2/a 00 0e 00 0e 192.168.10.100 Local IP/a 00 0f 00 04 3498 Local Port/a? 00 10 00 11 AC:CF:23:3D:81:E5 MAC address/a 00 11 00 0d 192.168.1.251 Server IP/a? 00 12 00 04 5279 Server Port/a 00 13 00 0d 192.168.1.251 Server IP/a 00 15 00 07 3.1.0.0 Growatt WiFi version/a 0000: 00 01 00 02 00 11 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 04 00 01 35 77....5 00 01 00 02 00 11 01 19 AH44460477 00 04 00 01 35 log interval? 5 min? 0000: 00 01 00 02 00 11 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 05 00 01 31 00 01 00 02 00 12 01 19 41 77....1........A 0020: 48 34 34 34 36 30 34 37 37 00 06 00 02 33 32 00 H44460477....32. 0030: 01 00 02 00 1a 01 19 41 48 34 34 34 36 30 34 37 .......AH4446047 0040: 37 00 08 00 0a 41 48 34 34 34 36 30 34 37 37 00 7....AH44460477. 0050: 01 00 02 00 11 01 19 41 48 34 34 34 36 30 34 37 .......AH4446047 0060: 37 00 0a 00 01 30 7....0 00 01 00 02 00 11 01 19 AH44460477 00 05 00 01 31 00 01 00 02 00 12 01 19 AH44460477 00 06 00 02 33 32 Max TCP Num (Server)? 00 01 00 02 00 1a 01 19 AH44460477 00 08 00 0a AH44460477 data logger id 00 01 00 02 00 11 01 19 AH44460477 00 0a 00 01 30 0000: 00 01 00 02 00 1e 01 19 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 0b 00 0e 30 23 30 23 30 2e 30 2e 30 2e 77....0#0#0.0.0. 0020: 30 23 30 23 00 01 00 02 00 11 01 19 41 48 34 34 0#0#........AH44 0030: 34 36 30 34 37 37 00 0d 00 01 32 00 01 00 02 00 460477....2..... 0040: 1e 01 19 41 48 34 34 34 36 30 34 37 37 00 0e 00 ...AH44460477... 0050: 0e 31 39 32 2e 31 36 38 2e 31 30 2e 31 30 30 00 .192.168.10.100. 0060: 01 00 02 00 14 01 19 41 48 34 34 34 36 30 34 37 .......AH4446047 0070: 37 00 0f 00 04 33 34 39 38 7....3498 00 01 00 02 00 1e 01 19 AH44460477 00 0b 00 0e 0#0#0.0.0.0#0# 00 01 00 02 00 11 01 19 AH44460477 00 0d 00 01 32 00 01 00 02 00 1e 01 19 AH44460477 00 0e 00 0e 192.168.10.100 Local IP 00 01 00 02 00 14 01 19 AH44460477 00 0f 00 04 3498 Local Port? 0000: 00 01 00 02 00 21 01 19 41 48 34 34 34 36 30 34 .....!..AH444604 0010: 37 37 00 10 00 11 41 43 3a 43 46 3a 32 33 3a 33 77....AC:CF:23:3 0020: 44 3a 38 31 3a 45 35 00 01 00 02 00 1d 01 19 41 D:81:E5........A 0030: 48 34 34 34 36 30 34 37 37 00 11 00 0d 31 39 32 H44460477....192 0040: 2e 31 36 38 2e 31 2e 32 35 31 00 01 00 02 00 14 .168.1.251...... 0050: 01 19 41 48 34 34 34 36 30 34 37 37 00 12 00 04 ..AH44460477.... 0060: 35 32 37 39 00 01 00 02 00 1d 01 19 41 48 34 34 5279........AH44 0070: 34 36 30 34 37 37 00 13 00 0d 31 39 32 2e 31 36 460477....192.16 0080: 38 2e 31 2e 32 35 31 00 01 00 02 00 17 01 19 41 8.1.251........A 0090: 48 34 34 34 36 30 34 37 37 00 15 00 07 33 2e 31 H44460477....3.1 00a0: 2e 30 2e 30 .0.0 00 01 00 02 00 21 01 19 AH44460477 00 10 00 11 AC:CF:23:3D:81:E5 MAC address 00 01 00 02 00 1d 01 19 AH44460477 00 11 00 0d 192.168.1.251 Server name/IP 00 01 00 02 00 14 01 19 AH44460477 00 12 00 04 5279 Server Port 00 01 00 02 00 1d 01 19 AH44460477 00 13 00 0d 192.168.1.251 Server name/IP? 00 01 00 02 00 17 01 19 AH44460477 00 15 00 07 3.1.0.0 WiFi module (firmware) version
The WiFi module will connect to the Growatt server, as configured by items 0x12 and 0x13.
Note that Growatt requires the server name (config item 0x13) to be "server.growatt.com". It will force reconfiguration/reboot of the client if there's a different content. Even the server IP is not accepted. According to Growatt support department:
This is done by Growatt, please don't worry.
We will build a database in US to make visit speed faster, so your wi-fi server address must be server.growatt.com, not the IP address, otherwise your plant data will not come to new database.
Our engineer is searching these Wi-Fi which Server address is not server.growatt.com, and try modify it, to make sure all data can move to new database then.
The switch to the new database is scheduled for July 28 2015, 08.00-11.00 GMT+8.
1.3.7 ENERGY DATA
Energy data is a DATA4 message (type = 0x0104).
0000: 00 01 00 02 00 d9 01 04 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 4f 50 32 34 35 31 30 30 31 37 00 00 00 00 77OP24510017.... 0020: 00 00 02 00 00 00 2c 00 01 00 00 0a b1 09 f9 00 ......,......... 0030: 00 00 00 00 00 15 63 00 05 00 00 0a b1 00 00 08 ......c......... 0040: 44 13 84 09 04 00 03 00 00 02 b4 08 fc 00 04 00 D............... 0050: 00 03 98 09 08 00 03 00 00 02 b5 00 00 00 f3 00 ................ 0060: 00 01 c3 00 03 0e 47 01 6f 00 00 00 00 00 00 00 ......G.o....... 0070: 00 00 00 00 00 00 00 00 00 01 73 0b 4e 0b 48 00 ..........s.N.H. 0080: 00 00 2d 00 59 4e 20 00 00 00 00 00 00 00 00 00 ..-.YN ......... 0090: 00 00 00 00 00 00 f3 00 00 01 bf 00 00 01 bf 00 ................ 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00b0: 04 00 01 11 70 00 00 00 00 00 00 00 00 00 00 00 ....p........... 00c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
This message is confirmed by the server with an empty DATA4 message.
1.3.8 CONFIGURE
0000: 00 01 00 02 00 22 01 18 41 48 34 34 34 36 30 34 ....."..AH444604 0010: 37 37 00 13 00 12 73 65 72 76 65 72 2e 67 72 6f 77....server.gro 0020: 77 61 74 74 2e 63 6f 6d watt.com 00 01 00 02 header 00 22 length 01 18 type = CONFIG 41..37 DataloggerId/a 00 13 config = SERVERADDRESS 00 12 ... length + value
This one ( 00 13
) sets the server address to server.growatt.com.
Client response
0000: 00 01 00 02 00 0f 01 18 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 13 00 77... 00 01 00 02 header 00 0f length 01 18 type = CONFIG 41..37 DataloggerId/a 00 13 config = SERVERADDRESS 00 empty => ACK
If something wrong with the request, e.g. an invalid value is requested, the final byte will be 0x03 (NACK).
Note: When changing the interval time (config item 4) the data logger will transmit data messages at the indicated interval. The spreadsheets downloadable from the Growatt server will reflect the changed interval but the graphs on the server will still be adjusted to the standard 5-min interval.
1.3.9 REBOOT
0000: 00 01 00 02 00 11 01 18 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 20 00 01 31 77. ..1 00 01 00 02 header 00 11 length 01 18 type = CONFIG 41..37 DataloggerId/a 00 20 config = REBOOT 00 01 31 1/a
Client response
0000: 00 01 00 02 00 0f 01 18 41 48 34 34 34 36 30 34 ........AH444604 0010: 37 37 00 20 00 77. . 00 01 00 02 header 00 0f length 01 18 type = CONFIG 41..37 DataloggerId/a 00 20 config = REBOOT 00 empty => ACK
And then the WiFi modules reboots.