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
Dreaded_X
24815edd34
Increased hallway light timeout back to two minutes
Build and deploy / Build application (push) Successful in 3m59s
Build and deploy / Build container (push) Successful in 1m18s
Build and deploy / Deploy container (push) Successful in 34s
2024-12-10 22:23:07 +01:00
Dreaded_X
bf6d80ded9
Added logo
Build and deploy / Build application (push) Successful in 3m7s
Build and deploy / Build container (push) Successful in 44s
Build and deploy / Deploy container (push) Successful in 32s
2024-12-08 05:47:21 +01:00
Dreaded_X
175056416e
Updated is_on -> on to be consistent with rust
Build and deploy / Build application (push) Successful in 3m23s
Build and deploy / Build container (push) Successful in 1m2s
Build and deploy / Deploy container (push) Successful in 18s
2024-12-08 05:35:48 +01:00
Dreaded_X
e4c211a278
Added dedicated light device and updated hallway logic
2024-12-08 05:34:51 +01:00
Dreaded_X
8c9e93dcc4
Added brightness trait
2024-12-08 05:19:27 +01:00
Dreaded_X
41d2af655b
ActionCallback now always returns self and state can be anything serializable
2024-12-08 02:50:52 +01:00
Dreaded_X
eefb476d7f
Added support for generic structs in LuaDeviceConfig
2024-12-08 01:53:04 +01:00
Dreaded_X
14aabe202d
Updated rust toolchain
Build and deploy / Build application (push) Successful in 4m7s
Build and deploy / Build container (push) Successful in 1m2s
Build and deploy / Deploy container (push) Successful in 35s
2024-12-08 00:57:57 +01:00
Dreaded_X
e8d5698835
Updated dependencies
2024-12-08 00:53:31 +01:00
Dreaded_X
8877b24e84
Reorganized project
2024-12-08 00:15:03 +01:00
Dreaded_X
42f391cde6
Removed duplicate OnMqtt entry
2024-12-07 22:33:52 +01:00
Dreaded_X
e9f080ef19
Moved and improved hallways logic with lua
Build and deploy / Build application (push) Successful in 4m7s
Build and deploy / Build container (push) Successful in 1m18s
Build and deploy / Deploy container (push) Successful in 21s
2024-12-06 01:27:35 +01:00
Dreaded_X
9d4b52b511
Implemented new timeout mechanism for ikea_outlet
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
Dreaded_X
03f1790627
Removed spammy debug message
2024-12-04 01:34:46 +01:00
Dreaded_X
d39432fa22
ActionCallback can now handle tuples
2024-12-04 01:29:28 +01:00
Dreaded_X
6b8d0b7d56
Added hue wall switches
Build and deploy / Build application (push) Successful in 4m9s
Build and deploy / Build container (push) Successful in 53s
Build and deploy / Deploy container (push) Successful in 32s
2024-11-30 22:17:16 +01:00
Dreaded_X
5185b0d3ba
Added guest room light
Build and deploy / Build application (push) Successful in 3m23s
Build and deploy / Build container (push) Successful in 55s
Build and deploy / Deploy container (push) Successful in 31s
2024-11-30 18:44:48 +01:00
Dreaded_X
4bb49a381b
Use IkeaRemote to control devices and completely replace AudioSetup
Build and deploy / Build application (push) Successful in 3m24s
Build and deploy / Build container (push) Successful in 43s
Build and deploy / Deploy container (push) Successful in 18s
2024-11-30 06:06:30 +01:00
Dreaded_X
a353ba3d08
Added IkeaRemote
2024-11-30 05:45:03 +01:00
Dreaded_X
157bbf923f
Added generic action callback
2024-11-30 05:44:23 +01:00
Dreaded_X
9719c46136
Added deref to impl_device to account for changes in mlua 0.10
Build and deploy / Build application (push) Successful in 3m26s
Build and deploy / Build container (push) Successful in 52s
Build and deploy / Deploy container (push) Successful in 32s
2024-11-30 05:31:38 +01:00
Dreaded_X
8b04435537
No more global LUA
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