Dreaded_X
11b9787890
chore: Remove allow that is no longer required
2025-10-15 03:57:57 +02:00
Dreaded_X
8961101fdf
chore: Run main application by default
2025-10-15 03:57:02 +02:00
Dreaded_X
17a68e8991
feat: Added optional definition function to module
2025-10-15 03:53:55 +02:00
Dreaded_X
be1602d0e2
feat(config)!: Move mqtt module to actual separate module
...
The automation:mqtt module now gets loaded in a similar way as the
automation:devices and automation:utils modules.
This leads to a breaking change where instantiating a new mqtt client
the device manager needs to be explicitly passed in.
2025-10-15 03:53:55 +02:00
Dreaded_X
9bddeae54e
feat: Use Typed::type_name for Timeout proxy name
2025-10-15 03:53:06 +02:00
Dreaded_X
97b944874a
feat: Added/expanded Typed impls
2025-10-15 03:50:50 +02:00
Dreaded_X
54164c517b
feat: Remove automatic automation: module prefix
...
Instead the prefix should be manually specified if it is desired.
2025-10-15 03:50:36 +02:00
Dreaded_X
518abd169d
chore: Removed dotenvy
...
Since secrets can now be set from automation.toml the .env file was no
longer used, so dotenvy can be removed.
2025-10-15 03:44:17 +02:00
Dreaded_X
30ea9b2737
feat: Use Typed type_name for registering proxy
2025-10-15 03:44:17 +02:00
Dreaded_X
cd470cadaf
feat!: Expanded add_methods to extra_user_data
...
Instead of being a function it now expects a struct with the
PartialUserData trait implemented. This in part ensures the correct
function signature.
It also adds another optional function to PartialUserData that returns
definitions for the added methods.
2025-10-15 03:44:17 +02:00
Dreaded_X
4b76bde2a6
feat: Specify (optional) interface name in PartialUserData
2025-10-15 03:44:17 +02:00
Dreaded_X
006a561307
feat: Use PartialUserData on proxy type to add trait methods
2025-10-15 03:44:17 +02:00
Dreaded_X
745a1025bb
feat!: Improved attribute parsing in device macro
2025-10-15 03:44:13 +02:00
Dreaded_X
45485fca37
feat: Add proper type definition for devices
...
Depending on the implemented traits the lua class will inherit from the
associated interface class.
It also specifies the constructor function for each of the devices.
2025-10-15 00:45:37 +02:00
Dreaded_X
1532958a86
feat: Added Typed impl for all automation devices
...
To accomplish this a basic implementation was also provided for some
types in automation_lib
2025-10-15 00:45:37 +02:00
Dreaded_X
76eb63cd97
feat: Use same add_methods mechanic for Device as for other traits
Build and deploy / build (push) Successful in 9m57s
Build and deploy / Deploy container (push) Has been skipped
2025-10-10 03:33:28 +02:00
Dreaded_X
b784cfed4a
feat: Notify when windows are left open when leaving
Build and deploy / build (push) Successful in 15m2s
Build and deploy / Deploy container (push) Successful in 2m8s
2025-10-10 01:12:58 +02:00
Dreaded_X
06b3154733
feat!: Use type alias instead of generic parameters in device macro
...
Build and deploy / build (push) Successful in 10m11s
Build and deploy / Deploy container (push) Successful in 2m8s
This enforced the idea that all generics must be specified for the type
when using the device macro. It will also come into play later when the
Typed macro gets introduced, as the name will be used when generating
definitions.
2025-09-17 00:35:30 +02:00
Dreaded_X
580a5187bd
feat!: Made ntfy notification title required
Build and deploy / build (push) Successful in 12m26s
Build and deploy / Deploy container (push) Successful in 43s
2025-09-13 04:04:51 +02:00
Dreaded_X
8982e9c165
feat(config)!: Put automation modules in namespace
...
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
Dreaded_X
4e28ad0f85
feat!: Improve device type registration
...
Build and deploy / build (push) Successful in 10m37s
Build and deploy / Deploy container (push) Successful in 38s
Instead of one function that contains all the device types available in
`automation_devices` a global registry is used were each device can
register itself.
2025-09-10 03:02:05 +02:00
Dreaded_X
f0e4c9dd21
chore!: Remove unused notification setters
...
Since the creation of notifications has moved entirely to lua these
setters were not being used anymore.
2025-09-10 02:56:56 +02:00
Dreaded_X
5271e5ad81
refactor(config)!: Moved Timeout into utils module and moved module
...
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
Dreaded_X
1d28b43264
refactor: Move module load code into separate function
2025-09-10 02:11:11 +02:00
Dreaded_X
da04fad520
refactor(config)!: Move device proxies into module
...
Instead of registering the device proxies in the global namespace they
are now registered in a module called `devices`.
2025-09-10 02:11:09 +02:00
Dreaded_X
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
Dreaded_X
95a8a377e8
feat!: Removed AddAdditionalMethods
...
It has been replaced with the add_methods device attribute.
2025-09-10 01:58:48 +02:00
Dreaded_X
23355190ca
feat: Added attribute to easily register additional lua methods
...
Previously this could only be done by implementing a trait, like
`AddAdditionalMethods`, that that has an add_methods function where you
can put your custom methods. With this new attribute you can pass in a
register function directly!
2025-09-10 01:58:48 +02:00
Dreaded_X
2dbd491b81
refactor!: Rewrote device implementation macro once again
...
This time with a bit more though put into the design of the code, as a
result the macro should be a lot more robust.
This did result in the macro getting renamed from LuaDevice to Device as
this should be _the_ Device macro.
The attribute also got renamed from traits() to device(traits()) and the
syntax got overhauled to allow for a bit more expression.
2025-09-10 01:58:48 +02:00
Dreaded_X
aad089aa10
chore: Removed old leftover contact sensor presence config
2025-09-10 01:46:16 +02:00
Dreaded_X
18e40726fe
refactor: Remove unneeded wrapper functions when specifying callbacks
...
These wrappers can be moved up to where the callback itself is defined
instead of having to wrap the call manually. This also works a lot nicer
now that it is possible to provide multiple callback functions.
2025-09-10 01:46:16 +02:00
Dreaded_X
1925bac73c
fix: Front door presence does not get cleared properly
2025-09-10 01:46:16 +02:00
Dreaded_X
5383e7265d
feat!: ActionCallback can now receive any amount of arguments
...
ActionCallback now only has one generics argument that has to implement
IntoLuaMulti, this makes ActionCallback much more flexible as it no
longer always requires two arguments.
2025-09-10 01:46:12 +02:00
Dreaded_X
352654107a
feat: Added derive macro to implement IntoLua on structs that implement Serialize
...
This can be very useful if you want to convert a data struct to a lua
table without having to write the boilerplane (however small it may
be).
It also adds the macro on several state structs so they can be
converted to lua in the upcoming ActionCallback refactor.
2025-09-08 04:06:00 +02:00
Dreaded_X
3a7f2f9bd7
fix: IkeaRemote callback is missing default specifier
2025-09-08 04:05:43 +02:00
Dreaded_X
3be11b0c6a
feat: Allow for multiple callbacks inside of an ActionCallback
...
This also results in the conversion being performed when the
ActionCallback is instantiated instead of when it is called, this should
make it easier to catch errors.
2025-09-08 04:02:47 +02:00
Dreaded_X
e880efe4cf
refactor: Store callback function directly instead of in the registry
2025-09-08 04:02:47 +02:00
Dreaded_X
e2fb680cd6
feat: Log version string during startup
2025-09-08 04:02:40 +02:00
Dreaded_X
edee032b91
chore: Set RUST_LOG to something sensible by default when running with cargo
Build and deploy / Deploy container (push) Blocked by required conditions
Build and deploy / build (push) Has been cancelled
2025-09-05 04:48:00 +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
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
Dreaded_X
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
Dreaded_X
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
Dreaded_X
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
Dreaded_X
0090a77dc1
style: Sort crates by name
2025-09-05 03:55:03 +02:00
Dreaded_X
4d356001c3
style: Enforce conventional commits formatting
2025-09-05 03:55:03 +02:00
Dreaded_X
aa22132dd6
chore: Put typos config in Cargo.toml
2025-09-04 04:28:02 +02:00
Dreaded_X
1db269f65e
chore: Update pre-commit hooks
2025-09-04 04:28:02 +02:00
Dreaded_X
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
Dreaded_X
f3b1854beb
fix: Crash if hallway automation is called before door/trash have been initialized
...
Resolves : #4
2025-09-04 04:27:49 +02:00
Dreaded_X
8109dcf2f5
feat: Added low battery notification and made mqtt message parsing more robust
...
Resolves : #1
2025-09-04 04:26:34 +02:00
Dreaded_X
1b8566e593
refactor: Switch to async closures
2025-09-04 04:15:08 +02:00
Dreaded_X
e21ea0f34e
Implement custom lua print function that calls info
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
Dreaded_X
fb7e1f1472
Small cleanup
2025-09-01 02:47:29 +02:00
Dreaded_X
45de83ef2f
Removed old presence system
2025-08-31 23:57:59 +02:00
Dreaded_X
2a1f75f158
Move front door presence logic to lua
2025-08-31 23:57:59 +02:00
Dreaded_X
74568b4e1f
Handle turning off devices when away through lua
2025-08-31 23:57:59 +02:00
Dreaded_X
fefccf03d7
Removed DebugBridge as it no longer served a purpose
2025-08-31 23:57:59 +02:00
Dreaded_X
b56a16d0d7
Moved presence debug mqtt message to lua
2025-08-31 23:57:59 +02:00
Dreaded_X
1530875045
Presence and light sensor call all function in array
2025-08-31 23:57:58 +02:00
Dreaded_X
9616017c8f
Print lua version on startup
2025-08-31 23:57:56 +02:00
Dreaded_X
6db5831571
Removed old darkness system
2025-08-31 23:56:28 +02:00
Dreaded_X
aa730c9738
Moved darkness debug mqtt message to lua
2025-08-31 05:41:49 +02:00
Dreaded_X
c362952f7c
Feature: Get current ms since unix epoch in lua
2025-08-31 05:41:49 +02:00
Dreaded_X
dd379e4077
Feature: Send mqtt messages from lua
2025-08-31 05:41:48 +02:00
Dreaded_X
549d821e3a
Moved hue bridge on darkness to lua
2025-08-31 05:41:46 +02:00
Dreaded_X
4980f4888e
Removed unused event code
2025-08-31 05:01:56 +02:00
Dreaded_X
eb36d41f17
Move ntfy and presence to automation_devices
2025-08-31 04:57:31 +02:00
Dreaded_X
03dcd44e0e
Removed old notification system
Build and deploy / build (push) Successful in 8m50s
Build and deploy / Deploy container (push) Successful in 39s
2025-08-31 03:55:08 +02:00
Dreaded_X
6c9d2c16c1
Converted presence notification into lua callback
2025-08-31 03:55:08 +02:00
Dreaded_X
2d9e3d26f2
Send laundy notification from lua
2025-08-31 03:55:08 +02:00
Dreaded_X
64c7d950c5
Make it possible to send notifications from lua
2025-08-31 03:55:07 +02:00
Dreaded_X
5d342afb1f
Converted macro to derive macro
2025-08-31 03:54:20 +02:00
Dreaded_X
d2b01123b8
Made the impl_device macro more explicit about the implemented traits
...
This also converts impl_device into a procedural macro and get rid of a
lot of "magic" that was happening.
2025-08-31 00:38:58 +02:00
Dreaded_X
c5262dcf35
Update to rust 1.89 and edition 2024
2025-08-31 00:38:58 +02:00
Dreaded_X
01e88eeb3b
Use new and improved rust workflow and Dockerfile
2025-08-31 00:38:58 +02:00
Dreaded_X
d6ab38f690
Improve pre-commit hooks
2025-08-31 00:38:58 +02:00
Dreaded_X
9f3b927cb6
Update dependencies and remove unused dependencies
2025-08-31 00:38:56 +02:00
Dreaded_X
7f41132965
Switch workbench light to new color temperature light
Build and deploy / Build application (push) Successful in 5m55s
Build and deploy / Build container (push) Successful in 2m16s
Build and deploy / Deploy container (push) Successful in 34s
2025-08-22 23:27:05 +02:00
Dreaded_X
3c5bd9ffb8
Add color temperature light
2025-08-22 23:27:05 +02:00
Dreaded_X
73218bb9b9
Store brightness in f32 instead of f64
2025-08-22 23:27:05 +02:00
Dreaded_X
fe83568839
Added color temperature support with ColorSetting
2025-08-22 23:27:05 +02:00
Dreaded_X
e27412339c
Allow timeout to be a fraction of a second instead of always whole seconds
2025-08-22 23:27:05 +02:00
Dreaded_X
8f858e9b42
Removed cargo config that is no longer necessary
2025-08-22 23:27:01 +02:00
Dreaded_X
5730d9db03
Fixed struct name for temperature control
2025-08-22 02:15:26 +02:00
Dreaded_X
d9e83a49a1
Improved long press behaviour when there is no long press callback
Build and deploy / Build application (push) Successful in 3m23s
Build and deploy / Build container (push) Successful in 52s
Build and deploy / Deploy container (push) Successful in 47s
2025-01-29 00:55:00 +01:00
Dreaded_X
00cd0366fd
Added hue groups for bedroom lights controlled by hue switch
Build and deploy / Build application (push) Successful in 3m34s
Build and deploy / Build container (push) Successful in 57s
Build and deploy / Deploy container (push) Successful in 32s
2025-01-28 23:33:30 +01:00
Dreaded_X
68684d9410
Added hue groups for kitchen and living room lights controlled by hue switch
Build and deploy / Build application (push) Successful in 3m50s
Build and deploy / Build container (push) Successful in 1m21s
Build and deploy / Deploy container (push) Successful in 35s
2025-01-28 22:49:37 +01:00
Dreaded_X
746e19eb8c
Use own struct to deserialize hue switch state and added hold actions
2025-01-28 22:48:02 +01:00
Dreaded_X
47d509cec1
Unneeded mqtt client in huegroup
Build and deploy / Build application (push) Failing after 2m57s
Build and deploy / Build container (push) Has been skipped
Build and deploy / Deploy container (push) Has been skipped
2025-01-28 22:43:50 +01:00
Dreaded_X
856bc3cc96
Updated airfilter ip
Build and deploy / Build application (push) Successful in 4m16s
Build and deploy / Build container (push) Successful in 1m25s
Build and deploy / Deploy container (push) Successful in 35s
2025-01-27 02:21:13 +01:00
Dreaded_X
fbabc978b1
Reworked IkeaOutlet into more generic outlet that also (optionally) supports power measurement
...
Build and deploy / Build application (push) Successful in 4m15s
Build and deploy / Build container (push) Successful in 1m16s
Build and deploy / Deploy container (push) Successful in 19s
This new power measurement feature is used to turn the kettle off
automatically once it is done boiling
2025-01-26 04:48:59 +01:00
Dreaded_X
48c600b9cb
Use ip instead of dns name for airfilter
...
Build and deploy / Build application (push) Successful in 4m13s
Build and deploy / Build container (push) Successful in 1m0s
Build and deploy / Deploy container (push) Successful in 33s
The dns name does not resolve properly in the container
2025-01-22 03:55:28 +01:00
Dreaded_X
3905df690b
Reworked air filter integration
Build and deploy / Build application (push) Successful in 5m8s
Build and deploy / Build container (push) Successful in 2m19s
Build and deploy / Deploy container (push) Successful in 35s
2025-01-22 03:12:13 +01:00
Dreaded_X
5af713cf8f
Switched speaker and mixer from KasaOutlet to IkeaOutlet
Build and deploy / Build application (push) Successful in 4m47s
Build and deploy / Build container (push) Successful in 1m21s
Build and deploy / Deploy container (push) Successful in 33s
2025-01-11 17:55:20 +01:00
Dreaded_X
ae61cf5dd2
Updated ips
Build and deploy / Build application (push) Successful in 3m35s
Build and deploy / Build container (push) Successful in 1m22s
Build and deploy / Deploy container (push) Successful in 33s
2024-12-27 22:24:31 +01:00
Dreaded_X
8ad75a1148
Added workbench light (no color temp control for now)
Build and deploy / Build application (push) Successful in 3m30s
Build and deploy / Build container (push) Successful in 1m6s
Build and deploy / Deploy container (push) Successful in 33s
2024-12-17 19:59:08 +01:00
Dreaded_X
ef180f6261
Added automatic storage room light
Build and deploy / Build application (push) Successful in 3m30s
Build and deploy / Build container (push) Successful in 1m18s
Build and deploy / Deploy container (push) Successful in 31s
2024-12-16 23:15:45 +01:00
Dreaded_X
1462755f36
Added window sensors, updated room names, and improved hallway automation
Build and deploy / Build application (push) Successful in 3m16s
Build and deploy / Build container (push) Successful in 52s
Build and deploy / Deploy container (push) Successful in 31s
2024-12-12 17:17:50 +01:00
Dreaded_X
90a94934fb
Added open close trait and google home support for contact sensor
2024-12-11 22:19:31 +01:00