allowed: Temporär abschaltbar (machen)?

Begonnen von laberlaib, 15 Juli 2021, 12:16:41

Vorheriges Thema - Nächstes Thema

laberlaib

Hallo,

Kann man ein allowed-Device temporär abschalten ohne Strukturveränderung (rotes Fragezeichen) hervorzurufen?
So wie es bei at/notify/DOIF per set <DEVICE> inactive/disable möglich ist.

Hintergrund:
Ich habe eine RFID+PIN-basierte Türöffnungssteuerung gebaut.
Dabei wird für basicAuth die Nummer der RFID-Karte als Benutzername und die PIN als Passwort genutzt, um über ein spezielles FHEMWEB-Frontend per HTTPS-Get-Aufruf die Tür auf- bzw. abzuschließen.
Jede ausgegebene Karte erhält also ein eigenes allowed-Device um die Steuerung möglich zu machen.
Als weiteres Feature würde ich nun gerne die Gültigkeit der Karten zeitlich beschränken können, so wie es moderne kommerzielle Lösungen auch zulassen. Putzhilfe nur Dienstags zwischen 08:00-16:00 Uhr.
Und nur anhand des HTTPS-Get-Aufrufs kann ich ja nicht sehen, welches allowed-Device die Freigabe gegeben hat.

Mein Workaround derzeit ist, per reportAuthAttempts im allowed-Device ein Event des Devices zu erhalten und dann die Steuerung per Sequence zu machen:
Kommt ein Event des allowed-Device und ein Dummy wird kurz danach auf open/close geschalten, dann triggert die Sequence und ein notify öffen/schließt. Und dieses notify ist dann deaktivierbar.
Oder aber man gibt die Karten-ID noch im HTTPS-Get-Aufruf mit und prüft dann, ob die Karte gesperrt ist.
Generell fände ich es aber einfacher und intuitiver, wenn ein nicht befugter Nutzer gar nicht erst "im System ankommt" indem sein allowed-Zugang gesperrt ist.

laberlaib
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

rudolfkoenig

Ich habe jetzt das Attribut disabledForIntervals hinzugefuegt, weiss nicht, ob das auch schon reicht.

laberlaib

Hallo Rudi,

danke für das Attribut und die schnelle Umsetzung.

Das ist zwar nicht ganz so "dynamisch" wie per set/reading, aber damit lässt sich etwas konfigurieren. Falls es doch mal Überraschungsbesuch gibt und man nicht daheim ist, dann kann man ja immer noch flott das Attribut ändern, mit allen Konsequenzen ("Fragezeichen").

Oder aber aus der Commandref:
ZitatIf parts of the attribute value are enclosed in {}, they are evaluated:

    {sunset_abs()}-24 {sunrise_abs()}-08

Wann findet den die Auswertung statt? In Echtzeit bei abruf? Dann könnte man auch per Funktion das Ganze weiter dynamisieren und in Abhängigkeit eines weiteren (Dummy)-Devices immer gesperrt ("0@00-24") bzw. offen ("23:44-23:45" - oder würde sogar "" (leer) reichen?) zurückgeben.

Oder gleich drunter entdeckt und mir bislang unbekannt:
Zitat
attr [-a|-r|-silent] <devspec> <attrname> [<value>]
With the -silent option the command is not recorded in the "save -?" list.
Wäre ja auch eine Möglichkeit, dass "disablen" per DOIF/notify/at weiter zu dynamisieren.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

rudolfkoenig

ZitatWann findet den die Auswertung statt? In Echtzeit bei abruf?
Ja. Koennte womoeglich Performance kosten, wenn man es ausreizt.

laberlaib

Zitat von: rudolfkoenig am 15 Juli 2021, 16:58:42
Ja. Koennte womoeglich Performance kosten, wenn man es ausreizt.

Aber dann reicht mir das aus. Es geht irgendwie und das reicht erst einmal.
Es ist ja ein spezielles FHEMWEB mit den jeweiligen Usern als allowed-Devices. Das wird dann ja nur punktuell genutzt, da sollte Performance keine Rolle spielen.

Sonst melde ich mich wieder :p

Nochmals danke.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)