feat: select optional sensors to read humidity or temperature
This commit is contained in:
		| @@ -9,6 +9,63 @@ import ( | ||||
| 	"git.cryptic.systems/fh-trier/go-flucky/pkg/types" | ||||
| ) | ||||
|  | ||||
| func PrintHumidities(humidities []*types.Humidity, cnf *config.FluckyConfig, w io.Writer) { | ||||
| 	// determine all humidity sensors based on the humidiy values | ||||
| 	sensors := []*types.Sensor{} | ||||
| 	for _, humidity := range humidities { | ||||
| 		// Search for the sensor that has acquired the measured value | ||||
| 		for _, sensor := range cnf.Sensors { | ||||
| 			if sensor.SensorID == humidity.SensorID { | ||||
| 				sensors = append(sensors, sensor) | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 		// If it was not found, pass only the sensor with the UUID on | ||||
| 		sensor := &types.Sensor{ | ||||
| 			SensorID: humidity.SensorID, | ||||
| 		} | ||||
| 		sensors = append(sensors, sensor) | ||||
| 	} | ||||
|  | ||||
| 	// sort temperature values for every sensor | ||||
| 	orderedHumidities := make(map[string][]*types.Humidity) | ||||
| 	for _, humidity := range humidities { | ||||
| 		orderedHumidities[humidity.SensorID] = append(orderedHumidities[humidity.SensorID], humidity) | ||||
| 	} | ||||
|  | ||||
| 	// declare tabwriter | ||||
| 	tw := tabwriter.NewWriter(w, 0, 0, 3, ' ', 0) | ||||
|  | ||||
| 	// headlines | ||||
| 	for i, sensor := range sensors { | ||||
| 		fmt.Fprintf(tw, "%v\t", sensor.Name()) | ||||
| 		if i == len(sensors)-1 { | ||||
| 			fmt.Fprintf(tw, "\n") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// find sensor with maximum temperature values | ||||
| 	maxLength := 0 | ||||
| 	for _, orderedHumidity := range orderedHumidities { | ||||
| 		if len(orderedHumidity) > maxLength { | ||||
| 			maxLength = len(orderedHumidity) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// body | ||||
| 	for i := 0; i < maxLength; i++ { | ||||
| 		for _, sensor := range sensors { | ||||
| 			if len(orderedHumidities[sensor.SensorID]) > i { | ||||
| 				fmt.Fprintf(tw, "%3.3f\t", orderedHumidities[sensor.SensorID][i].HumidityValue) | ||||
| 			} else { | ||||
| 				fmt.Fprint(tw, "\t") | ||||
| 			} | ||||
| 			fmt.Fprint(tw, "\n") | ||||
| 		} | ||||
| 	} | ||||
| 	tw.Flush() | ||||
| } | ||||
|  | ||||
| func PrintTemperatures(temperatures []*types.Temperature, cnf *config.FluckyConfig, w io.Writer) { | ||||
|  | ||||
| 	sensors := []*types.Sensor{} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user