FHEM Forum

FHEM - Anwendungen => Multimedia => Thema gestartet von: betateilchen am 21 Dezember 2016, 18:56:57

Titel: 98_BOSEST.pm - ich wünsche mir attr stateFormat
Beitrag von: betateilchen am 21 Dezember 2016, 18:56:57
Der Titel sagt schon alles. In den gefundenen Devices möchte ich gerne STATE selbst formatieren können.

Vielleicht läßt sich das ja irgendwann einbauen. Danke.


Index: 98_BOSEST.pm
===================================================================
--- 98_BOSEST.pm (Revision 12859)
+++ 98_BOSEST.pm (Arbeitskopie)
@@ -292,7 +292,7 @@
                                 channel_12 channel_13 channel_14 channel_15 channel_16
                                 channel_17 channel_18 channel_19 channel_20 ignoreDeviceIDs
                                 ttsDirectory ttsLanguage ttsSpeakOnError ttsDLNAServer ttsVolume
-                                speakChannel autoZone)) {
+                                speakChannel autoZone stateFormat)) {
           addToDevAttrList($name, $attrname);
         }
Titel: Antw:98_BOSEST.pm - ich wünsche mir attr stateFormat
Beitrag von: Markus Bloch am 22 Dezember 2016, 10:06:06
warum nicht gleich $readingFnAttributes setzen? Wundert mich auch, warum man die Attribute nicht in der Initialize-Funktion des Moduls unter $hash->{AttrList} setzt?

siehe Wiki: https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_Initialize

Gruß
Markus
Titel: Antw:98_BOSEST.pm - ich wünsche mir attr stateFormat
Beitrag von: betateilchen am 22 Dezember 2016, 14:39:49
Zitat von: Markus Bloch am 22 Dezember 2016, 10:06:06
warum nicht gleich $readingFnAttributes setzen? Wundert mich auch, warum man die Attribute nicht in der Initialize-Funktion des Moduls unter $hash->{AttrList} setzt?

Das hat mich gestern auch alles sehr gewundert. Aber um das Modul entsprechend der Dev-Guidelines umzubauen, wären noch viel mehr Änderungen notwendig. Deshalb hatte ich mich auf die einfachste Variante beschränkt, stateFormat verfügbar zu machen ;)
Titel: Antw:98_BOSEST.pm - ich wünsche mir attr stateFormat
Beitrag von: dominik am 22 Dezember 2016, 20:48:18
Der Grund wieso es nicht in der AttrList ist, ist dass ich diese Attribute nicht im "Main" Device haben möchte. Wenn jemand bessere Ideen hat, gerne her damit.

Gibt es einen Grund wieso nicht jedes Device "stateFormat" als Attribut hat?

Übrigens, wenn noch weitere Änderung aus eurer Sicht notwendig sind, dann gerne mitteilen. Habe nichts dagegen wenn wir das Moduls gemeinsam verbessern, ganz im Gegenteil.
Titel: Antw:98_BOSEST.pm - ich wünsche mir attr stateFormat
Beitrag von: Markus Bloch am 22 Dezember 2016, 21:50:16
Zitat von: dominik am 22 Dezember 2016, 20:48:18
Der Grund wieso es nicht in der AttrList ist, ist dass ich diese Attribute nicht im "Main" Device haben möchte. Wenn jemand bessere Ideen hat, gerne her damit.

Ja, das ist aktuell ein Problem. Es gibt (bis auf deinen jetzigen Weg) keine Möglichkeit devicespezifisch Attribute sichtbar zu machen..

Zitat von: dominik am 22 Dezember 2016, 20:48:18
Gibt es einen Grund wieso nicht jedes Device "stateFormat" als Attribut hat?

Weil nicht jedes Modul die readings*update()-Funktionen nutzt. Nur, wenn man Readings über diese Funktionen im Modul setzt, werden Attribute wie event-on-update-reading, event-on-change-reading, stateFormat, userReadings, ... ermöglicht. Damit man nicht in jedem Modul sämtliche Attribute auflisten muss, wird die globale Variable $readingFnAttributes zur Verfügung gestellt. Dies ist eine durch Leerzeichen getrennte Liste aller Readings, die dadurch zur Verfügung stehen. Da Du bereits die readings*update()-Funktionen verwendest, aber die entsprechenden Attribute nicht zur Verfügung stellst, können sie nicht durch die User genutzt werden.

Ich würde in diesem Fall vorschlagen nur die Attribute der readings*update()-Funktionen in der InitializeFn in der AttrList zu setzen. Dann kann betateilchen auch stateFormat nutzen.

Viele Grüße

Markus
Titel: Antw:98_BOSEST.pm - ich wünsche mir attr stateFormat
Beitrag von: dominik am 22 Dezember 2016, 21:56:45
Super, danke für die Info. Dann werde ich das beim nächsten Update mit einfließen lassen.