Hauptmenü

Leerzeichen in structure

Begonnen von leitronic, 02 Dezember 2016, 16:27:38

Vorheriges Thema - Nächstes Thema

leitronic

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!

viegener

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)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

CoolTux

Ein list vom Device kann uns hier sicherlich mehr Licht ins Dunkel bringen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

justme1968

#3
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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

leitronic

#4
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

viegener

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.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

leitronic

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! :)

viegener

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?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

leitronic

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. ;)

viegener

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.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

leitronic

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?

justme1968

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.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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