threshold_test.py besteht nur aus einer einzigen Funktion. Sowie einer Liste mit Werten die ignoriert werden und einem dictionary mit Grenzwerten.

Der Funktion threshold_test wird vom Notifier ein dictionary übergeben. Dieses enthält alle vom Sensor übermittelten Daten. Als erstes erzeugt die Funktion eine leere Liste die später zurückgegeben wird. Danach wird über das dictionary iteriert dabei werden alle Einträge des dictionaries die als key-value Paare in der Form {“key” : value} existieren aufgeteilt und jeweils der Variable key oder value zugewiesen.

Es gibt zwei Sonderfälle bei den Grenzwerten “co2” und “harmful_gases” haben jeweils zwei Schwellenwerte die beide zu hoch sind, aber unterschiedlich gefährlich. Für diese beiden Werte wird geprüft ob der Wert zwischen dem unteren Schwellenwert “low” und dem oberen “high” liegt, oder ob der Wert gar über dem hohen Schwellenwert liegt. Ist eines vom beiden der Fall wird das Ergebnis zur result Liste hinzugefügt. Bei anderen Kategorien die zwei Schwellenwerte haben gibt es immer einen Wertebereich zwischen den beiden Schwellenwerte in dem sich der Messwert befinden sollte. Bei Temperatur ist dies zum Beispiel zwischen 5 und 30 °C. Hier wird geprüft ob der Wert unter dem unteren Schwellenwert, oder über dem oberen Schwellenwert liegt.
Bei Kategorien mit nur einem Schwellenwert handelt es sich bei den Messdaten des Sensors immer um Schwellen die nicht überschritten werden sollten, daher wird nur geprüft ob der Wert über dem Schwellenwert liegt.

Die Ergebnisse werden immer als Tupel mit vier Elementen in die Liste eingetragen. Dabei wird immer der Messwertsname, die Art der Überschreitung, der Messwert und der Schwellenwert angegeben. Gibt es mehrere Schwellenwerte, dann wird nur der über-/unterschrittene angegeben.

So würde die result Liste aussehen wenn die Lautstärke zu hoch und die Temperatur zu niedrig ist:

[("sonic", "high", 90, 85),("temperatur", "low", -5, 5)]

Tags:

No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *