NEWS
[Anfänger] Konfig für mehrere Geräte mit Tabellendaten
-
Hi,
Vorab - ich bin ganz am Anfang bei ioBroker Development.Ich suche eine Möglichkeit in der neune Admin (jsonConfig.json) folgende Instanzkonfig umzusetzen:
a) Es gibt x Geräte die einige Attribute haben (Name, IP Addresse etc.)
b) Jedes dieser Geräte hat nun wieder eine Liste an Datenpunkten die abgefragt werden sollen.Konkret geht es um den Versuch den snmp Adapter zu erweitern.
Beispiel
Geräte: 1) Name: Router, IP: 11.22.33.44 OIDs: a) oid: 1.2.3.4.5 name: Temperatur b) oid: 6.6.7.8.9 name: crc errors 2) Name: Drucker, IP: 11.22.33.99 OIDs: a) oid: 5.5.5.5.5 name: Toner schwarz b) oid: 5.5.5.5.9 name: Toner magenta usw ..
Da die Json Config keine nested Tabellen kann - also eine Tabelle in einer Tabelle - muss ich eine andere Lösung suchen.
Die Liste der Geräte kann ich trivial als Tabelle konfigurieren und dort alle gewünschten Attribute als Spalten definieren.
Nur wie löse ich das mit den OIDs?
Was ich mir bisher überlegt habe:
a) nur ein Gerät je Instanz
Das würde die Konfig natürlich leicht machen (nur eine Tabelle mit den IODs) aber das ganze wär ja wohl eine Resourcenverschwendung und scheidet daher m.E. eher aus.b) Eine Tabelle in der alle OIDs aller Geräte drinnen stehen
In der Tabelle der Geräte könnte man eine ID vergeben und diese in der Tabelle der OIDs verwenden. Nur würde die OID Tabelle dann wohl seeehr groß und das Ganze eher mäßig wartbar.c) Ein Tab je Gerät
Das ginge im Prinzip würde aber eine hrdcoded maximale Anzahl von Geräten bedingen. Außerdem scheitn derzeit das hidden Attribute bei einem Tab zwar den Inhalt, nicht aber den Tab als ganzes auszublenden. Machbar aber nicht wirklich schön und elegant. Wär aber im Moment fast das machbarste.d) Die OID Konfig in ein externes File verlegen
Theoretisch könnte man die OID Konfig mittels Texteditor (od. Excel) in ein externes File schreiben und nur den Namen des Files in der Tabelle der Geräte angeben. Das entspricht aber sicher nicht dem Styleguide von IO Brokere) Tja ...
Ob das Öffnen eines an sich immer gleichen Pop Up Konfigurationsdialogs je Gerät ginge weiß ich nicht. Ich hab nichts dazu gefunden.
Eine Custom Config scheint heir ja auch nicht zu passen. Ich hab zwar den Querverweis zum History Adapter bekommen aber was ich bräuchte wär ja keine Config die im Kontext einer anderen Instanz geöffnet wird sondern eine Config die ich via z,.B. Button aus der eigenen Config öffnen kann.Falls jemand von euch eine Idee zu diesem Thema hat, bitte um Feedback.
Und ja
Java Script für den Adaptercode trau ich mir zu. Aber ich habe null Erfahrung mit Webseitenprogrammierung. Ergo seh ich keine Chance das jetzt mal schnell mit html und css umzusetzen. -
@mcm57
Hmmm.
Ich weiß nicht so viel über SNMP, aber bist Du dir sicher, das du mit der ganzen Idee auf dem richtigen Weg bist? Für mich klingt das irgendwie komisch nicht nur ein Gerät das abgefragt werden soll in die Konfig einzutragen, sondern auch noch alle seine Eigenschaften (so klingt das Vorhaben zumidest gerade für mich).Unabhängig von der Sinnhaftigkeit sollten meiner Meinung nach aber zwei Tabs mit je einer Tabelle ausreichen.
In der ersten Tabelle listest du die Geräte als solche mit ihrer Konfig und einer Zusatzspalte ID auf.
In die Zweite Tabelle kommen dann sämtliche Ausprägungen und wiederum auch diese ID-Spalte - wobei eben die ID in der zweiten Tabelle auf die Geräte in der ersten Tabelle referenziert. Da das aber alles manuell gepflegt werden müsste öffnest Du damit die Büchse der Pandora des unendlichen Supports.Tabelle 1:
ID Gerät IP .... 1 Router 1.1.1.1 2 Drucker 1.1.1.2
Tabelle 2:
ID OID Name .... 1 6.6.6.6 Temperatur 1 6.6.6.7 CRC-Fehler 2 6.6.6.6 Toner Cyan 2 6.6.6.7 Toner Schwarz 2 6.6.6.8 Toner Gelb
-
@grizzelbee
Danke für dein Feedback
Dein Vorschlag entspricht meiner Nummer b).Ich schätze auch, dass das die umsetzbarste Variante wäre.
Derzeit hat der snmp Adapter nur eine Tabelle. In diese muss man Sowohl die IP als auch Dinge wie die Community eintragen. Wenn ich nur snmp V1/2/3 supporten will, dann müsste zu jeder IOD auch noch das eingetragen werden. Nur wenn dann zu einer IP wiedersprüchliche Dinge drinnen stehen geht's erst nicht... Daher die Überlegungen zur Minimierung der Redundanz.
Was meinst du mit der Büchse der Pandora des unendlichen Supports? Dass man je Gerät die OIDs eingeben muss ist unschön - aber soweit ich SNMP kenne nicht zu vermeiden. Als Feature könnte man Dateien mit known devices anlegen - aber das ist ein anderes Thema und fraglich ob das bei der Vielzahl von Devices gehen kann.
Danke jedenfalls dafür dass du dir Zeitgenommen hast und ein Feedback abgegeben hast.
McM
-
@mcm57 sagte in [Anfänger] Konfig für mehrere Geräte mit Tabellendaten:
Was meinst du mit der Büchse der Pandora des unendlichen Supports?
Naja. Die Sache ist die: wie du schon selber sagtest ist diese Form der Konfig sehr wartungsintensiv. Aber das ist nur die eine Seite. Die andere Seite ist, das sie kompliziert und fehleranfällig ist und schon gar nicht intuitiv. Gepaart mit der Erfahrung das Nutzer oft die Doku nicht lesen sondern stattdessen lieber hier im Forum fragen oder issues auf GitHub öffnen führt eine komplizierte Konfig mit ziemlicher Sicherheit zu viele einzelnen Support Anfragen, die alle einzeln beantwortet werden müssen. Jede Variante natürlich mehrfach.
So zumindest meine Erfahrung und auch die anderer. Guck dir spaßeshalber mal den Support-Thread zu Pittinis Batteriescript an. Das ist ein gutes Beispiel für komplizierte Konfig und dafür wie der Ton des Supporters langsam aber sicher immer gereizter wird, wenn er zum hundertsten Mal den selben Kram erklären soll. Und das ist gar kein Vorwurf an Pittini - sondern absolut nachvollziehbar und menschlich.Die Frage ist also eigentlich: wie erfasst man die notwendigen Daten möglichst automatisch oder ersetzt sie durch generische Vorgaben um dieses Szenario zu vermeiden.
-
@grizzelbee
Danke f.d. Erläuterungen.Ja ich versteh was du sagst. Allerdings seh ich wenig chance da viel zu zu verinfachen das snmp das erste s (simple) wohl nicht wirklich verdient. Jedes Gerät hat andere OIDs. Und Namen dazu liefert snmp nicht (zumindet soweit ich weiß).
Ergo könnte ich nur folgende Verbesserungen anbieten:
-) scan welche OIDs ein Gerät anbietet. Nur das Zuordnen einer sinnvollen Beschreibung bleibt dem User nicht erspart. Was man dem User allerdings ersparen kann ist der Einsatz eines externen Programms zum OID scannen.-) support für "wellknown devices"
Allerdings habe ich keine Idee wie / wo eine Datenbank von Geräten abgelegt werden könnte. Und ich bezweifle auch, dass ob der Vielzahl der Geräte am Markt die Daten wirklich brauchbar wären. (Alle OIDs meiner Synology NAS zu lesen würde die Tabellen im raspi wohl seeeeehr groß machen und z,B. alle Smart Werte aller Platten in ioBroker zu laden sehe ich als übertrieben. -
Da dieses Topic nur einen Teilaspekt der Weiterentwicklung des SNMP Adapters darstellt und ich zwischenzeitlich ein passendes Sammeltopic für den snmp Adapter erstellt habe, bitte ich darum
die Diskussion HIER zu beenden und weiteren Input direkt hierhttps://forum.iobroker.net/topic/53632/snmp-adapter-weiterentwicklung
abzulegen.
Danke