summaryrefslogtreecommitdiff
path: root/interpoliere
blob: d731a95fb41c93e016a8218d2d91d905e792db08 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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</td>@ {
      N
      s@^.*<strong>\(\S\+ \)@\1@
      t
    }
    d
  ' \
  | awk '{print $1}'
)
fh_rh=$(
  printf '%s\n' "${fh}" \
  | sed '
    \@>Luftfeuchtigkeit</td>@ {
      N
      s@^.*<strong>\(\S\+\) %</strong></td>\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}"