Übertragung WR Daten per MQTT an OpenWB
Re: Übertragung WR Daten per MQTT an OpenWB
Solax G3 oder G4? Meines wissens stellt der Wifi-Dongle kein Modbus zur Verfügung. Bei G3 geht das über den LAN-Port, bei G4 gibt es den nicht mehr. Da muss ein PE11 oder ähnliches dazwischen. (Bei mir ein PE11-M, am COM-Port des Solax wird neben dem RS485 auch 12V zur Verfügung gestellt, mit dem der PE11-M betrieben werden kann)
Re: Übertragung WR Daten per MQTT an OpenWB
Wobei ich nicht das Solax-Modul in OpenWB nutze, sondern die Daten per Node-Red auslese und dann per MQTT an ddie OpenWB schicke.
Dafür verwende ich einen "Modbus-Flex-Sequencer"-Node, mit einer vor- und nachgeschalteten JS-Funktion.
Input-Funktion:
msg.sequences = [
{ name: "solax/grid/frequency", fc: 4, address: 0x0007, unitid: 1, quantity: 1},
{ name: "solax/battery2/soc", fc: 4, address: 0x001C, unitid: 1, quantity: 1},
{ name: "solax/grid/W", fc: 4, address: 0x0046, unitid: 1, quantity: 2},
{ name: "solax/grid/UL1", fc: 4, address: 0x006A, unitid: 1, quantity: 1 },
{ name: "solax/grid/UL2", fc: 4, address: 0x006E, unitid: 1, quantity: 1 },
{ name: "solax/grid/UL3", fc: 4, address: 0x0072, unitid: 1, quantity: 1 },
{ name: "solax/grid/PL1", fc: 4, address: 0x0082, unitid: 1, quantity: 2 },
{ name: "solax/grid/PL2", fc: 4, address: 0x0084, unitid: 1, quantity: 2 },
{ name: "solax/grid/PL3", fc: 4, address: 0x0086, unitid: 1, quantity: 2 },
{ name: "solax/pv/W", fc: 4, address: 0x0003, unitid: 1, quantity: 4 },
{ name: "solax/battery/W", fc: 4, address: 0x0016, unitid: 1, quantity: 1 },
{ name: "solax/pv/Wh", fc: 4, address: 0x0094, unitid: 1, quantity: 2 },
{ name: "solax/grid_in/counter", fc: 4, address: 0x004A, unitid: 1, quantity: 2 },
{ name: "solax/grid_out/counter", fc: 4, address: 0x0048, unitid: 1, quantity: 2 },
{ name: "solax/battery2_out/counter", fc: 4, address: 0x0021, unitid: 1, quantity: 2 },
{ name: "solax/battery2_in/counter", fc: 4, address: 0x001D, unitid: 1, quantity: 2 }
];
return msg;
Output-Funktion:
if(msg.quantity == 1)
{
msg.payload = (msg.payload[0] << 16) >> 16;
}
if (msg.quantity == 2)
{
msg.payload = msg.payload[0] + (msg.payload[1] << 16);
}
if (msg.quantity == 4) {
msg.payload = Math.round(((msg.payload[0] / 10) * (msg.payload[2] / 10)) + ((msg.payload[1] / 10) * (msg.payload[3] / 10)), 0);
}
return msg;
Dafür verwende ich einen "Modbus-Flex-Sequencer"-Node, mit einer vor- und nachgeschalteten JS-Funktion.
Input-Funktion:
msg.sequences = [
{ name: "solax/grid/frequency", fc: 4, address: 0x0007, unitid: 1, quantity: 1},
{ name: "solax/battery2/soc", fc: 4, address: 0x001C, unitid: 1, quantity: 1},
{ name: "solax/grid/W", fc: 4, address: 0x0046, unitid: 1, quantity: 2},
{ name: "solax/grid/UL1", fc: 4, address: 0x006A, unitid: 1, quantity: 1 },
{ name: "solax/grid/UL2", fc: 4, address: 0x006E, unitid: 1, quantity: 1 },
{ name: "solax/grid/UL3", fc: 4, address: 0x0072, unitid: 1, quantity: 1 },
{ name: "solax/grid/PL1", fc: 4, address: 0x0082, unitid: 1, quantity: 2 },
{ name: "solax/grid/PL2", fc: 4, address: 0x0084, unitid: 1, quantity: 2 },
{ name: "solax/grid/PL3", fc: 4, address: 0x0086, unitid: 1, quantity: 2 },
{ name: "solax/pv/W", fc: 4, address: 0x0003, unitid: 1, quantity: 4 },
{ name: "solax/battery/W", fc: 4, address: 0x0016, unitid: 1, quantity: 1 },
{ name: "solax/pv/Wh", fc: 4, address: 0x0094, unitid: 1, quantity: 2 },
{ name: "solax/grid_in/counter", fc: 4, address: 0x004A, unitid: 1, quantity: 2 },
{ name: "solax/grid_out/counter", fc: 4, address: 0x0048, unitid: 1, quantity: 2 },
{ name: "solax/battery2_out/counter", fc: 4, address: 0x0021, unitid: 1, quantity: 2 },
{ name: "solax/battery2_in/counter", fc: 4, address: 0x001D, unitid: 1, quantity: 2 }
];
return msg;
Output-Funktion:
if(msg.quantity == 1)
{
msg.payload = (msg.payload[0] << 16) >> 16;
}
if (msg.quantity == 2)
{
msg.payload = msg.payload[0] + (msg.payload[1] << 16);
}
if (msg.quantity == 4) {
msg.payload = Math.round(((msg.payload[0] / 10) * (msg.payload[2] / 10)) + ((msg.payload[1] / 10) * (msg.payload[3] / 10)), 0);
}
return msg;
Re: Übertragung WR Daten per MQTT an OpenWB
Danke für die Tipps. Es ist ein G2 (Mic, kein Hybrid).
Einen PE11 habe ich noch irgendwo rumliegen. Hat jemand einen DTSU 666 mit PE 11 in Verwendung zwecks Verdrahtung?
Einen PE11 habe ich noch irgendwo rumliegen. Hat jemand einen DTSU 666 mit PE 11 in Verwendung zwecks Verdrahtung?
Re: Übertragung WR Daten per MQTT an OpenWB
Vom G2 an habe ich keine Ahnung. Die neueren haben 2 getrennte Modbus-Anschlüsse. Einen für den DTSU, einen für sie Außenwelt. Genau um gleichzeitige Abfragen zu verhindern.
Re: Übertragung WR Daten per MQTT an OpenWB
Der G2 MIC ist eigentlich der aktuellste. Die Hybriden sind mittlerweile bei G4.2, wenn mich nicht alles täuscht.
Nach Rücksprache mit SolaX, kam folgende Antwort:
Das heißt für mich, Parallelabfrage prinzipiell kein Problem. Dennoch habe ich die SD Karte neu aufgesetzt und den WiFi Stick blockiert, das er nicht mehr in die Cloud sendet. Trotzdem bleibt diese Meldung bei Zähler und Wechselrichter-Komponente:
Gibt es eine Möglichkeit, Version 1.9 nochmal zu installieren? Die alte SD Karte bootet nicht mehr, warum auch immer. Habe gerade keinen Monitor zur Hand...
Nach Rücksprache mit SolaX, kam folgende Antwort:
Code: Alles auswählen
For the MIC G2, if you want to install the meter, and process modbus communication, you can use WiFi V3.0 dongle to manage the modbus TCP communication, so it will not be in conflict.
Code: Alles auswählen
modules.common.modbus <class 'modules.common.fault_state.FaultState'> ('modules.common.modbus Modbus Error: [Input/Output] No Response received from the remote unit/Unable to decode response', <FaultStateLevel.ERROR: 2>)
Re: Übertragung WR Daten per MQTT an OpenWB
Für die, die ähnliche Probleme haben. Mit dem OpenWB EVU-Kit wird ordentlich die Einspeisung und Leistung angezeigt. Damit lässt sich ja schonmal gut mit Überschussladen arbeiten. Die PV Erträge sind erstmal zweitrangig (Für mich zumindest).