Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI Logikbaustein | Abfrage Kostal Wechselrichter 5.5

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Der Baustein kommt von mir, hatte das Problem nicht.
    Evtl. eine Ausgangsbox ungleich Null verwenden.
    Kann leider nichts mehr prüfen, habe jetzt einen E3DC Speicher mit integriertem Wechselrichter.

    Kommentar


      #32
      Hmm also ich hab jetzt mal einen Ausgleich ungleich Null genommen. Aber warum das so ist versteht ich trotzdem nicht. Bei jeder Abfrage kommt halt eine 0 zuerst.

      Grüße

      Kommentar


        #33
        Roland81

        kannst du bitte bei gelegenheit den Cod hier rein schmeissen ?

        Ich habe ebenfalls neu einen Kostal Plenticore 4.2 und den selben Output an A1 wie lengi .

        Kommentar


          #34
          Tut mir leid wenn ich das jetzt so hinrotze...aber hab momentan leider echt keine Zeit
          Code:
          ###[DEF]###
          [name =KOSTAL Wechselrichter]
          
          [e#1 =trigger]
          [e#2 =debug #init=0]
          [e#3 =IP von Kostal WR]
          
          [a#1 =Aktuelle Leistung W]
          [a#2 =Tagesleistung Wh]
          [a#3 =String 1 Leistung W]
          [a#4 =String 2 Leistung W]
          [a#5 =Batterie SOC]
          [a#6 =Hausverbrauch W]
          [a#7 =Batteriespannung V]
          [a#8 =Batteriestrom A]
          [a#9 =Laden/Entladen]
          [a#10 =PVLeistung]
          [a#11 =Error]
          
          ###[/DEF]###
          
          ###[HELP]###
          Dieser Logikbaustein liest von einem Kostal Wechselrichter die aktuellen Daten aus. Zurzeit sind dies die folgende Werte:
          - Aktuelle Leistung (W)
          - Leistung aktueller Tag (Wh)
          - Leistung aktuelles Jahr (Wh)
          - Leistung seit Inbetriebnahme (Wh)
          - Zeitstempel Fronius
          
          Der Fronius Wechselrichter muss vom Edomi-Rechner erreichbar sein. Die im LBS verwendete URL kann vorab manuell getestet werden:
          URL = http://FRONIUS_IP/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System
          
          E1: = !=0 = Trigger
          E2: = debug (1=true, 0=false / Bei true werden Variablenwerte in das Edomi TraceLog geschrieben. Nur für Tests verwenden!)
          E3: = IP Adresse (oder Hostname) des Kostal Wechselrichters (z.B. 192.168.1.100)
          
          A1: = Aktuelle Leistung W
          A2: = Tagesleistung Wh
          A3: = String 1 Leistung
          A4: = String 2 Leistung
          A5: = Batterie SOC
          A6: = Hausverbrauch W
          A7: = Batteriespannung V
          A8: = Batteriestrom A
          A9: = Laden/Entladen
          A10: = PVLeistung
          A11: = Error (1=true/0=false)
          
          ###[/HELP]###
          
          
          ###[LBS]###
          <?
          function LB_LBSID($id) {
          if ($E=getLogicEingangDataAll($id)) {
          
          if ($E[2]["value"]==1) {writeToCustomLog("19000182_lbs.log","INFO","*** LBS Fronius Wechselrichter by RD GESTARTET ***");}
          if ($E[2]["value"]==1) {writeToCustomLog("19000182_lbs.log","INFO","Versi on: 1.2");}
          
          if ($E[1]["refresh"]==1) {
          callLogicFunctionExec(LBSID,$id);
          }
          }
          }
          ?>
          ###[/LBS]###
          
          
          ###[EXEC]###
          <?
          require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
          sql_connect();
          //-------------------------------------------------------------------------------------
          if ($E=getLogicEingangDataAll($id)) {
          $debug=$E[2]["value"];
          $url="http://192.168.178.30/api/dxs.json?dxsEntries=33556229&dxsEntries=251658754& dxsEntries=33555203&dxsEntries=33556226&dxsEntries =33556238&dxsEntries=33555459&dxsEntries=67109120& dxsEntries=83888128&&dxsEntries=83886848&dxsEntrie s=83886336&dxsEntries=83887106&dxsEntries=83887362 &dxsEntries=83887618&dxsEntries=33556230&dxsEntrie s=33556230";
          $error=0;
          }
          
          setlocale (LC_TIME, 'de_DE');
          $EdomiTime = date("d.m.Y H:i:s");
          
          // Prüfen, ob URL-Pfad gefunden wird. Sonst wird LBS abgebrochen.
          try {
          //$url = 'http://192.168.10.53';
          $ch = curl_init($url);
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($ch,CURLOPT_TIMEOUT,1);
          $result = curl_exec($ch);
          if (!$result) throw new Exception(curl_error($ch));
          } catch (Exception $e)
          {
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR","Fron ius Wechselrichter nicht erreichbar!");}
          $error=1;
          setLogicLinkAusgang($id,6,$EdomiTime); //Timestamp Edomi
          setLogicLinkAusgang($id,9,$error); //Error = true
          setLogicElementStatus($id,0);
          sql_disconnect();
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR","*** LBS Fronius Wechselrichter by RD ABGEBROCHEN ***");}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR"," ");}
          exit();
          }
          
          $file_headers = @get_headers($url);
          if (stripos($file_headers[0],"404 Not Found") >0 || (stripos($file_headers[0], "302 Found") > 0 && stripos($file_headers[7],"404 Not Found") > 0)) {
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR","URL Pfad nicht gefunden!");}
          $error=1;
          setLogicLinkAusgang($id,6,$EdomiTime); //Timestamp Edomi
          setLogicLinkAusgang($id,9,$error); //Error = true
          setLogicElementStatus($id,0);
          sql_disconnect();
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR","*** LBS Fronius Wechselrichter by RD ABGEBROCHEN ***");}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR"," ");}
          exit();
          }
          
          //$url = 'http://192.168.10.53/solar_api/v1/GetInverterRealtimeData.cgi?Scope=System';
          $content = file_get_contents($url);
          
          // Prüfen, ob URL-Content gelesen werden kann. Sonst wird LBS abgebrochen.
          if ($content === false) {
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR","Wech selrichter antwortet nicht!");}
          $error=1;
          setLogicLinkAusgang($id,6,$EdomiTime); //Timestamp Edomi
          setLogicLinkAusgang($id,9,$error); //Error = true
          setLogicElementStatus($id,0);
          sql_disconnect();
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR","*** LBS Fronius Wechselrichter by RD ABGEBROCHEN ***");}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","ERROR"," ");}
          exit();
          }
          
          $json = json_decode($content, true);
          
          //echo "Aktuelle Leistung: ".$json["dxsEntries"]["Data"][""dxsId":33555202"]["Value"].<br>";
          //echo "Tagesleistung: ".$json["Body"]["Data"]["DAY_ENERGY"]["Values"]["1"]." ".$json["Body"]["Data"]["DAY_ENERGY"]["Unit"]."<br>";
          //echo "Jahresleistung: ".$json["Body"]["Data"]["YEAR_ENERGY"]["Values"]["1"]." ".$json["Body"]["Data"]["YEAR_ENERGY"]["Unit"]."<br>";
          //echo "Gesamtleistung: ".$json["Body"]["Data"]["TOTAL_ENERGY"]["Values"]["1"]." ".$json["Body"]["Data"]["TOTAL_ENERGY"]["Unit"]."<br>";
          //echo "Timestamp Fronius: ".$json["Head"]["Timestamp"]."<br>";
          //echo "Timestamp Edomi: ".date()."<br>";
          
          
          $aktLeistung=$json["dxsEntries"][6]["value"];
          $TagLeistung=$json["dxsEntries"][1]["value"];
          $String1Leistung=$json["dxsEntries"][2]["value"];
          $String2Leistung=$json["dxsEntries"][5]["value"];
          $BatterieSOC=$json["dxsEntries"][0]["value"];
          $Hausverbrauch=$json["dxsEntries"][7]["value"];
          $Batteriespannung=$json["dxsEntries"][3]["value"];
          $Batteriestrom=$json["dxsEntries"][4]["value"];
          $Speicherrichtung=$json["dxsEntries"][14]["value"];
          if ($Speicherrichtung == 1) {$PVLeistung = round($aktLeistung - ($Batteriespannung * $Batteriestrom),0);}
          if ($Speicherrichtung ==0) {$PVLeistung = round($aktLeistung + ($Batteriespannung * $Batteriestrom),0);}
          //$aktLeistung=1351;
          
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Aktue lle Leistung: ".$aktLeistung);}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Tages leistung: ".$TagLeistung);}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Jahre sleistung: ".$String1Leistung);}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Gesam tleistung: ".$String2Leistung);}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Times tamp Fronius: ".$BatterieSOC);}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Times tamp Edomi: ".$Hausverbrauch);}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Times tamp Edomi: ".$Speicherrichtung);}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","Error : ".$error);}
          
          
          setLogicLinkAusgang($id,1,$aktLeistung); //Aktuelle Leistung
          setLogicLinkAusgang($id,2,$TagLeistung); //Tagesleistung
          setLogicLinkAusgang($id,3,$String1Leistung); //Jahresleistung
          setLogicLinkAusgang($id,4,$String2Leistung); //Gesamtleistung
          setLogicLinkAusgang($id,5,$BatterieSOC); //Timestamp Fronius
          setLogicLinkAusgang($id,6,$Hausverbrauch); //Timestamp Edomi
          setLogicLinkAusgang($id,7,$Batteriespannung); //Timestamp Fronius
          setLogicLinkAusgang($id,8,$Batteriestrom); //Timestamp Edomi
          setLogicLinkAusgang($id,9,$Speicherrichtung); //Timestamp Edomi
          setLogicLinkAusgang($id,10,$PVLeistung); //Timestamp Edomi
          setLogicLinkAusgang($id,11,$error); //Error = false
          
          setLogicElementStatus($id,0);
          
          //-------------------------------------------------------------------------------------
          sql_disconnect();
          
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO","*** LBS Fronius Wechselrichter by RD BEENDET ***");}
          if ($debug==1) {writeToCustomLog("19000182_lbs.log","INFO"," ");}
          
          ?>
          ###[/EXEC]###

          Kommentar


            #35
            Besten Dank.

            Momentan scheint die Sonne nicht und er zeigt nur 0 an...
            Aber habe das ungute gefühl das auch der nicht funktioniert.

            Roland81 was für ein Wechselrichter hast du ?

            Ich habe mal im Anhang die API Schnittstelle deponiert welche der Plenticore Plus aktuell hat.
            Eine Schnittstell dazu wurde hier entwickelt:

            https://github.com/StrathCole/ioBrok...r/README_de.md


            Per Modbus könnte das hier funktionieren..

            https://www.photovoltaikforum.com/th...dbus-auslesen/

            aber auch da habe ich keine funktionierende Anleitung bereit.

            Mein Ziel währe es eigentlich direkt aus Edomi die Daten auslesen zu können.

            Aber das ist alles zu viel "Code" für mich ...
            Angehängte Dateien

            Kommentar

            Lädt...
            X