Compare commits
5 Commits
69412dc5fe
...
v1.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 47c3fbabf0 | |||
| d397ce377e | |||
| d764c5c256 | |||
| a56781dca3 | |||
| fc64239c88 |
@@ -32,6 +32,8 @@ The main program with html output is executed by entering
|
||||
python survBot.py -html path_for_html_output
|
||||
```
|
||||
|
||||
There are example stylesheets in the folder *stylesheets* that can be copied into the path_for_html_output if desired.
|
||||
|
||||
The GUI can be loaded via
|
||||
|
||||
```shell script
|
||||
|
||||
@@ -58,6 +58,8 @@ EMAIL:
|
||||
mailserver: "localhost"
|
||||
addresses: ["marcel.paffrath@rub.de", "kasper.fischer@rub.de"] # list of mail addresses for info mails
|
||||
sender: "webmaster@geophysik.ruhr-uni-bochum.de" # mail sender
|
||||
stations_blacklist: ['GR33'] # do not send emails for specific stations
|
||||
networks_blacklist: [] # do not send emails for specific network
|
||||
|
||||
# names for plotting of the above defined parameter "channels" in the same order
|
||||
channel_names: ["Temperature (°C)", "230V/12V Status (V)", "Router/Charger State (V)", "Logger Voltage (V)"]
|
||||
|
||||
39
stylesheets/desktop.css
Normal file
39
stylesheets/desktop.css
Normal file
@@ -0,0 +1,39 @@
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
place-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
td {
|
||||
border-radius: 4px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #999;
|
||||
border-radius: 4px;
|
||||
padding: 3px 1px;
|
||||
}
|
||||
|
||||
a:link, a:visited {
|
||||
background-color: #ccc;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: #aaa;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.blink-bg {
|
||||
animation: blinkingBackground 2s infinite;
|
||||
}
|
||||
@keyframes blinkingBackground{
|
||||
0% { background-color: #ffcc00;}
|
||||
50% { background-color: #ff3200;}
|
||||
100% { background-color: #ffcc00;}
|
||||
}
|
||||
43
stylesheets/mobile.css
Normal file
43
stylesheets/mobile.css
Normal file
@@ -0,0 +1,43 @@
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
place-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
td {
|
||||
border-radius: 4px;
|
||||
padding: 10px 2px;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #999;
|
||||
border-radius: 4px;
|
||||
padding: 10px, 2px;
|
||||
}
|
||||
|
||||
a:link {
|
||||
background-color: #ccc;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: #aaa;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.hidden-mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.blink-bg {
|
||||
animation: blinkingBackground 2s infinite;
|
||||
}
|
||||
@keyframes blinkingBackground{
|
||||
0% { background-color: #ffee00;}
|
||||
50% { background-color: #ff3200;}
|
||||
100% { background-color: #ffee00;}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ ulimit -s 8192
|
||||
#$ -cwd
|
||||
#$ -pe smp 1
|
||||
#$ -N survBot_bg
|
||||
##$ -l os=*stretch
|
||||
#$ -l os=*stretch
|
||||
|
||||
source /opt/anaconda3/etc/profile.d/conda.sh
|
||||
conda activate py37
|
||||
|
||||
18
survBot.py
18
survBot.py
@@ -157,7 +157,7 @@ class SurveillanceBot(object):
|
||||
if filename in self.filenames_read:
|
||||
continue
|
||||
try:
|
||||
st_new = read(filename)
|
||||
st_new = read(filename, dtype=float)
|
||||
# add file to read filenames to prevent re-reading in case it is not the current day (or end of
|
||||
# previous day)
|
||||
if not filename.endswith(f'{current_day:03}') and not (
|
||||
@@ -167,7 +167,7 @@ class SurveillanceBot(object):
|
||||
print(f'Could not read file {filename}:', e)
|
||||
continue
|
||||
self.dataStream += st_new
|
||||
self.dataStream.merge()
|
||||
self.dataStream.merge(fill_value=np.nan)
|
||||
|
||||
# organise data in dictionary with key for each station
|
||||
for trace in self.dataStream:
|
||||
@@ -581,11 +581,25 @@ class StationQC(object):
|
||||
if self.verbosity:
|
||||
print('Mail functionality disabled. Return')
|
||||
return
|
||||
|
||||
mail_params = self.parameters.get('EMAIL')
|
||||
if not mail_params:
|
||||
if self.verbosity:
|
||||
print('parameter "EMAIL" not set in parameter file. Return')
|
||||
return
|
||||
|
||||
stations_blacklist = mail_params.get('stations_blacklist')
|
||||
if stations_blacklist and self.station in stations_blacklist:
|
||||
if self.verbosity:
|
||||
print(f'Station {self.station} listed in blacklist. Return')
|
||||
return
|
||||
|
||||
networks_blacklist = mail_params.get('networks_blacklist')
|
||||
if networks_blacklist and self.network in networks_blacklist:
|
||||
if self.verbosity:
|
||||
print(f'Station {self.station} of network {self.network} listed in blacklist. Return')
|
||||
return
|
||||
|
||||
sender = mail_params.get('sender')
|
||||
addresses = mail_params.get('addresses')
|
||||
server = mail_params.get('mailserver')
|
||||
|
||||
@@ -14,19 +14,13 @@ def write_html_header(fobj, refresh_rate=10):
|
||||
header = ['<!DOCTYPE html>',
|
||||
'<html>',
|
||||
'<head>',
|
||||
'<link rel="stylesheet" href="stylesheet.css">',
|
||||
' <link rel="stylesheet" media="only screen and (max-width: 400px)" href="mobile.css" />',
|
||||
' <link rel="stylesheet" media="only screen and (min-width: 401px)" href="desktop.css" />',
|
||||
'</head>',
|
||||
f'<meta http-equiv="refresh" content="{refresh_rate}" >',
|
||||
'<meta charset="utf-8">',
|
||||
'<meta name="viewport" content="width=device-width, initial-scale=1">',
|
||||
'<link rel="stylesheet" media="only screen and (max-width: 400px)" href="mobile.css" />',
|
||||
'<link rel="stylesheet" media="only screen and (min-width: 401px)" href="desktop.css" />',
|
||||
'<body>']
|
||||
# style = ['<style>',
|
||||
# 'table, th, td {',
|
||||
# 'border:1px solid black;',
|
||||
# '}',
|
||||
# '</style>',]
|
||||
for item in header:
|
||||
fobj.write(item + '\n')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user