Aktor: spacermake (Primary-Secondary mit Nutzungsprotokoll)
Dieser Aktor ist eine Zuarbeit vom Makerspace Bocholt. Der Aktor agiert zusammen mit Aktor: Machine Logger (CSVlog) und dient dazu, sekundär eingeschaltene Geräte in einem Log zu erfassen, damit Verbräuche zu tracken und verwendet dabei das DIY-Hardwarekonzept Primary-Secondary Schaltung. Der Aktor schickt außerdem Anzeigeinformationen an ggf. installierte FabReader oder FabCounter-Anzeigen. spacermake greift deshalb unter anderem auf die bestehende FabFire Adapter Konfiguration (config.toml
) zurück.
spacermake installieren
Wir klonen das Projekt:
mkdir -p /opt/fabinfra/adapters/
git clone https://github.com/LastExceed/spacermake.git
cd spacermake/
Vor dem Kompilieren müssen wir noch ein paar Pfade für Konfigurations- und Logdateien anpassen. Das Script ist aktuell nicht optimal konfigurierbar und muss deshalb vor dem Nutzen geeignet angepasst und erst dann kompiliert werden!
vim /src/main.rs
# config Pfade anpassen
static ref SLAVES_BY_MASTER: HashMap<String, HashSet<String>> = parse_toml_file("master-slave_relations.toml");
static ref SLAVE_PROPERTIES: HashMap<String, [bool; 3]> = parse_toml_file("slave_properties.toml");
static ref MACHINE_IDS: HashMap<String, String> = parse_toml_file::<toml::Table>("/opt/fabinfra/adapters/fabfire_adapter/config/config.toml")
...
# und den MQTT Server anpassen (wir fügen auch noch eine Zeile für Benutzer und Passwort ein)
let mut mqttoptions = MqttOptions::new("spacermake", "localhost", 1883);
mqttoptions.set_credentials("fabinfra101", "fablocal");
vim /src/utils/logs.rs
.open("machinelog.csv")?
# und weiter unten:
.open("machinelog_debug.csv")?
Wir installieren Rust, falls noch nicht vorhanden ist:
# Wir installieren nun das aktuelle Rust per rustup (als normaler Nutzer). Rustup erlaubt das flexible Installieren beliebiger Rust-Versionen
curl https://sh.rustup.rs -sSf | sh
# cargo in .bashrc einfügen und Umgebung neu laden
echo 'source "$HOME/.cargo/env"' >> ~/.bashrc
source ~/.bashrc
# wir prüfen, ob wir die aktuelle Rust Version haben
rustup show
# oder installieren sie ...
rustup install stable
rustup default stable
Dann erzeugen wir die Binary:
cd /opt/fabinfra/adapters/spacermake/
cargo build --release
spacermake konfigurieren und testen
cd /opt/fabinfra/adapters/spacermake/
Log Files
# leere Log Files anlegen. Sonst startet spacermake nicht
touch machinelog.csv
touch machinelog_debug.csv
Primary-Secondary (Master-Slave) konfigurieren
Die folgenden beiden *.toml Dateien müssen konfiguriert werden. Eine Beispielkonfiguration:
vim master-slave_relations.toml
master1 = ["slave1", "slave2"]
master2 = ["slave3", "slave1"]
vim slave_properties.toml
slave1 = [false, false, true]
slave2 = [true, true, true]
Die in slave_properties.toml
angegebenen Boolean-Werte defininieren folgendes:
runsContinuously
- Slave läuft immer (true
) oder soll von Buchungs bis Rückgabe des Masters laufen (false
)needsTrailingTime
- Slave soll nach Abschalten des Masters 30 Sekunden nachlaufen (true
) oder Secondary geht sofort aus (false
)isTasmota
- gibt an, ob es ein Tasmota (true
) oder Shelly (false
) ist
Berechtigungen anpassen
Wir übergeben die Dateien alle dem Nutzer bffh
:
cd /opt/fabinfra/adapters/
chown -R bffh:bffh spacermake/
Manuell prüfen
Wir prüfen manuell, ob die Binary startet:
/opt/fabinfra/adapters/spacermake/target/release/spacermake
spacermake als systemd Service
sudo vim /etc/systemd/system/spacermake.service
[Unit]
Description=FabAccess Primary-Secondary Actor with usage log protocol
Require=network-online.target
After=network-online.target
[Service]
Type=simple
User=bffh
Group=bffh
ExecStart=/opt/fabinfra/adapters/spacermake/target/release/spacermake
Restart=always
WorkingDirectory=/opt/fabinfra/adapters/spacermake
[Install]
WantedBy=multi-user.target
Wir aktualisierne den Daemon, aktiveren und starten den Dienst dann:
sudo systemctl daemon-reload
sudo systemctl enable spacermake.service --now
Die Logs finden wir dann mit:
sudo journalctl -f -u spacermake.service
Keine Kommentare