2025-06-06
URL: https://hhoegl.informatik.hs-augsburg.de/fablab-intern
Hier stehen Sachen die eher für den Betrieb des Fablab interessant sind, nicht so sehr für normale Nutzer.
Die eigentliche Nutzer-Homepage des Fablab ist https://tha.de/homes/hhoegl/home/Fablab.
Es gab bisher zwei Versuche, eine zentrale Anlaufstelle für das Fablab zu schaffen. Die Idee war meist, eine Homepage auf einem eigenen Rechner bereitszustellen, so dass man sich damit über das Fablab informieren und bestimmte Prozesse anstossen kann. Als wichtig erachtet wurde folgendes:
Es soll ein “Dashboard” geben, auf dem man mit einem Blick erkennen kann, wie es um das Fablab steht und welche Funktionen es auf der Homepage gibt.
Die Drucker soll man live beim Drucken beobachten können. Jeder Drucker soll dazu mit einer Kamera ausgestattet werden.
Anleitungen zum Drucken sollen übersichtlich zur Verfügung stehen.
Es soll alles was im Fablab zur Verfügung steht aufgezählt werden, also sowas wie eine Inventarliste.
Manche Geräte sollen überwacht werden, z.B. der Lötkolben, so dass man auch ausserhalb des Fablab feststellen kann, wenn er versehentlich nicht ausgeschaltet wurde.
Der erste Versuch war im Sommer 2016 im Rahmen des Embedded Linux
Wahlfachs. Es wurde dabei eine einfache Homepage erstellt aus
handgeschriebenen HTML Dateien mit Hilfe von “Google Material Design
Lite” (siehe https://getmdl.io und https://github.com/google/material-design-lite). Neben
der Homepage war die zweite wichtige Anforderung, “Monitoring” und
“Control” betreiben zu können. Aus dem Grund war der damalige DNS
Eintrag auch fablabctrl.hs-augsburg.de
. Diese Funktionen
wurden in die Homepage mit ein wenig JavaScript eingebaut, im
js/
Ordner waren die Dateien canvasjs.js
,
jquery.js
, jquery-ui.js
,
knockout.js
, material.js
und
sevenSeg.js
.
Damals wurde öfter vergessen, den Lötkolben auszuschalten, so dass
man auf die Idee kam, die Stromaufnahme zu messen und den aktuellen Wert
und den zeitlichen Verlauf auf einer eigenen Lötkolben-Seite der
Homepage anzuzeigen. So konnte man auch von zu Hause nachschauen, ob im
Fablab gerade der Lötkolben läuft. Technisch wurde das durch einen 220V
Leistungsmesser mit S0 Schnittstelle gelöst, der eine Impulsfolge analog
zur aktuellen Leistungsaufnahme ausgibt. Die Impulsfolge wurde mit einem
Embedded Linux Rechner (anfangs Gnublin, später Beagle Bone Black)
ausgewertet und in eine Textdatei geschrieben. Die Homepage konnte mit
Hilfe von jQuery/Ajax auf die Datei zugreifen und den Inhalt anzeigen.
Die Anzeige der Temperatur erfolgte stilecht mit einer
Siebensegment-Schrift, dazu wurde sevenSeg.js
verwendet.
Das gibt es immer noch unter https://brandonlwhite.github.io/sevenSeg.js.
Das zweite Objekt das überwacht werden sollte waren die 3D Drucker.
Damals gab es nur ein paar Ultimaker Drucker im Fablab. Die 3D Drucker
wurden je mit einer simplen Kamera ausgestattet, dazu wurden erst mal
Kamerahalterungen gedruckt. Die Kameras wurden an Beagle Bone Black
Rechner gesteckt, auf denen Embedded Linux, gebaut mit Buildroot, später
Debian lief. Das Streaming der Videodaten sollte über
gstreamer
erfolgen, als Webserver kam lighttpd
zum Einsatz. Es lief nicht alles so wie erwartet, deswegen wurde später
das Streaming durch die Übertragung von Einzelbildern ersetzt.
Alle Dateien findet man in folgendem Gitlab Repo, es ist auch ein Bericht dabei, der das alles mit den aufgetretenen Problemen genauer beschreibt:
https://gitlab.com/hhoegl-tha/fablab-control
Ich finde es hat gut ausgesehen. Der Minimalismus hat seinen Reiz.
Hier sind noch ein paar Screenshots die zeigen wie das damals ausgesehen hat:
Der zweite Anlauf war im Jahr 2018. Die Ziele waren in etwa die Gleichen wie bei Anlauf 1, nur die technische Umsetzung war deutlich anspruchsvoller.
Die Software wurde nun vom Tutor Tobias Schwarz in ein paar Monaten
geschrieben, er hatte bereits viel Erfahrung mit deŕ Entwicklung von
Java Anwendungen, deshalb fiel die Wahl auf Java. Folgende Komponenten
wurden für die Web-Anwendung verwendet: Java in der Version 1.8, Spring
Framework, Tomcat 8.5, MySQL 5.5. Die Anwendung lief auf einem Fujitsu
Server mit Intel Xeon E3-1220. Der nginx
Server wurde
sowohl für die Letsencrypt Zertifikate (certbot) als auch für die
Weiterleitung der Kamera-Streams verwendet.
Als Betriebssystem kam CentOS 7.9.2009 zum Einsatz. Der Server erhielt
den DNS Namen fablab.hs-augsburg.de
.
Der Server war mit zwei Netzwerkkarten ausgestattet, eine für die
Verbindung in das Hochschulnetz, die andere für ein Netz das mehrere
Raspberry Pi Rechner vernetzte (192.168.0.x). An jedem Raspi konnten
maximal zwei Webcams angeschlossen werden. Zum Video-Streaming wurde die
“mjpg-streamer” Software auf den Raspis verwendet (https://github.com/jacksonliam/mjpg-streamer). In der
nginx Konfiguration auf dem Server wurden die URLs
/camera/stream<n>
(n von 0-12) auf die
IP-Adresse/Portnummer des jeweiligen Raspi weitergeleitet
(proxy_path).
Die Software hatte in etwa folgende Features:
Die Fablab Homepage wurde einige Jahre aktiv genutzt. Die Beobachtung der Drucker mit den Kameras hat auch in hoher Auflösung gut funktioniert. Irgendwann hat die automatische Verlängerung des Letsencrypt Zertifikats nicht mehr funktioniert, so dass man sich nicht mehr verbinden konnte. Da keiner mehr im Labor mit der Einrichtung des Servers vertraut war, geriet er langsam in Vergessenheit.
Vor kurzem habe ich einen Versuch unternommen, die Software wieder zum Laufen zu bringen. Nach einer Einarbeitung in Java, Maven, Tomcat und MySQL konnte ich tatsächlich die Anwendung auf meinem eigenen Arbeitsplatzrechner wieder zum Leben erwecken. Wie erwartet muss man bei den Komponenten wie Java und MySQL die damaligen Versionen verwenden, bei neueren Versionen funktioniert ohne die Anpassung der Software nichts mehr. Immerhin konnte ich die folgenden Screenshots machen:
https://tha.de/homes/hhoegl/fotos/fablab-server/index.html#/0
Die veraltete Java Software wird natürlich niemand mehr zum produktiven Einsatz verwenden wollen. Aber das Ganze eignet sich ganz gut um über mögliche Features eines neuen Fablab Servers nachzudenken. Den würde man heutzutage eher in Python schreiben. Die Lösung mit dem eigenen Kamera-Netzwerk finde ich nach wie vor sehr gelungen.
Das Repo mit dem Code ist unter https://gitlab.com/hhoegl-tha/fablab-home-2018.
Wen die Details interessieren, meine Notizen zum Wiederbeleben des Servers habe ich in der Datei fablab-server.txt aufgeschrieben.