Vll. hat jemand eine Idee oder Anregung.
1) Frage
Der Chip unterstützt 4 Eingänge, dazu können diese noch unterschiedlich miteinander verglichen werden.
Theoretisch wären 2-4 Readings (Messungen) der Werte möglich.
Für jede Messung soll man (Enabled, SamplingRate, Gain, GültigerRahmen) verschieden einstellen können.
Nun meine Frage, wie sollte man am besten die Attribute gestalten ?
z.B.
SINGLE_2_Config_Gain
SINGLE_2_Config_DataRate
SINGLE_2_Config_LowThreshold
SINGLE_2_Config_HighThreshold
und das ganze 8 mal ?
oder besser
SINGLE_2_Config mit einen Wert der geparst wird ?
Das ist eher eine philosophische Frage. Zum einen ist weniger oft mehr. Zum anderen bietet FHEM bei den Attributen Checkboxen, Dropdown Menüs, Drag&Drop die eine Konfiguration recht komfortabel machen.
Gibt es unterschiede bei den Konfiguration zwischen Absolut und Differenzmessung?
Evtl. kommen da weitere Attribute hinzu.
oder gibs so was wie Unterattribute ?
gibt es leider nicht
die Attribute lassen sich auch leider nicht dynamisch anpassen (...obwohl, evtl. kann man $hash->{AttrList} dynamisch modifizieren... das wäre einen Versuch wert, wenn du das versuchst halte mich bitte auf dem Laufenden

)
Eine Idee wäre auch Untermodule für die Eingänge zu machen, die man dann mit dem ADS1115 verknüpft
Oder direkt Module, die jeweils nur einen Eingang lesen (also im Define I2C-Adresse und Kanal angeben /bzw. 2 Kanäle bei Differenzmessung)
Das ist natürlich elegant, aber auch komplex, da unterschiedliche Kanäle evtl. auf gleiche Register zugreifen.
Ausserdem musst du beim anlegen nachprüfen, ob es bereits ein define für den gleichen Kanal gibt.
2) geplant ist derzeit nur ein Polling. Sprich Auslesen aller gewünschten Readings. Wäre das ok, oder braucht jemand
verschiedene Timings für verschiedene Eingänge ?
Das polling machst du bestimmt über ein Attribut einstllbar?
Es ist sicher am sinnvollsten, alle Werte auszulesen. Unterschiedliche Pollzeiten machen die Abfrageroutine recht komplex.
Allerdings hat der ADS1115 noch einen ALERT Ausgang. Ich habe das Datenblatt nur überflogen, aber wenn ich es richtig verstanden habe, kannst du Schwellwerte programmieren, deren unter/überschreiten den ALERT Pin toggelt.
Attribute für das Setup dieses Pins wären sicher super.
Dann kannst du über einen GPIO Interrupts bei Änderung auslösen und Ereignisgesteuert die Werte auslesen.