fhem Befehl umdefinieren, oder welche Lösung ist denkbar?

Begonnen von Spartacus, 12 November 2015, 20:12:57

Vorheriges Thema - Nächstes Thema

Spartacus

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.




Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

marvin78


Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

justme1968

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

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

Spartacus

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



Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

marvin78

Du kannst mit cmdalias eigene Befehle definieren.

Bsp:

define NAME cmdalias rolpos .* AS {fhem("set Rolladen position $EVENT 0")}


Verwendung

rolpos 40

Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

marvin78

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.

Spartacus

Hallo,
ok. Das habe ich jetzt, glaub ich, verstanden! Wie ich das jetzt in die ReadingsGroup kriege, muss ich mal gucken....
Gruß,
Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

ph1959de

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
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R