From 4612a4c87c4ea19f09042928dff338aab68c98a1 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 23 Sep 2019 12:00:02 +0200 Subject: interpoliere fertig --- interpoliere | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100755 interpoliere diff --git a/interpoliere b/interpoliere new file mode 100755 index 0000000..d731a95 --- /dev/null +++ b/interpoliere @@ -0,0 +1,120 @@ +#!/bin/bash + +finde_interpolierten_wert() { + local t="$1" + local lv='0' + local lt='-273.15' + sed ' + /^\s*#/d + s/ -$// + t + s/ \S\+ / / + ' "${0%/*}/werte" \ + | if [ "x$2" = 'xinvers' ]; then + sed ' + s/^\(\S\+\) \(\S\+\)$/\2 \1/ + ' + else + cat + fi \ + | while read -r ct cv; do + if printf '(%s)-(%s)\n' "${ct}" "${t}" \ + | bc -l \ + | grep -q '^[^-]'; then + printf '((%s)-(%s))/((%s)-(%s))*((%s)-(%s))+(%s)\n' \ + "${t}" "${lt}" \ + "${ct}" "${lt}" \ + "${cv}" "${lv}" \ + "${lv}" \ + | bc -l + break + fi + lt="${ct}" + lv="${cv}" + done +} + +gib_absolute_luftfeuchte() { + printf '(%s)*(%s)/100\n' \ + "$(finde_interpolierten_wert "$1")" \ + "$2" \ + | bc -l +} + +fh=$( + curl -Ss 'http://wetter.mb.fh-jena.de/station/datenbank/php_giese/online.php' +) +fh_t=$( + printf '%s\n' "${fh}" \ + | sed ' + \@>Temperatur@ { + N + s@^.*\(\S\+ \)@\1@ + t + } + d + ' \ + | awk '{print $1}' +) +fh_rh=$( + printf '%s\n' "${fh}" \ + | sed ' + \@>Luftfeuchtigkeit@ { + N + s@^.*\(\S\+\) %\s*$@\1@ + t + } + d + ' +) + +fh_ah=$( + gib_absolute_luftfeuchte "${fh_t}" "${fh_rh}" +) +fh_tp=$( + finde_interpolierten_wert "${fh_ah}" invers +) + +kpi=$( + curl -Ss 'https://kpi.ddns.eckner.net/tmp/sensor' +) +kpi_rh=$( + printf '%s\n' "${kpi}" \ + | sed ' + s/^RH: \(\S\+\) %$/\1/ + t + d + ' +) +kpi_t=$( + printf '%s\n' "${kpi}" \ + | sed ' + s/^T: \(\S\+\) °C$/\1/ + t + d + ' +) + +kpi_ah=$( + gib_absolute_luftfeuchte "${kpi_t}" "${kpi_rh}" +) +kpi_tp=$( + finde_interpolierten_wert "${kpi_ah}" invers +) + +ah_anteil=$( + printf '(%s)/(%s)*100\n' "${kpi_ah}" "${fh_ah}" \ + | bc -l +) +kpi_tp_diff=$( + printf '(%s)-(%s)\n' "${kpi_t}" "${kpi_tp}" \ + | bc -l +) +fh_tp_diff=$( + printf '(%s)-(%s)\n' "${kpi_t}" "${fh_tp}" \ + | bc -l +) + +printf '%s %% so viel Wasser innen wie außen\n' "${ah_anteil}" +printf '%s K über innerem Taupunkt\n' "${kpi_tp_diff}" +printf '%s K über äußerem Taupunkt\n' "${fh_tp_diff}" -- cgit v1.2.3-54-g00ecf