fix: gnu-cc, missing humidity table, restrict repository select

This commit is contained in:
2020-06-27 21:12:00 +02:00
parent 92a776f6ce
commit 8c1bd57ad5
9 changed files with 69 additions and 15 deletions

View File

@ -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
}
}
}