diff --git a/lib/xiaomi/scale/scale_v2.go b/lib/xiaomi/scale/scale_v2.go index fbe5551..0cadc47 100644 --- a/lib/xiaomi/scale/scale_v2.go +++ b/lib/xiaomi/scale/scale_v2.go @@ -3,7 +3,6 @@ package scale import ( "bytes" "encoding/binary" - "log" "time" "github.com/go-ble/ble" @@ -17,7 +16,6 @@ var XiaomiScaleV2UUID ble.UUID = []byte{0x1b, 0x18} // ParseXiaomiScaleV2 parses V2 scale service data func ParseXiaomiScaleV2(writeAPI *influxdb2_api.WriteAPI, logger *zap.Logger, timestamp time.Time, detector string, description string, advertisement ble.Advertisement, index int, sd ble.ServiceData) { - var scaleData struct { RawUnit uint8 ControlByte uint8 @@ -56,23 +54,8 @@ func ParseXiaomiScaleV2(writeAPI *influxdb2_api.WriteAPI, logger *zap.Logger, ti } if isStabilized { - loc, err := time.LoadLocation("Local") - if err != nil { - log.Fatal(err) - } - scaleTimestamp := time.Date( - int(scaleData.Year), - time.Month(scaleData.Month), - int(scaleData.Day), - int(scaleData.Hour), - int(scaleData.Minute), - int(scaleData.Second), - 0, - loc) - difference := timestamp.Sub(scaleTimestamp) - point := influxdb2.NewPointWithMeasurement("weight") - point.SetTime(scaleTimestamp) + point.SetTime(timestamp) if detector != "" { point.AddTag("detector", detector) } @@ -82,13 +65,25 @@ func ParseXiaomiScaleV2(writeAPI *influxdb2_api.WriteAPI, logger *zap.Logger, ti } point.AddTag("unit", "kg") point.AddTag("original_unit", originalUnit) - point.AddField("time_difference", difference.Seconds()) point.AddField("value", weight) - if hasImpedance { - point.AddField("impedance", scaleData.Impedance) - } (*writeAPI).WritePoint(point) + if hasImpedance { + point := influxdb2.NewPointWithMeasurement("impedance") + point.SetTime(timestamp) + if detector != "" { + point.AddTag("detector", detector) + } + point.AddTag("address", advertisement.Addr().String()) + if description != "" { + point.AddTag("description", description) + } + point.AddTag("unit", "kg") + point.AddField("impedance", scaleData.Impedance) + (*writeAPI).WritePoint(point) + + } + logger.Debug("xiaomi v2 scale", zap.String("name", advertisement.LocalName()), zap.String("source", advertisement.Addr().String()), @@ -96,7 +91,5 @@ func ParseXiaomiScaleV2(writeAPI *influxdb2_api.WriteAPI, logger *zap.Logger, ti zap.Bool("is_stabilized", isStabilized), zap.Bool("has_impedance", hasImpedance), zap.Float64("weight", weight)) - } - }