❤️ Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! ❤️
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
-
- Beiträge: 5
- Registriert: Di 27. Sep 2022, 23:47
Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Hallo liebe Forum-Teilnehmer,
ich möchte gerne Temperaturdaten, die im Minutenintervall in eine sqlite3-Datenbank geschrieben werden, mit LO Calc anzeigen (darstellen (Dashborad)) lassen. Daher soll LO Calc in regelmäßigen Anständen aktualisiert das Ergebnis eines sqlite-Views in einer LO Calc Zelle darstellen.
Hat jemand hierzu einen hilfreichen link, wo ich nachlesen kann, wie man so etwas realisieren kann unter Linux (Debian-based)?
LG Martin
ich möchte gerne Temperaturdaten, die im Minutenintervall in eine sqlite3-Datenbank geschrieben werden, mit LO Calc anzeigen (darstellen (Dashborad)) lassen. Daher soll LO Calc in regelmäßigen Anständen aktualisiert das Ergebnis eines sqlite-Views in einer LO Calc Zelle darstellen.
Hat jemand hierzu einen hilfreichen link, wo ich nachlesen kann, wie man so etwas realisieren kann unter Linux (Debian-based)?
LG Martin
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Da Du nicht schreibst, was Du schon hast, fang mit dem Handbuch zu LibreOffice Base an: https://de.libreoffice.org/get-help/documentation/
Die Nutzung von SQlite hat RobertG schon dort beschrieben.
Als zweites kannst Du deine Abfrage oder Ansicht über die Datenquellenansicht in eine Calc-Tabelle ziehen.
Zum regelmäßigen Aktualisieren wirst Du dann meiner Ansicht nach ein Macro brauchen.
Mfg, Jörn
PS: Irgendwann solltest Du noch ein paar Gedanken über gleichzeitigen Zugriff auf Sqlite-Datenbanken verschwenden, denn offensichtlich/eventuell soll Deine Datenbank ja von einem anderen Prozess geschrieben werden.
Die Nutzung von SQlite hat RobertG schon dort beschrieben.
Als zweites kannst Du deine Abfrage oder Ansicht über die Datenquellenansicht in eine Calc-Tabelle ziehen.
Zum regelmäßigen Aktualisieren wirst Du dann meiner Ansicht nach ein Macro brauchen.
Mfg, Jörn
PS: Irgendwann solltest Du noch ein paar Gedanken über gleichzeitigen Zugriff auf Sqlite-Datenbanken verschwenden, denn offensichtlich/eventuell soll Deine Datenbank ja von einem anderen Prozess geschrieben werden.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Ich bin kein Datenbankexperte, aber wenn der andere Prozess von dir kontrolliert|geschrieben wurde, wäre da ja schon mal die Möglichkeit die Daten zusätzlich direkt in einem Calc-dokument abzulegen.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Wir haben so etwas schon mal realisiert.
- Folgendes Makro unter "Meine Makros & Dialoge / Standard / Module1" ... oder in einer Extension speichern.
- Das Bash-Script erstellen,
- im Script und im Makro die Pfade anpassen, und
- dann kannst Du in jeder Calc-Datei mit "=Get_That_Value()" den aktuell abgefragten Wert anzeigen lassen.
Code: Alles auswählen
Function Get_That_Value()
Dim i As Integer
Dim s As String
shell("/Pfad/zu/folgendem/Script.sh")
' #!/bin/bash
' sqlite3 "/Pfad/zur/Datenbankdatei.db" "select Feld1 from Tabelle1 where Feld2 = 'foo'" > /Pfad/zur/Ergebnisdatei.txt
' exit 0
n=0
' Latenz für das Script abwarten
do while n < 20 and not FileExists("/Pfad/zur/Ergebnisdatei.txt")
n=n+1
wait 20
loop
if n >= 20 then
Get_That_Value = "#Ergebnis wurde nicht ermittelt! - Ergebnisdatei wurde nicht gefunden!#"
else
'Ergebnisdatei (ist in diesem Fall einzeilig) auslesen
i = Freefile
open "/Pfad/zur/Ergebnisdatei.txt" for Input as i
if not eof(i) then
Line Input #i, s
Get_That_Value = s
else
Get_That_Value = "#Ergebnis wurde nicht ermittelt! - Abfragefehler???#"
end if
close #i
shell("rm /Pfad/zur/Ergebnisdatei.txt")
end if
End Function
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
-
- Beiträge: 5
- Registriert: Di 27. Sep 2022, 23:47
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Hallo,
danke für die Rückmeldungen!
Die Temperaturdaten des DS18B20 werden mit einem Python-Skript in die sqlite DB geschrieben.
Was bereits funktioniert, ist, dass ich mit Python den Temperaturwert alle paar Sekunden in ein Calc-file(1) schreibe und dann diesen Wert in einem zweiten Calc-File(2) über die Funktion "Verknüpfung zu externen Daten ..." alle paar Sekunden aus dem ersten Calc-File(1) lese.
Hierbei kommt es jedoch zu Situationen, dass das Calc-file(1) zeitgleich geschrieben und gelesen wird und der Wert dann nicht aktualisiert werden kann.
Daher möchte ich eine saubere Lösen über eine sqlite DB.
Ich werde mir die von Euch bereitgestellten Lösungsansätze jetzt mal anschauen und weiter überlegen.
Liebe Dank
Martin
danke für die Rückmeldungen!
Die Temperaturdaten des DS18B20 werden mit einem Python-Skript in die sqlite DB geschrieben.
Was bereits funktioniert, ist, dass ich mit Python den Temperaturwert alle paar Sekunden in ein Calc-file(1) schreibe und dann diesen Wert in einem zweiten Calc-File(2) über die Funktion "Verknüpfung zu externen Daten ..." alle paar Sekunden aus dem ersten Calc-File(1) lese.
Hierbei kommt es jedoch zu Situationen, dass das Calc-file(1) zeitgleich geschrieben und gelesen wird und der Wert dann nicht aktualisiert werden kann.
Daher möchte ich eine saubere Lösen über eine sqlite DB.
Ich werde mir die von Euch bereitgestellten Lösungsansätze jetzt mal anschauen und weiter überlegen.
Liebe Dank
Martin
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Hallo
Das ist doch schon die halbe Miete, jetzt schaust du mal wie du die DB einbindest, der Link zu Roberts Dokumentation steht oben im Beitrag von Wanderer.Die Temperaturdaten des DS18B20 werden mit einem Python-Skript in die sqlite DB geschrieben
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
-
- Beiträge: 5
- Registriert: Di 27. Sep 2022, 23:47
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Hallo gogo,
Dein Skript holt einen gewünschten Wert aus sqlite und schreibt diesen in ein Textfile. Das wäre schon mal ein Ansatz. Aber die bekomme ich den Wert nun in Calc? Dein erwähntes Makro würde mich interessieren!
Dein Skript holt einen gewünschten Wert aus sqlite und schreibt diesen in ein Textfile. Das wäre schon mal ein Ansatz. Aber die bekomme ich den Wert nun in Calc? Dein erwähntes Makro würde mich interessieren!
-
- Beiträge: 5
- Registriert: Di 27. Sep 2022, 23:47
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Leider steht sqlite als Auswahl bei den Datenbanken nicht zur Verfügung. Muss ich den Umweg über ODBC gehen?
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
das Makro im Codeblock heißt "Function Get_That_Value()"
Wenn Du es unter "Meine Makros & Dialoge / Standard / Module1" ... oder in einer Extension speicherst wird es global verfüg bar und damit zu einer "benutzdefinierten Funktion" (Such' danach in der LO-Hilfe, dann sollte alles klar sein).
Der "open "/Pfad/zur/Ergebnisdatei.txt" for Input as i"-Block holt einfach Zeile 1 aus der Ergebnis-Datei und ordnet es dem Fuktions-Rückgabewert zu, so weiß Calc dann was es in die Zelle schreiben soll.
Bei gleichzeitigen Lese- und Schreibzugriffen kommst Du vermutlich um eine Serverlösung nicht umhin. Der Server regelt in dem Fall den Verkehr
. Das Makro sollte dann jedenfalls funktionieren, da der sqlite3 Befehl eine readonly Anweisung beinhaltet, und schlimmstenfalls einfach die Ergebnisdatei nicht geschrieben wird. Ein Fehler kann fast nur im Bash-Script auftreten, und das sollte sich dann trotzdem einfach ohne weitere Probleme beenden - eben nicht mit exit 0 sondern mit dem Error des sqlite3-Kommandos.
Wenn Du in Python firm bist, kannst Du aber auch aus LO heraus die SQLite-DB als Server verwenden, indem Du in LO ein Python-Script speicherst, das direkt auf Deine SQLite-DB zugreift. Um in LO Python verwenden zu können muss das Debian-Paket "libreoffice-script-provider-python" installiert sein! Dann kannst Du Dich an die LO-Doku halten (https://help.libreoffice.org/ und dann nach "python" suchen)
Wenn Du es unter "Meine Makros & Dialoge / Standard / Module1" ... oder in einer Extension speicherst wird es global verfüg bar und damit zu einer "benutzdefinierten Funktion" (Such' danach in der LO-Hilfe, dann sollte alles klar sein).
Der "open "/Pfad/zur/Ergebnisdatei.txt" for Input as i"-Block holt einfach Zeile 1 aus der Ergebnis-Datei und ordnet es dem Fuktions-Rückgabewert zu, so weiß Calc dann was es in die Zelle schreiben soll.
Bei gleichzeitigen Lese- und Schreibzugriffen kommst Du vermutlich um eine Serverlösung nicht umhin. Der Server regelt in dem Fall den Verkehr

Wenn Du in Python firm bist, kannst Du aber auch aus LO heraus die SQLite-DB als Server verwenden, indem Du in LO ein Python-Script speicherst, das direkt auf Deine SQLite-DB zugreift. Um in LO Python verwenden zu können muss das Debian-Paket "libreoffice-script-provider-python" installiert sein! Dann kannst Du Dich an die LO-Doku halten (https://help.libreoffice.org/ und dann nach "python" suchen)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: Daten (view) aus sqlite3 DB regelmäßig und automatisch auslesen
Es gibt keinen "nativen" Connector in Base, also musst Du einen Treiber installieren, ob ODBC oder JDBC bleibt Dir überlassen. Ich nutze ODBC unter Windows, daher schaue ich immer zuerst da...resuah.nitram hat geschrieben: ↑Mi 28. Sep 2022, 23:25...
Leider steht sqlite als Auswahl bei den Datenbanken nicht zur Verfügung. Muss ich den Umweg über ODBC gehen?
J.
PS: Da bei Dir nur ein Prozess schreibt, sollte es kein Problem geben, falls nicht eine beteilgte Implementierung ein File-Lock auf Ebene des Betriebssystems macht...
Vgl: https://stackoverflow.com/questions/406 ... ent-access
https://stackoverflow.com/questions/510 ... iple-users
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.