Radioaktivitätsmessung mit DIYGeigerCounter HowTo

Begonnen von Ray_Tracer, 02 Januar 2017, 01:37:51

Vorheriges Thema - Nächstes Thema

Ray_Tracer

Falls von Interesse als Wiki-Artikel:

Radioaktivitätsmessung und -logging mit DIYGeigerCounter

1. Features

Die Selbstbau-Geizerzähler von DIYGeigerCounter besitzen einen seriellen TTL Ausgang können daher relativ einfach mit FHEM-Bordmittel angebunden werden. Eine Vorverarbeitung findet im Gerät statt und neben den Impulsen pro Minute können folgende Dosiseinheiten ausgegeben werden: uSv/h, uR/h, mR/h oder xBg


2. Vorbereitung

Je nach verwendeter Server-Hardware die serielle Schnittstelle mit der Pin-Leiste des DIYCounter verbinden. Evtl. per Kabel falls TTL-fähig, sonst via TTL Seriell-Adapter.
Im Menü des Geigerzählers den "SERIAL OUTPUT MODE" auf GK-B5 und  "SERIAL LOG PERIOD" auf 10s einstellen. Diese Werte sind notwendig für dieses HowTo; andere Werte sind möglich, führen dann aber zu Fehlern in der Verarbeitung durch FHEM wenn die Zeiten nicht angepasst werden.


3. Integration in FHEM

3.1. Definition des seriellen Device

Das Einlesen der Daten geschieht über ECMD:

Vor dem Ausführen der Befehle in FHEM ist die Datei rad_counter.classdef im Programmverzeichnis anzulegen (/usr/local/fhem/rad_counter.classdef):

Folgende Zeilen müssen in diese Datei kopiert werden:


params rad_counts rad_dose
reading rad_counts match "(^\d+),(\d+\.\d+),(\d+.\d{2})\r\n"
reading rad_counts postproc {s/(^\d+),(\d+\.\d+),(\d+.\d{2})\r\n/$1/;; $1}
reading rad_dose match "(^\d+),(\d+\.\d+),(\d+.\d{2})\r\n"
reading rad_dose postproc {s/(^\d+),(\d+\.\d+),(\d+.\d{2})\r\n/$2/;; $2}


Damit holt FHEM aus z.B. der seriellen Ausgabe "102,0.1166,5.03" (IPM,DOSIS,VCC) die ersten beiden Werte heraus, indem für jeden Wert auf eine komplette Ausgabezeile gematcht wird (match) und dann der eigentliche Wert durch Suchen und Ersetzen herausgefilter wird (postproc).

Dann kann die Definition des Device und seiner Attribute erfolgen:


define Rad_Counter_Serial ECMD serial /dev/cuaU1@9600
attr Rad_Counter_Serial classdefs message=./rad_counter.classdef
attr Rad_Counter_Serial logTraffic 5
attr Rad_Counter_Serial partial 2
attr Rad_Counter_Serial split \r\n
attr Rad_Counter_Serial verbose 5


Die Schnittstellenbezeichnung kann je nach verdwendetem OS natürlich unterschiedlich sein.
Die zusätzlichen Attribute dienen dem Zweck, daß im Falle einer zerstückelten Ausgabe durch z.B. USB-Bufferprobleme die Zeilen wieder korrekt zusammengesetzt werden bevor das Matching durch die .classdef erfolgt.
Hierbei werden die beiden Readings rad_counts und rad_dose für ein ECMD Device erzeugt.


3.2. Definition des ECMD Device

Um eine weitere interne Verarbeitung der Daten zu ermöglichen definieren wir noch ein ECMDDevice:


defmod Rad_Counter ECMDDevice message rad_counts rad_dose
attr Rad_Counter IODev Rad_Counter_Serial
attr Rad_Counter event-min-interval rad_dose.av:58
attr Rad_Counter userReadings rad_dose.av {movingAverage("Rad_Counter","rad_dose",1200)}


In diesem Fall wird zusätzlich noch jede Minute ein Durchschnittswert ( https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen ) mit dem Namen rad_dose.av (über einen Zeitraum von 1200 Sekunden gemittelt) erzeugt. Dies erfordert natürlich vorher den Eintrag der Zusatzfunktion movingAverage in der Datei /usr/local/fhem/FHEM/99_Utils.pm.


3.3. Definiton des FileLog

Die Definition mit Auswahl der zu loggenden Werte erfolgt so:


defmod FileLog_Rad_Counter FileLog ./log/Rad_Counter-%Y.txt Rad_Counter:(rad_dose|rad_dose.av|rad_counts)[:].*


Und ergibt dieses Log:


2016-12-31_23:41:15 Rad_Counter rad_counts: 120
2016-12-31_23:41:15 Rad_Counter rad_dose.av: 0.082
2016-12-31_23:41:15 Rad_Counter rad_dose: 0.1371
2016-12-31_23:41:25 Rad_Counter rad_counts: 84
2016-12-31_23:41:25 Rad_Counter rad_dose: 0.0960
2016-12-31_23:41:35 Rad_Counter rad_counts: 78
2016-12-31_23:41:35 Rad_Counter rad_dose: 0.0891
2016-12-31_23:41:55 Rad_Counter rad_counts: 54
2016-12-31_23:41:55 Rad_Counter rad_dose: 0.0617
2016-12-31_23:42:05 Rad_Counter rad_counts: 42
2016-12-31_23:42:05 Rad_Counter rad_dose: 0.0480
2016-12-31_23:42:15 Rad_Counter rad_counts: 114
2016-12-31_23:42:15 Rad_Counter rad_dose.av: 0.086
2016-12-31_23:42:15 Rad_Counter rad_dose: 0.1303


Hier ist sehr gut der minütlich generierte Mittelwert zu sehen.
Eine Weiterverarbeitung kann dann sehr einfach via Plot-Editor erfolgen.


4. Links

https://sites.google.com/site/diygeigercounter/ Projektseite von DIYGeigercounter


drhirn

Danke für das HowTo!

Ich hab's übernommen: https://wiki.fhem.de/wiki/Radioaktivit%C3%A4tsmessung_mit_DIYGeigerCounter

Ganz glücklich bin ich aber nicht damit ;). Könntest du bitte noch einige Dinge genauer erläutern? Wo genau die "rad_counter.classdef" hin muss z.B. und wo man sie her bekommt. Und was dir sonst noch so einfällt.

Ray_Tracer

Habe es ein wenig genauer erläutert... :)

Sonst fällt mir momentan nix weiter dazu ein. Auf die DIY-Hardware mit ihrem 433MHz seriellen Funk wollte ich jetzt nicht weiter eingehen.

Eher demnächst mal einen HW-Artikel dazu, wie man größere Mengen beliebige, serielle Geräte parallel per Funk mit Fehlerkorrektur etc. günstig via USB an FHEM anbindet.

drhirn

Super, ich werde den Wiki-Beitrag am Montag korrigieren.

Der Hardware-Artikel wäre natürlich super!