FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: leitronic am 02 Dezember 2016, 16:27:38

Titel: Leerzeichen in structure
Beitrag von: leitronic am 02 Dezember 2016, 16:27:38
Ich möchte ein HM-OU-LED16 in eine structure integrieren.
mit
set A_OG_Led_16 led on
und
set A_OG_Led_16 led off
lässt sich die Led 16 schalten...

Aber:Kann ich diese in eine Sktruktur integrieren?
so:

define Licht structure room Lampe1 Lampe2 A_OG_Led_16 led

und so

define Licht structure room Lampe1 Lampe2 A_OG_Led_16.led

hat es nicht funktioniert...

Gibt es da eine Lösung?

Vielen Dank für eure Ideen!
Titel: Antw:Leerzeichen in structure
Beitrag von: viegener am 02 Dezember 2016, 23:02:49
Ich denke Dein Problem ist so einfach nicht zu lösen, denn in der structure werden ja devices hinzu gefügt, während Du ja Teilbefehle "A_OG_Led_16 led" hinzufügen willst.

Wenn ich es richtig interpretiere möchtest Du am Ende inur on / off an die Structure schicken, damit Lampe1, Lampe2 und A_OG_Led_16 alle angeschaltet werden.

Eine Möglichkeit wäre für A_OG_Led_16 einen Dummy anzulegen "A_OG_Led_16_dummy", der dann den Befehl on/off entgegennimmt und per notify dann auch set  A_OG_Led_16 led on bzw. off setzt.

Vielleicht gibt es auch elegantere Lösungen, ich würde aber vermuten, dass sich so nicht in die Struktur aufnehmen lässt (und das hat eigentlich nichts mit dem Leerzeichen zu tun)
Titel: Antw:Leerzeichen in structure
Beitrag von: CoolTux am 02 Dezember 2016, 23:08:54
Ein list vom Device kann uns hier sicherlich mehr Licht ins Dunkel bringen.
Titel: Leerzeichen in structure
Beitrag von: justme1968 am 02 Dezember 2016, 23:10:47
du bringst gerade device und kommando durcheinander: A_OG_Led_16 ist das device und led on das kommando.

wenn es dir darum geht das du in der strucutre unterschiedliche kommandos für die unterschiedlichen devices hast dann kannst du mit eventMap oder den _map attributen dafür sorgen das die kommandos gleich sind. das sollte auch über cmdAlias gehen.

wenn du ganz allgemein devices mit unterschiedlichem zustand zusammen fassen willst ist LightScene besser geeignet als structure.

ansonsten ist mir aber nicht ganz klar warum die die led der anzeigeeinheit mit den tatsächlichen lampen zusammen fassen willst. wenn es dir darum geht am display zu sehen ob die lampen gerade an sind solltest du dir notify ansehen. damit kannst du auf ereignisse reagieren. wie z.b. das die lampen an oder aus geschaltet werden und dann abhängig davon das display schalten. das hat den vorteil es es auch funktioertn wenn die lampen nicht über die structure oder fhem geschaltet werden.
Titel: Antw:Leerzeichen in structure
Beitrag von: leitronic am 06 Dezember 2016, 09:05:59
Ich möchte den code schlank halten, und da ich schon die Gruppen definiert habe, hoffe ich die Anzeige hier einfach integrieren zu können.
Ein zusätzliches notify wollte ich umgehen.
Mir ist nicht klar, warum das commando "led on" heisst. Was soll man denn an einer LED anderes schalten, als die LED selber....
"on" "off" wäre ja völlig ausreichend.

Hier die Ausgabe des Befehls "list A_OG_Led_16"

Internals:
   DEF        4CF77A10
   NAME       A_OG_Led_16
   NOTIFYDEV  global
   NR         249
   STATE      on
   TYPE       CUL_HM
   chanNo     10
   device     A_OG
   Readings:
     2016-11-25 13:58:56   CommandAccepted yes
     2016-11-25 13:58:56   color           orange
     2016-11-25 13:58:56   recentStateType ack
     2016-11-25 13:58:56   state           orange
   Helper:
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Role:
       chn        1
     Tmpl:
Attributes:
   eventMap   green:anwesend red:abwesend orange:on
   model      HM-OU-LED16
Titel: Antw:Leerzeichen in structure
Beitrag von: viegener am 06 Dezember 2016, 10:24:37
Zitat von: leitronic am 06 Dezember 2016, 09:05:59
Ich möchte den code schlank halten, und da ich schon die Gruppen definiert habe, hoffe ich die Anzeige hier einfach integrieren zu können.
Ein zusätzliches notify wollte ich umgehen.
Mir ist nicht klar, warum das commando "led on" heisst. Was soll man denn an einer LED anderes schalten, als die LED selber....
"on" "off" wäre ja völlig ausreichend.

Hier die Ausgabe des Befehls "list A_OG_Led_16"

Internals:
   DEF        4CF77A10
   NAME       A_OG_Led_16
   NOTIFYDEV  global
   NR         249
   STATE      on
   TYPE       CUL_HM
   chanNo     10
   device     A_OG
   Readings:
     2016-11-25 13:58:56   CommandAccepted yes
     2016-11-25 13:58:56   color           orange
     2016-11-25 13:58:56   recentStateType ack
     2016-11-25 13:58:56   state           orange
   Helper:
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Role:
       chn        1
     Tmpl:
Attributes:
   eventMap   green:anwesend red:abwesend orange:on
   model      HM-OU-LED16

Warum das Kommando "led on" heisst ergibt sich, wenn Du Dein list anschaust (in Code tags wäre das übrigens besser lesbar). Der Typ des devices CUL_HM ist und CUL_HM repräsentiert nicht nur LEDs sondern quasi alle HM Devices (Taster etc). Also in diesem Fall ist der Devicetyp eben nicht eine LED, sondern "irgendein" homematic device / channel. CUL_HM unterstützt dementsprechend eine Unmenge von spezifischen Funktionen (set/get) für die Teildevices in Homematic.

Ansonsten kann ich nur unterstreichen was justme1968 gesagt hat, dass ein notify hier der FHEM-typische Ansatz wäre.
Titel: Antw:Leerzeichen in structure
Beitrag von: leitronic am 06 Dezember 2016, 17:50:17
Hm ich habe schon über 50 notifys in meinem fhem, und finde das langsam unübersichtlich. Wenn jetzt jede der 32 LEDs der beiden
HM-OU-LED16 ein eigenes notify braucht finde ich das nicht gerade toll ;)
hier noch die List in "schön"
Internals:
   DEF        4CF77A10
   NAME       A_OG_Led_16
   NOTIFYDEV  global
   NR         249
   STATE      on
   TYPE       CUL_HM
   chanNo     10
   device     A_OG
   Readings:
     2016-11-25 13:58:56   CommandAccepted yes
     2016-11-25 13:58:56   color           orange
     2016-11-25 13:58:56   recentStateType ack
     2016-11-25 13:58:56   state           orange
   Helper:
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Role:
       chn        1
     Tmpl:
Attributes:
   eventMap   green:anwesend red:abwesend orange:on
   model      HM-OU-LED16


Ich sehe im list kein "led". Der STATE ist ja btw auch nicht "led on" sondern nur "on" Auch Rolladen schalter kennen "on" und "off" und nicht "slider on" oder so...

Nur in der Ausgabe des set steht "led":
Unknown argument orange, choose one of clear getConfig getRegRaw ilum led peerBulk regBulk regSet sign statusRequest

Jedenfalls vielen Dank für die rege Anteilnahme! :)
Titel: Antw:Leerzeichen in structure
Beitrag von: viegener am 08 Dezember 2016, 22:43:41
Zitat von: leitronic am 06 Dezember 2016, 17:50:17
Ich sehe im list kein "led". Der STATE ist ja btw auch nicht "led on" sondern nur "on" Auch Rolladen schalter kennen "on" und "off" und nicht "slider on" oder so...

Wieso hattest Du da jetzt ein led erwartet? War das ein Missverständnis?

Titel: Antw:Leerzeichen in structure
Beitrag von: leitronic am 10 Dezember 2016, 23:42:58
Wenn man die Led 16 orange (grün+rot an) schalten will muss man set A_OG_Led_16 led on eingeben,
da würde ich erwarten, dass der State eben diesem Kommando entspricht, also STATE      led on

Besser fände ich wenn der  Befehl set A_OG_Led_16 on zu  STATE      on führen würde, wie bei anderen Homematic-Geräten auch

Ein erster Blick in die 10_CUL_HM.pm zeigt, dass die HM-OU-LED16 separat behandelt werden.

Aber das kann sich ja ändern. Ich habe nun schon öfter erlebt, dass nach einem Update HM-Geräte Kanäle oder Befehle nicht mehr gleich sind. ;)
Titel: Antw:Leerzeichen in structure
Beitrag von: viegener am 10 Dezember 2016, 23:52:44
Mir ist nicht klar, wie das helfen würde, wenn der Status "led on" wäre, denn für die structure wäre damit ja nichts anders.

Wenn Du hier eine Änderung erreichen willst, würde ich Dir raten einen Beitrag mit dem Vorschlag direkt in den Homematic-Bereich zu setzen. Vielleicht finden sich dort ja andere Unterstützer.
Titel: Antw:Leerzeichen in structure
Beitrag von: justme1968 am 11 Dezember 2016, 00:16:35
die HM-OU-LED16  kanäle haben kein on kommando. wenn man die led orange schalten will muss man set <name> led orange sagen. das es bei dir auch mit on funktioniert liegt an deiner eventMap. bei so ziemlich jedem anderen ist funktioniert das nicht.

du schmeisst immer noch readings, kommandos (mit und ohne paramter) und STATE durcheinander.

einen dimmer oder rolladen den du mit set <name> pct 50 steuerst hat hinterher in STATE auch nicht pct 50 stehen sondern nur 50 oder sogar etwas ganz anderes falls es probleme gab. was genau in STATE stehen soll kannst du mit stateFormat beeinflussen.

genauso wie du das orange auf on umgebogen hast kannst du dir mit eventMap oder cmdalias oder mit den _map attributen ein on kommando zurecht biegen. bitte mach dich so weit mit den grundlagen vertraut das du verstehst wie die zusammenhänge sind statt vorzuschlagen irgendwelche befehle sinnlos zu ändern.
Titel: Antw:Leerzeichen in structure
Beitrag von: leitronic am 11 Dezember 2016, 02:30:25
Stimmt, ich habe übersehen, dass ich "on" selber definiert hatte...
cmdalias hatte ich in Erwägung gezogen, aber verworfen, da
define s1 cmdalias on AS led orange
zwar den Zweck erfüllen, aber ALLE on verbiegen würde, und damit die anderen Geräte ein Problem hätten?
Titel: Antw:Leerzeichen in structure
Beitrag von: justme1968 am 11 Dezember 2016, 08:55:46
nein.  du kannst cmdalias so spezifisch verwenden das du alle set on ersetzt oder nur das für ein device.

dein cmdalias beispiel macht noch was anderes und definiert ein neues kommando on (ohne set) das dann led orange ausführt ebenfalls ohne set. das ist sinnlos und nicht das was du willst.