Commit Graph

88 Commits

Author SHA1 Message Date
8982e9c165 feat(config)!: Put automation modules in namespace
All checks were successful
Build and deploy / build (push) Successful in 13m33s
Build and deploy / Deploy container (push) Successful in 39s
All lua modules that originate from automation_rs are now prefixed with
`automation:`.
2025-09-11 04:12:15 +02:00
5271e5ad81 refactor(config)!: Moved Timeout into utils module and moved module
All checks were successful
Build and deploy / build (push) Successful in 10m43s
Build and deploy / Deploy container (push) Successful in 39s
The module is now setup in automation_lib::lua::utils.
2025-09-10 02:11:11 +02:00
1d28b43264 refactor: Move module load code into separate function 2025-09-10 02:11:11 +02:00
84e4b30b6a feat!: Improve lua module registration
Instead of having to call all the module registration functions in one
place it is possible for each module to register itself in a global registry.
During startup all the all the modules will be registered
automatically.

This does currently have one weakness, to need to ensure that the crate
is linked.
2025-09-10 02:10:45 +02:00
e2fb680cd6 feat: Log version string during startup 2025-09-08 04:02:40 +02:00
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
ba37de3939 feat(config)!: Move new_mqtt_client out of global automation table into separate module
The function `new_mqtt_client` was the last remaining entry in the
global `automation` table. The function was renamed to `new` and placed
in the new `mqtt` module. As `automation` is now empty, it has been
removed.
2025-09-05 03:55:04 +02:00
22fee0ed77 feat(config)!: Move device_manager out of global automation table into separate module
Moved `automation.device_manager` into a separate module called
`device_manager`
2025-09-05 03:55:03 +02:00
5aebab28ed feat(config)!: Move util out of global automation table into separate module
Move `automation.util` into a separate module called `utils`.
2025-09-05 03:55:03 +02:00
e626caad8a feat(config)!: Fulfillment config is now returned at the end of the config
Previously the fulfillment config was set by setting
`automation.fulfillment`, this will no longer work in the future when
the global automation gets split into modules.
2025-09-05 03:55:03 +02:00
77d7881a57 chore: Update/upgrade dependencies
There was a potential vulnerability in tracing-subscriber, so I took
this as an opportunity to update/upgrade all dependencies
2025-09-04 04:28:02 +02:00
e21ea0f34e Implement custom lua print function that calls info
All checks were successful
Build and deploy / build (push) Successful in 11m54s
Build and deploy / Deploy container (push) Successful in 45s
2025-09-01 02:47:47 +02:00
c362952f7c Feature: Get current ms since unix epoch in lua 2025-08-31 05:41:49 +02:00
eb36d41f17 Move ntfy and presence to automation_devices 2025-08-31 04:57:31 +02:00
e8d5698835 Updated dependencies 2024-12-08 00:53:31 +01:00
8877b24e84 Reorganized project 2024-12-08 00:15:03 +01:00
9d4b52b511 Implemented new timeout mechanism for ikea_outlet
All checks were successful
Build and deploy / Build application (push) Successful in 5m24s
Build and deploy / Build container (push) Successful in 1m8s
Build and deploy / Deploy container (push) Successful in 19s
2024-12-04 03:03:53 +01:00
8b04435537 No more global LUA
All checks were successful
Build and deploy / Build application (push) Successful in 3m45s
Build and deploy / Build container (push) Successful in 54s
Build and deploy / Deploy container (push) Successful in 29s
2024-11-30 05:10:40 +01:00
6c797820dc Updated to newest rust nightly 2024-07-26 00:25:49 +02:00
bf3d757710 Added lua function to get the current hostname
This makes it possible to set options depending on what machine we are
running
2024-05-07 00:05:38 +02:00
02d6630ac6 Started work on reimplementing schedules 2024-05-07 00:05:37 +02:00
2ff59872b2 Moved last config items to lua + small cleanup 2024-05-07 00:05:37 +02:00
9f636a2572 mqtt client is now created in lua 2024-05-07 00:05:37 +02:00
fcd0b370d6 DeviceManager no longer handles subscribing and filtering topics, each device has to do this themselves now 2024-05-07 00:05:37 +02:00
3e4ea8952a Improved how devices are created, ntfy and presence are now treated like any other device 2024-05-07 00:05:36 +02:00
5069d1b0e7 Moved schedule config from yml to lua 2024-05-07 00:05:36 +02:00
3225dbdda9 Set lua warning function 2024-05-07 00:05:36 +02:00
f4a1b507e5 Everything needed to construct a new device is passed in through lua 2024-05-07 00:05:36 +02:00
bfc73c7bd3 Device config is now done through lua 2024-05-07 00:05:36 +02:00
cde9654a78 Fix: Memory leak
All checks were successful
Build and deploy automation_rs / Build automation_rs (push) Successful in 4m19s
Build and deploy automation_rs / Build Docker image (push) Successful in 1m3s
Build and deploy automation_rs / Deploy Docker container (push) Successful in 31s
It turns out that console-subscriber has a memory leak, this is fixed in
main, but there has not been a new release yet. So for now we go back
to tracing subscriber.
2024-05-03 01:07:24 +02:00
73a2b077ed Fmt: Added cargofmt config and reformatted files
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-20 23:27:48 +01:00
db17b68e90 Feature: Schedule devices turning on/off
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-17 00:01:13 +01:00
dd4be4a2ee Switched from toml to yaml for configuration
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-05 22:41:48 +01:00
5d6faddce1 Increased mqtt queue size as a temporary fix 2023-08-24 01:48:10 +02:00
044c38ba86 More refactoring 2023-08-18 03:07:16 +02:00
cff9cb4bf6 Further improvements to how devices are created 2023-08-17 01:47:05 +02:00
b1506f8e63 Improved the way devices are instantiated from their respective configs
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-16 02:17:21 +02:00
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
a67e47997b More refactoring 2023-08-11 03:16:23 +02:00
330523166f Store devices wrapped in Arc RwLock 2023-08-11 02:24:58 +02:00
58ade33c42 Also moved ntfy into devices as it is a quasi device
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-24 04:44:19 +02:00
40c0ac5144 Moved quasi-devices into the devices module and made event related device traits part of the event module
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-24 04:28:17 +02:00
b7329b58ee Everything is now implemented as a Device using device_traits with all events going through a single place
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-14 05:46:04 +02:00
88e9b8f409 Big refactor from using a seperate channel for all the different kind of events to a single event channel
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-14 01:06:08 +02:00
f4c1ac5c9b Moved most config structs to be in the same file as what they are for 2023-04-13 05:12:39 +02:00
2aa13e7706 Automatically convert the mqtt config into the MqttOptions struct 2023-04-13 03:26:00 +02:00
92c8f3074f Devices now handles subscribing to mqtt topics 2023-04-12 04:37:16 +02:00
854098e292 Added tokio-console support 2023-04-12 03:34:58 +02:00
8cfb346ca5 Removed hacky code that got accidentally commited
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-10 02:10:23 +02:00
3645b53f7c Applied rust fmt
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-10 01:33:39 +02:00