----------------------------------------------------------------------------------------- -- -- askirepository.lua -- ASKI Portal API Repository -- ----------------------------------------------------------------------------------------- local json = require("json") local AskiRepository = {} -- Cookie-Authentifizierungsfunktion function AskiRepository.getPostCookieAuth(url, email, password, code, callback) -- Erstelle den Request Body local requestBody = json.encode({ email = email, password = password, code = code }) -- Callback-Funktion für die Antwort local function networkListener(event) if event.isError then print("Netzwerkfehler: " .. tostring(event.response)) if callback then callback(false, nil, "Netzwerkfehler: " .. tostring(event.response)) end else print("Status Code: " .. event.status) --print("Response: " .. event.response) -- Extrahiere Cookie aus den Headers if event.responseHeaders then local cookie = event.responseHeaders["Set-Cookie"] or event.responseHeaders["set-cookie"] if cookie then --print("Cookie: " .. cookie) if callback then callback(true, cookie, event.response) end else print("Kein Cookie in der Antwort gefunden") if callback then callback(false, nil, "Kein Cookie gefunden") end end else if callback then callback(false, nil, "Keine Headers in der Antwort") end end end end -- POST Request Parameter local params = { headers = { ["Content-Type"] = "application/json", ["Content-Length"] = tostring(#requestBody) }, body = requestBody } -- Führe den POST Request aus network.request(url, "POST", networkListener, params) end -- Post Pv Data function AskiRepository.getPostHistoricData(url, deviceId, fromDate, toDate, cookie, callback) -- Erstelle den Request Body local requestBody = json.encode({ meters = { { deviceId = deviceId, meterId = 40, meterSubId = 0 } }, sumTariffs = true, type = 1, tariff = 0, from = fromDate, to = toDate }) -- Callback-Funktion für die Antwort local function networkListener(event) if event.isError then print("Netzwerkfehler: " .. tostring(event.response)) if callback then callback(false, nil, "Netzwerkfehler: " .. tostring(event.response)) end else print("Status Code: " .. event.status) print("Response: " .. event.response) -- Prüfe ob Status Code erfolgreich ist (200-299) if event.status >= 200 and event.status < 300 then -- Parse die JSON Response if event.response and event.response ~= "" then local dataSet = json.decode(event.response) if dataSet then print("DataSet erfolgreich empfangen") if callback then callback(true, dataSet, event.response) end else print("Fehler beim Parsen der Response") if callback then callback(false, nil, "JSON Parse Fehler") end end else print("Leere Response erhalten") if callback then callback(false, nil, "Leere Response") end end else print("HTTP Fehler: " .. event.status) if callback then callback(false, nil, "HTTP Fehler " .. event.status .. ": " .. tostring(event.response)) end end end end -- POST Request Parameter local params = { headers = { ["Content-Type"] = "application/json", ["Content-Length"] = tostring(#requestBody), ["Cookie"] = cookie }, body = requestBody } -- Führe den POST Request aus network.request(url, "POST", networkListener, params) end return AskiRepository