'pwd': password
},
timeout=(10, 30))
- except requests.exceptions.RequestException as e:
- raise SystemExit(e)
- try:
r = s.post(
'https://www.envertecportal.com/ApiStations/getStationInfo',
data={
},
timeout=(10, 60)).json()
power = r['Data']['Power']
- except requests.exceptions.RequestException as e:
- raise SystemExit(e)
- try:
r = s.post('https://www.envertecportal.com/apiAccount/Logout',
timeout=(10, 30))
except requests.exceptions.RequestException as e:
return float(power)
+# use our stateFile to determine if we have a state change
+# used to decide if we print something - thus generate a mail - later on
+def stateCheck(newState, stateFile):
+ try:
+ with open(stateFile, "r") as f:
+ oldState = f.read()
+ except FileNotFoundError:
+ oldState = "NULL"
+
+ if newState == oldState:
+ change = False
+ else:
+ change = True
+ with open(stateFile, "w") as f:
+ f.write(newState)
+
+ return change
+
+
# read configuration file
conf = configparser.ConfigParser()
conf.read('portalmonitor.ini')
conf['config']['stationId'])
if options.printStatus:
- print('Current Power: ' + str(currentPower))
+ print(f"Current Power: {currentPower}")
if currentPower == 0:
- print('Error: Power dropped to 0 but we should have daylight!')
+ if stateCheck('FAILED', conf['config']['stateFile']):
+ print('Error: Power dropped to 0 but we should have daylight!')
sys.exit(1)
+ else:
+ if stateCheck('OK', conf['config']['stateFile']):
+ print(f"Resolved: Inverter reports {currentPower}W")