aboutsummaryrefslogtreecommitdiff
path: root/src/lib/config
diff options
context:
space:
mode:
authorAutumn <git@autumnfo.rest>2026-05-11 17:59:12 +0100
committerAutumn <git@autumnfo.rest>2026-05-11 17:59:12 +0100
commit91dec87c2f0bc218160915e43ca27ce49105939d (patch)
treef5ba0bed770168614c37d437f6dd47b1cd59cd95 /src/lib/config
parent951844836fca55b5321999a4d4637d1b56fdb448 (diff)
[config] added basic device config loader
Diffstat (limited to 'src/lib/config')
-rw-r--r--src/lib/config/devices.ts32
-rw-r--r--src/lib/config/devices.types.ts14
2 files changed, 46 insertions, 0 deletions
diff --git a/src/lib/config/devices.ts b/src/lib/config/devices.ts
new file mode 100644
index 0000000..f6cc39b
--- /dev/null
+++ b/src/lib/config/devices.ts
@@ -0,0 +1,32 @@
+//
+// ~~~ device configs
+//
+
+// imports
+import { readFileSync } from "node:fs"
+
+import type DevicesConfig from "@lib/config/devices.types.ts"
+
+// load config
+const configFile = "data/devices.json"
+let devicesConfig: DevicesConfig = {}
+
+try {
+ devicesConfig = JSON.parse(readFileSync(configFile, "utf8"))
+} catch(e) {
+ console.error("!> cannot read devices config")
+}
+
+// get all devices
+const allDevices = Object.keys(devicesConfig).map((device) => {
+
+ const deviceInfo = devicesConfig[device]
+
+ return {
+ ...deviceInfo,
+ id: device
+ }
+
+})
+
+export default allDevices
diff --git a/src/lib/config/devices.types.ts b/src/lib/config/devices.types.ts
new file mode 100644
index 0000000..d960f7e
--- /dev/null
+++ b/src/lib/config/devices.types.ts
@@ -0,0 +1,14 @@
+//
+// ~~~ device config types
+//
+
+// individual device configs
+export interface DeviceConfig {
+ name: string,
+ mqtt: string
+}
+
+// global device config
+export default interface DevicesConfig {
+ [ index: string ]: DeviceConfig
+}