Schrolli91 / BOSWatch

Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
https://bwcc.boswatch.de
GNU General Public License v2.0
132 stars 60 forks source link

Plugin System verbessern/ausbauen #229

Closed Schrolli91 closed 6 years ago

Schrolli91 commented 7 years ago

Morgen zusammen, ich möchte die nächsten Tage/Wochen etwas am Plugin System Arbeiten. Dachte dabei daran, eine Klasse Plugin zu erstellen, welche alle nötigen Funktionen enthält. Die einzelnen Plugins leiten dann von ihr als Basisklasse ab und überschreiben implementierte Methoden dieser.

Angedacht waren bisher:

onLoad() #wenn das Plugin vom pluginLoader importiert wird
beforeRun() #vor jeder Ausführung (z.B MySQL connect)
zvei()
fms()
pocsag()
afterRun() #nach jeder Ausführung (z.B MySQL dissconnect)
onUnload() #also zum Beenden (z.B Hardware Schnittstelle freigeben)

Evtl fallen euch weitere Fälle ein, die in die Basisklasse implementiert werden sollten? Ich möchte die Erstellung der Plugins so weit wie möglich vereinfachen, sodass man sich keine Gedanken um die Infrastruktur usw. machen muss, sondern einfach nur jene Methoden überschreibt, welche man in seinem Plugin eben benötigt.

Was haltet ihr von der Grundsätzlichen Idee?

Generell Frage ich mich ob es Sinn macht BOSWatch auf Python 3.# umzustricken? So viele Änderungen dürften vorerst nicht nötig sein um es unter 3.# lauffähig zu machen. Im Anschluss kann man nach und nach Funktionen in eigene Klassen auslagern und so langsam den Ansatz der Objekt-Orientierung umsetzen. Was haltet Ihr davon?

flothi commented 7 years ago

Mir fällt bei dem Lesen der Idee direkt mal BOSWatch 3.0 ein :-D

Aber im Ernst: Die plugin-Lösung gefällt mir, unterstütze ich voll, ebenso die Umsetzung auf Python 3.x

Und mir fällt in dem Zusammenhang direkt ein, dass wir eine Art Entwickler-Doku stricken können/müssen/dürfen...

Schrolli91 commented 7 years ago

Zwecks docu werfe ich hier doxygen in den Raum...

flothi commented 7 years ago

Gekauft

Smith-fms commented 7 years ago

Wäre ein Grund mal wieder meine Python Kenntnisse zu trainieren... Ich bin zwar nicht so gut wie ihr, aber ich kann gut googlen. :-) Vor allem beim Thema Django könnte es bei Zeiten in den Fingern jucken.... Doxygen sieht gut aus! Könnte gut funktionieren!

Schrolli91 commented 7 years ago

Dann sind wir jetzt an dem Punkt wo ein Forum unumgänglich ist... Weil ein umschrieben auf Python 3.6 sowie ein oop Ansatz sollten vernünftig geplant werden...

flothi commented 7 years ago

An Webspace (vServer) sollte es nicht mangeln ;-)

Schrolli91 commented 7 years ago

Muss ja nichts großes sein. Aber grad bei so einem großen Eingriff sollte alles einigermaßen koordiniert zugehen. Denn ich denke das ein oder andere Modul muss durchaus neu geschrieben werden. Einfach weil der aktuelle Stand teilweise gefühlt eine Bastel-Lösung ist - begründet auf früherem Unwissen... Da wäre es schön wenn, bevor irgendwas neu gemacht wird, man sich erst mal über Funktion, Sinnhaftigkeit und Erweiterbarkeit unterhält ;-)

Hab da schon mal ein paar Gedanken festgehalten, darf gern erweitert werden... https://github.com/Schrolli91/BOSWatch/blob/develop/Konzept.md

Stellt sich die Frage ob umfrickeln wirklich Sinn macht, oder ob man nach und nach einfach alle Funktionen komplett neu schreibt und implementiert?

EDIT: Ein weitere Idee wäre, die gesamte Config + Filter Regeln + Beschreibungstexte (csv) + usw... in eine sqlite3 Datenbank zu packen,. Python bringt im Standard schon alles mit. Da wäre nur die Frage wie man die Bearbeitung der Daten gestaltet. Weis nicht ob das wirklich sinnvoll wäre...

carrier92 commented 7 years ago

der sqlite ansatz würde mir für die ganze config Geschichte sehr engegen kommen, dann gibt es auch keine Probleme mit unterschiedlichen ini parsern.

flothi commented 7 years ago

Ich würde vorschlagen (s. auch Diskussion im Pullrequest zum Config-Editor): Eine grundlegende Config, sodass Boswatch läuft, sollte auf file-Ebene (also ini-Datei) laufen, alles darüber hinaus (Parameter wie Doppeltexte etc, FMS, ZVEI, ...) schieben wir in die sqlite-db.

Schrolli91 commented 6 years ago

Hat sich mit BW 3 eh erledigt