Der Code ist einfach erstmal provisorisch hingesch*ssen:
local self_id = fibaro:getSelfId();
local OpenDTU_IP = "192.168.180.27";
local OpenDTU_Port = 80;
local Zaehler_IP = "192.168.180.77";
local Zaehler_Port = 80;
–OpenDTU
OpenDTU_http = Net.FHttp(OpenDTU_IP, OpenDTU_Port);
response, status, err = OpenDTU_http:GET(„/api/livedata/status“);
OpenDTU_result = json.decode(response);
fibaro:debug(tostring(math.floor(OpenDTU_result.total.Power.v100)/100)…" W");
fibaro:debug(tonumber(OpenDTU_result.total.YieldDay.v)…" Wh");
fibaro:call(self_id , „setProperty“, „ui.WRout.value“, tostring(math.floor(OpenDTU_result.total.Power.v100)/100)…"W / "…tonumber(OpenDTU_result.total.YieldDay.v)…„Wh“ );
–Zaehler
Zaehler_http = Net.FHttp(Zaehler_IP, Zaehler_Port);
response, status, err = Zaehler_http:GET(„/cm?cmnd=status%2010“);
Zaehler_result = json.decode(response);
–PAFAL alt: fibaro:setGlobal(„Stromzaehler“, Zaehler_result.StatusSNS.PAFAL.Total_IN);
fibaro:setGlobal(„Stromzaehler“, Zaehler_result.StatusSNS.Strom.Total_in);
fibaro:debug(tonumber(fibaro:getGlobalValue(„Stromzaehler“))…" kWh");
fibaro:call(self_id , „setProperty“, „ui.Zaehlerin.value“, tonumber(Zaehler_result.StatusSNS.Strom.Total_in)…" kWh");
fibaro:call(self_id , „setProperty“, „ui.Zaehlerout.value“, tonumber(Zaehler_result.StatusSNS.Strom.Total_out)…" kWh");
fibaro:call(self_id , „setProperty“, „ui.Leistung.value“, tonumber(Zaehler_result.StatusSNS.Strom.Power_cur)…" W");
fibaro:sleep(4*1000);
Musst natürlich ein paar Sachen anpassen, und es fehlt definitiv noch ein error handling bei der http-Abfrage. Aber wie gesagt, ist erstmal ein halbwegs funktionierender Versuch.
Tagesverbrauch und Nachtverbrauch werden von Szenen aktualisiert (sonnengeführt) und dienen hauptsächlich dazu, eine mögliche Speichergröße für eine richtige PV-Anlage einzuschätzen, soll kommendes Jahr folgen.