fixed write_datapoints

This commit is contained in:
Martin Schroeder 2026-01-29 17:25:14 +00:00
parent efc81d4c9c
commit e7bdaceaf8

View File

@ -87,7 +87,10 @@ class InfluxDatabase(models.Model):
return int(timestamp) return int(timestamp)
def create_data_element_from_variable(self, variable, timestamp, value, **kwargs): def create_data_element_from_variable(self, variable, timestamp, value, **kwargs):
if value is not None: if value is None:
return None
if timestamp is None:
return None
date_saved = kwargs.get( date_saved = kwargs.get(
"date_saved", "date_saved",
variable.date_saved if hasattr(variable, "date_saved") else now(), variable.date_saved if hasattr(variable, "date_saved") else now(),
@ -105,15 +108,14 @@ class InfluxDatabase(models.Model):
.tag("unit", str(variable.unit)) .tag("unit", str(variable.unit))
.field("value", value) .field("value", value)
.field("date_saved", date_saved.timestamp()) .field("date_saved", date_saved.timestamp())
.time(datetime.utcfromtimestamp(timestamp)) .time(datetime.utcfromtimestamp(timestamp/1000.0))
) )
return point return point
return None
def last_datapoint(self, **kwargs): def last_datapoint(self, **kwargs):
if self.only_write_to_influxdb: if self.only_write_to_influxdb:
django_database = self.get_django_database() django_database = self.get_django_database()
return django_database.last_value(**kwargs) return django_database.last_datapoint(**kwargs)
variable = kwargs.pop("variable") if "variable" in kwargs else None variable = kwargs.pop("variable") if "variable" in kwargs else None
use_date_saved = ( use_date_saved = (
@ -222,6 +224,7 @@ class InfluxDatabase(models.Model):
date_saved = kwargs.pop("date_saved") if "date_saved" in kwargs else now() date_saved = kwargs.pop("date_saved") if "date_saved" in kwargs else now()
batch_size = kwargs.pop("batch_size") if "batch_size" in kwargs else 5000 batch_size = kwargs.pop("batch_size") if "batch_size" in kwargs else 5000
i = 0 i = 0
logger.debug(f"write_datapoints {items}")
for item in items: for item in items:
logger.debug(f"{item} has {len(item.cached_values_to_write)} to write.") logger.debug(f"{item} has {len(item.cached_values_to_write)} to write.")
if len(item.cached_values_to_write): if len(item.cached_values_to_write):
@ -236,7 +239,7 @@ class InfluxDatabase(models.Model):
item.date_saved = date_saved item.date_saved = date_saved
# create the recorded data object # create the recorded data object
point = self.create_data_element_from_variable( point = self.create_data_element_from_variable(
item, cached_value[1], cached_value[0], **kwargs item, cached_value[0], cached_value[1], **kwargs
) )
if self.only_write_to_influxdb or True: if self.only_write_to_influxdb or True:
rc = data_model.objects.create_data_element_from_variable( rc = data_model.objects.create_data_element_from_variable(