Erweiterung von 98_cloneDummy

Begonnen von dferch, 16 Februar 2016, 19:39:37

Vorheriges Thema - Nächstes Thema

dferch

Hallo,

ich hab im Modul 98_cloneDummy eine Erweiterung eingebaut, die das Klonen von benannten Readings erlaubt. In der alten Version war nur vorgesehen, dass alle Readings in den Dummy geklont werden und mit cloneIgnore einige ausgeschlossen werden können. In meinem Anwendungsfall hab ich eine Abfrage mit HTTPMOD, die ca. 25 Readings liefert. In mehreren Dummy möchte ich nur jeweils 1 Reading klonen.

Die Anpassung unterstützt das Setting cloneReadings. Hier können kommasepariert die gewünschten Readings angegeben werden. Die Entscheidung, wie vorgegangen wird sieht so aus:


  • Alle Readings klonen (wenn cloneIgnore/cloneReadings nicht gesetzt ist)
  • Nur Readings aus cloneReadings klonen
  • Alle Readings außer denen aus cloneIgnore klonen

Vielleicht braucht das der ein oder andere auch.

Ich wüsste zudem gern, wie ich die Anpassungen an den Modul-Owner geben kann bzw. selber in SVN einchecken. Gibts da eine Anleitung ?

Viele Grüße,
David

Joachim

Moin David,

leider habe ich jetzt erst die Zeit, Dir zu antworten.
Ich habe mir Deinen Vorschlag angesehen, und einige Tage darüber gegrübelt.
Dabei bin ich zu dem Entschluss gekommen, Deinen Vorschlag nicht zu übernehmen.
Die Gründe dafür sind folgende:
- mit cloneIgnore gibt es eine Lösung, einzelne Readings auszuschliessen/auszuwählen, Dein Vorschlag würde das gleiche umgekehrt implementieren. das halte ich nicht für zielführend.
- wenn man wie Du von 25 Readings nur eins benötigt, macht es mehr Sinn, die anderen Readings schon vorher zu filtern, z.B. über ein sinnvoll gesetztes event-on-.... Reading, oder, wenn die Daten von FHEM2FHEM bereitgestellt werden über einen entsprechenden Filter.
Damit ist es in meinen Augen nicht sinnvoll, das in den cloneDummy zu integrieren. Eine vorherige Filterung geht wesentlich sinnvoller mit den vorhandenen Ressourcen um.
Wenn man aus gutem Grund aus einem Original Device verschiedene cloneDummys macht, z.B. bei einem 1-Wire DS2438 zur Feuchtemessung ein weiteres Device für die Spannung, die auf dem Bus anliegt, handelt es sich um wenige Readings, die meiner meinung nach sinnvoller mit cloneIgnore zu behandeln sind.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

dferch

Hallo Joachim,

dann erläutere ich mal meinen konkreten Anwendungsfall:

Ich verwende einen Aquarium-Sensor von Seneye. Dieser kann über einen Webservice abgefragt werden, was ich mit HTTPMOD und XPath realisiert habe. Daraus ergeben sich ca. 25 Readings - demnächst sind es 35. Ich benötige jedes Reading, da hier NH3, NH4, PH-Wert, CO2, Temperatur geliefert werden. Neben dem aktuellen wird ein Durchschnittswert, ein Status pro Messung und Trend-Analyse geliefert. Diese Werte möchte ich gerne untereinander sauber aufgelistet haben, dazu ein Diagramm mit Min/Max/Current-Value. Die Auflistung ginge auch mit einer readingsGroup, aber: zur Steuerung und Abfrage von FHEM verwenden wir FHEM-Control unter iOS (iPhone und iPad). Die App ist super, kann aber bisher mit readingsGroup nicht umgehen. Was sie aber sehr gut kann sind Dummy und cloneDummy verwenden. Also muss ich für jeden einzelnen Wert ein cloneDummy anlegen. Vielleicht nicht elegant, aber für mich ok.

Ich hätte also folgende Alternativen:


  • Ich verwende cloneDummy wie von Dir konzipiert und muss dann pro cloneDummy in cloneIgnore alle 24 Readings eintragen, die ich nicht haben will. Oder ich Klone alle Readings, was das ganze aber nicht sehr übersichtlich macht.
  • Ich verwende nicht FHEM-Control. Da gibts aber nicht wirklich viele Apps, die sich an das iOS Look-and-Feel halten.
  • Ich verwende weiter FHEM-Control und hoffe, dass der Entwickler die readingsGroups implementiert.
  • Ich verwende cloneDummy mit meiner Modifikation und muss bei jedem Update aufpassen, dass nicht das Original das von mir modifizierte Modul überschreibt.
  • Ja, ich könnte auch ein Seneye-Modul schreiben. Das löst das Problem aber nur für den Aquarium-Sensor, nicht aber für andere Anforderungen.

Mal noch ein anderer Gedanke: ein Klon ist doch eine Kopie eines Originals. Wenn ich mit "cloneIgnore" Teile des Originals weglasse, ist das Klonieren. Wenn ich mit "cloneReadings" nur Teile des Originals in den Klon übernehme, ist das auch Klonieren. Beides ist ausgehend vom Original und dem Ziel des Klonen aus meiner Sicht sinnvoll.

Ich fände es sehr hilfreich, wenn Du doch eine Übernahme der Anpassung in Erwägung ziehen könntest.

Viele Grüße,
David

Joachim

Ich habe zwar immer noch nicht verstanden, wo Dein Problem wirklich liegt, aber Dein Freund ist Alternative 4 und :
exclude_from_update cloneDummy
in global

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

dferch

Hallo Joachim,

danke für den Tipp mit dem Exclude_from_update. Das werde ich jetzt erstmal verwenden.

Gruß,
David

eldrik

Hi,

zu

1. Ich verwende cloneDummy wie von Dir konzipiert und muss dann pro cloneDummy in cloneIgnore alle 24 Readings eintragen, die ich nicht haben will. Oder ich Klone alle Readings, was das ganze aber nicht sehr übersichtlich macht.

Das muss doch mehr oder weniger nur einmal gemacht werden, danach kann per Befehl "copy cloneDummy cloneDummy2" doch eine einfach Kopie erstellt werden, mit dem bereits gefüllten Attribut cloneIgnore welcher entsprechend um einen Eintrag abgeändert werden muss.

Oder du arbeitest mit readingsProxy http://www.fhemwiki.de/wiki/ReadingsProxy

Greetz
Eldrik

dferch

Hallo eldrik,

Danke für den Tipp mit ReadingsProxy. Das sieht mir nach einer guten Alternative aus. War mir vorher nicht aufgefallen, in der umfangreichen Modul-Liste.

cu,
David