Tijd voor een necro, helaas.
Ik ben net begonnen met het vervangen van de Shelly die ik momenteel gebruik voor het uitlezen van mijn omvormer output naar de modbus methode.
Het blijkt allemaal een stuk lastiger zijn dan ik in de vele tutorials tegenkom.
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
| sphome:
name: growatt-esp
friendly_name: growatt-esp
esp8266:
board: esp01_1m
# Enable logging
logger:
baud_rate: 0
# Enable Home Assistant API
api:
encryption:
key: "key"
ota:
password: "password"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
web_server:
port: 80
captive_portal:
time:
- platform: homeassistant
id: homeassistant_time
uart:
id: gw_uart
baud_rate: 9600
tx_pin: GPIO15
rx_pin: GPIO13
modbus:
id: modbus1
uart_id: gw_uart
modbus_controller:
- id: growatt
address: 0x02
modbus_id: modbus1
setup_priority: -10
sensor:
- platform: growatt_solar
update_interval: 5s
protocol_version: RTU2
inverter_status:
name: "Growatt Status Code"
phase_a:
voltage:
name: "Growatt Voltage Phase A"
current:
name: "Growatt Current Phase A"
active_power:
name: "Growatt Power Phase A"
phase_b:
voltage:
name: "Growatt Voltage Phase B"
current:
name: "Growatt Current Phase B"
active_power:
name: "Growatt Power Phase B"
phase_c:
voltage:
name: "Growatt Voltage Phase C"
current:
name: "Growatt Current Phase C"
active_power:
name: "Growatt Power Phase C"
pv1:
voltage:
name: "Growatt PV1 Voltage"
current:
name: "Growatt PV1 Current"
active_power:
name: "Growatt PV1 Active Power"
pv2:
voltage:
name: "Growatt PV2 Voltage"
current:
name: "Growatt PV2 Current"
active_power:
name: "Growatt PV2 Active Power"
active_power:
name: "Growatt Grid Active Power"
pv_active_power:
name: "Growatt PV Active Power"
frequency:
name: "Growatt Frequency"
energy_production_day:
name: "Growatt Today's Generation"
total_energy_production:
name: "Growatt Total Energy Production"
inverter_module_temp:
name: "Growatt Inverter Module Temp"
- platform: modbus_controller
modbus_controller_id: growatt
address: 0
register_type: "read"
#internal: true
accuracy_decimals: 0
id: status
- platform: modbus_controller
modbus_controller_id: growatt
name: "growatt Power Factor"
address: 3
register_type: "holding"
device_class: power
icon: mdi:flash
value_type: U_WORD
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: growatt
name: "growatt Max Voltage"
address: 65
register_type: "holding"
device_class: power
icon: mdi:flash
value_type: U_WORD
unit_of_measurement: V
accuracy_decimals: 1
filters:
- multiply: 0.1
number:
- platform: modbus_controller
modbus_controller_id: growatt
id: pv_powerfactor
name: "PV inverter Power factor Growatt 3000"
address: 3
register_type: holding
value_type: U_WORD
min_value: 0
max_value: 100
lambda: "return x; "
write_lambda: |-
ESP_LOGD("main","Modbus Number incoming value = %f",x);
uint16_t powerfactor = x ;
esphome::modbus_controller::ModbusCommandItem set_payload_command = esphome::modbus_controller::ModbusCommandItem::create_write_single_command(growatt, 3, powerfactor);
return x;
text_sensor:
- platform: template
name: "Growatt Status"
icon: mdi:eye
entity_category: diagnostic
lambda: |-
if ((id(status).state) == 1) {
return {"Normal"};
} else if ((id(status).state) == 0) {
return {"Standby"};
} else if ((id(status).state) == 2) {
return {"Discharge"};
} else if ((id(status).state) == 3) {
return {"Fault"};
} else if ((id(status).state) == 4) {
return {"Flash"};
} else if ((id(status).state) == 5) {
return {"PV Charging"};
} else if ((id(status).state) == 6) {
return {"AC Charging"};
} else if ((id(status).state) == 7) {
return {"Combined Charging"};
} else if ((id(status).state) == 8) {
return {"Combined Charging & Bypass"};
} else if ((id(status).state) == 9) {
return {"PV Charging & Bypass"};
} else if ((id(status).state) == 10) {
return {"AC Charging & Bypass"};
} else if ((id(status).state) == 11) {
return {"Bypass"};
} else if (id(status).state == 12) {
return {"PV Charge and Discharge"};
} else {
return {"Unknown"};
} |
Voorzover ik kan zien zou dit moeten werken op een NodeMCU, waarbij ik dus niet de reguliere TX/RX pins gebruik maar de TX2/RX2 pins, D7 en D8. Dit omdat de logging inderdaad in de weg kan gaan zitten.
However, ik krijg dus met geen mogelijkheid een antwoord op de frames die ik (denk dat ik) stuur.
De TX led van de RS485 board gaat netjes elke 5 seconden aan, maar ik krijg nooit een antwoord terug.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 13:38:36 [D] [modbus_controller:040]
Modbus command to device=2 register=0x03 countdown=0 no response received - removed from send queue
13:38:37 [D] [modbus_controller:040]
Modbus command to device=2 register=0x41 countdown=0 no response received - removed from send queue
13:38:39 [D] [modbus_controller:040]
Modbus command to device=2 register=0x00 countdown=0 no response received - removed from send queue
13:39:30 [D] [text_sensor:064]
'Growatt Status': Sending state 'Unknown' |
Id 0x2 voor de inverter klopt hier: dat is inderdaad wat ik heb ingesteld op de inverter zelf. Om maar zeker te weten dat hij een bekend adres zou hebben. Ik heb de inverter ook al van de stroom af gehaald in de hoop dat er misschien iets zou veranderen bij een cold boot, maar helaas.
Ik denk dat er of een communicatieprobleem is mbt die idiote stekker onderaan de inverter (hoe kom je eigenlijk aan een stekker die daarop past? Ik kan ze echt nergens vinden) maar ook met andere kabels werkt het gewoon niet.
Ik heb al geprobeerd een paar spijkers in de connector te rammen gewoon om te zien of er uberhaupt wel contact is, maar dat was natuurlijk ook geen succes.
Ik raak een beetje door mijn ideeen heen. Iemand suggesties?
Kia E-Niro 2019 Executiveline. OTGW/HA Enthousiasteling.