fix(pkg/config): select temperature and humidity sensors by name, uuid or wire-id
This commit is contained in:
parent
314f5a41e5
commit
662e1dcfa9
@ -27,8 +27,13 @@ var readTemperatureCmd = &cobra.Command{
|
|||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// fetch all temperature sensors
|
// fetch all temperature sensors or sensors by args
|
||||||
temperatureSensors := cnf.GetTemperatureSensors(config.ENABLED)
|
temperatureSensors := make([]sensor.TemperatureSensor, 0)
|
||||||
|
if len(args) == 0 {
|
||||||
|
temperatureSensors = cnf.GetTemperatureSensors(config.ENABLED)
|
||||||
|
} else {
|
||||||
|
temperatureSensors = cnf.GetTemperatureSensorsByName(args)
|
||||||
|
}
|
||||||
|
|
||||||
// read temperature from sensors
|
// read temperature from sensors
|
||||||
temperatures, err := sensor.ReadTemperatures(temperatureSensors)
|
temperatures, err := sensor.ReadTemperatures(temperatureSensors)
|
||||||
|
@ -118,14 +118,60 @@ func (c *Configuration) EnableSensor(name string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetHumiditySensors returns a list of humidity sensors
|
// GetHumiditySensors returns a list of humidity sensors
|
||||||
func (c *Configuration) GetHumiditySensors() []sensor.HumiditySensor {
|
func (c *Configuration) GetHumiditySensors(option Option) []sensor.HumiditySensor {
|
||||||
humiditySensors, _ := c.splitSensors()
|
humiditySensors := c.convertHumiditySensors(c.Sensors)
|
||||||
|
|
||||||
|
switch option {
|
||||||
|
case ENABLED:
|
||||||
|
for i, humiditySensor := range humiditySensors {
|
||||||
|
if !humiditySensor.GetEnabled() {
|
||||||
|
humiditySensors = append(humiditySensors[:i], humiditySensors[i+1:]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
return humiditySensors
|
return humiditySensors
|
||||||
|
case DISABLED:
|
||||||
|
for i, humiditySensor := range humiditySensors {
|
||||||
|
if humiditySensor.GetEnabled() {
|
||||||
|
humiditySensors = append(humiditySensors[:i], humiditySensors[i+1:]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return humiditySensors
|
||||||
|
case ALL:
|
||||||
|
return humiditySensors
|
||||||
|
default:
|
||||||
|
return humiditySensors
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTemperatureSensors returns a list of humidity sensors
|
// GetHumiditySensorsByName returns a list of temperature sensors by name,
|
||||||
|
// uuid or wire-id
|
||||||
|
func (c *Configuration) GetHumiditySensorsByName(names []string) []sensor.HumiditySensor {
|
||||||
|
configHumiditySensors := make(map[string]*types.Sensor, 0)
|
||||||
|
|
||||||
|
for _, name := range names {
|
||||||
|
for _, s := range c.Sensors {
|
||||||
|
switch name {
|
||||||
|
case s.SensorID:
|
||||||
|
configHumiditySensors[s.SensorID] = s
|
||||||
|
case *s.WireID:
|
||||||
|
configHumiditySensors[s.SensorID] = s
|
||||||
|
case s.SensorName:
|
||||||
|
configHumiditySensors[s.SensorID] = s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
humiditySensors := make([]*types.Sensor, 0)
|
||||||
|
for _, cs := range configHumiditySensors {
|
||||||
|
humiditySensors = append(humiditySensors, cs)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.convertHumiditySensors(humiditySensors)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTemperatureSensors returns a list of temperature sensors
|
||||||
func (c *Configuration) GetTemperatureSensors(option Option) []sensor.TemperatureSensor {
|
func (c *Configuration) GetTemperatureSensors(option Option) []sensor.TemperatureSensor {
|
||||||
_, temperatureSensors := c.splitSensors()
|
temperatureSensors := c.convertTemperatureSensors(c.Sensors)
|
||||||
|
|
||||||
switch option {
|
switch option {
|
||||||
case ENABLED:
|
case ENABLED:
|
||||||
@ -149,6 +195,32 @@ func (c *Configuration) GetTemperatureSensors(option Option) []sensor.Temperatur
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetTemperatureSensorsByName returns a list of temperature sensors by name,
|
||||||
|
// uuid or wire-id
|
||||||
|
func (c *Configuration) GetTemperatureSensorsByName(names []string) []sensor.TemperatureSensor {
|
||||||
|
configTemperatureSensors := make(map[string]*types.Sensor, 0)
|
||||||
|
|
||||||
|
for _, name := range names {
|
||||||
|
for _, s := range c.Sensors {
|
||||||
|
switch name {
|
||||||
|
case s.SensorID:
|
||||||
|
configTemperatureSensors[s.SensorID] = s
|
||||||
|
case *s.WireID:
|
||||||
|
configTemperatureSensors[s.SensorID] = s
|
||||||
|
case s.SensorName:
|
||||||
|
configTemperatureSensors[s.SensorID] = s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
temperatureSensors := make([]*types.Sensor, 0)
|
||||||
|
for _, cs := range configTemperatureSensors {
|
||||||
|
temperatureSensors = append(temperatureSensors, cs)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.convertTemperatureSensors(temperatureSensors)
|
||||||
|
}
|
||||||
|
|
||||||
// RemoveSensor deletes a sensor by its name or its unique UUID
|
// RemoveSensor deletes a sensor by its name or its unique UUID
|
||||||
func (c *Configuration) RemoveSensor(name string) error {
|
func (c *Configuration) RemoveSensor(name string) error {
|
||||||
for i, sensor := range c.Sensors {
|
for i, sensor := range c.Sensors {
|
||||||
@ -180,23 +252,33 @@ func (c *Configuration) RenameSensor(oldName, newName string) error {
|
|||||||
return fmt.Errorf("Could not find remote %v to replace into with %v", oldName, newName)
|
return fmt.Errorf("Could not find remote %v to replace into with %v", oldName, newName)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Configuration) splitSensors() ([]sensor.HumiditySensor, []sensor.TemperatureSensor) {
|
func (c *Configuration) convertHumiditySensors(sensors []*types.Sensor) []sensor.HumiditySensor {
|
||||||
humiditySensors := make([]sensor.HumiditySensor, 0)
|
humiditySensors := make([]sensor.HumiditySensor, 0)
|
||||||
temperatureSensors := make([]sensor.TemperatureSensor, 0)
|
|
||||||
|
|
||||||
for _, s := range c.Sensors {
|
for _, s := range sensors {
|
||||||
switch s.SensorModel {
|
switch s.SensorModel {
|
||||||
case types.DHT11:
|
case types.DHT11:
|
||||||
humiditySensors = append(humiditySensors, &sensor.DHT11{
|
humiditySensors = append(humiditySensors, &sensor.DHT11{
|
||||||
Sensor: s,
|
Sensor: s,
|
||||||
})
|
})
|
||||||
temperatureSensors = append(temperatureSensors, &sensor.DHT11{
|
|
||||||
Sensor: s,
|
|
||||||
})
|
|
||||||
case types.DHT22:
|
case types.DHT22:
|
||||||
humiditySensors = append(humiditySensors, &sensor.DHT22{
|
humiditySensors = append(humiditySensors, &sensor.DHT22{
|
||||||
Sensor: s,
|
Sensor: s,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return humiditySensors
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Configuration) convertTemperatureSensors(sensors []*types.Sensor) []sensor.TemperatureSensor {
|
||||||
|
temperatureSensors := make([]sensor.TemperatureSensor, 0)
|
||||||
|
for _, s := range sensors {
|
||||||
|
switch s.SensorModel {
|
||||||
|
case types.DHT11:
|
||||||
|
temperatureSensors = append(temperatureSensors, &sensor.DHT11{
|
||||||
|
Sensor: s,
|
||||||
|
})
|
||||||
|
case types.DHT22:
|
||||||
temperatureSensors = append(temperatureSensors, &sensor.DHT22{
|
temperatureSensors = append(temperatureSensors, &sensor.DHT22{
|
||||||
Sensor: s,
|
Sensor: s,
|
||||||
})
|
})
|
||||||
@ -206,5 +288,5 @@ func (c *Configuration) splitSensors() ([]sensor.HumiditySensor, []sensor.Temper
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return humiditySensors, temperatureSensors
|
return temperatureSensors
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user