Improve grid-meter disconnect or parse error, stop ess

This commit is contained in:
Carsten Schmiemann 2023-07-15 11:44:22 +02:00
parent bbf202b74d
commit 41d57160be
1 changed files with 19 additions and 2 deletions

View File

@ -68,19 +68,35 @@ class NodeRedMetergrid-meter:
return int(value)
# if there is a grid meter disconnect or some other error, set mandatory values to None to stop ESS and set MPs to passthrough
def _errorState(self):
self._dbusservice['/Connected'] = 0
self._dbusservice['/Ac/Power'] = None
self._dbusservice['/Ac/Current'] = None
self._dbusservice['/Ac/L1/Voltage'] = None
self._dbusservice['/Ac/L2/Voltage'] = None
self._dbusservice['/Ac/L3/Voltage'] = None
self._dbusservice['/Ac/L1/Current'] = None
self._dbusservice['/Ac/L2/Current'] = None
self._dbusservice['/Ac/L3/Current'] = None
self._dbusservice['/Ac/L1/Power'] = None
self._dbusservice['/Ac/L2/Power'] = None
self._dbusservice['/Ac/L3/Power'] = None
return True
def _getNodeRedData(self):
URL = "http://localhost:1880/meters"
try:
meter_r = requests.get(url = URL, timeout=5)
except requests.exceptions.RequestException as e:
self._dbusservice['/Connected'] = 0
self._errorState()
raise ConnectionError("No response from NodeRed - %s" % (URL))
meter_data = meter_r.json()
# check for Json
if not meter_data:
self._dbusservice['/Connected'] = 0
self._errorState()
raise ValueError("Converting response to JSON failed")
self._dbusservice['/Connected'] = 1
@ -133,6 +149,7 @@ class NodeRedMetergrid-meter:
#update lastupdate vars
self._lastUpdate = time.time()
except Exception as e:
self._errorState()
logging.critical('Error at %s', '_update', exc_info=e)
# return true, otherwise add_timeout will be removed from GObject - see docs http://library.isr.ist.utl.pt/docs/pygtk2reference/gobject-functions.html#function-gobject--timeout-add