fix(pkg/cli): GetSensorIDsByMeasuredValues
This commit is contained in:
		| @@ -10,32 +10,11 @@ import ( | ||||
| ) | ||||
|  | ||||
| // GetSensorsByMeasuredValues returns commulated list of sensors by measured values | ||||
| func GetSensorsByMeasuredValues(measuredValues []*types.MeasuredValue, cnf *config.Configuration) []*types.Sensor { | ||||
| 	sensors := []*types.Sensor{} | ||||
| func GetSensorIDsByMeasuredValues(measuredValues []*types.MeasuredValue, cnf *config.Configuration) map[string]*types.Sensor { | ||||
| 	sensors := make(map[string]*types.Sensor) | ||||
| 	for _, measuredValue := range measuredValues { | ||||
| 		duplicated := false | ||||
| 		foundSensor := &types.Sensor{} | ||||
| 		for _, cnfSensor := range cnf.Sensors { | ||||
| 			if measuredValue.ID == cnfSensor.ID { | ||||
| 				foundSensor = cnfSensor | ||||
|  | ||||
| 				// compare if id has already been added to list | ||||
| 				for _, sensor := range sensors { | ||||
| 					if cnfSensor.ID == sensor.ID { | ||||
| 						duplicated = true | ||||
| 						break | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if duplicated { | ||||
| 			continue | ||||
| 		} | ||||
| 		if foundSensor != nil { | ||||
| 			sensors = append(sensors, foundSensor) | ||||
| 			continue | ||||
| 		} else { | ||||
| 			sensors = append(sensors, &types.Sensor{ID: measuredValue.ID}) | ||||
| 		if _, ok := sensors[measuredValue.SensorID]; !ok { | ||||
| 			sensors[measuredValue.SensorID] = cnf.GetSensorByID(measuredValue.SensorID) | ||||
| 		} | ||||
| 	} | ||||
| 	return sensors | ||||
| @@ -109,26 +88,28 @@ func PrintSensors(cnf *config.Configuration, w io.Writer) error { | ||||
| // PrintMeasuredValues displays a list of measured values | ||||
| func PrintMeasuredValues(measuredValues []*types.MeasuredValue, cnf *config.Configuration, w io.Writer) { | ||||
|  | ||||
| 	sensors := GetSensorsByMeasuredValues(measuredValues, cnf) | ||||
| 	sensors := GetSensorIDsByMeasuredValues(measuredValues, cnf) | ||||
|  | ||||
| 	// sort measured values for every sensor | ||||
| 	orderedMeasuredValues := make(map[string][]*types.MeasuredValue) | ||||
| 	for _, measuredValue := range measuredValues { | ||||
| 		orderedMeasuredValues[measuredValue.ID] = append(orderedMeasuredValues[measuredValue.ID], measuredValue) | ||||
| 		orderedMeasuredValues[measuredValue.SensorID] = append(orderedMeasuredValues[measuredValue.SensorID], measuredValue) | ||||
| 	} | ||||
|  | ||||
| 	// declare tabwriter | ||||
| 	tw := tabwriter.NewWriter(w, 0, 0, 3, ' ', 0) | ||||
|  | ||||
| 	// headlines | ||||
| 	for i, sensor := range sensors { | ||||
| 	i := 0 | ||||
| 	for _, sensor := range sensors { | ||||
| 		fmt.Fprintf(tw, "%v\t", sensor.FullName()) | ||||
| 		if i == len(sensors)-1 { | ||||
| 			fmt.Fprintf(tw, "\n") | ||||
| 		} | ||||
| 		i++ | ||||
| 	} | ||||
|  | ||||
| 	// find sensor with maximum temperature values | ||||
| 	// find sensor with the most measured values | ||||
| 	maxLength := 0 | ||||
| 	for _, orderedMeasuredValue := range orderedMeasuredValues { | ||||
| 		if len(orderedMeasuredValue) > maxLength { | ||||
|   | ||||
| @@ -82,8 +82,8 @@ func (c *Configuration) AddSensor(sensor *types.Sensor) error { | ||||
| 	} | ||||
|  | ||||
| 	// check if sensor has a valid device id | ||||
| 	if sensor.ID != c.Device.ID { | ||||
| 		sensor.ID = c.Device.ID | ||||
| 	if sensor.DeviceID != c.Device.ID { | ||||
| 		sensor.DeviceID = c.Device.ID | ||||
| 	} | ||||
|  | ||||
| 	// overwrite creation date | ||||
| @@ -362,6 +362,17 @@ func (c *Configuration) GetRGBLEDsByName(names []string) []rgbled.RGBLED { | ||||
| 	return c.convertRGBLEDs(rgbLEDs) | ||||
| } | ||||
|  | ||||
| // GetSensorByID returns a sensor matched by his id. If no sensor has this id, | ||||
| // the function returns nil | ||||
| func (c *Configuration) GetSensorByID(id string) *types.Sensor { | ||||
| 	for _, sensor := range c.Sensors { | ||||
| 		if sensor.ID == id { | ||||
| 			return sensor | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // GetSensors returns a list of humidity sensors | ||||
| func (c *Configuration) GetSensors(option Option) []sensor.Sensor { | ||||
| 	cachedSensors := make([]*types.Sensor, 0) | ||||
|   | ||||
| @@ -37,7 +37,6 @@ func SelectMeasuredValues(measuredValueType MeasuredValueType, measuredValues [] | ||||
| 			cachedMeasuredValues = append(cachedMeasuredValues, measuredValue) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return cachedMeasuredValues | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user