fix: gnu-cc, missing humidity table, restrict repository select
This commit is contained in:
@ -2,10 +2,10 @@ package daemon
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"git.cryptic.systems/volker.raschek/flucky/pkg/config"
|
||||
"git.cryptic.systems/volker.raschek/flucky/pkg/repository"
|
||||
@ -29,17 +29,39 @@ func Start(cnf *config.Config, flogger logger.Logger) error {
|
||||
return err
|
||||
}
|
||||
|
||||
repoSensors, err := repo.GetSensors()
|
||||
if err != nil {
|
||||
// Add
|
||||
repoDevice, err := repo.GetDevice(cnf.Device.ID)
|
||||
switch {
|
||||
case err != nil:
|
||||
return err
|
||||
case repoDevice == nil:
|
||||
err = repo.AddDevices(cnf.Device)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repoDevice, err = repo.GetDevice(cnf.Device.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
repoSensors, err := repo.GetSensorsByDeviceID(repoDevice.ID)
|
||||
switch {
|
||||
case err != nil:
|
||||
return err
|
||||
case repoSensors == nil, len(repoSensors) <= 0:
|
||||
return fmt.Errorf("No sensors found")
|
||||
}
|
||||
|
||||
sensors := make([]sensor.Sensor, 0)
|
||||
for _, repoSensor := range repoSensors {
|
||||
if !repoSensor.Enabled {
|
||||
if !repoSensor.Enabled || repoSensor.DeviceID != repoDevice.ID {
|
||||
continue
|
||||
}
|
||||
|
||||
flogger.Debug("Found sensor %v", repoSensor.GetName())
|
||||
|
||||
sensor, err := sensor.New(repoSensor)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -48,7 +70,7 @@ func Start(cnf *config.Config, flogger logger.Logger) error {
|
||||
}
|
||||
|
||||
interruptChannel := make(chan os.Signal, 1)
|
||||
signal.Notify(interruptChannel, os.Kill, syscall.SIGTERM)
|
||||
signal.Notify(interruptChannel, os.Interrupt, os.Kill)
|
||||
|
||||
// Collection
|
||||
parentCtx := context.Background()
|
||||
@ -82,7 +104,7 @@ func Start(cnf *config.Config, flogger logger.Logger) error {
|
||||
measuredValues = append(measuredValues, measuredValue)
|
||||
|
||||
if cap(measuredValues) == len(measuredValues) {
|
||||
flogger.Debug("Flush cache")
|
||||
flogger.Debug("Flush cache with %v values", len(measuredValues))
|
||||
err := repo.AddMeasuredValues(measuredValues...)
|
||||
if err != nil {
|
||||
flogger.Error("%v", err)
|
||||
@ -90,16 +112,26 @@ func Start(cnf *config.Config, flogger logger.Logger) error {
|
||||
measuredValues = make([]*types.MeasuredValue, 0, 10)
|
||||
}
|
||||
|
||||
case <-interruptChannel:
|
||||
case signal := <-interruptChannel:
|
||||
cancel()
|
||||
close(measuredValueChannel)
|
||||
|
||||
flogger.Info("Stopping daemon: Received process signal %v", signal.String())
|
||||
|
||||
flogger.Debug("Flush cache with %v remaining values", len(measuredValues))
|
||||
|
||||
err := repo.AddMeasuredValues(measuredValues...)
|
||||
if err != nil {
|
||||
flogger.Error("%v", err)
|
||||
}
|
||||
|
||||
break
|
||||
flogger.Debug("Close repository")
|
||||
err = repo.Close()
|
||||
if err != nil {
|
||||
flogger.Error("%v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user