From de8db51676c05ff4e471e52de97d9e7e74c7ce56 Mon Sep 17 00:00:00 2001 From: Dan Hamik Date: Mon, 18 Aug 2025 13:11:29 -0500 Subject: [PATCH 1/2] adding auth checking and exiting to the script when auth token is invalid. --- enphase.py | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/enphase.py b/enphase.py index dfa5f08..b6521a4 100644 --- a/enphase.py +++ b/enphase.py @@ -171,18 +171,42 @@ while True: session.headers.update({"Authorization":"Bearer "+enphasetoken}) details = enphaseurl + "/production.json?details=1" inverteruri= enphaseurl + "/api/v1/production/inverters" - mainresponse = session.get(details,verify=False).json() - inverterresponse = session.get(inverteruri,verify=False).json() - #print(json.dumps(mainresponse,indent=1)) - for inverterdata in inverterresponse: + mainresponse = session.get(details,verify=False) + if mainresponse.status_code == 401: + print("Authentication Error, please renew enphase token at https://entrez.enphaseenergy.com/entrez_tokens") + quit() + print("Status code:", mainresponse.status_code) + print("Headers:", mainresponse.headers) + print("Raw text:", mainresponse.text[:500]) + try: + mainresponseresult = mainresponse.json() + print("Parsed JSON:\n", json.dumps(mainresponseresult, indent=2)) + except Exception as e: + print("Failed to parse JSON:", e) + quit() + + inverterresponse = session.get(inverteruri,verify=False) + if inverterresponse.status_code == 401: + print("Authentication Error, please renew enphase token at https://entrez.enphaseenergy.com/entrez_tokens") + quit() + print("Status code:", inverterresponse.status_code) + print("Headers:", inverterresponse.headers) + print("Raw text:", inverterresponse.text[:500]) + try: + inverterresponseresult = inverterresponse.json() + print("Parsed JSON:\n", json.dumps(inverterresponseresult, indent=2)) + except Exception as e: + print("Failed to parse JSON:", e) + quit() + for inverterdata in inverterresponseresult: myinverter = inverter(inverterdata['serialNumber'],inverterdata['lastReportDate'],inverterdata['devType'],inverterdata['lastReportWatts'],inverterdata['maxReportWatts']) inverterlist.append(myinverter) #print(json.dumps(response.json(),indent=1)) #for myinverter in inverterlist: #pass # myinverter.print() - print(json.dumps(mainresponse,indent=1)) - maindata = ElectricalData(mainresponse) + #print(json.dumps(mainresponse,indent=1)) + maindata = ElectricalData(mainresponseresult) influxsession = requests.Session() influxsession.verify = False influxsession.auth = (infdbuser, infdbpass) From 2cf2dabe7148dbdf4854afe5d2320dc42e7eedbe Mon Sep 17 00:00:00 2001 From: Dan Hamik Date: Mon, 18 Aug 2025 13:18:41 -0500 Subject: [PATCH 2/2] trying a flattened approach to dockerfile --- Dockerfile | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6911d02..5465354 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,8 @@ FROM debian:bullseye-slim # -RUN apt update && apt install python3 python3-pip -y -COPY enphase.py /usr/local/bin/ COPY requirements.txt / COPY init.sh / -RUN chmod +x /init.sh -RUN chmod +x /usr/local/bin/enphase.py -RUN pip3 install -r /requirements.txt -RUN apt clean +RUN apt update && apt install python3 python3-pip -y && pip3 install -r /requirements.txt && apt clean +COPY enphase.py /usr/local/bin/ +RUN chmod +x /init.sh && chmod +x /usr/local/bin/enphase.py CMD ["/init.sh"] \ No newline at end of file