Messaufbau und Datenerfassung

Zur Erfassung der Messwerte des Gamma Scout wird das Messgerät per USB Verbindung an einen Rasperry Pi angeschlossen. Dieser ist wiederum per TCP/IP Verbindung mit einer gehosteten SQL Datenbank verbunden, in der die Messwerte hinterlegt werden. Bei Aufruf der Messwerte-Website wird per serverseitigem PHP Skript die Werte aus der Datenbank gelesen und in den Diagrammen im Browser dargestellt.

Der globalen Verfügbarkeit der gemessenen Werte steht ein minimaler Kostenaufwand gegenüber, welcher sich lediglich aus Anschaffung des Raspberry Pi (~ 40EUR) und des Hostingpakets  (~ 50EUR/Jahr) zusammensetzt.

Systemvoraussetzungen

Vor den weiteren Ausführungen muss an dieser Stelle Johannes Bauer gedankt werden. Sein Skript zur Interpretation des Gamma Scout Protokolls ist im Vergleich zur offiziellen GammaScout Toolbox ein Paradebeispiel für schlanke, elegante und vor Allem fehlerfreie Software.

Das Tool steht auf seiner Website als *.tar.gz Datei zum Download bereit. Eleganterweise ist auf dem Raspberry Pi OS, welches auf einer optionalen SD Karte mitbestellt werden kann, bereits ein voll funktionsfähiges Debian Linux Derivat inklusive Python 3.0 vorinstalliert. Man kommt jedoch nicht umher das Python Modul PySerial nachzuinstallieren.

Anmerkung: Johannes Bauer beschreibt in seiner Anleitung die Installation des Python Moduls PySerial per apt-get install python-serial Befehl. Dies hat bei mir nicht funktioniert. Erfolgreicher dagegen war die Installation per python setup.py install Befehl wie auf der Website des Moduls beschrieben.

Des Weiteren wird zur Herstellung der SQL Datenbankverbindung ein weiteres Python Modul nachinstalliert. Hierbei handelt es sich um das Modul MySQLdb. Hierfür empfiehlt sich das gleiche Vorgehen wie beim PySerial Modul. Sicherheitshalber sollte nach der Installation der Module immer manuell überprüft werden, ob die Module auch korrekt in der Python Installation verankert sind. Dies kann innerhalb von Python geschehen über Python3 –> help –> modules. Daraufhin wird eine Liste der verfügbaren und korrekt installierten Module angezeigt. Sinnvollerweise sollte in diese Liste pyserial und MySQLdb erscheinen.

Technische Details des Messaufbaus

Setup_Scaled2

Der Geigerzähler wurde auf eine Messperiode von 1Tag konfiguriert. Das bedeutet er addiert alle Zählimpulse, welche innerhalb von 24h registriert werden und erstellt einmal pro Tag einen Eintrag im internen Speicher. Desweiteren ist er per USB Verbindung mit dem Raspberry Pi verbunden.

Nachdem GammaScoutUtil-0.04.tar.gz korrekt installiert wurde und Pyton 3.0 oder höher inklusive der beschriebenen Module verfügbar ist, sollte das Tool ausführbar sein. Im konkreten Fall wird das Tool mit folgendem Befehl als Cronjob einmal stündlich ausgeführt.

Das Ergebnis der Operation sollte so aussehen:

Eleganterweise ist in obigem Befehl die Ausgabe auch als *.csv Datei möglich. Das erleichtert die Weiterverarbeitung der Daten. Soweit so gut. Als nächstes gilt es die Datenbank vorzubereiten.

In konkreten Fall wird bei dem Hosting Anbieter meiner Wahl (GN2-Hosting) zusätzlich zum Webspace auch gehostete SQL Datenbanken angeboten. Es muss eine SQL Datenbank für die Sicherung der Messdaten angelegt werden. Im konkreten Fall sind die relevanten Daten „Datum, Zeit, CPM, CPS“  in der Tabelle „GammaScout“. Die Datenbankkonfiguration via PHPmySQL sollte wie folgt aussehen:

sql

Als nächstes kommt das erste Mal wirkliche Eigenleistung ins Spiel. Als zentrales Verbindungsglied zwischen der Log-Datei des GammaScout und der SQL Datenbank fungiert ein Python Skript welches ebenfalls als cronjob einmal täglich nach dem Auslesen des Geigerzählers getriggert wird.

Angenommen in der log.csv ist ein neuer Eintrag vorhanden, welcher noch nicht in der Datenbank hinterlegt ist. Die Ausführung des Skripts erfolgt mit folgender Ausgabe.

 

It’s getting deep now…

Wer das obige Skript ohne Weiteres ausführt wird bei einer lokal angelegten Datenbank sicherlich Erfolg haben. Unsere Strategie geht aber noch einen Schritt tiefer. Unsere SQL Datenbank liegt wie erwähnt gehostet auf einem Webspace Server. Eine geniale Möglichkeit um ein verteilte Messdatenerfassung mit zentraler Speicherung der Messwerte zu ermöglichen. Einzige Voraussetzung ist eine Internetverbindung.  Aus sicherheitstechnischen Gründen ist es jedoch nicht möglich die SQL Datenbank auf direktem Wege anzusprechen. Stattdessen zimuss die Kommunikation per SSH Tunnel ermöglicht werden. Zu diesem Zweck muss allerdings ein SSH Zugriff auf den Hosting Server möglich sein. Das ist essentiell. Ohne SSH Zugriff besteht keine Chance Remote Zugriff  auf die Datenbank zu ermöglichen.

Grundsätzliche Funktion des SSH Tunnels ist es einen lokalen Port auf dem Raspberry Pi auf einen externen Port von mysql5.website.de zu routen. Folgende Grafik veranschaulicht die Thematik. Der geneigte Leser findet sicherlich im Netz genügend weiterführende Literatur.

 

Veranschaulichung SSH Tunneling, Christian Mueller h07bc10@gmail.com

 

Der SSH Tunnel wird mit dem nachfolgenden Befehl geöffnet. Das Problem an der Stelle ist, dass das Öffnen einer SSH Verbindung normalerweise immer mit der Eingabe eines Passwortes verbunden ist. Für die gegebene Aufgabenstellung ist es natürlich unbefriedigend manuell eine Passphrase eingeben zu müssen. Aus dem Grund muss dafür gesorgt werden, dass der Tunnel automatisch ohne manuelle Passworteingabe gegraben wird.

Der Zauberspruch an dieser Stelle heisst Public Key Authentifizierung. Hierbei wird ein privater und ein öffentlicher Schlüssel generiert. Der private Schlüssel befindet sich auf dem Raspberry Pi. Der öffentliche Schlüssel wird auf dem Hostingserver hinterlegt. Die Kombination aus beiden Schlüsseln ermöglichen eine Anmeldung ohne Passwort mittels Public Key Authentification.

Vorgehensweise ist folgende:

1. Erzeugen des Schlüsselpaares auf der lokalen Maschine

 2. Kopieren des öffentlichen Schlüssels „id_rsa.pub“ auf die gehostete Maschine.

Wahlweise mit SSH, FTP, etc…

 3. Bekanntmachen des öffentlichen Schlüssels

Auf der gehosteten Maschine sollte im root Verzeichnis ein Ordner „.ssh“ angelegt sein. Innerhalb dieses Ordners befindet sich die Datei „authorized_keys“. Der öffentliche  Schlüssel des Raspberry Pi wird nun dort eingetragen.

Nun wird beim ersten Einloggen ein letztes mal nach der Passphrase gefragt. Danach funktioniert es ohne.

World Wide Web

Bis hierher haben wir es geschafft die Daten automatisiert in die gehostete SQL Datenbank zu schreiben. Das mag zwar idealistisch eine tolle Sache sein. Aber niemand interessiert eine schnöde Datenbank. Im letzten Schritt habe ich ein PHP Skript geschrieben, welches die in der Datenbank vorhandenen Messwerte extrahiert und als Diagramm darstellt. Zu diesem Zweck kommt eine kleine PHP Erweiterung ins Spiel: pChart. pChart implementiert PHP Klassen zur Einbindung von verschiedenartigen Diagrammen.

Bei Aufruf der Website Messergebnisse Erlangen Zentrum werden die Messwerte „live“ aus der Datenbank geholt und als Liniendiagramm mittels pChart visualisiert.

 

Die Ausführung dieses PHP Skriptes führt zu folgendem Ergebnis:

 

 

 

 

 

 

 

 

 

 

 

Hier sind wir am Ziel angelangt. Ende der Übung.

 

2 Antworten auf Messaufbau und Datenerfassung
  1. Bodo Gravert sagt:

    Ich versteh das Ergebniss Bild ‚Gamma Scout Impuls Rate‘ nicht.
    Counts per Minute ist ganzzahlig quantisiert und nicht das was man da
    auf dem Bild sieht. Quantenereignisse, also Desintegratrionereignisse sind ganzzahlig quantisiert, oder ?

    Lg Bodo

  2. Andy sagt:

    Hallo Bodo,

    danke für Deine produktiven Kommentare! Die ungeradzahligen Werte entstehen dadurch, dass der GammaScout eine Zählperiode von 24h eingestellt hat. Runtergeteilt auf Counts per Minute entstehen dann eben Durchschnittswerte mit Nachkommastellen. Du kannst es in der Tabelle ganz oben nachrechnen: Vom 18.12.2012 auf den 19.12.2012 wurden 26944 Zählereignisse registriert. Runtergeteilt auf die Minute sind das dann eben 26944/24/60=18,71 CPM

    Viele Grüße, Andy

Schreibe einen Kommentar zu Andy Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.