Explorar el Código

change influx fields to channels

Johannes Müller hace 3 años
padre
commit
6a21075045

+ 8 - 1
box-pc/application/database/influxdb.py

@@ -20,11 +20,18 @@ class InfluxDB:
       for field in dataclasses.fields(meas):
       for field in dataclasses.fields(meas):
         if not field.name in ["timestamp", "series", "source"]:
         if not field.name in ["timestamp", "series", "source"]:
           value = getattr(meas, field.name)
           value = getattr(meas, field.name)
+          if type(value) is bool:
+            p.field(field.name, int(value))
           if not type(value) is tuple:
           if not type(value) is tuple:
             p.field(field.name, value)
             p.field(field.name, value)
           else:
           else:
             for i, v in enumerate(value):
             for i, v in enumerate(value):
-              p.field(F"{field.name}_{i}", v)
+              pt = Point(meas.series).time(meas.timestamp).tag("source", meas.source).tag("channel", i)
+              if type(v) is bool:
+                pt.field(F"{field.name}", int(v))
+              else:
+                pt.field(F"{field.name}", v)
+              points.append(pt)
       points.append(p)
       points.append(p)
     try:
     try:
       self.write_api.write(bucket=self.bucket, record=points)
       self.write_api.write(bucket=self.bucket, record=points)

+ 5 - 5
box-pc/application/structures/measurement.py

@@ -6,11 +6,11 @@ class Measurement24v:
   timestamp: datetime
   timestamp: datetime
   source: str
   source: str
   current: tuple[float, ...]
   current: tuple[float, ...]
-  status: int
-  overload: int
-  short_circuit: int
-  limit: int
-  pushbutton: int
+  status: tuple[bool, ...]
+  overload: tuple[bool, ...]
+  short_circuit: tuple[bool, ...]
+  limit: tuple[bool, ...]
+  pushbutton: tuple[bool, ...]
   voltage: float
   voltage: float
   series = "24v"
   series = "24v"