diff --git a/README.md b/README.md index d953f54..2450c47 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Gome-Assistant is a new library, and I'm opening it up early to get some user fe ### Installation ``` -go get saml.dev/gome-assistant +go get github.com/Xevion/gome-assistant ``` ### Generate Entity Constants @@ -21,9 +21,9 @@ You can generate type-safe constants for all your Home Assistant entities using 1. Create a `gen.yaml` file in your project root: ```yaml -url: "http://192.168.1.123:8123" -ha_auth_token: "your_auth_token" # Or set HA_AUTH_TOKEN env var -home_zone_entity_id: "zone.home" # Optional: defaults to zone.home +url: "http://192.168.1.123:8123" +ha_auth_token: "your_auth_token" # Or set HA_AUTH_TOKEN env var +home_zone_entity_id: "zone.home" # Optional: defaults to zone.home # Optional: List of domains to include when generating constants # If provided, only these domains will be processed @@ -37,7 +37,7 @@ exclude_domains: ["device_tracker", "person"] 2. Add a `//go:generate` comment in your project: ```go -//go:generate go run saml.dev/gome-assistant/cmd/generate +//go:generate go run github.com/Xevion/gome-assistant/cmd/generate ``` Optionally use the `-config` flag to customize the file path of the config file. @@ -87,7 +87,7 @@ The general flow is 3. Start app ```go -import ga "saml.dev/gome-assistant" +import ga "github.com/Xevion/gome-assistant" // replace with IP and port of your Home Assistant installation app, err := ga.NewApp(ga.NewAppRequest{ @@ -107,7 +107,7 @@ app.RegisterIntervals(...) app.Start() ``` -A full reference is available on [pkg.go.dev](https://pkg.go.dev/saml.dev/gome-assistant), but all you need to know to get started are the four types of automations in gome-assistant. +A full reference is available on [pkg.go.dev](https://pkg.go.dev/github.com/Xevion/gome-assistant), but all you need to know to get started are the four types of automations in gome-assistant. - [Daily Schedules](#daily-schedule) - [Entity Listeners](#entity-listener) @@ -205,22 +205,23 @@ app.RegisterEventListeners(eventListener) Event listeners have other functions to change the behavior. -| Function | Info | -| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -| OnlyBetween("03:00", "14:00") | Only run your function between two specified times of day | -| OnlyAfter("03:00") | Only run your function after a specified time of day | -| OnlyBefore("03:00") | Only run your function before a specified time of day | -| Throttle("30s") | Minimum time between function calls | +| Function | Info | +| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| OnlyBetween("03:00", "14:00") | Only run your function between two specified times of day | +| OnlyAfter("03:00") | Only run your function after a specified time of day | +| OnlyBefore("03:00") | Only run your function before a specified time of day | +| Throttle("30s") | Minimum time between function calls | | ExceptionDates(time.Time, ...time.Time) | A one time exception on the given date. Time is ignored, applies to whole day. Functions like a "blocklist" | | ExceptionRange(time.Time, time.Time) | A one time exception between the two date/times. Both date and time are considered. Functions like a "blocklist" | The callback function receives three parameters: + ```go func myCallback(service *ga.Service, state ga.State, data ga.EventData) { // You can unmarshal the raw JSON into a type-safe struct ev := ga.EventZWaveJSValueNotification{} json.Unmarshal(data.RawEventJSON, &ev) - + // Handle the event... } ``` diff --git a/app.go b/app.go index cb28d01..446e526 100644 --- a/app.go +++ b/app.go @@ -13,10 +13,10 @@ import ( "github.com/gorilla/websocket" sunriseLib "github.com/nathan-osman/go-sunrise" - "saml.dev/gome-assistant/internal" - "saml.dev/gome-assistant/internal/http" - pq "saml.dev/gome-assistant/internal/priorityqueue" - ws "saml.dev/gome-assistant/internal/websocket" + "github.com/Xevion/gome-assistant/internal" + "github.com/Xevion/gome-assistant/internal/http" + pq "github.com/Xevion/gome-assistant/internal/priority_queue" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) var ErrInvalidArgs = errors.New("invalid arguments provided") diff --git a/checkers.go b/checkers.go index 1936190..2e2e6c1 100644 --- a/checkers.go +++ b/checkers.go @@ -3,8 +3,8 @@ package gomeassistant import ( "time" + "github.com/Xevion/gome-assistant/internal" "github.com/golang-module/carbon" - "saml.dev/gome-assistant/internal" ) type conditionCheck struct { diff --git a/checkers_test.go b/checkers_test.go index 8a659d2..efd4249 100644 --- a/checkers_test.go +++ b/checkers_test.go @@ -4,8 +4,8 @@ import ( "errors" "testing" + "github.com/Xevion/gome-assistant/internal" "github.com/stretchr/testify/assert" - "saml.dev/gome-assistant/internal" ) type MockState struct { diff --git a/cmd/generate/main.go b/cmd/generate/main.go index 3cb27cb..8d925d9 100644 --- a/cmd/generate/main.go +++ b/cmd/generate/main.go @@ -9,8 +9,8 @@ import ( "strings" "text/template" + ga "github.com/Xevion/gome-assistant" "gopkg.in/yaml.v3" - ga "saml.dev/gome-assistant" ) type Config struct { diff --git a/entitylistener.go b/entitylistener.go index e727539..6c893cb 100644 --- a/entitylistener.go +++ b/entitylistener.go @@ -7,7 +7,7 @@ import ( "github.com/golang-module/carbon" - "saml.dev/gome-assistant/internal" + "github.com/Xevion/gome-assistant/internal" ) type EntityListener struct { diff --git a/eventListener.go b/eventListener.go index ca96cee..b0d2c93 100644 --- a/eventListener.go +++ b/eventListener.go @@ -7,8 +7,8 @@ import ( "github.com/golang-module/carbon" - "saml.dev/gome-assistant/internal" - ws "saml.dev/gome-assistant/internal/websocket" + "github.com/Xevion/gome-assistant/internal" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) type EventListener struct { diff --git a/example/example.go b/example/example.go index f05b79d..c785894 100644 --- a/example/example.go +++ b/example/example.go @@ -8,10 +8,10 @@ import ( // "example/entities" // Optional import generated entities - ga "saml.dev/gome-assistant" + ga "github.com/Xevion/gome-assistant" ) -//go:generate go run saml.dev/gome-assistant/cmd/generate +//go:generate go run github.com/Xevion/gome-assistant/cmd/generate func main() { app, err := ga.NewApp(ga.NewAppRequest{ @@ -24,7 +24,13 @@ func main() { os.Exit(1) } - defer app.Cleanup() + defer func() { + slog.Info("Shutting down application...") + if err := app.Close(); err != nil { + slog.Error("Error during shutdown", "error", err) + } + slog.Info("Application shutdown complete") + }() pantryDoor := ga. NewEntityListener(). diff --git a/example/example_live_test.go b/example/example_live_test.go index 93a9623..e47d70c 100644 --- a/example/example_live_test.go +++ b/example/example_live_test.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/suite" "gopkg.in/yaml.v3" - ga "saml.dev/gome-assistant" + ga "github.com/Xevion/gome-assistant" ) type ( diff --git a/example/go.mod b/example/go.mod index a595e74..7c9b97e 100644 --- a/example/go.mod +++ b/example/go.mod @@ -6,7 +6,7 @@ require ( github.com/golang-cz/devslog v0.0.8 github.com/stretchr/testify v1.8.4 gopkg.in/yaml.v3 v3.0.1 - saml.dev/gome-assistant v0.2.0 + github.com/Xevion/gome-assistant v0.2.0 ) require ( diff --git a/example/go.sum b/example/go.sum index 232d6d1..c2a18f2 100644 --- a/example/go.sum +++ b/example/go.sum @@ -96,5 +96,5 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -saml.dev/gome-assistant v0.2.0 h1:Clo5DrziTdsYydVUTQfroeBVmToMnNHoObr+k6HhbMY= -saml.dev/gome-assistant v0.2.0/go.mod h1:jsZUtnxANCP0zB2B7iyy4j7sZohMGop8g+5EB2MER3o= +github.com/Xevion/gome-assistant v0.2.0 h1:Clo5DrziTdsYydVUTQfroeBVmToMnNHoObr+k6HhbMY= +github.com/Xevion/gome-assistant v0.2.0/go.mod h1:jsZUtnxANCP0zB2B7iyy4j7sZohMGop8g+5EB2MER3o= diff --git a/go.mod b/go.mod index 4c9b4d1..0decbe9 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module saml.dev/gome-assistant +module github.com/Xevion/gome-assistant go 1.21 diff --git a/internal/priorityqueue/priorityqueue.go b/internal/priority_queue/priority_queue.go similarity index 98% rename from internal/priorityqueue/priorityqueue.go rename to internal/priority_queue/priority_queue.go index b7d7c0b..c51918a 100644 --- a/internal/priorityqueue/priorityqueue.go +++ b/internal/priority_queue/priority_queue.go @@ -1,4 +1,4 @@ -package priorityqueue +package priority_queue import ( "container/heap" diff --git a/internal/services/adaptive_lighting.go b/internal/services/adaptive_lighting.go index 5b09890..a913e01 100644 --- a/internal/services/adaptive_lighting.go +++ b/internal/services/adaptive_lighting.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/alarm_control_panel.go b/internal/services/alarm_control_panel.go index 33698d7..2445738 100644 --- a/internal/services/alarm_control_panel.go +++ b/internal/services/alarm_control_panel.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/climate.go b/internal/services/climate.go index 6e00a55..be68c74 100644 --- a/internal/services/climate.go +++ b/internal/services/climate.go @@ -1,8 +1,8 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" - "saml.dev/gome-assistant/types" + ws "github.com/Xevion/gome-assistant/internal/websocket" + "github.com/Xevion/gome-assistant/types" ) /* Structs */ diff --git a/internal/services/cover.go b/internal/services/cover.go index b1f72e1..6c1962b 100644 --- a/internal/services/cover.go +++ b/internal/services/cover.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/event.go b/internal/services/event.go index 6d9ddad..4251eda 100644 --- a/internal/services/event.go +++ b/internal/services/event.go @@ -1,8 +1,8 @@ package services import ( - "saml.dev/gome-assistant/internal" - ws "saml.dev/gome-assistant/internal/websocket" + "github.com/Xevion/gome-assistant/internal" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) type Event struct { diff --git a/internal/services/homeassistant.go b/internal/services/homeassistant.go index 3e119ac..36bc5e6 100644 --- a/internal/services/homeassistant.go +++ b/internal/services/homeassistant.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) type HomeAssistant struct { diff --git a/internal/services/input_boolean.go b/internal/services/input_boolean.go index 4eef1af..ee45511 100644 --- a/internal/services/input_boolean.go +++ b/internal/services/input_boolean.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/input_button.go b/internal/services/input_button.go index c574dbb..03ab378 100644 --- a/internal/services/input_button.go +++ b/internal/services/input_button.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/input_datetime.go b/internal/services/input_datetime.go index 1e8a7fe..7c01e36 100644 --- a/internal/services/input_datetime.go +++ b/internal/services/input_datetime.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/input_number.go b/internal/services/input_number.go index a81b494..19b1e03 100644 --- a/internal/services/input_number.go +++ b/internal/services/input_number.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/input_text.go b/internal/services/input_text.go index 4e45b06..7eda7ad 100644 --- a/internal/services/input_text.go +++ b/internal/services/input_text.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/light.go b/internal/services/light.go index cea5bc1..87b850f 100644 --- a/internal/services/light.go +++ b/internal/services/light.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/lock.go b/internal/services/lock.go index 862aad2..c5a1add 100644 --- a/internal/services/lock.go +++ b/internal/services/lock.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/media_player.go b/internal/services/media_player.go index a8a9d1d..48a067a 100644 --- a/internal/services/media_player.go +++ b/internal/services/media_player.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/notify.go b/internal/services/notify.go index 6d87c58..8b8f72d 100644 --- a/internal/services/notify.go +++ b/internal/services/notify.go @@ -1,8 +1,8 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" - "saml.dev/gome-assistant/types" + ws "github.com/Xevion/gome-assistant/internal/websocket" + "github.com/Xevion/gome-assistant/types" ) type Notify struct { diff --git a/internal/services/number.go b/internal/services/number.go index addac70..5e2ae92 100644 --- a/internal/services/number.go +++ b/internal/services/number.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) type Number struct { diff --git a/internal/services/scene.go b/internal/services/scene.go index 3d180a6..32722c5 100644 --- a/internal/services/scene.go +++ b/internal/services/scene.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/script.go b/internal/services/script.go index 4537a85..bebbc0c 100644 --- a/internal/services/script.go +++ b/internal/services/script.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/services.go b/internal/services/services.go index e8a38b8..1cf963e 100644 --- a/internal/services/services.go +++ b/internal/services/services.go @@ -1,8 +1,8 @@ package services import ( - "saml.dev/gome-assistant/internal" - ws "saml.dev/gome-assistant/internal/websocket" + "github.com/Xevion/gome-assistant/internal" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) func BuildService[ diff --git a/internal/services/switch.go b/internal/services/switch.go index b2bd431..3443ada 100644 --- a/internal/services/switch.go +++ b/internal/services/switch.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/timer.go b/internal/services/timer.go index 561271f..c5bcf8a 100644 --- a/internal/services/timer.go +++ b/internal/services/timer.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/tts.go b/internal/services/tts.go index 9d1c439..42ccb11 100644 --- a/internal/services/tts.go +++ b/internal/services/tts.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/vacuum.go b/internal/services/vacuum.go index ad97a87..3bdac9f 100644 --- a/internal/services/vacuum.go +++ b/internal/services/vacuum.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/services/zwavejs.go b/internal/services/zwavejs.go index b18751b..ca20f3c 100644 --- a/internal/services/zwavejs.go +++ b/internal/services/zwavejs.go @@ -1,7 +1,7 @@ package services import ( - ws "saml.dev/gome-assistant/internal/websocket" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) /* Structs */ diff --git a/internal/websocket/websocket.go b/internal/websocket/websocket.go index eab5030..6f1e580 100644 --- a/internal/websocket/websocket.go +++ b/internal/websocket/websocket.go @@ -16,7 +16,7 @@ import ( "github.com/gorilla/websocket" - i "saml.dev/gome-assistant/internal" + i "github.com/Xevion/gome-assistant/internal" ) var ErrInvalidToken = errors.New("invalid authentication token") diff --git a/interval.go b/interval.go index de0d80e..c076354 100644 --- a/interval.go +++ b/interval.go @@ -5,7 +5,7 @@ import ( "log/slog" "time" - "saml.dev/gome-assistant/internal" + "github.com/Xevion/gome-assistant/internal" ) type IntervalCallback func(*Service, State) diff --git a/schedule.go b/schedule.go index f5f5bf7..34e45b1 100644 --- a/schedule.go +++ b/schedule.go @@ -5,8 +5,8 @@ import ( "log/slog" "time" + "github.com/Xevion/gome-assistant/internal" "github.com/golang-module/carbon" - "saml.dev/gome-assistant/internal" ) type ScheduleCallback func(*Service, State) diff --git a/service.go b/service.go index bb6721c..a5c7c48 100644 --- a/service.go +++ b/service.go @@ -1,8 +1,8 @@ package gomeassistant import ( - "saml.dev/gome-assistant/internal/services" - ws "saml.dev/gome-assistant/internal/websocket" + "github.com/Xevion/gome-assistant/internal/services" + ws "github.com/Xevion/gome-assistant/internal/websocket" ) type Service struct { diff --git a/state.go b/state.go index 5280607..0da3d7f 100644 --- a/state.go +++ b/state.go @@ -8,7 +8,7 @@ import ( "github.com/golang-module/carbon" - "saml.dev/gome-assistant/internal/http" + "github.com/Xevion/gome-assistant/internal/http" ) type State interface {