From 4c15966a03d2d4cacd03cdde69122a7436931f01 Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Mon, 22 Aug 2022 21:48:49 +0200 Subject: [PATCH] Example conf.json and documentation --- conf.json | 18 ++++++++++++++ doc/DebugView.png | Bin 0 -> 45078 bytes doc/index.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 conf.json create mode 100644 doc/DebugView.png create mode 100644 doc/index.md diff --git a/conf.json b/conf.json new file mode 100644 index 0000000..e391160 --- /dev/null +++ b/conf.json @@ -0,0 +1,18 @@ +{ + "Debug": { + "plugin": "WSServer", + "web": { + "/": { + "module": "controlpi_plugins.wsserver", + "location": "Debug" + } + } + }, + "Log": { + "plugin": "Log", + "filter": [{}] + }, + "NFCReader": { + "plugin": "NFCReader" + } +} diff --git a/doc/DebugView.png b/doc/DebugView.png new file mode 100644 index 0000000000000000000000000000000000000000..86ce16cda251d5c0007e74211278674d09d57499 GIT binary patch literal 45078 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

JRI8dpA@ZyD3EJnQa4XUCIZ^z`+3zbkh>PP<5N= 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 +``` + +Auf dem Raspberry Pi (oder wenn keine Code-Änderungen gewünscht sind) kann +es auch direkt, ohne einen git-Clone installiert werden: +```sh +(venv)$ pip install git+git://git.graph-it.com/graphit/controlpi-nfc.git +``` + +## Benutzung +Eine minimale ControlPi-Konfiguration, die dieses Plugin benutzt, ist im +git-Repository enthalten: +```json +{ + "Debug": { + "plugin": "WSServer", + "web": { + "/": { + "module": "controlpi_plugins.wsserver", + "location": "Debug" + } + } + }, + "Log": { + "plugin": "Log", + "filter": [{}] + }, + "NFCReader": { + "plugin": "NFCReader" + } +} +``` + +Ein `NFCReader`-Plugin hat keine weitere Konfiguration und es ist nur eine +Instanz pro Konfiguration sinnvoll (da weitere sowieso den gleichen +NFC-Kartenleser verwenden würden). + +Mit dieser Beispiel-Konfiguration können die durch Auflegen und Entfernen +von NFC-Karten ausgelösten Events in der Debug-Oberfläche des ControlPi und +im Log in `journalctl -u controlpi` gesehen werden: +![Debug-Oberfläche](DebugView.png) -- 2.34.1