NEWS
Analytics-Adapter / DB-Harmonisierung
-
Mal als Aufwandsminimierung beim Suchen für mich ganz uneigenützig :mrgreen: die Frage in die Runde:
Kann ein Adapter sich auch als zwei verschiedene Adapter registrieren?
Sozusagen mit Alias?
Von Außen darf nichts davon auffallen….
-
Nein.
Für was sollte man so etwas brauchen?
Gesendet von meinem m8 mit Tapatalk
-
Das ist noch nicht spruchreif.Ich prüfe gerade die Optionen, die ich habe.
Also ein Adapter, zwei Gesichter…..?
-
Also an der Stelle musst DU zwei nom Pakete mit unterschiedlichen namen haben und der Adapter muss dann auch "doppelt" ins Repository - und er beiden Namen halt.
Jeder muss passend und korrekt mit seine Namen eine package.json und io-package.json haben
-
Mist. Ich will erreichen, dass ein Adapter sich für einen anderen ausgeben kann. Oder zumindest eine Instanz eines anderen Adapter bildet, damit bestehender Code nicht bricht. So etwas wie ein gesteuerter Alias auf js-controller-Ebene.
-
sinn und zweck ???
-
Ja, jetzt bitte mal den exakten Usecase sagen …
-
Du hast Adapter A, er ist schon lange im ioBroker Universum mit dabei und weit verbreitet. Jetzt kommt Adapter B. Er kann u.a. alles was A kann, aber macht wesentlich mehr. Er soll A (vielleicht sogar noch zusätzlich C) ablösen, ohne dass Anwender oder andere Entwickler etwas ändern müssen.
Lösungsansätze:
1. Der Entwickler von A könnt prüfen, ob B installiert ist und dann seine Messages zu B umrouten…. Doch was ist mit den Objekten?
2. Alias im js-controller einführen
3. Es bleiben lassen, weil ... (insert breaking changes here)
Ich will es mir nicht so einfach machen und 3. ohne Diskussion akzeptieren.
Gibt es noch andere Ansätze/Ideen?
-
Das würde das gesamte Adapter-Konzept durcheinanderbringen. Jeder Adapter hat seine Objekte in seinem Namespace.
Also wenn ein neuer Adapter kommt der andere ablösen kann (warum auch immer neu und nicht die anderen Adapter sinnvoll erweitern?) dann kann an ggf die Konfiguration der anderen Adapter einlesen/Import erlauben aber dann würde ich es trennen.
Bitte auch bedenken das Adapter sinnvoll abgetrennte Funktionen bieten sollten. Nicht Dinge zusammenmischen die nicht zusammengehören!! (Haben schon den radar der neben der Hauptaufgabe auch Druckerpatronen und Unwetterdaten bereitstellt … hmmmm... findet kein User :-()
Also ich würde die komplexität gering halten - und das heisst im Zweifel das ein User einmalig Objekt-IDs vom alten auf den neuen Adapter umstellen muss. Und das ist dann so und gut so
Was auf der großen Roadmap steht sind Virtuelle Objekte. Die Idee ist hier das man jedem Objekt noch einen virtuellen namen geben kann den man dann Adapterunabhängig in einem "virtual"-Namespace benutzen kann. Aber wie das jemand kapselt obliegt dann jedem user selbst und müssen auch rückwärtskompatibel bleiben.
-
Nehmen wir mal als hypothetisches Beispiel für A den History-Adapter… Und den SQL-Adapter. Und den Influx-DB-Adapter. Deine Kids, apollon77.
Alle drei machen prinzipiell das Gleiche. Der SQL-Adapter hat schon die Möglichkeit verschiedene Backend-DBs einzubinden. Warum nicht auch für File und influx? ...
-> Entwickung hin zu einer zentralen Datenschnittstelle für ioBroker. -> Dafür ein zentraler Adapter.
Vereinfachung für die Anwender.
Möglichkeit dort das Backend auszutauschen.
Datenmigration. Backup. Alles an einer Stelle.
Aggregatoren.
Abstraktion, Möglichkeit, Text-Files mit SQL abzufragen,…
...
Ich finde, das ioBroker von Entwicker für Entwickler geschrieben ist. Nichts schlechtes dabei. Doch was ist mit den Anwendern, die froh sind, dass der ioBroker überhaupt installiert ist... Abstraktion der Komplexität statt immer komplexer zu werden.
-
Ich bin kein Entwickler und verstehe nicht was du machen willst. Das Adapter System ist simpel und gut verständlich.
Gesendet von meinem SM-G930F mit Tapatalk
-
Jupp. Adapter finde ich auch gut. Ist universell. Wollte auf die Antwort von apollon77 eingehen.
-
Das Adapter System ist simpel und gut verständlich. `
und soll vor allem das große Problem von ccu.io vermeiden.Jeder Adapter soll nur so viel wie unbedingt nötig machen, für jede Funktion ein anderer (in Grenzen natürlich!).
Wenn dann eine Funktion Probleme hat ist nicht der Multi-Mega-Adapter mit 100 Funktionen komplett down, sondern nur einer von 100.
Gruß
Rainer
-
Nehmen wir mal als hypothetisches Beispiel für A den History-Adapter… Und den SQL-Adapter. Und den Influx-DB-Adapter. Deine Kids, apollon77.
Alle drei machen prinzipiell das Gleiche. Der SQL-Adapter hat schon die Möglichkeit verschiedene Backend-DBs einzubinden. Warum nicht auch für File und influx? ...
-> Entwickung hin zu einer zentralen Datenschnittstelle für ioBroker. -> Dafür ein zentraler Adapter.
Vereinfachung für die Anwender.
Möglichkeit dort das Backend auszutauschen.
Datenmigration. Backup. Alles an einer Stelle.
Aggregatoren.
Abstraktion, Möglichkeit, Text-Files mit SQL abzufragen,…
...
Ich finde, das ioBroker von Entwicker für Entwickler geschrieben ist. Nichts schlechtes dabei. Doch was ist mit den Anwendern, die froh sind, dass der ioBroker überhaupt installiert ist... Abstraktion der Komplexität statt immer komplexer zu werden. `
Hm … also gerade aus Anwendersicht ist diese Trennung super (finde ich)!
Was will ich? File oder SQL oder InfluxDB? Dann installiere ich den Adapter und er macht genau das was er soll. Wenn ich nicht weiss was SQL oder InfluxDB ist nehme ich "History" und habe Diagramme. Cool.
Ich gebe Dir recht, der "Migrationspfad" von einem zu einem der anderen Adapter ist nicht ganz so simpel aus Usersicht - aber auch in einem Adapter wäre eine automatisierte Datenmigration nahezu unmöglich bzw. eeeeeecht umfangreich! Und genau bei sowas will dann jeder was anderes und es entsteht ein Mega-Monster was niemand mehr (weder User noch Entwickler) unter Kontrolle hat. Allein SQL ist schon so ein halbes Monster
Je mehr man in eine Software (und das ist jetzt ganz allgemein gesprochen) reinpackt umso komplexer, fehleranfälliger, schlechter wartbarer und und und wird das ganze. Auch wenn das Featureset der 3 History-Adapter nach aussen hin "identisch" ist, ist unter der Haube einiges anders.
Irgendwo muss man Grenzen ziehen zwischen "für den User einfach" und "noch wartbar" und aus diesen Gesichtspunkten finde ich die Auftrennung genau hier passend.
Das ioBroker "von Entwicklern für Entwickler" ist möchte ich aber nicht unterschreiben. ioBroker ist eins der wenigen Systeme wo man ohne Kommandozeile auskommt und im ersten Schritt sehr viel tun kann ohne "Entwickeln" zu müssen. Ja, um das Ziel echt erreicht zu haben fehlt noch ein guter grafischer/UI "Wenn-Dann-Sonst"-Regeleditor, aber sonst ist genau das Ziel sich nicht nur an "Techniker" zu richten.
Die Thematik an "Smart-Home" ist das man viel mit wenig Wissen tun kann, aber wenn man mal Blut geleckt hat und mehr will, dann muss man sich auch damit beschäftigen.
Und ja wenn jemand mal soweit ich das wegen I/O-Problemen History nicht mehr die Wahl ist oder man jetzt weiss was SQL ist und ne NAS hat wo man das mit einem Klick installieren kann, dann stellt man "einfach" alle Datenpunkte auf SQL um und gut ist. Der Aufwand kommt nur wenn man die alten Daten migrieren will ... aber so gesehen gabs dazu 2-3 Thraeds im ganzen Forum bisher ... Ich denke die meisten stellen einfach um und gut ist
ALso wie Du siehst habe ich/wir das gleiche Interesse ... es gibt nur verschiedene Sichtweisen auf das ganze Thema ... (und ich will Deine in keinem Fall hier wegdiskutieren!) ... gib gern Feedback
-
Ich lass das mal auf mich einige Zeit wirken… Ich komme eher von der DB-Seite und bin Konzepte wie OLEDB u.ä. gewohnt. Da ist es dann z.B. für Abfragen (nahezu) egal, welche DB darunter steckt. Das vermisse ich.
-
Also Javascriopt-Seitig gibt es die einheitliche "getHostory"-Message die alle 3 Adapter (und seit neuestem auch Homee) implementieren. Da kannst du die gleichen Abfragen (ja, kein SQL …) auf alle 3-4 Adapter loslassen - so machen es die Diagramm-Adapter z.B. flot.
https://github.com/ioBroker/ioBroker.hi ... pt-adapter
Also das haben wir hier schon. Nur keine echte Abfragesprache.
Dann viel Spass beim wirken lassen
-
Ja, "getHistory" mit den lustigen Aggregaten kenne ich. Das ist nicht das Problem. Aber z.B. Statistikwerte über den Datenbankzugriff/die Datenhaltung selbst, ohne dass ich mich als Anwender darum kümmern muss?
-
Usecase?
-
Bin vor allem an analytischen- und ranking-Funktionen unabhängig von der zugrunde liegenden Datenhaltung interessiert.
-
Also weit weg von Normal-User Interessen
Sorry aber die ANtwort ist mir gerade zu abstrakt (oder mein Kopf zu weit weg) … Was ?