Commit Graph

78 Commits

Author SHA1 Message Date
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
2056c6c70d feat(config)!: Changed default config location 2025-10-20 04:48:33 +02:00
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
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
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
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
948380ea9b feat: Receive devices through config return 2025-10-20 04:48:28 +02:00
84e8942fc9 feat: Generate definitions for config 2025-10-20 04:48:27 +02:00
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
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
8877b24e84 Reorganized project 2024-12-08 00:15:03 +01: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
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
bfc73c7bd3 Device config is now done through lua 2024-05-07 00:05:36 +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
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
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-18 05:56:45 +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
bb131f2b1a Added basic hue light bridge, improved Timeout trait and setup frontdoor to turn on hallway ligh temporarily
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-15 04:45:35 +02:00
ee00959e8a Added initial basic washer integration
All checks were successful
continuous-integration/drone/push Build is passing
2023-08-14 03:52:00 +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
330523166f Store devices wrapped in Arc RwLock 2023-08-11 02:24:58 +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
0ad42c029e Small refactor related to device creation
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-14 22:35:15 +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
72ab48df42 The device create function is now standarized using a trait
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-13 05:46:17 +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
6ed2d251f6 Made OutletType copy 2023-04-12 03:41:20 +02:00
b54c9512b9 Improved impl_cast and made all traits Sync + Send + 'static
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-10 23:51:22 +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
839c0a1c57 Applied clippy rules 2023-04-10 01:29:48 +02:00
3613c2cbdf Changed how TODO notes are marked to properly highlight in vim 2023-04-09 23:01:21 +02:00
1a9d12b1f3 Charger does not get turned off when leaving the house
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-20 17:47:42 +01:00
07563a6d30 Added charger as outlet type
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 23:02:39 +01:00
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
6c8b73f60f Use format macro instead of directly concating
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-20 16:44:49 +01:00
aa8963bd4a Directly send wol packet instead of using the webhook
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-19 22:19:26 +01:00
a0cefa8302 Improved error handling
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2023-01-18 22:37:57 +01:00
b6bf8a82a2 Improved code
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-18 20:05:03 +01:00
4844bd5d79 Added debug bridge to publish state on mqtt
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-17 20:14:36 +01:00
c3638367de Changed default fullfillment bind ip
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-17 18:57:26 +01:00
1e4d768d25 mqtt client name is now a config option 2023-01-17 18:23:57 +01:00