Readings, values und Units

Begonnen von martinp876, 10 März 2014, 07:33:17

Vorheriges Thema - Nächstes Thema

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

justme1968

1) ist auf jeden fall am saubersten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

ZitatIch bin gerne bereit entsprechenden Aufwand zu leisten.

Fuer _ALLE_ Module, getestet mit allen unterstuetzten Geraeten und Frontends, automatisches Upgrade aller Altdaten (FileLog,DbLog, notify, usw) + Doku & Wiki-Anpassung? Du haettest sofort meine Zusage, wenn ich nicht wuesste, dass das illusorisch ist.

rudolfkoenig

Ein weiteres Problem von 1), dass Modulautoren sich ploetzlich gezwungen fuehlen fuer Readings wie Betriebsart, Sprache, UhrZeit & co ein UNIT zu vergeben, was zu laecherlichen Darstellungen fuehrt.


Dr. Boris Neubert

Hallo,

bitte KEINE Einheiten im {readings}{VAL}. Das muß bei wirklich jeder anderen Verwendung außer "Anzeige für Mensch mit selben Locale wie Entwickler." gestrippt werden.

Brauchen wir noch Diskussion dazu? Sollen wir darüber abstimmen?

Nun zu den Einheiten:

Ich habe dazu einen neuen Vorschlag: keine Angabe der Einheit sondern der physikalischen Größe (mit impliziter Definition der Einheit, in welcher das Backend den Wert bereitstellt). Dann haben die Frontends nämlich eine Idee, was dargestellt wird und können ein Thermometer malen, wenn eine Temperatur dargestellt wird, und einen Schieberegler, wenn die Helligkeit geregelt wird.

Vorteil: wir können nicht weiter wild drauflos entwickeln sondern müssen uns vorher (wie bei den Interfaces) Gedanken machen und Regeln vereinbaren.

Abwärtskompatibilität: kann ggf. gelöst werden, indem erstmal Readings unter anderem (standardisierten) Namen gedoppelt werden und dann irgendwann einmal die obsoleten Readings gelöscht werden.

Was haltet Ihr von diesen Vorschlägen?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

es ist ja nicht verboten readings ohne einheiten zu haben.

wie wäre es pro instanz ein {UNITS} zu haben das pro reading die zugehörige einheit  ein mal hält?

dann gibt es keinen overhead beim reading anlegen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

betateilchen

Zitat von: Dr. Boris Neubert am 11 März 2014, 13:51:04
Sollen wir darüber abstimmen?

Da Vernunft hier im Forum nach meiner Erfahrung selten siegt, wird die angebotene Abstimmung wohl die beste Lösung sein, um eine mehrheitsfähige Lösung zu begründen.

Zitat von: Dr. Boris Neubert am 11 März 2014, 13:51:04
Was haltet Ihr von diesen Vorschlägen?

Man sollte nicht alles noch komplizierter machen, als nötig. Auch wenn ich Dir aus Entwicklersicht durchaus rechtgebe.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: justme1968 am 11 März 2014, 13:54:29
wie wäre es pro instanz ein {UNITS} zu haben das pro reading die zugehörige einheit  ein mal hält?

Dagegen. Die Unit bildet zusammen mit dem Value eine Einheit und stammt immer aus dem Device, nicht aus der Instanz.
Die vorgeschlagene Lösung würde vermutlich mehr Verwirrung stiften denn nützen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

physikalische größe reicht nicht bei allen readings als grundlage um im frontend das passende interface element automatisch zu wählen. eine strecke könnte einem rollladen zugeordnet sein oder einem füllstand.

die idee den readings etwas semantik mit zu geben ist aber sehr gut. das würde in den frontends glaube ich sehr helfen.

wenn es nicht zu jedem einzelnen reading gepackt wird gehört es in die instanz und nicht ins device. das gleiche device kann ein mal eben den rollladen bedienen und ein mal eine lampe dimmen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Markus Bloch

Zitat von: rudolfkoenig am 11 März 2014, 13:40:08
Fuer _ALLE_ Module, getestet mit allen unterstuetzten Geraeten und Frontends, automatisches Upgrade aller Altdaten (FileLog,DbLog, notify, usw) + Doku & Wiki-Anpassung? Du haettest sofort meine Zusage, wenn ich nicht wuesste, dass das illusorisch ist.

Alle Module ist durchaus illusorisch. Aber die Module / Geräte, die ich selber nutze und wo der Maintainer keine Zeit/Lust hat, würde ich durchaus übernehmen. HomeMatic würde ich hier ausklammern, da das einfach zu kompliziert ist (nichts für Ungut, Martin).

Allerdings erst, wenn ein klares Zielbild vorliegt.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Dr. Boris Neubert

Zitat von: justme1968 am 11 März 2014, 14:13:06
wenn es nicht zu jedem einzelnen reading gepackt wird gehört es in die instanz und nicht ins device. das gleiche device kann ein mal eben den rollladen bedienen und ein mal eine lampe dimmen.

Meinen Andre und Udo dasselbe? Nämlich das benannte Etwas myLamp, myShutter, 1.wz.hzg? (das ist für mich die Instanz, also eine der möglicherweise vielen Exemplare eines Gerätes).

bn
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

so verstehe ich es auch. device = fhem modul. instanz = mit define angelegtes exemplar.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

betateilchen

ok - für mich ist device das, was mit define angelegt wird. Nicht umsonst heißt es ja auch devspec und nicht instspec ;)

Zitat von: Dr. Boris Neubert am 11 März 2014, 14:22:53Meinen Andre und Udo dasselbe?

Die Unit gehört für mich zu jedem in fhem per define angelegten etwas und dessen readings. Genau wie für mich der Timestamp zum Reading gehört.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ntruchsess

Zitat von: justme1968 am 11 März 2014, 14:13:06physikalische größe reicht nicht bei allen readings als grundlage um im frontend das passende interface element automatisch zu wählen. eine strecke könnte einem rollladen zugeordnet sein oder einem füllstand.

Einheit und Semantik sind 2 paar Stiefel. Die Auswahl, was ein Wegstreckengeber mit der Einheit 'm' tatsächlich repräsentieren soll, kann letztendlich nur der Benutzer selber treffen. Das über die Einheit universell abzuwickeln macht nur bei auf einen Anwendungsfall spezialisierten Modulen Sinn und wird im allgemeinen Fall scheitern. Im Frontend eine sinnfällige Default-darstellung basierend auf der Einheit anzubieten geht ja trotzdem.

Und die Einheit gehört ( Variante 1) ) - so wie in der Physik - an das konkrete Reading (und sollte optional sein). An der Stelle kann man durch Vermeidung von Redundanz (indem man die Unit irgendwo höher an die Instanz oder das Modul aufhängt) praktisch nichts gewinnen.

Auf diese Weise könnte man die Einheit bei einem Notify auch unkompliziert mitschicken.

Und ja, ich wäre dafür, dass man im Wiki eine Liste der 'gewünschten' Einheiten hinterlegt ohne neue zu verbieten. Meines Erachtens spricht auch erst mal nix dagegen für eine Größe unterschiedliche Einheiten/Skalen (z.B. °C und K) zuzulassen und das Umrechnen in die gewünschte Ziel-einheit (z.B. °F) dem Frontend zu überlassen. Auf diese Weise ist eine graduelle Migration möglich. (Ich erwarte mir hier eh nicht, dass sich da alle gleich drauf stürzen...)
while (!asleep()) {sheep++};

Dr. Boris Neubert

Es ist gerade eine Umfrage gesprossen...

Was muß ich ankreuzen, wenn ich Einheiten will, aber nicht in $hash->{readings}{VAL}?

BN
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!