diff --git a/backend/cronjobs/cronjobs.go b/backend/cronjobs/cronjobs.go index 60d7b030..bddcb190 100644 --- a/backend/cronjobs/cronjobs.go +++ b/backend/cronjobs/cronjobs.go @@ -75,7 +75,7 @@ func RunPing(app *pocketbase.PocketBase) { CronPing.Run() } -func RunWakeShutdown() { +func RunWakeShutdown(app *pocketbase.PocketBase) { CronWakeShutdown = cron.New() for _, device := range Devices { wake_cron := device.GetString("wake_cron") @@ -85,17 +85,29 @@ func RunWakeShutdown() { if wake_cron_enabled && wake_cron != "" { CronWakeShutdown.AddFunc(wake_cron, func() { + device.Set("status", "pending") + app.Dao().SaveRecord(device) if err := networking.WakeDevice(device); err != nil { logger.Error.Println(err) + device.Set("status", "offline") + app.Dao().SaveRecord(device) } + device.Set("status", "online") + app.Dao().SaveRecord(device) }) } if shutdown_cron_enabled && shutdown_cron != "" { CronWakeShutdown.AddFunc(shutdown_cron, func() { + device.Set("status", "pending") + app.Dao().SaveRecord(device) if err := networking.ShutdownDevice(device); err != nil { logger.Error.Println(err) + device.Set("status", "online") + app.Dao().SaveRecord(device) } + device.Set("status", "offline") + app.Dao().SaveRecord(device) }) } } diff --git a/backend/pb/pb.go b/backend/pb/pb.go index 50fd74d7..fdfba121 100644 --- a/backend/pb/pb.go +++ b/backend/pb/pb.go @@ -76,7 +76,7 @@ func StartPocketBase(distDirFS fs.FS) { // run cronjobs go cronjobs.RunPing(App) - go cronjobs.RunWakeShutdown() + go cronjobs.RunWakeShutdown(App) // restart ping cronjobs or wake/shutdown cronjobs on model update // add event hook before starting server. @@ -94,7 +94,7 @@ func StartPocketBase(distDirFS fs.FS) { for _, job := range cronjobs.CronWakeShutdown.Entries() { cronjobs.CronWakeShutdown.Remove(job.ID) } - go cronjobs.RunWakeShutdown() + go cronjobs.RunWakeShutdown(App) } return nil })