package app import ( "fmt" "log" "os" "time" "git.az-it.net/az/morz-infoboard/player/agent/internal/config" ) type App struct { Config config.Config logger *log.Logger } func New() (*App, error) { cfg, err := config.Load() if err != nil { return nil, err } logger := log.New(os.Stdout, "agent ", log.LstdFlags|log.LUTC) return &App{Config: cfg, logger: logger}, nil } func (a *App) Run() error { if a.Config.ScreenID == "" { return fmt.Errorf("screen id is required") } a.logger.Printf("configured server=%s mqtt=%s heartbeat=%ds", a.Config.ServerBaseURL, a.Config.MQTTBroker, a.Config.HeartbeatEvery) ticker := time.NewTicker(time.Duration(a.Config.HeartbeatEvery) * time.Second) defer ticker.Stop() for { a.logger.Printf("heartbeat tick screen=%s", a.Config.ScreenID) <-ticker.C } }