devspec2array

Begonnen von Talkabout, 16 Dezember 2015, 21:15:10

Vorheriges Thema - Nächstes Thema

Talkabout

Hallo zusammen,

ein User hat festgestellt, dass im Dashboard ein Device nicht angezeigt wird. Der Grund dafür ist die Reihenfolge, mit der devspec2array prüft, ob ein Wert passt oder nicht. Nämlich zuerst die Readings und erst dann die Attribute. Im Falle des Dashboards war das Problem, dass ein Reading "group" gesetzt war, welches dazu führte, dass der Filter für group nicht mehr passte. Mein Vorschlag wäre die Syntax in devspec2array so zu erweitern, dass man mit angeben kann, wo der zu prüfende Wert her kommt. Also etwas in der Art:

set i:xxx=yyy off => Wert steht in den Internals
set r:xxx=yyy off => Wert steht in den Readings
set a:xxx=yyy off => Wert steht in den Attributen


Die Angabe wäre natürlich optional.

Damit wäre es möglich solche Probleme wie oben zu umgehen und sicherzustellen, dass ein Verhalten sich nicht plötzlich durch eine Erweiterung an anderer Stelle ändert.

Was haltet Ihr davon?

Gruss

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Zitatoch nö...
Das ist nicht wirklich konstruktiv.
Alternativen:
- so wie vorgeschlagen
- ausgeschrieben (internal, reading, attribute statt i, r, a)
- drittes Parameter zu devspec2array

Ich preferiere Variante 3. Andere Meinungen?

justme1968

der dritte parameter ist zwar am saubersten, aber man muss jede stelle die devspec2array verwendet anfassen. sonst kann es der endanwender nicht nutzen. die vorgeschlagene version würde automatisch überall gehen wo devspec2array verwendet wird.

zusätzlich sollte man die gleiche syntax  auch bei FILTER einbauen. oder sogar nur da?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

Zitat von: rudolfkoenig am 17 Dezember 2015, 15:11:58
Das ist nicht wirklich konstruktiv.

Ich weiß. Aber fhem in seinen Syntaxstrukturen immer umständlicher und undurchschaubarer machen zu wollen, ist genausowenig konstruktiv.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Talkabout

Zitat von: betateilchen am 17 Dezember 2015, 17:55:22
Ich weiß. Aber fhem in seinen Syntaxstrukturen immer umständlicher und undurchschaubarer machen zu wollen, ist genausowenig konstruktiv.
Ich habe den Thread eröffnet um Vorschläge für eine Lösung zu sammeln. Das sieht man daran, dass ich keinen Diff angehängt habe, der meinen Vorschlag integriert. Es existiert ein Problem welches eine Lösung notwendig macht. Wenn Dir mein Vorschlag nicht gefällt ist es sogar erwünscht, dass Du Gegenvorschläge unterbreitest. Bisher kam von Deiner Seite nichts was auch nur entfernt einem Vorschlag gleicht, warum dann überhaupt kommentieren?

Zitat- drittes Parameter zu devspec2array

laut Code in fhem.pl hat die Funktion "devspec2array" aktuell nur 1 Parameter, oder übersehe ich was? Das heisst ein 2. Parameter ist durchaus etwas, was man in Betracht ziehen kann. Dies macht dann die devspec nicht "undurchschaubarer und umständlicher" und es ist einfacher zu dokumentieren. Über das Flag könnte man sich noch unterhalten, ob es nun ein Integer sein soll (0 => alles, 1 => Reading...) oder ein String ('' => alles, 'r|reading' => Reading...).

Gruss

rudolfkoenig

Du hast fhem.pl seit mind. 3 Wochen nicht erneuert. Parameter 2 wird verwendet, um die Berechtigung fuer eval zu pruefen.

Das dir die dritte Variante reicht, war mir klar (deswegen der Vorschlag), andre haette halt gerne diesen Feature auch fuer Endnutzer, und betateilchen wird das langsam zu bunt. Und ich darf entscheiden :)

Talkabout

Zitat von: rudolfkoenig am 18 Dezember 2015, 09:17:23
Du hast fhem.pl seit mind. 3 Wochen nicht erneuert. Parameter 2 wird verwendet, um die Berechtigung fuer eval zu pruefen.
Ja, das stimmt :)

Die Argumentation, dass auch Endbenutzer es verwenden können sollten, ist natürlich berechtigt. Damit wäre ja im Endeffekt nur noch die Entscheidung zu treffen, ob "r" oder "reading" vorangestellt wird. Hierbei wäre meine Präferenz nur den Anfangsbuchstaben zu nehmen, da einerseits ausreichend und andererseits die devspec dann nicht ewig lang wird. Aber wie Du schon sagtest, Entscheidung liegt bei Dir.

Übrigens habe ich den ersten Fall auch bei mir lokal schon implementiert. Falls gewünscht, kann ich Dir den Code zur Verfügung stellen. Müsste dafür halt noch das Update machen und meinen Code anpassen.

Gruss

rudolfkoenig

Habe die i: r: a: Syntax zu devspec hinzugefuegt, und die Doku ergaenzt.