Neues Modul für clever-tanken.de

Begonnen von sven.luebke, 28 Januar 2026, 12:18:28

Vorheriges Thema - Nächstes Thema

sven.luebke

Hallo FHEM-Gemeinde!

Da ich das Hinzufügen von neuen Tankstellen über HTTPMOD zu umständlich fand und ich sowieso mal wieder ein bisschen mit Perl programmieren wollte, hab ich ein eigenes Modul für das Abrufen von Spritpreisen bei clever-tanken.de erstellt. Das Modul ist derzeit maximal im Alpha-Stadium, Dokumentation ist noch nicht angepasst und da es mein erstes Modul für FHEM ist, weiß ich nicht, ob ich alle Dinge beachtet habe.

Zum Anpreisen der Vorteile kann ich derzeit nur nennen, dass das Festlegen der Tanken mittels

attr CleverTanken SIDList 149142,7149,28883
sehr viel kürzer ist und schneller geht und dass das Modul bei Bedarf ein fertiges stateFormat in Form einer Tabelle liefert.
Du darfst diesen Dateianhang nicht ansehen.

Hat jemand Interesse daran oder findet Ihr die HTTPMOD-Variante besser?


Viele Grüße
Sven


betateilchen

Man kann natürlich für alles ein "Modul" schreiben, aber ein HTTPMOD mit insgesamt 7 Zeilen für die Konfiguration (DEF + 6 Attribute für 3 Spritsorten einer Tankstelle) finde ich jetzt auch nicht extrem kompliziert.

Und wenn man so ein device mal fertiggestellt hat, kann man es ja einfach mit "copy" duplizieren und muss meist nur die Station-ID im DEF anpassen.

Um zu beurteilen, ob Dein Modul wirklich etwas grundlegend anderes macht, reicht ein Screenshot vom Ergebnis nicht aus. Dazu müsste man schon den Code selbst sehen.

Zitat von: sven.luebke am 28 Januar 2026, 12:18:28da es mein erstes Modul für FHEM ist, weiß ich nicht, ob ich alle Dinge beachtet habe.

Dafür gibt es DevelopmentGuidelines, da stehen die wichtigsten Dinge drin, auf die man bei der Entwicklung achten sollte.

https://wiki.fhem.de/wiki/Kategorie:Development
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rabehd

Man kann geteilter Meinung sein, ob ein Modul oder je ein HTTPMOD und eine readingsGroup besser ist.
Mir ist das Bildchen auch zu wenig.

Kann ich die Spritsorten konfigurieren? Ich brauche nur eine Sorte.
Wird der beste Preis hervorgehoben?
Kann man den Ort auch anzeigen lassen oder nur die Straße?

Zitat von: sven.luebke am 28 Januar 2026, 12:18:28das Modul bei Bedarf ein fertiges stateFormat in Form einer Tabelle liefert
Das zu bearbeiten wäre wohl die Antwort auf meine Fragen.
Auch funktionierende Lösungen kann man hinterfragen.

sven.luebke

#3
Zitat von: betateilchen am 28 Januar 2026, 12:54:33Und wenn man so ein device mal fertiggestellt hat, kann man es ja einfach mit "copy" duplizieren und muss meist nur die Station-ID im DEF anpassen.

Um zu beurteilen, ob Dein Modul wirklich etwas grundlegend anderes macht, reicht ein Screenshot vom Ergebnis nicht aus. Dazu müsste man schon den Code selbst sehen.
Eine Tankstellendefinition hat bei mir genau 19 Zeilen (ohne UUID und DbLogInclude). Die Station-ID anzupassen ist wirklich nicht weiter schwer. Mich haben dann eher die Änderung der ganzen Attributnamen für jede einzelne Tankstelle genervt. Klar, es gibt Search/Replace. Außerdem störte ich mich an den ewig gleichen Definitionen für jede einzelne Tankstelle. Da ändert sich ja nichts dran. Ich hatte kurz gesucht, ob es eine Art Template gibt, oder ob man diese Definitionen als Konstante definieren kann. Bei der Idee bin ich aber irgendwie wieder abgestorben. Kennt Ihr eine Möglichkeit für so etwas?

Summa summarum sind wir für 10 Tankstellen bei 200 Zeilen Config, mit meinem Modul liege ich bei 7 Zeilen Config. Damit ist mein Ziel schon erreicht :). Bei mir läuft FHEM auf einer Fritzbox, ich hab nicht so viel RAM ;).

Mein Modul macht nicht viel anders. Es holt sich auch nur die HTML-Seite und parsed die Daten. Einzig allein die Suche nach den Daten ist etwas anders und fokussierter. Das kann Vorteile, aber genauso auch Nachteile mit sich bringen. Das HTTPMOD sucht ja global nach den Ausdrücken. Mein Modul nutzt HTML::TreeBuilder und "steuert" die Elemente/Informationen fokussierter an.

sven.luebke

Zitat von: rabehd am 28 Januar 2026, 13:27:14Kann ich die Spritsorten konfigurieren? Ich brauche nur eine Sorte.
Wird der beste Preis hervorgehoben?
Kann man den Ort auch anzeigen lassen oder nur die Straße?
Dass man die Spritsorte konfigurieren kann, habe ich gerade eingebaut. Die Tabelle wird dadurch schmaler und zeigt z.B. nur noch E10 an.
Der beste Preis wird noch nicht hervorgehoben, dafür müsste ich mir etwas bei den Readings überlegen. Setzt man das Reading des besten Preises per HTML z.B. auf "bold", dann kann man die Preise nicht mehr vernünftig in einer Datenbank ablegen. Es müsste also ein zusätzliches Reading für den besten Preis definiert werden, sollte aber kein Problem sein.
Den Ort kann man auch anzeigen lassen, auch die PLZ wird herausgefiltert. Das hab ich aber bisher noch nicht in die Readings übernommen. Frei konfigurierbar ist es aber derzeit noch nicht. Wie die Angabe der Tankstelle definiert ist, steht direkt im Sourcecode.

betateilchen

Zitat von: sven.luebke am 28 Januar 2026, 16:47:58Ich hatte kurz gesucht, ob es eine Art Template gibt,

Gibt es, nennt sich AttrTemplate.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!