GELÖST: DS2408 Relais Platine an LinkUSBi mit readingsProxy

Begonnen von ronny332, 10 Juni 2015, 19:53:06

Vorheriges Thema - Nächstes Thema

ronny332

Hallo zusammen,

aktuell suche ich mir die Finger wund nach einer Lösung für mein Problem.

An einem LinkUSBi hängt aktuell als einziges Device eine 8 Relais Platine mit einem DS2408 Chip. Ich kann sie mittels FHEM super schalten (set OWX_29_3F720D000000 output A on), die Funktion ist also in jedem Fall gegeben.

Eine Verarbeitung via readingsProxy macht allerdings Probleme mit zuvielen Updates (Grundinfos habe ich von hier: http://www.fhemwiki.de/wiki/ReadingsProxy).

Als Definition habe ich "OWX_29_3F720D000000:A" und "OWX_29_3F720D000000:input.A" probiert. Mittels "get OWX_29_3F720D000000 input A" bekomme ich auch das passende Reading, nicht aber per "get OWX_29_3F720D000000 A" (ohne input).

Verrückterweise ergibt die Definition für readingsProxy "OWX_29_3F720D000000:A" einen Teilerfolg, "OWX_29_3F720D000000:input.A" bleibt komplett still (valueFn wird nicht ausgeführt).
Der Teilerfolg bringt allerdings statt einer einzigen Zustandsänderung (z.b. von ON auf OFF) eine 6 fache Rückgabe aller aktuellen Relaiszustände (z.B. ON B: OFF C: OFF D: OFF E: OFF F: OFF G: OFF H: OFF). Irgendwo in den 6 Ausgaben ist auch einmal "ON" oder "OFF" einzeln vorhanden, aber das erscheint mir der falsche Weg zu sein hier eine Filterung zu machen.

Meine Frage ist nun wo ich falsch an die Sache rangehe. Ist der Weg des readingsProxy falsch, oder nutze ich den Zustand des Relais falsch?

Bilder sagen mehr als 1000 Buchstaben oder Worte, ich hoffe damit wird meine Frage etwas klarer.

Danke ;-)!

... Homematic Flüchtling und Freund der neu gewonnen Fhem-Freiheiten.

ronny332

#1
So, den nächsten Abend gebastelt und keine Lösung gefunden.

Scheinbar reagiert valueFn() einfach auf alle Änderungen am 8fach Relais, was die Mengen an Log Einträgen erzeugt.

"Gelöst" habe ich es vorerst mit einer Bedingung für den on und off Status:


valueFn {($READING eq "A" && ($VALUE eq "ON" || $VALUE eq "OFF"))?(($VALUE eq "ON")?"on":"off"):undef}


Nicht wirklch schön, besonders die Abhängigkeit vom $READING gefällt mir gar nicht. Aber da es nur 8 Relais sind, kann ich erstmal damit leben.

Update 13.06.15: mit der Lösung komme ich erstmal klar, damit ist das Thema für mich "gelöst". Wenn ich den Quellcode richtig verstehe, so sind alle 8 Relais intern aus einem Hash bzw Array gebildet, was dann wohl Benachrichtigungen auf alle Devices erzeugt, so fern eines den Status ändert.
... Homematic Flüchtling und Freund der neu gewonnen Fhem-Freiheiten.