Tide: Anzeige erster Testdaten
This commit is contained in:
50
web.py
50
web.py
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
Web Interface
|
||||
|
||||
Regelmäßiges Abfragen von Daten im Internet
|
||||
Regelmäßiges Abfragen von Daten aus dem Internet
|
||||
- NAVTEX
|
||||
- DWD
|
||||
- Pegelstände
|
||||
@@ -13,7 +13,7 @@ Regelmäßiges Abfragen von Daten im Internet
|
||||
import os
|
||||
import http.client
|
||||
import ssl
|
||||
import re
|
||||
import json
|
||||
import sqlite3
|
||||
import datetime
|
||||
from gi.repository import GLib
|
||||
@@ -35,7 +35,14 @@ class WebInterface():
|
||||
if self.cur.fetchone() == None:
|
||||
sql = ("CREATE TABLE IF NOT EXISTS station ("
|
||||
"uuid TEXT PRIMARY KEY NOT NULL,"
|
||||
"name TEXT"
|
||||
"name TEXT)"
|
||||
)
|
||||
self.cur.execute(sql)
|
||||
sql = ("CREATE TABLE IF NOT EXISTS data ("
|
||||
"timestamp TEXT PRIMARY KEY NOT NULL,"
|
||||
"astro NUMBER NOT NULL,"
|
||||
"forecast NUMBER,"
|
||||
"measurement NUMBER)"
|
||||
)
|
||||
self.cur.execute(sql)
|
||||
self.log.info(f"Created tide database: {dbpath}")
|
||||
@@ -44,6 +51,7 @@ class WebInterface():
|
||||
#GLib.timeout_add_seconds(cfg['tide_refresh'] * 60, self.on_timer)
|
||||
GLib.timeout_add_seconds(60 * 60, self.on_timer)
|
||||
self.running = True
|
||||
self.log.info(f"Web interface started")
|
||||
|
||||
def __del__(self):
|
||||
self.conn.close()
|
||||
@@ -62,7 +70,7 @@ class WebInterface():
|
||||
"""
|
||||
if local:
|
||||
# Für Tests um nicht permanent die Webseite abzufragen
|
||||
with open("DE__714P.json", "r") as fh:
|
||||
with open("/tmp/DE__714P.json", "r") as fh:
|
||||
content = fh.read()
|
||||
else:
|
||||
ssl_context = ssl.create_default_context()
|
||||
@@ -88,18 +96,26 @@ class WebInterface():
|
||||
|
||||
def refresh(self):
|
||||
self.log.info("Data refresh")
|
||||
data = self.bsh_get_data(True)
|
||||
"""
|
||||
sql = "INSERT INTO message (msgid, station, content) VALUES (?, ?, ?)"
|
||||
for m in messages:
|
||||
msg = self.parse_message(m)
|
||||
self.cur.execute("SELECT COUNT(*) FROM message WHERE msgid=?", (msg['id'],))
|
||||
result = self.cur.fetchone()
|
||||
if result[0] == 0:
|
||||
self.log.debug(f"NAVTEX: insert new message '{msg['id']}'")
|
||||
self.cur.execute(sql, (msg['id'], msg['station'], m))
|
||||
self.conn.commit()
|
||||
"""
|
||||
|
||||
data = self.bsh_get_data(False)
|
||||
#tmpfile = open("/tmp/DE__714P.json", "w")
|
||||
#tmpfile.write(data)
|
||||
#tmpfile.close()
|
||||
wvdata = json.loads(data)
|
||||
sql = "INSERT OR REPLACE INTO data (timestamp, astro, forecast, measurement) VALUES (?, ?, ?, ?)"
|
||||
for wv in wvdata["curve_forecast"]["data"]:
|
||||
self.cur.execute(sql, (wv['timestamp'], wv['astro'], wv['curveforecast'], wv['measurement']))
|
||||
self.conn.commit()
|
||||
|
||||
def housekeeping(self):
|
||||
self.log.info("Housekeeping")
|
||||
|
||||
def get_tide(self):
|
||||
# 12 Stunden
|
||||
sql = "select forecast from data where timestamp > '2025-10-05 12:00' and timestamp < '2025-10-06 22:00'"
|
||||
self.cur.execute(sql)
|
||||
return self.cur.fetchall()
|
||||
|
||||
def get_tide_minmax(self):
|
||||
sql = "select min(forecast), max(forecast) from data where timestamp > '2025-10-05 12:00' and timestamp < '2025-10-06 22:00'"
|
||||
self.cur.execute(sql)
|
||||
return self.cur.fetchone()
|
||||
|
||||
Reference in New Issue
Block a user