Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Solax Photovoltaik Portal in ioBroker

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Solax Photovoltaik Portal in ioBroker

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fastsonic last edited by fastsonic

      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

      1 Reply Last reply Reply Quote 0
      • F
        fastsonic last edited by

        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

        S 1 Reply Last reply Reply Quote 0
        • H
          huettmaster last edited by

          Hallo,

          darf man erfahren, ob das Ganze funktioniert hat? Wenn ja, wie? Stehe vor dem selben Problem.

          1 Reply Last reply Reply Quote 0
          • K
            kekleini last edited by kekleini

            Es ist toll. Die Lösung ist ziemlich gut. Ich habe die Community sehr genossen. roadrunner email Vielen Dank.

            1 Reply Last reply Reply Quote 0
            • S
              samot13 @fastsonic last edited by

              @fastsonic Hallo, hast du mittlerweile eine Lösung gefunden die Daten vom Solax auszulesen?

              Gruß
              samot13

              1 Reply Last reply Reply Quote 0
              • K
                kgw last edited by

                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

                S 1 Reply Last reply Reply Quote 0
                • S
                  samot13 @kgw last edited by

                  @kgw Ja ich habe noch Bedarf. Super das du da was machst!

                  Gruß
                  samot13

                  1 Reply Last reply Reply Quote 0
                  • K
                    kgw last edited by

                    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: 5

                    Im 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 datastream

                    Viel Spaß und Erfolg
                    Thomas

                    S S 2 Replies Last reply Reply Quote 0
                    • K
                      kgw last edited by kgw

                      hier noch eine akt. vis Implementation:
                      solax.PNG

                      1 Reply Last reply Reply Quote 0
                      • Amnesia1211
                        Amnesia1211 last edited by

                        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.

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          Sweatchuck @Amnesia1211 last edited by

                          Hätte ebenfalls Interesse daran. Habe den Solax x1 mini.

                          Grüße

                          1 Reply Last reply Reply Quote 0
                          • S
                            Skywalker110 last edited by

                            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

                            1 Reply Last reply Reply Quote 0
                            • S
                              Schello805 @kgw last edited by

                              @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?

                              1 Reply Last reply Reply Quote 0
                              • L
                                laola last edited by

                                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

                                K 1 Reply Last reply Reply Quote 0
                                • K
                                  kunigunde @laola last edited by

                                  @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

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    laola last edited by

                                    mittlerweile gibt es einen Adapter für Solax (https://github.com/simatec/ioBroker.solax)... 🙂

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      skorpion_inka @kgw last edited by

                                      @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?

                                      K 1 Reply Last reply Reply Quote 0
                                      • K
                                        kgw @skorpion_inka last edited by kgw

                                        @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!

                                        K 1 Reply Last reply Reply Quote 0
                                        • K
                                          kunigunde @kgw last edited by

                                          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/

                                          1 Reply Last reply Reply Quote 0
                                          • O
                                            OKTP last edited by

                                            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.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            582
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            22
                                            7363
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo