diff --git a/libnymea/interfaces/accesscontrol.json b/libnymea/interfaces/accesscontrol.json
new file mode 100644
index 00000000..71b3b2da
--- /dev/null
+++ b/libnymea/interfaces/accesscontrol.json
@@ -0,0 +1,10 @@
+{
+ "events": [
+ {
+ "name": "accessGranted"
+ },
+ {
+ "name": "accessDenied"
+ }
+ ]
+}
diff --git a/libnymea/interfaces/fingerprintreader.json b/libnymea/interfaces/fingerprintreader.json
new file mode 100644
index 00000000..1d033339
--- /dev/null
+++ b/libnymea/interfaces/fingerprintreader.json
@@ -0,0 +1,3 @@
+{
+ "extends": "useraccesscontrol"
+}
diff --git a/libnymea/interfaces/interfaces.qrc b/libnymea/interfaces/interfaces.qrc
index af1628f1..8dfdddec 100644
--- a/libnymea/interfaces/interfaces.qrc
+++ b/libnymea/interfaces/interfaces.qrc
@@ -47,6 +47,9 @@
smartmeter.json
extendedsmartmeterconsumer.json
extendedsmartmeterproducer.json
+ accesscontrol.json
+ fingerprintreader.json
+ useraccesscontrol.json
diff --git a/libnymea/interfaces/useraccesscontrol.json b/libnymea/interfaces/useraccesscontrol.json
new file mode 100644
index 00000000..fb75bd8d
--- /dev/null
+++ b/libnymea/interfaces/useraccesscontrol.json
@@ -0,0 +1,32 @@
+{
+ "extends": "accesscontrol",
+ "states": [
+ {
+ "name": "users",
+ "type": "QStringList"
+ }
+ ],
+ "events": [
+ {
+ "name": "accessGranted",
+ "params": [
+ {
+ "name": "userId",
+ "type": "QString"
+ }
+ ]
+ }
+ ],
+ "actions": [
+ {
+ "name": "addUser",
+ "params": [
+ {
+ "name": "userId",
+ "type": "QString"
+ }
+
+ ]
+ }
+ ]
+}