================================================================================
vmkstationd3
================================================================================

"vmkstationd3", der "Velometrik Stationsdaemon", ist das Softwarepaket,
das einen, mit einem Debian-Derivat laufenden Computer funktionell zur VeloBox3 macht.
Er ist in seinen wesentlichen Teilen in TCL geschrieben.

Er wird beim Booten gestartet.
Sein Kern besteht aus einem Minimum aus Initialisierungskode, der sich um
nichts weiter als den Start aller Funktionen kümmert.

Er befindet sich im Betriebssystem als symbolischer Link
    /usr/local/vmkstationd
auf die folgende Verzeichnisstruktur.


Verzeichnisstruktur
===================

("<cpu>" bezeichnet eine CPU-Architektur.)

│   vmkstationd.tcl (Startskript)
│
├── bin: Ausführbare Dateien
│   │    Skripte
│   └──  <cpu>:  Binärdateinen
├── custom: Anpassungen für die konkreten Einsatzfälle
│   ├── apps: Applikationen ("vlbapps") als Applikationsserver
│   │   └── lib: Applikationsspezifische Bibliotheken
│   │       │    Skripte
│   │       └──  <cpu>:  Binärdateinen (shared libraries)
│   ├── kernel: Module, die von mehreren vlbapps benutzt werden können
│   └── wsserver: Anpassungen des Websocket-Servers
│       ├── httpdomains: HTTP-Komponenten
│       └── wsdomains:   Websocket-Komponenten
│                        (u.a. Startmodule der vlbapps)
├── dev: Entwicklungsunterstützende Dateien, die versioniert werden,
│        im endgültigen vmkstationd3 aber nicht mehr enthalten sind
├── lib: Bbliotheksmodule
│   │    Skripte
│   ├──  <cpu>: Binärdateinen (shared libraries)
│   └── kernel: Allgemeinste Module, die jede vlbapp gebrauchen könnte
├── htdocs: Hypertext-Komponeten für wsserver
├── setup: Installations- und Aktualisierungsskripte
│          Dateien, die ins Betriebssystem zu integrieren sind
└── start: Startkode (wird vor den Bibliotheken geladen)


Außerhalb der Verzeichnisstruktur
=================================

/etc/init.d/vmkstationd.sh                  Start-/Stoppskript
/var/local/etc/vmkstationd.conf             Konfigurationsdatei
/var/local/run/vmkstationd/vmkstationd.fifo FIFO für System Hooks
/...                                        System Hooks
/var/loca/log/                              Logdateien
/var/loca/log/vmkstationd.log               Logdatei von vmkstationd
/sys/class/gpio                             Hardwaresteuerung


Betrieb auf einem beliebigen DEBIAN-Rechner
===========================================

Prinzipiell kann der Stationsdaemon auf jedem, mit einem DEBIAN-Derivat laufenden Rechner gestartet werden.
(... auch wenn aktuell nicht alles funktioniert.)
Um den Daemon als (normaler) User starten zu können, muß dieser der Gruppe "staff" angehören.
Das ist normalerweise nicht der Fall (zum Prüfen das Kommando "groups" aufrufen).
Zum Hinzufügen muß root das Kommando

usermod -a -G staff <user>

ausführen. <user> muß sich danach neu anmelden.
Weiterhin muß die Konfigurationsdatei vmkstationd.conf vom setup/-Verzeichnis ins
Stammverzeichnis kopiert und dort die Portnummer auf eine nicht privilegierte Nummer z.B. 8080 zu setzen.
(Das eigentliche Verzeichnis für lokale Konfigurationen /usr/local/etc ist i.a. nur für root beschreibbar.)
Die Logdatei wird ebenfalls ins Stammverzeichnis geschrieben. (Auch /var/local/log ist i.a. nur für root beschreibbar.)

Der Start erfolgt aus dem Stammverzeichnis mit

./vmkstationd.tcl


Zukünftiges
===========

Zu den Funktionen gehört eine Updateverwaltung, die den zu startenden Kode
aktuell hält. 

Statuslevels
============
Der Statuslevel kennzeichnet den aktuellen Betriebsstatus. Er kann mit einer
farbigen LED ("Piepser"-Hardware) angezeigt werden und liefert erste Informationen
bei der Fehlersuche. Zum Erreichen eines bestimmten Statuslevels müssen neben der
Bedingung für diesen auch die Bedingungen für alle vorhergehenden erfüllt sein.
Die Statuslevels:
0 OFF        schwarz  Noch nichts ist gestartet.
1 POWER      rot      vmkstationd ist gestartet.
2 MATTE      violett  Die Hockermatte wurde erkannt und die Datenübernahme gestartet.
3 LAN        blau     Es besteht eine lokale Netzwerkverbindung (LAN oder WLAN)
4 INET       hellblau Es besteht eine Internetverbindung.
5 WEBSERVICE grün     Der Webservice wurde kontaktiert und hat geantwortet.
6 ANGEMELDET weiß     Die Anmeldung beim Webservice war erfolgreich.
                      => Der Webservice kennt die lokale IP der Arbeitsstation
                         und die Arbeitsstation kennt "ihr" Stationsportal.

Aktuell
=======
Der TCL-Websocket Server funktioniert bei TCL 8.6.2 mit Chrome, Safari, Edge aber nicht mit Firefox
Bei TCL 8.6.6 funktioniert er auch mit Firefox.

