61 lines
2.2 KiB
Python
Executable file
61 lines
2.2 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import requests
|
|
from bs4 import BeautifulSoup
|
|
import sqlite3
|
|
|
|
# URL der HTML-Seite, die Sie abrufen möchten
|
|
url = "http://localhost:5010"
|
|
|
|
# HTTP-Anfrage senden und den HTML-Inhalt abrufen
|
|
response = requests.get(url)
|
|
html = response.text
|
|
|
|
# HTML-Dokument in BeautifulSoup-Objekt umwandeln
|
|
soup = BeautifulSoup(html, 'html.parser')
|
|
|
|
# Die Daten in der Tabelle extrahieren
|
|
table = soup.find('table')
|
|
rows = table.find_all('tr')
|
|
|
|
# Initialisieren der Tanknummern mit 1 und 2
|
|
tank1_nummer = 1
|
|
tank2_nummer = 2
|
|
|
|
# SQLite-Datenbankverbindung herstellen
|
|
db_path = '/home/divers/datenbank/temperaturen.db'
|
|
conn = sqlite3.connect(db_path)
|
|
cursor = conn.cursor()
|
|
|
|
# Funktion zum Einfügen von Tanknummern und Temperaturwerten in die Datenbank
|
|
def insert_temperature(table_name, tanknummer, temperatur):
|
|
cursor.execute(f"INSERT INTO {table_name} (messstelle, temperatur) VALUES (?, ?)",
|
|
(tanknummer, temperatur))
|
|
conn.commit()
|
|
|
|
# Daten in die Datenbank eintragen (Tabelle "istwert")
|
|
for row in rows[1:-1]:
|
|
columns = row.find_all('td')
|
|
if len(columns) >= 3:
|
|
tank_name = columns[0].text
|
|
istwert_text = columns[1].text.strip() # Temperaturwert ohne Leerzeichen am Anfang/Ende
|
|
if istwert_text: # Nur wenn die Zeichenfolge nicht leer ist
|
|
istwert = float(istwert_text.split('°')[0]) # Extrahieren des Istwertes und Konvertieren in Float
|
|
tank_nummer = int(tank_name.split()[-1]) # Extrahieren der Tanknummer aus dem Namen
|
|
insert_temperature("istwert", tank_nummer, istwert)
|
|
|
|
# Daten in die Datenbank eintragen (Tabelle "sollwert")
|
|
for row in rows[1:-1]:
|
|
columns = row.find_all('td')
|
|
if len(columns) >= 3:
|
|
tank_name = columns[0].text
|
|
sollwert_text = columns[2].text.strip() # Temperaturwert ohne Leerzeichen am Anfang/Ende
|
|
if sollwert_text: # Nur wenn die Zeichenfolge nicht leer ist
|
|
sollwert = float(sollwert_text.split('°')[0]) # Extrahieren des Sollwertes und Konvertieren in Float
|
|
tank_nummer = int(tank_name.split()[-1]) # Extrahieren der Tanknummer aus dem Namen
|
|
insert_temperature("sollwert", tank_nummer, sollwert)
|
|
|
|
# Die Datenbankverbindung schließen
|
|
conn.close()
|
|
|