Ankündigung

Einklappen
Keine Ankündigung bisher.

CSV-Datei importieren - Diagramm anzeigen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Msinn
    antwortet
    Ein „Pack Table“ ist nicht mit drin:

    SQLite kennt ein solches Kommando nicht. Du kannst da nur die Luft aus der ganzen Datenbnk rauslassen. Das Kommando heißt VACUUM, kann aber auf geöffneten Datenbanken nicht ausgeführt werden.

    Durch das regelmäßige Löschen ist ein Packen auch im allgeminen nicht notwendig, da die frei gewordenen Blöcke für neue Datensätze verwendet werden.

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Da alte Werte regelmäßig gelöscht werden, wächst die Datenbank gar nicht erst an.
    [Offtopic] Nur mal so aus Interesse, Martin: Wird da wie in alten Zeiten nur löschmarkiert, oder ist da auch gleich ein 'pack table' mit drin?
    /tom

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von Maexle Beitrag anzeigen
    Dann bringt es ja eigentlich nicht wirklich was....
    Aber sicher bringt das was!!!!

    Da alte Werte regelmäßig gelöscht werden, wächst die Datenbank gar nicht erst an.
    NUR für den Fall, dass Du das Attribut erst nachträglich setzt, musst Du die Datenbank nach Abschluss des Löschvorgangs einmalig verkleinern. Das Verkleinern kann die Datenbank nun mal nicht, wenn sie online ist.

    Einen Kommentar schreiben:


  • Maexle
    antwortet
    Tom Bombadil

    Danke werde ich mir morgen ansehen (bin heute nicht Vorort)

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Maexle Beitrag anzeigen
    stimmt "dd" ist ja mehr oder weniger eine 1:1 Kopie --> "cp" wäre wohl richtiger
    dd nimmt man üblicherweise, um Partitionen oder ganze Platten zu kopieren bzw. zu clonen.
    /tom

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Maexle Beitrag anzeigen
    Gute Frage... Image für einen RasPi hier aus dem Forum... klick "für SQLite 3 und MySQL"
    <smarthomeNG-dir>/etc/plugin.yaml, unter database --> driver:
    Code:
    database:
        plugin_name: database
        driver: pymysql
        connect:
          - host:192.168.178.9
          - port:3306
          - database:smarthome
          - user:kennst_du_nicht
          - password:hättest_du_gern
    Vielleicht reicht Dir aber auch schon ein Aufruf von <raspi-ip>:8383/admin aus. Unter Plugins kanns Du das Web IF des Database-Moduls aufrufen, wo Du Dir die Daten ansehen und auch nach csv exportieren kannst. Allerdings sind die Filterfunktionen dort gelinde gesagt 'rudimentär' (zumindest in der alten Version, die ich hier fahre). Daher auch die Empfehlung mit den 'echten' Verwaltungstools für die bei Dir eingesetzte Datenbank.

    /tom

    Einen Kommentar schreiben:


  • Maexle
    antwortet
    Zitat von Msinn Beitrag anzeigen
    nur leerer aber nicht kleiner
    Dann bringt es ja eigentlich nicht wirklich was....


    Zitat von Tom Bombadil Beitrag anzeigen
    SQLite, mySQL/MariaDB, rrd
    Gute Frage... Image für einen RasPi hier aus dem Forum... klick "für SQLite 3 und MySQL"


    Zitat von Tom Bombadil Beitrag anzeigen
    dd = 'disc dump'
    stimmt "dd" ist ja mehr oder weniger eine 1:1 Kopie --> "cp" wäre wohl richtiger

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    Zitat von Maexle Beitrag anzeigen
    Datenbank exportieren -- "Pfad" mittels "dd" auf anderen Rechner
    dd = 'disc dump' - ob Du das willst?
    Über welche Datenbank (SQLite, mySQL/MariaDB, rrd) reden wir denn nun?
    Danach schauen wir uns an, wie Du an die von Dir gewünschten Daten über das passende Management-Tool bzw. mit 'Bordmitteln' kommst ...
    /tom

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Es gibt auch ein Attribut, mit dem man das malimale Alter für Item Werte festlegen kann. Ältere Werte werden dann automatisch gelöscht. Die Datenbank wird dabei nur leerer aber nicht kleiner. Nach dem Löschen einer geoßen Zahl an Einträgen ist es sinnvoll (bei nicht laufende, SmartHomeNG) mit DQLite Bordmitteln die Datenbank zu verdichten.

    Achtung: Wenn man das Attribut für Items setzt, für die es viele alte Werte gibt, kann das aufräumen einige Zeit in Anspruch nehmen.

    Einen Kommentar schreiben:


  • Maexle
    antwortet
    Danke Tom für deine Rückmeldung.


    Zitat von Tom Bombadil Beitrag anzeigen
    obigen csv-Export ... echter, einfacher SQL-Dump
    keine Ahnung was ein "einfacher SQL-Dump" ist...

    Mit Excel komme ich ganz passabel zurecht. Ein wirkliches Backup der Daten brauche ich auch nicht wirklich.
    Ein Beispiel: Bei uns ist es des Öfteren recht windig. Deshalb werden die Werte vom KNX-Windsensor in die DB geschrieben. (Plot-Darstellung letzten paar Stunden/Tage -- die ganzen "Spielereien" halt.) Kommt es zu einem evtl. Schaden (am Haus etc.) wäre es halt fein, dem Versicherer vorzulegen. "Schau her die letzten 462 Tage war die max. Windgeschwindigkeit 18,2 m/s gestern waren es 23,4 m/s jetzt ist der Rollo kaputt"....

    Da ich das in Excel in kurzer Zeit rausziehen kann, wäre das mein Favorit. Für jemanden der sich mit SQL auskennt, ist dieser Zwischenschritt natürlich unnötig.

    Programm(e) werde ich mir am Rechner ansehen...

    Vorgang: - so richtig?
    1. SHNG stoppen -- sudo systemctl stop smarthome.service
    2. Datenbank exportieren -- "Pfad" mittels "dd" auf anderen Rechner
    3. SHNG starten -- sudo systemctl start smarthome.service

    Zitat von Tom Bombadil Beitrag anzeigen
    Items per maxage

    Habe ich den database_maxage richtig verstanden? Siehe Beispiel:

    Code:
    # Test Item
    
    test:
          item:
             type: num
             database: yes oder init oder true (je nachdem was vorher dort stand)
             database_maxage: 14      ## 14 Tage bzw. 356 für ein Jahr etc....

    Danke Gruß Max

    Einen Kommentar schreiben:


  • Tom Bombadil
    antwortet
    mySQL / MariaDB csv Export: Klick, SQLite csv Export: Klick. Anschließend die csv in Excel importieren.

    Zeitstempel von vor 6 Monaten ermitteln: Klick.

    Ein select-Stament zum Löschen sollte in phpMyAdmin oder SQLiteStudio/SQLite3Tool zusammenklickbar sein. Alternativ zum händischen Löschen lassen sich wohl mittlerweile auch die Items per maxage in shNG direkt so konfigurieren, dass sie nur für eine gewisse Zeit vorgehalten werden (habe ich aber noch nicht ausprobiert).

    Für fraglich halte ich moment obigen csv-Export - wenn es als Backup dienen soll: Warum nicht gleich ein echter, einfacher SQL-Dump?

    /tom
    Zuletzt geändert von Tom Bombadil; 10.01.2022, 14:57.

    Einen Kommentar schreiben:


  • Maexle
    antwortet
    Zitat von Acidrain Beitrag anzeigen
    in den SQlite-Browser reinkopiere und ausführe. Ist zwar 1x im Monat ein paar Minuten Arbeit,

    Hab euch mal mein Excel-Template angehängt.

    Hallo zusammen,

    ich wäre am umgekehrten Weg interessiert. SHNG-Datenbank als csv, oder Excel-Datei exportieren. Anschließend z.B. alle Werte "Alter > halbes Jahr" aus DB entfernen - ist das möglich?

    Einen Kommentar schreiben:


  • Acidrain
    antwortet
    Genau so werde ich das auch machen, bin gerade dabei mir eine Smartvisu-App zu bauen, mit der ich Zählerdaten erfassen und in die Smarthome-Datenbank schreiben kann. Kommunikation mit der Visu über JSON, Datenbankzugriff über das SQlite-Paket von PHP. Komme aber momentan nicht dazu, das fertigzustellen.

    Wer so lange nicht warten kann: Im Moment importiere ich die Daten manuell. Ich erfasse die Zählerstände per Excel und habe mir mit Formeln die nötigen SQL-Statements zusammengebaut, die ich dann einfach per copy&paste in den SQlite-Browser reinkopiere und ausführe. Ist zwar 1x im Monat ein paar Minuten Arbeit, dafür sieht es in der Visu gut aus

    Hab euch mal mein Excel-Template angehängt.

    Viele Grüße
    Dominik
    Angehängte Dateien

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Als Idee schau mal hier. Du brauchst eigentlich ja gar kein smarthome.py / smartvisu sondern ein wenig code, der die CSV via webserver zur Verfügung stellt und ein wenig Javascript/HTML für die Darstellung. Das kannst Du natürlich zusammen kombinieren...

    Gruß,
    Bernd

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Marcel,

    man (Du) könnte die Werte direkt in die SQLite DB pumpen, das ist aber nicht so einfach ohne ein bisschen programmieren zu können.

    bis bald

    Marcus

    Einen Kommentar schreiben:

Lädt...
X