29-05-2025, 11:22 AM
Bonjour à tous,
Je souhaite tout d'abord présenter mes plus grands remerciements à André, ainsi qu'à tous les contributeurs de ce magnifique projet de routeur solaire F1ATB. C'est du super boulot !
Je viens de réaliser mon routeur solaire en utilisant la version V14.23.
J'ai légèrement modifié le code source pour y ajouter une source de mesure compatible avec mon onduleur de la marque Fronius (avec Smart Meter Fronius). Vous pouvez trouver le code source complet en pièce jointe "Solar_Router_V14_24_Source_Fronius.zip".
Je me suis basé sur la documentation de l'API fournie par la marque Fronius (API Fronius Solar V1).
Téléchargeable en utilisant le lien suivant :
https://www.fronius.com/~/downloads/Sola...0,2012.pdf
Pour ma part j'utilise un onduleur et un smart meter Fronius triphasé.
Mais dans le code j'ai essayé de prendre les variables communes aux compteurs fronius monophasé et triphasé, afin que cela puisse convenir au plus grand nombre. (voir page 46 et 47 de la documentation)
Détail du code source pour la Source de mesure "Source_Fronius.ino"
J'utilise le routeur F1ATB, depuis une semaine et ça a l'air de plutôt bien fonctionné.
En espérant que cette petite contribution puisse être utile à d'autres personnes.
Bien Cordialement,
Ludovic
Je souhaite tout d'abord présenter mes plus grands remerciements à André, ainsi qu'à tous les contributeurs de ce magnifique projet de routeur solaire F1ATB. C'est du super boulot !
Je viens de réaliser mon routeur solaire en utilisant la version V14.23.
J'ai légèrement modifié le code source pour y ajouter une source de mesure compatible avec mon onduleur de la marque Fronius (avec Smart Meter Fronius). Vous pouvez trouver le code source complet en pièce jointe "Solar_Router_V14_24_Source_Fronius.zip".
Je me suis basé sur la documentation de l'API fournie par la marque Fronius (API Fronius Solar V1).
Téléchargeable en utilisant le lien suivant :
https://www.fronius.com/~/downloads/Sola...0,2012.pdf
Pour ma part j'utilise un onduleur et un smart meter Fronius triphasé.
Mais dans le code j'ai essayé de prendre les variables communes aux compteurs fronius monophasé et triphasé, afin que cela puisse convenir au plus grand nombre. (voir page 46 et 47 de la documentation)
Détail du code source pour la Source de mesure "Source_Fronius.ino"
Code :
// ******************************
// * Client d'un onduleur Fronius GEN24/Tauro/Verto *
// ******************************
void LectureFronius() {
String S = "";
String Fronius_Data = "";
String Gr[4];
String data_[20];
Pva_valide=false;
// Use WiFiClient class to create TCP connections
WiFiClient clientESP_RMS;
String host = IP2String(RMSextIP);
if (!clientESP_RMS.connect(host.c_str(), 80)) {
StockMessage("connection to Fronius Solar failed : " + host);
delay(200);
return;
}
//
String url = "/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System";
clientESP_RMS.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (clientESP_RMS.available() == 0) {
if (millis() - timeout > 5000) {
StockMessage(">>> client Fronius Timeout ! : " + host);
clientESP_RMS.stop();
return;
}
}
timeout = millis();
// Lecture des données brutes distantes
while (clientESP_RMS.available() && (millis() - timeout < 5000)) {
Fronius_Data += clientESP_RMS.readStringUntil('\r');
}
int p = Fronius_Data.indexOf("{");
Fronius_Data = Fronius_Data.substring(p+1);
// On utilise pas la librairie ArduinoJson.h, pour décoder message Json, qui crache sur de grosses données
float PactReseau = PfloatMax(ValJsonFrFloat("PowerReal_P_Sum", Fronius_Data));
if (PactReseau < 0) {
PuissanceS_M_inst = 0;
PuissanceI_M_inst = int(-PactReseau);
} else {
PuissanceI_M_inst = 0;
PuissanceS_M_inst = int(PactReseau);
}
float PappReseau = PfloatMax(ValJsonFrFloat("PowerApparent_S_Sum", Fronius_Data));
if (PappReseau < 0) {
PVAS_M_inst = 0;
PVAI_M_inst = int(-PappReseau);
} else {
PVAI_M_inst = 0;
PVAS_M_inst = int(PappReseau);
}
Tension_M = PfloatMax(ValJsonFrFloat("Voltage_AC_Phase_1", Fronius_Data));
Intensite_M = PfloatMax(ValJsonFrFloat("Current_AC_Phase_1", Fronius_Data));
PowerFactor_M = PfloatMax(ValJsonFrFloat("PowerFactor_Sum", Fronius_Data));
Energie_M_Soutiree = ValJsonFrInt("EnergyReal_WAC_Sum_Consumed", Fronius_Data);
Energie_M_Injectee = ValJsonFrInt("EnergyReal_WAC_Sum_Produced", Fronius_Data);
Fr_dataBrute=Fronius_Data;
Fr_dataBrute+="|PuissanceS_M_inst : " + String(PuissanceS_M_inst) + "W";
Fr_dataBrute+="|PuissanceI_M_inst : " + String(PuissanceI_M_inst) + "W";
Fr_dataBrute+="|PVAS_M_inst : " + String(PVAS_M_inst) + "VA";
Fr_dataBrute+="|PVAI_M_inst : " + String(PVAI_M_inst) + "VA";
Fr_dataBrute+="|Tension_M : " + String(Tension_M) + "V";
Fr_dataBrute+="|Intensite_M : " + String(Intensite_M) + "A";
Fr_dataBrute+="|PowerFactor_M : " + String(PowerFactor_M);
Fr_dataBrute+="|Energie_M_Soutiree : " + String(Energie_M_Soutiree) + "Wh";
Fr_dataBrute+="|Energie_M_Injectee : " + String(Energie_M_Injectee) + "Wh";
filtre_puissance();
PuissanceRecue=true; //Reset du Watchdog à chaque trame du Fronuis Solar reçue
EnergieActiveValide = true;
if (cptLEDyellow > 30) {
cptLEDyellow = 4;
}
}
float ValJsonFrFloat(String nom, String Json) {
int p = Json.indexOf(nom);
Json = Json.substring(p);
p = Json.indexOf(":");
Json = Json.substring(p + 1);
int q = Json.indexOf(",");
p = Json.indexOf("}");
p = min(p, q);
float val = 0;
if (p > 0) {
Json = Json.substring(0, p);
val = Json.toFloat();
}
return val;
}
float ValJsonFrInt(String nom, String Json) {
int p = Json.indexOf(nom);
Json = Json.substring(p);
p = Json.indexOf(":");
Json = Json.substring(p + 1);
int q = Json.indexOf(".");
p = Json.indexOf("}");
p = min(p, q);
long val = 0;
if (p > 0) {
Json = Json.substring(0, p);
val = Json.toInt();
}
return val;
}
J'utilise le routeur F1ATB, depuis une semaine et ça a l'air de plutôt bien fonctionné.
En espérant que cette petite contribution puisse être utile à d'autres personnes.
Bien Cordialement,
Ludovic
Installation PV 3kWc : 8 panneaux Voltec Solar Tarka 126 VSMS 385W (Made in Alsace)
Onduleur : Fronius Symo Gen24 4.0 Plus triphasé avec Smart Meter TS 65A-3
Routeur F1ATB en V14.23 (modifié pour utiliser l'API Fronius), avec Relais Statique Celduc (Made in France)
Intégration à HomeAssistant via MQTT
Onduleur : Fronius Symo Gen24 4.0 Plus triphasé avec Smart Meter TS 65A-3
Routeur F1ATB en V14.23 (modifié pour utiliser l'API Fronius), avec Relais Statique Celduc (Made in France)
Intégration à HomeAssistant via MQTT