Cmdalias
Cmdalias | |
---|---|
Zweck / Funktion | |
Erstellen von Benutzer-definierten Befehlen in FHEM | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | FHEM |
Modulname | 98_cmdalias.pm |
Ersteller | rudolfkoenig |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
cmdalias ist ein Modul zum definieren von benutzerdefinierten Befehlen.
Zielsetzung
Die jeweiligen Befehlsketten können mit diesem Modul verkürzt werden oder sogar verändert werden.
Einbindung in Fhem
define <name> cmdalias <cmd> [parameter] AS newcommand..."
Beispieldefinition
define s1 cmdalias shutdown update AS save;;shutdown
define s2 cmdalias set lamp .* AS { Log 1, "$EVENT";; fhem("set $EVENT") }
Aufruf in Fhem
Die aliase können entweder in der FHEM Befehlzeie oder direkt im telnet eingegeben werden.
Beispiele
Verkürzter Aufruf von list mit Wildcard Suche
define c_ls cmdalias ls .* AS list .*$EVENT.*
Auflisten von Geräten die in FHEM das Attribut "ignore" gesetzt haben:
define c_showignoreddevices cmdalias showignoreddevices AS { join("\n", grep { $attr{$_}{ignore} } sort keys %attr ) }
Auflisten von Geräten ohne TYPE Definition (sollte nur bei einer fehlerhaften Definition eine Ausgabe erstellen):
define c_shownotypedevices cmdalias shownotypedevices AS { join("\n", grep { !defined($defs{$_}{TYPE}) } keys %defs) }
Setzen des "Verbose Level" in FHEM auf 5
define c_v5 cmdalias v5 .* AS {fhem ("attr ".($EVENT||="global")." verbose 5")}
Setzen des "Verbose Level" in FHEM auf 3
define c_v3 cmdalias v3 .* AS {fhem ("attr ".($EVENT||="global")." verbose 3")}
In diesem Beispiel wird dem Gerät MiLight_1 nicht erlaubt ausgeschaltet zu werden
define c_aliasMiLight_1 cmdalias set MiLight_1 off AS set HMSchaltaktor_1 off
Verkürzter Befehlsaufruf des TTS Moduls
define c_say cmdalias say .* AS set MyTTS tts '$EVENT'
Umbenennen eines FHEM Raumes Aufruf roomrename <oldroom> <newroom>
define c_roomrename cmdalias roomrename .* AS { for my $name (devspec2array("room=$EVTPART0")){ map {s/$EVTPART0/$EVTPART1/;; fhem("attr $name room $_")} AttrVal($name,'room','') } }
Löschen eines FHEM Raumes Aufruf: roomdelete <roomName>
define c_roomdelete cmdalias roomdelete .* AS { for my $name (devspec2array("room=$EVENT")){ map { /^$EVENT$/ ? fhem("deleteattr $name room") : do{s/,$EVENT|$EVENT,//;; fhem("attr $name room $_")} } AttrVal($name,'room','') } }
Umfangreicher alias zum automatischen Setzen verschiedener Gruppen in FHEM Räumen
regroup <oldGroup> [<newGroup> [<FILTER>][|<FILTER2>]...] # Allen devices ohne group die Gruppe 'myGroup' setzen: regroup 0 myGroup # Nur den devices im Raum 'myRoom' welche keine group haben die Gruppe 'myGroup' setzen: regroup 0 myGroup room=myRoom # Alle devices aus 'oldGroup' in 'newGroup' verschieben regroup oldGroup newGroup # Nur die devices im Raum 'myRoom' aus 'oldGroup' in 'newGroup' verschieben regroup oldGroup newGroup room=myRoom # Gruppe 'myGroup' löschen regroup myGroup # Nur die devices im Raum 'myRoom' aus der Gruppe 'myGroup' löschen. regroup myGroup 0 room=myRoom # Devices aus allen Gruppen welche mit 'licht' beginnen aus Raum 'Obergeschoss' entfernen. regroup licht.* 0 room=Obergeschoss # Devices aus dem Raum 'myRoom' aus allen Gruppen entfernen und in die Gruppe 'myGroup' verschieben. regroup .* myGroup room=myRoom # Devices ohne Gruppe aus dem Raum 'myRoom' mit dem TYPE 'CUL_HM' und welche ebenfalls 'Licht' im Namen enthalten die Gruppe 'myGroup' hinzufügen regroup 0 myGroup room=myRoom|TYPE=CUL_HM|NAME=.*Licht.*
define c_regroup cmdalias regroup .* AS { my @EVTPART=split(' ',$EVENT);; $EVTPART[2] =~ s/\|/:FILTER=/g if($EVTPART[2]);; for my $name (devspec2array("group=".($EVTPART[0] ? $EVTPART[0] : '.*').($EVTPART[2] ? ":FILTER=$EVTPART[2]" : ''))){ map { ($_ && /^$EVTPART[0]$/ && !$EVTPART[1]) ? fhem("deleteattr $name group") : do{ if(!$EVTPART[1]){$EVTPART[0]=",$EVTPART[0]|$EVTPART[0],";; $EVTPART[1]='';;} s/$EVTPART[0]/$EVTPART[1]/;; fhem("attr $name group $_")} } AttrVal($name,'group',0) } }
Links
- Thread über das Modul im Fhem Forum
- Thread mit weiteren Informationen