diff --git a/docs/source/develop/changelog.rst b/docs/source/develop/changelog.rst index 1525a8f6..d5786743 100644 --- a/docs/source/develop/changelog.rst +++ b/docs/source/develop/changelog.rst @@ -42,6 +42,7 @@ Fixed - Resolved issue causing false failures of the connectivity test (Thanks postalbunny!) - Fixed issue preventing renaming of BrewPi controllers - Dashes now allowed in TiltBridge mDNS IDs +- Corrected issue where iSpindel data couldn't be loaded if a data point wasn't availble in Redis diff --git a/gravity/api/sensors.py b/gravity/api/sensors.py index c455774a..0c10fb0f 100644 --- a/gravity/api/sensors.py +++ b/gravity/api/sensors.py @@ -81,7 +81,10 @@ def get_ispindel_extras(req, device_id): extras = device.ispindel_configuration.load_extras_from_redis() extras['device_name'] = device.name extras['device_id'] = device.id - extras['log_time'] = device.ispindel_configuration.load_last_log_time_from_redis() + + last_log_time = device.ispindel_configuration.load_last_log_time_from_redis() + if last_log_time: + extras['log_time'] = last_log_time else: extras = {} diff --git a/gravity/models.py b/gravity/models.py index 46fe6e99..6f8b6b65 100644 --- a/gravity/models.py +++ b/gravity/models.py @@ -881,13 +881,15 @@ def load_extras_from_redis(self) -> dict: return extras - def load_last_log_time_from_redis(self) -> str: + def load_last_log_time_from_redis(self) -> str or None: r = redis.Redis.from_url(url=settings.REDIS_URL) - redis_response = r.get('grav_{}_full'.format(self.sensor_id)).decode(encoding="utf-8") + redis_response = r.get('grav_{}_full'.format(self.sensor_id)) if redis_response is None: # If we didn't get anything back (i.e. no data has been saved to redis yet) then return None - return {} + return None + else: + redis_response = redis_response.decode(encoding="utf-8") t = json.loads(redis_response) if 'fields' in t[0]: @@ -896,4 +898,4 @@ def load_last_log_time_from_redis(self) -> str: dt = datetime.datetime.fromisoformat( t[0]['fields']['log_time'].replace("Z","") ) return datetime.datetime.strftime( dt, "%c" ) - return {} + return None