From 1f433dd40bf0e3e7935f57dc4d793b5ddf1ca744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxi=20Quo=C3=9F?= Date: Sun, 29 Jan 2023 21:26:48 +0100 Subject: [PATCH] set device status on cron wake/shutdown --- backend/cronjobs/cronjobs.go | 14 +++++++++++++- backend/pb/pb.go | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) 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 })