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