Dies dient zur nachverfolgung und Dokumentation des Projektes
Logs können mit folgendem Befehl angeschaut werden
sudo journalctl -u lamda.service -f
Produkte:
- Raspberry Pi W mit Header (buyzero)
- 16GB microsSD-Karte
- MCP3008
Da der Pi W kein Ethernet anschluss besitzt, muss dem Pi zuvor die WLAN Konfiguration übergeben werden -> Anleitung
Folgende Software muss installiert werden:
- Python 3.7
- pip
- dnsmasq
- hostapd
Damit der Pi sein eigenes WLAN erstellt, kann folgende Anleitung bis einschließlich "WLAN-Interface konfigurieren" befolgt werden.
Python hat eine virtualenv (Anleitung) in der alle benötigte Module installiert werden. Alle "requirements" stehen in requirements.txt
.
Diese können alle über folgendem Befehel installiert werden
pip install -r requirements.txt
Der Service muss unter /etc/systemd/system/lamda.service
liegen -> Anleitung. Wichtig hier, dass Environment="PATH=/home/pi/lamdaProjekt/venv/bin"
dem Pfad entspricht, wo auch die virtualenv ist, damit sichergestellt ist, das auch alle benötigte Packete vorhanden sind.
Der Webserver wird mithilfe von Flask erstellt und mit Gunicorn gehosted (Anleitung auch bei Flask-soketIO). Mithilfe von Flask-soketIO wird dann ein Socket erstellt, damit die Daten in "Echtzeit" im Browser erscheinen können. Gunicorn braucht eine .py
-Datei mit entsprechenden Konfigurationen, die dann beim Service aufruf mit übergebenen werden müssen (gunicorn.conf.py
)
Eine Verwendung für den MCP3008 findet man hier -> Anleitung
Es gibt eine Beispielkonfiguration settings_example.json
. Diese kann als Vorlage verwendet werden und beinhaltet die Initialen ertesteten besten Werte. Wird das ganze Produtktiv verwendet (FLASK_ENV = "prod"
), so muss eine Datei namens settings.json
mit den entsprechenden Werten wie in der Beispieldatei vorhanden sein.
{
"AFR_STOCH": 14.68, // Wert zum ausrechnen des AFR = lamda * AFR_STOCH
"KORREKTURFAKTOR_BANK_1": 0.511, // Korrekturfaktor des Lamdawertes Bank 1
"KORREKTURFAKTOR_BANK_2": 0.511, // Korrekturfaktor des Lamdawertes Bank 1
"MESSURE_INTERVAL": 0.01, // Messintervall in Sekunden
"UPDATE_INTERVAL": 1.5, // Updateintervall in Sekunden der Anzeige
"DB_DELETE_AELTER_ALS": 180, // Löschen in Tage der DB Einträge
"ANZEIGEN_BANK_1": true, // Bank 1 wird beim aufruf angezeigt
"ANZEIGEN_BANK_2": true, // Bank 2 wird beim aufruf angezeigt
"NACHKOMMASTELLEN": 2, // Initiale Anzeige der Nachkommastellen
"WARNUNG_BLINKEN": false // Blinken im roten Bereich aktivieren
}
- Der Pi wird intern der MAMA direkt mit 5V versorgt
- Die Uhrzeit vom Pi wird mithilfe vom Browser aktuallisiert, jedes mal wenn man die index.html aufruft
- SQLite wird als Datenbank verwendet