Daten über Webseiten verarbeiten

Man stelle sich vor, ein Funkamateur hat unter dem Dach, weit weg vom Shack, eine Rotorsteuerung, einen Vorverstärker und einen Antennen-Umschalter in Betrieb, die er über den PC steuern möchte. Dazu benötigt man gewöhnlich eine Menge Strippen (USB, RS323, etc.) und eine Menge einzelner Programme, welche auf einem PC unter einem bestimmten Betriebssystem laufen, WIN, Linux oder iOS. Wenn er Glück hat, hat er auch alle Programme für ein Betriebssystem zur Verfügung. Auch die Länge der benötigten Steuerleitungen ist nicht gerade unkritisch.

Dieser Aufwand lässt sich erheblich verringern, wenn besagter OM ein WLAN,  einen PC, Tablet oder Handy mit einem Browser in Betrieb hat. Mittels eines Raspberry mit Webserver am Ort des Geschehens lassen sich dann die Schaltvorgänge tätigen, Messwerte erheben und über eine Webseite - via WLAN - bereitstellen.

Wie das gemacht wird, davon soll hier nun die Rede sein.

Das Common Gateway Interface (CGI)

Statische Webseiten sind Webseiten, deren Inhalte sich zu ihrer Laufzeit nicht ändern. Dynamische Webseiten sind jene, deren Inhalt sich - im Gegendatz dazu - während der Laufzeit ändern kann. Ein solcher Mechanismus ist notwendig, wenn man aktuelle Daten (Wetterdaten, Preise, etc.) darstellen will.

Bei großen Webseiten Projekten werden

  • die Daten (Wetterdaten, Preise, etc.) durch ein Programm oder eine Eingabe erhoben 
  • und in eine Datenbank geschrieben, in welcher sie gespeichert werden.
  • Eine Webseite holt sich diese Daten bei ihrem Aufruf und gibt sie dann aus.

Bei kleineren Projekten kann die Datenbank durch den Programmspeicher ersetzt werden. Die Webseite wird dann durch einen Kombination von statischem HTML-Skript und einem Programm erzeugt, welches die Daten erhebt und in die Webseite einbaut. Umgekehrt können die über eine Formlatt in einem statischen HTML-Skript erzeugten Daten einem Programm übergeben und von diesem weiterverarbeitet werden. M.a.W.: Es werden dann Daten zwischen einem auf dem Raspberry laufenden Programm und dem auf einem Weserver laufenden statischen HTML-Skript wechselseitig ausgetauscht. Dies geschieht, wie in einem normalen Programm auch, über Umgebungsvarialen, d.h. Variablen, welche hier dem HTML-Skript und dem Datenerhebungs-Programm gemeinsam zur Verfügung stehen. Diese Umgebungsvariablen bildeten eine Brücke (Gateway) zwischem dem auf dem Webserver laufenden HTML-Sript und dem auf dem Raspberry laufenden (hier: Python-) Programm.

Dieser Mechanismus des Austauschs der Daten über Umgebungsvariablen ist in herkömmliche Webserver eingebaut und man nennt deshalb 'Common Gateway Interface' (CGI). Das Programm, welches die Daten dynamisch verarbeitet, wird als CGI-Sript bezeichnet. Der Webserver erkennt dieses dadurch, dass es die Dateiendung *.cgi hat und in einem im Webserver festgelegen Verzeichnis steht. (Meist /usr/lib/cgi-bin oder /var/www/cgi-bin).

Zudem werden die Print-Ausgaben des CGI-Sripts, welche nornalerweise auf die Standardsausgabe (i.d.R. das Terminal) gehen, auf die serielle Socket-Verbindung des Servers umgeleitet, so dass man mittels Print-Befehlen im CGI-Programm direkt HTML-Code auf den Socket ausgeben kann. Für die Standardeingabe gilt das ganz analog, auf sie arbeitet der hereinkommende Socketstream.

Dieses CGI-Programm wird dann aufgerufen entweder über ein statisches HTML-Skript, welches auf dem Webserver läuft, oder das CGI-Skript wird direkt über den Browser aufgerufen. Beispiel: '192.168.1.17/cgi-bin/hello.cgi'

In unseren Fällen hier wird das 'CGI-Skript' ein normales Python-Programm sein, welches sich von einem herkömmlichen Python-Programm in zwei Dingen gerinfügig unterscheidet: Die Dateiendung lautet in der Serverumgebung *.cgi statt *.py und das Python-Programm wird über den Aufruf des Pyrhon-Interpreters gestartet, was in der Eingangszeile dieser Python-Programmdatei mit dem Linux-Skript-Aufruf #!/usr/bin/python geschieht.

Ob es sich dabei um ein Python-Programm oder ein bereits kompiliertes Programm in Assembler oder C handelt ist dann gleich. Es muss lediglich auf der Kommandozeile ausführbar sein und die Endung *.cgi haben.

Die folgenden Projekte sollen durchgeführt werden:

'Hello world' aus einem HTML-Skript
'Hello world' aus einem Python Programm (CGI-Skript)
Temperaturwerte im Browser darstellen.
Eingabe von Daten auf Webseiten
Schalten via LAN

 

German Amateur Radio Club
AVSK / DARC F34
Region Schwalm Knüll

 

Silent Key, Georg, DL7MAL

+ 24.12.2017

 


 

OV-Frequenzen
2m: 144,650 MHz
Echolink-Node 607799
70cm:        434,700 MHz

 

DMR-Relais

Ausgabe:          439,950 MHz
Eingabe: 430,550 MHz

 

D-Star-Relais

Ausgabe:          439,5625 MHz
Eingabe: 431,9625 MHz


 

Geschichte der FM-Relais in DL.


 

Geografische Daten AVSK
QTH-Loc.: JO4ØRV
Long: 9.41835E ; 9º25’6”
Lat: 50.91304N ;50º54’47”
Höhe(NN): 600 m

 

OV-Abende F34

Die Funkamateure und Freunde des OV Schwalm-Knüll treffen sich gewöhnlich an jedem ersten Freitag im Monat um 20.00 Uhr im neuen OV-Lokal  Hotel Restaurant Rosengarten in Schwalmstadt-Ziegenhain.


 

Bildnachweis

Die Bilder dieser Webseite sind im Laufe der Zeit durch die Ortsverbandsmitglieder entstanden.