Aktor: FabLock
Der FabLock Actor wird verwendet, um Türschlösser über unseren Client oder die API (z.B. pyfabapi) zu bedienen. Er basiert prinzipiell auf dem Template Aktor: Generisches Python-Template für "Process". Der Aktor unterstüzt darüber hinaus jedoch noch die dafür notwendigen Spezialargumente, die über den Spezialzustand raw
(binäre Daten) übermittelt werden können (siehe hier) und welche über das spezielle Trait Prodable definiert werden. Dafür gibt es im Borepin Client die Aktionsknöpfe UNLOCK
und IDENTIFY
. Diese senden passende Argumente an den Prozess:
Quellcode für den Aktor: https://gitlab.com/fabinfra/fabaccess/actors/fablock
Installation
mkdir -p /opt/fabinfra/adapters/
cd /opt/fabinfra/adapters/
git clone https://gitlab.com/fabinfra/fabaccess/actors/fablock.git
chmod +x fablock/main.py
chown -R bffh:bffh /opt/fabinfra/adapters/fablock/
cd /opt/fabinfra/adapters/fablock/
python3 -m venv env
. env/bin/activate #activate venv
pip install -r requirements.txt
In FabAccess einbinden
Eine nützliche Beispielkonfiguration für FabLocks findet sich in der tfom2023-Demo.
bffh.dhall Snippets
Ressource
LBoxx_1 =
{
name = "FabLock Tools",
description = "LBoxx with Tools of the FabLock Project",
disclose = "tfom23.disclose",
read = "tfom23.read",
write = "tfom23.lboxx.write",
manage = "tfom23.manage",
category = "LBoxx",
prodable = True,
},
Aktor
fablock_lboxx_1 = {
module = "Process",
params = {
cmd = "python",
args = /opt/fabinfra/adapters/fablock/main.py --host 127.0.0.1 --user MQTT_USER --password MQTT_PASSWOR --fablock 00001 --lock 00001"
}
},
Zuweisung
actor_connections = [
{ machine = "LBoxx_1", actor = "fablock_lboxx_1" }
],