NEWS
Solax Photovoltaik Portal in ioBroker
-
Hallo@all
Ich habe noch etwas gesucht und das Script bei symcom mal näher angeschaut. Würde das Script im Parser plugin laufen wenn ich es versuche anzupassen?
Für Tips wäre ich echt dankbar.[Back] <? //Username Solax portal define('USERNAME', '********'); //Passwort the Solax portal. define('PASSWORD', '************'); //ID des Wechselrichters - kann man im Portal sehen $Solax_ID = "*******"; // Ab hier sollte nichts mehr geändert werden. //******************************************** //URL of the login form (Mobile Portal of Solax) - 2 Stufiger Anmeldeprozess define('LOGIN_FORM_URL', 'http://www.solax-portal.com/m/home/login'); //Login action URL - Sendet die Anmeldung define('LOGIN_ACTION_URL', 'http://www.solax-portal.com/m/home/loginpost'); //CURL Config for authentication define('USER_AGENT', 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2309.372 Safari/537.36'); define('COOKIE_FILE', 'cookie.txt'); $postValues = array( 'username' => USERNAME, 'password' => PASSWORD ); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, LOGIN_ACTION_URL); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues)); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_REFERER, LOGIN_FORM_URL); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_exec($curl); //echo curl_exec($curl); //test area in case we want to check what happens if(curl_errno($curl)){ throw new Exception(curl_error($curl)); } $Zu_Loeschende_Werte = array("W","A","KW","kWH","kH","V","K","°","â"); // Aufrufen der Übersichtsseite um diese zu parsen curl_setopt($curl, CURLOPT_URL, 'http://www.solax-portal.com/m/user/overview/'.$Solax_ID); curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $overview_website = curl_exec($curl); //echo $overview_website; $dom_overview = new DOMDocument(); $dom_overview->loadHTML($overview_website); $tablerows = $dom_overview->getElementsByTagName('tr'); foreach ($tablerows as $tablerow) { $Power_Now = stripos($tablerow->nodeValue, "Power Now"); if($Power_Now !== false) { $trimmed = trim($tablerow->nodeValue); $Power_Now = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "Aktueller Stromverbrauch: ",$Power_Now,PHP_EOL; $ID_Power_Now = @IPS_GetVariableIDByName("Aktueller Stromverbrauch", $_IPS['SELF']); if($ID_Power_Now === false) { $ID_Power_Now = IPS_CreateVariable(2); IPS_SetName($ID_Power_Now, "Aktueller Stromverbrauch"); IPS_SetParent($ID_Power_Now, $_IPS['SELF']); } SetValue($ID_Power_Now,$Power_Now); } $Todays_Energy = stripos($tablerow->nodeValue, "Today's Energy"); if($Todays_Energy !== false) { $trimmed = trim($tablerow->nodeValue); $Todays_Energy = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "Ertrag Heute: ",$Todays_Energy, PHP_EOL; $ID_Todays_Energy = @IPS_GetVariableIDByName("Ertrag Heute", $_IPS['SELF']); if($ID_Todays_Energy === false) { $ID_Todays_Energy = IPS_CreateVariable(2); IPS_SetName($ID_Todays_Energy, "Ertrag Heute"); IPS_SetParent($ID_Todays_Energy, $_IPS['SELF']); } SetValue($ID_Todays_Energy,$Todays_Energy); } $Monthly_Yield = stripos($tablerow->nodeValue, "Monthly Yield"); if($Monthly_Yield !== false) { $trimmed = trim($tablerow->nodeValue); $Monthly_Yield = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Ertrag Monat: ",$Monthly_Yield, PHP_EOL; $ID_Monthly_Yield = @IPS_GetVariableIDByName("Ertrag Monat", $_IPS['SELF']); if($ID_Monthly_Yield === false) { $ID_Monthly_Yield = IPS_CreateVariable(2); IPS_SetName($ID_Monthly_Yield, "Ertrag Monat"); IPS_SetParent($ID_Monthly_Yield, $_IPS['SELF']); } SetValue($ID_Monthly_Yield,$Monthly_Yield); } $Yearly_Yield = stripos($tablerow->nodeValue, "Yearly Yield"); if($Yearly_Yield !== false) { $trimmed = trim($tablerow->nodeValue); $Yearly_Yield = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Ertrag Jahr: ",$Yearly_Yield, PHP_EOL; $ID_Yearly_Yield = @IPS_GetVariableIDByName("Ertrag Jahr", $_IPS['SELF']); if($ID_Yearly_Yield === false) { $ID_Yearly_Yield = IPS_CreateVariable(2); IPS_SetName($ID_Yearly_Yield, "Ertrag Jahr"); IPS_SetParent($ID_Yearly_Yield, $_IPS['SELF']); } SetValue($ID_Yearly_Yield,$Yearly_Yield); } $Total_Energy = stripos($tablerow->nodeValue, "Total Energy"); if($Total_Energy !== false) { $trimmed = trim($tablerow->nodeValue); $Total_Energy = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Ertrag Gesamt: ",$Total_Energy, PHP_EOL; $ID_Total_Energy = @IPS_GetVariableIDByName("Ertrag Gesamt", $_IPS['SELF']); if($ID_Total_Energy === false) { $ID_Total_Energy = IPS_CreateVariable(2); IPS_SetName($ID_Total_Energy, "Ertrag Gesamt"); IPS_SetParent($ID_Total_Energy, $_IPS['SELF']); } SetValue($ID_Total_Energy,$Total_Energy); } } // Aufrufen der Statusseite mit Echtzeitdaten um diese zu parsen curl_setopt($curl, CURLOPT_URL, 'http://www.solax-portal.com/m/User/status/'.$Solax_ID); curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $overview_website = curl_exec($curl); //echo $overview_website; $dom_realtime = new DOMDocument(); $dom_realtime->loadHTML($overview_website); $tablerows = $dom_realtime->getElementsByTagName('tr'); foreach ($tablerows as $tablerow) { $PV1_Current = stripos($tablerow->nodeValue, "PV1 Current"); if($PV1_Current !== false) { $trimmed = trim($tablerow->nodeValue); $PV1_Current = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "PV1 Strang Leistung Aktuell: ",$PV1_Current, PHP_EOL; $ID_PV1_Current = @IPS_GetVariableIDByName("PV1 Strang Leistung Aktuell", $_IPS['SELF']); if($ID_PV1_Current === false) { $ID_PV1_Current = IPS_CreateVariable(2); IPS_SetName($ID_PV1_Current, "PV1 Strang Leistung Aktuell"); IPS_SetParent($ID_PV1_Current, $_IPS['SELF']); } SetValue($ID_PV1_Current,$PV1_Current); } $PV2_Current = stripos($tablerow->nodeValue, "PV2 Current"); if($PV2_Current !== false) { $trimmed = trim($tablerow->nodeValue); $PV2_Current = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "PV2 Strang Leistung Aktuell: ",$PV2_Current, PHP_EOL; $ID_PV2_Current = @IPS_GetVariableIDByName("PV2 Strang Leistung Aktuell", $_IPS['SELF']); if($ID_PV2_Current === false) { $ID_PV2_Current = IPS_CreateVariable(2); IPS_SetName($ID_PV2_Current, "PV2 Strang Leistung Aktuell"); IPS_SetParent($ID_PV2_Current, $_IPS['SELF']); } SetValue($ID_PV2_Current,$PV2_Current); } $PV1_Voltage = stripos($tablerow->nodeValue, "PV1 Voltage"); if($PV1_Voltage !== false) { $trimmed = trim($tablerow->nodeValue); $PV1_Voltage = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "PV1 Strang Spannung Aktuell: ",$PV1_Voltage, PHP_EOL; $ID_PV1_Voltage = @IPS_GetVariableIDByName("PV1 Strang Spannung Aktuell", $_IPS['SELF']); if($ID_PV1_Voltage === false) { $ID_PV1_Voltage = IPS_CreateVariable(2); IPS_SetName($ID_PV1_Voltage, "PV1 Strang Spannung Aktuell"); IPS_SetParent($ID_PV1_Voltage, $_IPS['SELF']); } SetValue($ID_PV1_Voltage,$PV1_Voltage); } $PV2_Voltage = stripos($tablerow->nodeValue, "PV2 Voltage"); if($PV2_Voltage !== false) { $trimmed = trim($tablerow->nodeValue); $PV2_Voltage = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "PV2 Strang Spannung Aktuell: ",$PV2_Voltage, PHP_EOL; $ID_PV2_Voltage = @IPS_GetVariableIDByName("PV2 Strang Spannung Aktuell", $_IPS['SELF']); if($ID_PV2_Voltage === false) { $ID_PV2_Voltage = IPS_CreateVariable(2); IPS_SetName($ID_PV2_Voltage, "PV2 Strang Spannung Aktuell"); IPS_SetParent($ID_PV2_Voltage, $_IPS['SELF']); } SetValue($ID_PV2_Voltage,$PV2_Voltage); } $Output_Current = stripos($tablerow->nodeValue, "Output Current"); if($Output_Current !== false) { $trimmed = trim($tablerow->nodeValue); $Output_Current = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Aktuelle Ausgangsleistung: ",$Output_Current, PHP_EOL; $ID_Output_Current = @IPS_GetVariableIDByName("Aktuelle Ausgangsleistung", $_IPS['SELF']); if($ID_Output_Current === false) { $ID_Output_Current = IPS_CreateVariable(2); IPS_SetName($ID_Output_Current, "Aktuelle Ausgangsleistung"); IPS_SetParent($ID_Output_Current, $_IPS['SELF']); } SetValue($ID_Output_Current,$Output_Current); } $Network_Voltage = stripos($tablerow->nodeValue, "Network Voltage"); if($Network_Voltage !== false) { $trimmed = trim($tablerow->nodeValue); $Network_Voltage = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "Spannung Stromnetz: ",$Network_Voltage, PHP_EOL; $ID_Network_Voltage = @IPS_GetVariableIDByName("Spannung Stromnetz", $_IPS['SELF']); if($ID_Network_Voltage === false) { $ID_Network_Voltage = IPS_CreateVariable(2); IPS_SetName($ID_Network_Voltage, "Spannung Stromnetz"); IPS_SetParent($ID_Network_Voltage, $_IPS['SELF']); } SetValue($ID_Network_Voltage,$Network_Voltage); } $PV1_Input_Power = stripos($tablerow->nodeValue, "PV1 Input Power"); if($PV1_Input_Power !== false) { $trimmed = trim($tablerow->nodeValue); $PV1_Input_Power = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "PV1 Strang Eingangsleistung: ",$PV1_Input_Power, PHP_EOL; $ID_PV1_Input_Power = @IPS_GetVariableIDByName("PV1 Strang Eingangsleistung", $_IPS['SELF']); if($ID_PV1_Input_Power === false) { $ID_PV1_Input_Power = IPS_CreateVariable(2); IPS_SetName($ID_PV1_Input_Power, "PV1 Strang Eingangsleistung"); IPS_SetParent($ID_PV1_Input_Power, $_IPS['SELF']); } SetValue($ID_PV1_Input_Power,$PV1_Input_Power); } $PV2_Input_Power = stripos($tablerow->nodeValue, "PV2 Input Power"); if($PV2_Input_Power !== false) { $trimmed = trim($tablerow->nodeValue); $PV2_Input_Power = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "PV2 Strang Eingangsleistung: ",$PV2_Input_Power, PHP_EOL; $ID_PV2_Input_Power = @IPS_GetVariableIDByName("PV2 Strang Eingangsleistung", $_IPS['SELF']); if($ID_PV2_Input_Power === false) { $ID_PV2_Input_Power = IPS_CreateVariable(2); IPS_SetName($ID_PV2_Input_Power, "PV2 Strang Eingangsleistung"); IPS_SetParent($ID_PV2_Input_Power, $_IPS['SELF']); } SetValue($ID_PV2_Input_Power,$PV2_Input_Power); } $Power_Now = stripos($tablerow->nodeValue, "Power Now"); if($Power_Now !== false) { $trimmed = trim($tablerow->nodeValue); $Power_Now = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Aktuelle Leistung PV W: ",$Power_Now, PHP_EOL; $ID_Power_Now = @IPS_GetVariableIDByName("Aktuelle Leistung PV W", $_IPS['SELF']); if($ID_Power_Now === false) { $ID_Power_Now = IPS_CreateVariable(2); IPS_SetName($ID_Power_Now, "Aktuelle Leistung PV W"); IPS_SetParent($ID_Power_Now, $_IPS['SELF']); } SetValue($ID_Power_Now,$Power_Now); } $Output_Current = stripos($tablerow->nodeValue, "Output Current"); if($Output_Current !== false) { $trimmed = trim($tablerow->nodeValue); $Output_Current = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Aktuelle Leistung PV : ",$Output_Current, PHP_EOL; $ID_Output_Current = @IPS_GetVariableIDByName("Aktuelle Leistung PV A", $_IPS['SELF']); if($ID_Output_Current === false) { $ID_Output_Current = IPS_CreateVariable(2); IPS_SetName($ID_Output_Current, "Aktuelle Leistung PV A"); IPS_SetParent($ID_Output_Current, $_IPS['SELF']); } SetValue($ID_Output_Current,$Output_Current); } } // Aufrufen der Batterieseite um diese zu parsen curl_setopt($curl, CURLOPT_URL, 'http://www.solax-portal.com/m/User/battery/'.$Solax_ID); curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $overview_website = curl_exec($curl); //echo $overview_website; $dom_battery = new DOMDocument(); $dom_battery->loadHTML($overview_website); $tablerows = $dom_battery->getElementsByTagName('tr'); foreach ($tablerows as $tablerow) { $Batterie_Charge = stripos($tablerow->nodeValue, "Battery 1"); if($Batterie_Charge !== false) { $trimmed = trim($tablerow->nodeValue); $Batterie_Charge = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "Batterie Ladung: ",$Batterie_Charge, PHP_EOL; $ID_Batterie_Charge = @IPS_GetVariableIDByName("Batterie Ladung", $_IPS['SELF']); if($ID_Batterie_Charge === false) { $ID_Batterie_Charge = IPS_CreateVariable(2); IPS_SetName($ID_Batterie_Charge, "Batterie Ladung"); IPS_SetParent($ID_Batterie_Charge, $_IPS['SELF']); } SetValue($ID_Batterie_Charge,$Batterie_Charge); } $Battery_V = stripos($tablerow->nodeValue, "Battery V."); if($Battery_V !== false) { $trimmed = trim($tablerow->nodeValue); $Battery_V = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -6)); echo "Batterie Spannung: ",$Battery_V, PHP_EOL; $ID_Battery_V = @IPS_GetVariableIDByName("Batterie Spannung", $_IPS['SELF']); if($ID_Battery_V === false) { $ID_Battery_V = IPS_CreateVariable(2); IPS_SetName($ID_Battery_V, "Batterie Spannung"); IPS_SetParent($ID_Battery_V, $_IPS['SELF']); } SetValue($ID_Battery_V,$Battery_V); } $Battery_I = stripos($tablerow->nodeValue, "Battery I."); if($Battery_I !== false) { $trimmed = trim($tablerow->nodeValue); $Battery_I = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Battery P: ",$Battery_I, PHP_EOL; $ID_Battery_I = @IPS_GetVariableIDByName("Batterie Strom", $_IPS['SELF']); if($ID_Battery_I === false) { $ID_Battery_I = IPS_CreateVariable(2); IPS_SetName($ID_Battery_I, "Batterie Strom"); IPS_SetParent($ID_Battery_I, $_IPS['SELF']); } SetValue($ID_Battery_I,$Battery_I); } $Battery_P = stripos($tablerow->nodeValue, "Battery P."); if($Battery_P !== false) { $trimmed = trim($tablerow->nodeValue); $Battery_P = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Batterie Leistung: ",$Battery_P, PHP_EOL; $ID_Battery_P = @IPS_GetVariableIDByName("Batterie Leistung", $_IPS['SELF']); if($ID_Battery_P === false) { $ID_Battery_P = IPS_CreateVariable(2); IPS_SetName($ID_Battery_P, "Batterie Leistung"); IPS_SetParent($ID_Battery_P, $_IPS['SELF']); } SetValue($ID_Battery_P,$Battery_P); } $Inner_T = stripos($tablerow->nodeValue, "Inner T."); if($Inner_T !== false) { $trimmed = trim($tablerow->nodeValue); $Inner_T = str_replace($Zu_Loeschende_Werte,"",substr($trimmed, -13)); echo "Batterie Temperatur: ",$Inner_T, PHP_EOL; $ID_Inner_T = @IPS_GetVariableIDByName("Batterie Temperatur", $_IPS['SELF']); if($ID_Inner_T === false) { $ID_Inner_T = IPS_CreateVariable(2); IPS_SetName($ID_Inner_T, "Batterie Temperatur"); IPS_SetParent($ID_Inner_T, $_IPS['SELF']); } SetValue($ID_Inner_T,floatval($Inner_T)); } } ?>
Gruß
Fastsonic -
Hi@all
Falls es jemanden interessiert
Ich versuche mal einen MBUS zu WIFI Adapter und das ganze per Modbus anzubinden.
Hab das Teil bei Ali für 10 euro bestellt.
Wenn ich getestet habe, melde ich mich nochmal. Wäre vieleicht auch für andere Sensoren interessant.Gruß
Fastsonic -
Hallo,
darf man erfahren, ob das Ganze funktioniert hat? Wenn ja, wie? Stehe vor dem selben Problem.
-
Es ist toll. Die Lösung ist ziemlich gut. Ich habe die Community sehr genossen. roadrunner email Vielen Dank.
-
@fastsonic Hallo, hast du mittlerweile eine Lösung gefunden die Daten vom Solax auszulesen?
Gruß
samot13 -
moin,
falls noch SOLAX Bedarf bestehen sollte:
ich arbeite gerade an einer Lösung via iobroker.parser.
Die ersten Versuche sehen schon mal vielversprechend aus.Gruß
Thomas -
@kgw Ja ich habe noch Bedarf. Super das du da was machst!
Gruß
samot13 -
moin, Beispiel: Wechselrichter: SOLAX SK-SU5000E,
im iobroker den Adapter parser installieren.unter Instanzen/parser div. neue (Regeln) Datenpunkte anlegen:
B: 1:
Name: pv1_Curr
Url: http://xxx.xxx.xxx.xx/api/realTimeData.htm
RegEx: [+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)
Num: 5Im Testtext erscheint nach der url:
{"method":"uploadsn","version":"Solax_SI_CH_2nd_20160810_DE03","type":"AL_SE","SN":"DEC88A12","Data":[3.6,3.2,369.7,275.6,8.8,228.9,1986,30,12.8,14485.9,1774,1330,881,0.00,0.00,0,5,0,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,11311.50,6468.50,,,,,,,,50.05,,,0.0,0.0,0,0.00,0,0,0,0.00,0,8,0,0,0.00,0,8],"Status":"2"}mit der o.a. num = 5 ergibt sich der aktuelle Current! bei iobroker.objects.parser.n.pv1_Curr!
mit der RegEx habe ich länger "herumgedoktort", da ich kein Experte bin!
Bei der Feed_In_Power gibt es auch noch ein Vorzeichen/int/float Problem, welches noch gelöst werden muss.
Konstanten s. https://community.home-assistant.io/t/solax-solar-inverter-setup-guide/48008
Live datastreamViel Spaß und Erfolg
Thomas -
hier noch eine akt. vis Implementation:
-
Stehe vor dem selben Problem, leider habe ich nicht wirklich verstanden wie das ganze Funktionieren soll.
Vielleicht hat ja jemand eine Anleitung wie das ganze klappt in iobroker zu integrieren. -
Hätte ebenfalls Interesse daran. Habe den Solax x1 mini.
Grüße
-
Hallo zusammen
Hätte auch Interesse.
Ich komme bei mir nicht weiter desweiteren ist mein Wechselrichter nicht erreichbar und der IP Adresse was ich habe
Wenn ich die API verwende kommt token invalid obwohl ich einen generiert habe in meiner solax cloud.
Grüße Holger
-
@kgw said in Solax Photovoltaik Portal in ioBroker:
https://community.home-assistant.io/t/solax-solar-inverter-setup-guide/48008
Hi, geht das bei dir noch? Seit einigen Wochen erreiche ich die API nicht mehr. Gabs da ein Update, bei dem die API abgeschalten wurden?
-
Hallo - auch ich nutze seit gestern Solax X1 mini. Funktioniert es (noch) mit dem Parser ? Gibt es irgendwo ein etwas detailllierte Anleitung, wie die Daten in ioBroker kommen können ?
Dsanke für eure Hilfe
laola -
Hallo, vielleicht hilft dir das weiter.
Ich habe einen X1-Boost/Air/Mini.
Da die Cloud Verbindung bei mir demnächst gekappt wird, musste ich auch einen Weg finden die Daten lokal zu bekommen.
Solax hat an dem Pocket-Wifi einen offenen Wlan-Zugang, welcher jedoch 1. nur einen Teilnehmer zulässt und nicht in meinem lokalen Netz ist.Ich habe jetzt einen einfachen kleinen ESP-01 genommen, der verbindet sich mit dem Solax Wlan, holt Daten ab, verbindet sich danach mit meinem lokalen Wlan und sendet die Daten an meinen MQTT Broker.
und wieder von vorn.....
hier ist der Arduino Code (P.S. im Online Editor kann ich nicht übersetzen, kommen Fehler, Lokal geht es):
https://create.arduino.cc/editor/kunigunde/19dce021-7701-4557-96cc-153a5e1f9bee/preview?F=ESP_SOLAX_MQTT.ino -
mittlerweile gibt es einen Adapter für Solax (https://github.com/simatec/ioBroker.solax)...
-
@kgw sagte in Solax Photovoltaik Portal in ioBroker:
Bei der Feed_In_Power gibt es auch noch ein Vorzeichen/int/float Problem, welches noch gelöst werden muss.
Hallo, hast du eine Lösung für das Vorzeichen?
-
@skorpion_inka
leider noch nicht weiter dran gewerkelt.Aber du bist ja mit deinem thread
"Parser auslesen von XML - Vorzeichen fehlt" vom 27.10.21 offensichtlich weitergekommen und kannst uns hier deine Antwort bzw. Lösung posten, damit alle etwas davon haben! -
Hier hat jemand die Firmware von dem Solax WIFI abgeändert.
Mit dieser verbindet er sich mit dem lokalen Netz und es sind keine Umwege mehr nötig:https://blog.chrisoft.io/2021/02/14/firmwares-modificados-para-solax-pocket-wifi-v2/
-
Hallo in die Runde. Hat es schon jemand mit einem x3 hybrid WR der 4. Generation hin bekommen die Daten lokal auszulesen? Ich habe es mit dem Adapter von Simatec nicht hin. Über die cloud funktioniert es, aber ich hätte es lieber local.