Tellico Sammlungsverwaltung mit 95_Tellico.pm

Begonnen von Prof. Dr. Peter Henning, 14 März 2025, 16:46:03

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

So, hier also ein neues Modul, noch sehr "Beta".

Ich habe meine Bibiothek (mit Büchern, ist gemeint) ebenso wie die DVD-Kollektion und weitere "Sammlungen" mit der Software Tellico katalogisiert.
https://tellico-project.org/

Mit diesem Modul kann abgefragt werden, ob ein bestimmter String in einem der Felder der Datenbank enthalten ist.

Beispielsweise werden die oben genannten Datenbanken in FHEM eingebunden durch
define TellicoBuch Tellico
define TellicoDVD Tellico

Dann müssen natürlich die jeweiligen Tellico-Files als Attribut TellicoFile angegeben werden.

Im nächsten Schritt führt man aus
get TellicoBuch fieldsDas holt aus dem Tellico-File die Namen aller Datenbankfelder und trägt diese in das Attribut TellicoFieldsAll ein.

Im dritten Schritt muss man sich überlegen, welche dieser Felder man mit FHEM abfragen will. Sagen wir mal bei Büchern die Felder Titel,Autor,Verlag.

Diese Untermenge wird dann als kommaseparierte List ein das Attribut TellicoFieldsSearch eingetragen.

Nach einem Seitenrefresh werden diese dann als get-Befehle angeboten, z.B.
get TellicoBuch Titel <String>
Machen wir also mal die Probe:
get TellicoBuch Titel Galaxis liefert das Ergebnis

ZitatThe following 3 results with title = "Galaxis"
 have been obtained searching 2547 records
-------------------------------------------------------------

1740
    title "Galaxisspatzen" and author(s)/casts
    room Treppenhaus, shelf no. 2, board no. 4

1888
    title "Im Herzen der Galaxis" and author(s)/casts Gregory Benford;
    room Bibliothek, shelf no. 1, board no. 6

2322
    title "Per Anhalter durch die Galaxis" and author(s)/casts Douglas Adams;
    room Bibliothek, shelf no. 7, board no. 3
Wie man sieht, sollten in der gegenwärtigen Version in der Tellico-Datenbank die Felder room, shelf, board vorhanden sein.

Die Ausgabe ist derzeit noch etwas rudimentär. Kurzfristig werde ich das Modul erweitern, das Ziel ist, dass ich mit meiner Textsteuerung auch fragen kann

"Wo ist das Buch mit dem Titel Fargonauten"

oder

"Habe ich das Buch mit dem Titel Revenge"

Dazu muss natürlich noch etwas Arbeit hineingesteckt werden, auch die Verwendung deutscher Sprache werde ich einbauen. Bisher bekomme ich auf die Frage immer noch so Antworten wie
ZitatThe following 1 results with title = "Revenge"
 have been obtained searching 2547 records
-------------------------------------------------------------

3549
    title "Revenge" and author(s)/casts Michael Cohen;
    room Wohnzimmer, shelf no. 7, board no. 3


Aber immerhin: Hier ist das Modul zum Testen, gerne nehme ich Anregungen entgegen.

LG

pah



Dr. Boris Neubert

Hallo Peter,

Danke für das Modul!

Ich habe es mit der Anleitung leicht zum Laufen gebracht und kann nun meinen Bestand abfragen.

Man kann immer was falsch machen :-) Mein FHEM hatte auf die Tellico-Datenbank keine Leserechte. Das steht dann aber auch im Log.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Prof. Dr. Peter Henning

#2
Hier die nächste Ausbaustufe. Neben einem neuen Ausgabeformat für TTS-Systeme und zwei Kurzformaten,
-- eines mit einer Ausgabezeile pro Fund
-- eines, das nur die Anzahl der gefundenen Einträge zählt,

gibt es jetzt auch ein API.
Tellico_Search(<devicename>,<feldname>,<zeichenkette>,<format>)ist als Perl-Funktion aufrufbar.

Außerdem kann man konfigurieren, wie man den Lagerort definiert. Neben Raum (Tellico-intern "room") kann man mit zwei Attributen noch sekundären Lagerort (default intern ist "shelf") und tertiären Lagerort (default intern ist "board") angeben.

Ferner ist die Suche nach "LagerOrt" (intern location) möglich. Sucht man z.B. mit der Zeichenkette "Wohnzimmer.1", werden alle Titel ausgegeben, die im Raum Wohnzimmer im Regal 1 stehen. "Bibliothek.2.3" findet alle Titel auf dem 3. Regalbrett im 2. Regal der Bibliothek.


Auch wenn das Interesse an dem Modul bisher nicht übermäßig groß ist, werde ich noch ein paar Erweiterungen einbauen. U.a. zur Versendung als Mail, direkten Ausgabe via TTS und zum Versand via Messenger.

LG

pah

Dr. Boris Neubert

#3
Hallo und Danke für die Erweiterung. Folgende Beobachtung habe ich gemacht:

Neues Modul eingespielt, reload 95_Tellico ausgeführt, Meldung auf der Konsole:
Too many arguments for main::Tellico_SearchFields at ./FHEM/95_Tellico.pm line 361, near "$format)"
Too many arguments for main::Tellico_SearchFields at ./FHEM/95_Tellico.pm line 605, near "undef)"
Auch bei mehrfacher Wiederholung.

Nach einem Neustart von FHEM funktionierte es dann.

Gut fände ich noch ein Format, das beispielsweise citation heißen könnte. Implementierung in Tellico_LineOut():

...
}elsif( $fmt eq "citation"){
   return "$authorscast: $title";
...
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Prof. Dr. Peter Henning

Ja, die Meldungen kamen, weil ich den Aufruf geändert habe. Ich war zu faul, das abzufangen - es geht ja nach dem Neustart.

Format citation ist eine gute Idee. Spezielle Wünsche?

LG

pah

Dr. Boris Neubert

Keine speziellen Wünsche ans Format, geht mir nur drum, den/die Autor(en) mit angezeigt zu bekommen. Hier allenfalls noch etwas schöner als mein dahingeworfener Code, dass der Trenner ": " nur erscheint, wenn sowohl $authorscast als auch $title nicht leer sind.

Wenn Du ein "richtiges" Zitatformat einbauen möchtest, wäre das natürlich super. Für Tellico selbst habe ich nämlich kein Template gefunden, das mir Autoren, Titel, Erscheinungsort, Jahr und ggf. Seitenanzahl ausgibt (in irgendeinem der standardisierten wissenschaftlichen Zitatformate). Da hätte ich mich mit XML und XLST herumplagen (= einarbeiten) müssen.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!