Servus Leute,
da ich noch relativ neu bei EDOMI und PHP bin brauch ich etwas Hilfe. Ich bin gerade dabei einen LBS zu erstellen der einen Json-Sting meines Dataloggers der PV-Anlage aufschlüsselt und übergibt. Die Grundfunktionen funktionieren. Doch manchmal fehlen scheinbar im Json-String einige Teile, dann meckert er ins Log.Fehler im LOG.JPG
(Die LBS-Nummer ist noch nicht final, werd mich noch regestrieren)
Die JSON-Abfrage ist wie man sieht (noch) kein Bestandteil meines LBS.
LBS.JPG
Der Teil mit dem "StatesOfCharge" ist scheinbar nicht immer im Sting dann gibts zig Fehler. Als gestern mein Wechselrichter keine Verbindung zum Datenlogger hatte lief der Log regelrecht über, da noch mehr im String fehlte.
Ich hab schon versucht mit einer If-Abrage zu arbeiten aber das hat keine Verbesserung gebracht.
Schon mal vielen Dank für eure Geduld und Hilfe.
lg
Jürgen
da ich noch relativ neu bei EDOMI und PHP bin brauch ich etwas Hilfe. Ich bin gerade dabei einen LBS zu erstellen der einen Json-Sting meines Dataloggers der PV-Anlage aufschlüsselt und übergibt. Die Grundfunktionen funktionieren. Doch manchmal fehlen scheinbar im Json-String einige Teile, dann meckert er ins Log.Fehler im LOG.JPG
(Die LBS-Nummer ist noch nicht final, werd mich noch regestrieren)
Die JSON-Abfrage ist wie man sieht (noch) kein Bestandteil meines LBS.
LBS.JPG
Code:
###[DEF]### [name =SolarWorld (v0.3) ] [e#1 TRIGGER = Trigger (optional) ] [e#2 IMPORTANT = Json-String ] [a#1 = Aktueller Verbrauch (Haus/Batterie) ] [a#2 = Aktueller Verbrauch (Haus) ] [a#3 = Einspeisung ] [a#4 = Batterie-Ladung Wh ] [a#5 = Batterie-Zustand ] [a#6 = Batterie-Ladung % ] [a#7 = Erzeugung PV ] [a#8 = Maximale Leistung PV ] [a#9 = Eigenstromversorgung ] [a#10 = Bezug EVU ] [a#11 = Ladestrom Batterie ] ###[/DEF]### ###[HELP]### <h2>Ein- und Ausg�nge</h2> <h3>Eing�ne</h3> <h3>Ausg�nge</h3> ###[/HELP]### ###[LBS]### <? function LB_LBSID($id) { if ($E=getLogicEingangDataAll($id)) { if ($E[1]['refresh']==1 || $E[2]['refresh']==1) { $json = (string)$E[2]['value']; //Json-Beispiel '{"PowerSelfConsumption":1379.4603809075945,"PowerConsumption":2596.748567966797,"PowerOut":0,"StatesOfCharge":{"WorkCharge":60,"ModeConverter":"DISCHARGING","StateOfCharge":1},"PowerTotalPV":1379.4603809075945,"PowerPVPeak":9900,"PowerSelfSupply":2575.2943900307573,"PowerIn":21.45417793603974,"PowerConsumptionMax":{"2017-09-24":4327.874227078623,"2017-09-23":5706.109233114997,"2017-09-22":5097.137145880682,"2017-09-18":5003.694712464589,"2017-09-21":5837.091378738959,"2017-09-19":7958.92557146933,"2017-09-20":5060.969388313184}}'; $array = json_decode($json, true); $PowerSelfConsumption = $array["PowerSelfConsumption"]; $PowerConsumption = $array["PowerConsumption"]; $PowerOut = $array["PowerOut"]; if (in_array("StatesOfCharge", $array)) { $WorkCharge = $array["StatesOfCharge"] ["WorkCharge"]; $ModeConverter = $array["StatesOfCharge"] ["ModeConverter"]; $StateOfCharge = $array["StatesOfCharge"] ["StateOfCharge"]; setLogicLinkAusgang($id,4,$WorkCharge); setLogicLinkAusgang($id,5,$ModeConverter); setLogicLinkAusgang($id,6,$StateOfCharge); } else { setLogicLinkAusgang($id,4,"0"); setLogicLinkAusgang($id,5,"0"); setLogicLinkAusgang($id,6,"0"); } $PowerTotalPV = $array["PowerTotalPV"]; $PowerPVPeak = $array["PowerPVPeak"]; $PowerSelfSupply = $array["PowerSelfSupply"]; $PowerIn = $array["PowerIn"]; setLogicLinkAusgang($id,1,$PowerSelfConsumption); setLogicLinkAusgang($id,2,$PowerConsumption); setLogicLinkAusgang($id,3,$PowerOut); setLogicLinkAusgang($id,7,$PowerTotalPV); setLogicLinkAusgang($id,8,$PowerPVPeak); setLogicLinkAusgang($id,9,$PowerSelfSupply); setLogicLinkAusgang($id,10,$PowerIn); // Ladestrom der Batterie berechnen $Ladestrom = $PowerTotalPV - $PowerConsumption; if ($Ladestrom > 0) { setLogicLinkAusgang($id,11,$Ladestrom); } else { setLogicLinkAusgang($id,11,"0"); } } } } ?> ###[/LBS]### ###[EXEC]### <? ?> ###[/EXEC]###
Ich hab schon versucht mit einer If-Abrage zu arbeiten aber das hat keine Verbesserung gebracht.
Schon mal vielen Dank für eure Geduld und Hilfe.
lg
Jürgen
Kommentar