Commit Graph

83 Commits

Author SHA1 Message Date
Dreaded_X ad158f2c22 feat: Reduced visibility of config structs
Build and deploy / build (push) Successful in 9m0s
Build and deploy / Deploy container (push) Successful in 49s
2025-10-22 04:13:54 +02:00
Dreaded_X f36adf2f19 feat: Implement useful traits to simplify code 2025-10-22 04:09:01 +02:00
Dreaded_X 8a3143a3ea feat: Added type alias for setup and schedule types 2025-10-22 03:59:40 +02:00
Dreaded_X 9546585440 feat(config)!: Made schedule part of new modules
Build and deploy / build (push) Successful in 11m57s
Build and deploy / Deploy container (push) Has been skipped
2025-10-22 03:24:34 +02:00
Dreaded_X a938f3d71b feat(config)!: Improve config module resolution
Build and deploy / build (push) Successful in 11m31s
Build and deploy / Deploy container (push) Has been skipped
The new system is slightly less flexible, but the code and lua
definitions is now a lot simpler and easier to understand.
In fact the old lua definition was not actually correct.

It is likely that existing configs require not/minimal tweaks to work
again.
2025-10-22 03:09:15 +02:00
Dreaded_X bc75f7005c feat(config)!: Device creation function is now named entry
It now has to be called 'setup', this makes it possible to just
include the table as a whole in devices and it will automatically call
the correct function.
2025-10-20 05:02:04 +02:00
Dreaded_X 2056c6c70d feat(config)!: Changed default config location 2025-10-20 04:48:33 +02:00
Dreaded_X 2db4af7427 feat(config)!: Config now returns the mqtt config instead of the client
Instead the client is now created on the rust side based on the config.
Devices that require the mqtt client will now instead need to be
constructor using a function. This function receives the mqtt client.
2025-10-20 04:48:32 +02:00
Dreaded_X f05856cd0c feat(config)!: In config devices can now also be a (table of) function(s)
This function receives the mqtt client as an argument. In the future
this will be the only way to create devices that require the mqtt client.
2025-10-20 04:48:28 +02:00
Dreaded_X 02b87126e1 feat: Use ActionCallback for schedule
This has two advantages:
- Each schedule entry can take either a single function or table of
  functions.
- We get a better type definition.
2025-10-20 04:48:28 +02:00
Dreaded_X 1ffccd955c refactor(config)!: Move scheduler out of device_manager
Due to changes made in mlua the new scheduler is much simpler. It also
had no real business being part of the device manager, so it has now been
moved to be part of the returned config.
2025-10-20 04:48:28 +02:00
Dreaded_X 948380ea9b feat: Receive devices through config return 2025-10-20 04:48:28 +02:00
Dreaded_X 84e8942fc9 feat: Generate definitions for config 2025-10-20 04:48:27 +02:00
Dreaded_X ba818c6b60 refactor(config)!: Setup for expanding lua config return
Moves the application config out of automation_lib and sets up the
config return type for further expansion.
2025-10-17 03:08:21 +02:00
Dreaded_X 8bb17e1440 feat(config)!: Reworked how configuration is loaded
The environment variable `AUTOMATION_CONFIG` has been renamed to
`AUTOMATION__ENTRYPOINT` and can now also be set in `automation.toml` by
specifying:
```
automation = "<path>"
```

Directly accessing the environment variables in lua in no longer
possible. To pass in configuration or secrets you can now instead make
use of the `variables` and `secrets` modules.

To set values in these modules you can either specify them in
`automation.toml`:
```
[variables]
<name> = <value>

[secrets]
<name> = <value>
```
Note that these values will get converted to a string.

You can also specify the environment variables
`AUTOMATION__VARIABLES__<name>` and `AUTOMATION__SECRETS__<name>` to
set variables and secrets respectively. By adding the suffix `__FILE` to
the environment variable name the contents of a file can be loaded into
the variable or secret.

Note that variables and secrets are identical in functionality and the
name difference exists purely to make it clear that secret values are
meant to be kept secret.
2025-09-05 04:48:00 +02:00
Dreaded_X 8877b24e84 Reorganized project 2024-12-08 00:15:03 +01:00
Dreaded_X 2ff59872b2 Moved last config items to lua + small cleanup 2024-05-07 00:05:37 +02:00
Dreaded_X 9f636a2572 mqtt client is now created in lua 2024-05-07 00:05:37 +02:00
Dreaded_X 3e4ea8952a Improved how devices are created, ntfy and presence are now treated like any other device 2024-05-07 00:05:36 +02:00
Dreaded_X 5069d1b0e7 Moved schedule config from yml to lua 2024-05-07 00:05:36 +02:00
Dreaded_X bfc73c7bd3 Device config is now done through lua 2024-05-07 00:05:36 +02:00
Dreaded_X 73a2b077ed Fmt: Added cargofmt config and reformatted files
continuous-integration/drone/push Build is passing
2023-11-20 23:27:48 +01:00
Dreaded_X db17b68e90 Feature: Schedule devices turning on/off
continuous-integration/drone/push Build is passing
2023-11-17 00:01:13 +01:00
Dreaded_X dd4be4a2ee Switched from toml to yaml for configuration
continuous-integration/drone/push Build is failing
2023-11-05 22:41:48 +01:00
Dreaded_X 9628b8a94b HueLight is now HueGroup and uses a scene to turn the light on, the contact sensor will also not override the current light state if it is already on
continuous-integration/drone/push Build is passing
2023-08-18 05:56:45 +02:00
Dreaded_X 044c38ba86 More refactoring 2023-08-18 03:07:16 +02:00
Dreaded_X cff9cb4bf6 Further improvements to how devices are created 2023-08-17 01:47:05 +02:00
Dreaded_X b1506f8e63 Improved the way devices are instantiated from their respective configs
continuous-integration/drone/push Build is passing
2023-08-16 02:17:21 +02:00
Dreaded_X bb131f2b1a Added basic hue light bridge, improved Timeout trait and setup frontdoor to turn on hallway ligh temporarily
continuous-integration/drone/push Build is passing
2023-08-15 04:45:35 +02:00
Dreaded_X ee00959e8a Added initial basic washer integration
continuous-integration/drone/push Build is passing
2023-08-14 03:52:00 +02:00
Dreaded_X e38c5eed31 AudioSetup now takes the name of two already created devices and stores a reference to the devices instead of creating and owning the devices directly 2023-08-14 01:56:00 +02:00
Dreaded_X 330523166f Store devices wrapped in Arc RwLock 2023-08-11 02:24:58 +02:00
Dreaded_X 40c0ac5144 Moved quasi-devices into the devices module and made event related device traits part of the event module
continuous-integration/drone/push Build is passing
2023-04-24 04:28:17 +02:00
Dreaded_X 0ad42c029e Small refactor related to device creation
continuous-integration/drone/push Build is passing
2023-04-14 22:35:15 +02:00
Dreaded_X b7329b58ee Everything is now implemented as a Device using device_traits with all events going through a single place
continuous-integration/drone/push Build is passing
2023-04-14 05:46:04 +02:00
Dreaded_X 88e9b8f409 Big refactor from using a seperate channel for all the different kind of events to a single event channel
continuous-integration/drone/push Build is passing
2023-04-14 01:06:08 +02:00
Dreaded_X 72ab48df42 The device create function is now standarized using a trait
continuous-integration/drone/push Build is passing
2023-04-13 05:46:17 +02:00
Dreaded_X f4c1ac5c9b Moved most config structs to be in the same file as what they are for 2023-04-13 05:12:39 +02:00
Dreaded_X 2aa13e7706 Automatically convert the mqtt config into the MqttOptions struct 2023-04-13 03:26:00 +02:00
Dreaded_X 92c8f3074f Devices now handles subscribing to mqtt topics 2023-04-12 04:37:16 +02:00
Dreaded_X 6ed2d251f6 Made OutletType copy 2023-04-12 03:41:20 +02:00
Dreaded_X b54c9512b9 Improved impl_cast and made all traits Sync + Send + 'static
continuous-integration/drone/push Build is passing
2023-04-10 23:51:22 +02:00
Dreaded_X 3645b53f7c Applied rust fmt
continuous-integration/drone/push Build is passing
2023-04-10 01:33:39 +02:00
Dreaded_X 839c0a1c57 Applied clippy rules 2023-04-10 01:29:48 +02:00
Dreaded_X 3613c2cbdf Changed how TODO notes are marked to properly highlight in vim 2023-04-09 23:01:21 +02:00
Dreaded_X 1a9d12b1f3 Charger does not get turned off when leaving the house
continuous-integration/drone/push Build is passing
2023-03-20 17:47:42 +01:00
Dreaded_X 07563a6d30 Added charger as outlet type
continuous-integration/drone/push Build is passing
2023-03-19 23:02:39 +01:00
Dreaded_X 18bca5abf4 ntfy notifications are now send through a channel, allowing notifications to be send from other places in the program 2023-01-24 19:00:38 +01:00
Dreaded_X 6c8b73f60f Use format macro instead of directly concating
continuous-integration/drone/push Build is passing
2023-01-20 16:44:49 +01:00
Dreaded_X aa8963bd4a Directly send wol packet instead of using the webhook
continuous-integration/drone/push Build is passing
2023-01-19 22:19:26 +01:00