Hallo,
ich habe das Problem, dass ich zur Positionierung meiner Rolladen immer die Position und den Winkel als Parameter angeben muss. Das ist in einigen Funktion unpraktisch, z.B. Dropdown.
set Rolladen position 40 0
,
wobei "40" die prozentuale Position und "0" der Winkel ist. Der Winkel ist immer "0" und kann eigentlich weggelassen werden.
Wie löst man das am Besten?
Spartacus.
eventMap
Hallo
das würde bedeuten:
eventmap position 40 0:pos 40
funktioniert dann für "pos 40"
ich möchte jetzt nicht für jeden Prozentwert ein eigenes Kommando definieren, Wie erreiche ich es, dass der Prozentwert variable übergeben werden kann?
Spartacus
schau dir mal cmdalias an.
Hi,
habe ich mir angesehen, aber ich verstehe den Zusammenhang zu meinem Problem nicht!
Sorry, ich benötige weitere Hilfe, um es zu verstehen!
Spartacus
Du kannst mit cmdalias eigene Befehle definieren.
Bsp:
define NAME cmdalias rolpos .* AS {fhem("set Rolladen position $EVENT 0")}
Verwendung
rolpos 40
Hallo,
vielen Dank für die Unterstützung. Ich habe den Befehl jetzt noch nicht getestet, aber so wie ich es derzeit verstehe, baue ich einen Befehl, der sich nur auf das Gerät "Rolladen" bezieht. Das heisst, wenn ich 15 Rolladen habe, dann muss ich für jeden Rolladen ein neues Kommando definieren.
Das hilft mir m.E. in der ReadingsGroup nicht weiter. Der Hintergrund ist, dass ich neben den Schaltknöpfen "auf" und "ab" ein Dropdown mit Positionen (10,20,30,...100) für alle Rolladen erstellen möchte!
Spartacus
Hast du dir cmdalias wirklich in der commandref angesehen? Ich kann es kaum glauben. Analog zu notify kannst du auch hier mit $EVTPART arbeiten. Es geht also auch sowas:
define NAME cmdalias rolpos .* AS {fhem("set $EVTPART0 position $EVTPART1 0")}
Verwendung
rolpos Rolladen1 40
Sorry, aber das hier muss ich nun schreiben: Ein wenig Mitdenken würde helfen.
Hallo,
ok. Das habe ich jetzt, glaub ich, verstanden! Wie ich das jetzt in die ReadingsGroup kriege, muss ich mal gucken....
Gruß,
Spartacus
Hallo,
so richtig glücklich bin ich mit cmdalias noch nicht. Ich möchte das doch lieber über eventmap lösen, da ich das als Attribut hinzufügen kann.
Ich habe gesehen, dass man in eventmap auf reguläre Ausdrücke benuzten kann.
Mein Device gibt in den Readings "position x" zurück. Ohne Winkel.
Wenn ich pos x sende, soll beim Device position x 0 ankommen.
Das habe ich versucht, aber irgendwie klappt das hinten und vorne nicht. Muss auch gestehen, das perl immer noch nicht mein Freund ist!
attr eventmap device eventMap { dev=>{"^position(.*)"=>"pos$1"}, usr=>{"^pos(.*)"=>"position$1 0"}, fw=>{"^pos(.*)"=>"position$1 0"} }
Spartacus
Hallo,
also irgendwie kriege ich das nicht hin. Sobald ich die o.a. Zeile in fhem eintippe, stürzt fhem ab.Bin ich mit eventmap auf dem falschen Weg? Wo habe ich den Fehler..
Spartacus
Zitat von: Spartacus am 19 November 2015, 20:02:56
also irgendwie kriege ich das nicht hin. Sobald ich die o.a. Zeile in fhem eintippe, stürzt fhem ab.Bin ich mit eventmap auf dem falschen Weg? Wo habe ich den Fehler..
Hast Du wirklich ein Device
eventmap, bei dem Du das Attribut
device auf den Wert "
eventMap ..." setzen willst?
Warum gehst Du nicht über die Details des Device. Anderenfalls musst Du Dir die Syntax von eventMap wohl noch mal genauer anschauen.
Peter
Hallo,
danke für den Hinweis. Da hat cut&paste zugeschlagen...
Ich meine natürlich, dass
attr rollade eventMap { dev=>{"^position(.*)"=>"pos$1"}, usr=>{"^pos(.*)"=>"position$1 0"}, fw=>{"^pos(.*)"=>"position$1 0"} }
nicht funktioniert! Der Befehl pos wird nicht angelegt. Es wird ein Befehl "0" angelegt und ich verstehe noch nicht warum! Die Syntax habe ich versucht mit Hilfe der commandref aufzubauen, aber offenbar ist mir das nicht gelungen! Wo muss ich da ansetzen?
Spartacus