FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: P.A.Trick am 13 Oktober 2015, 19:36:13

Titel: Nützliche aliase
Beitrag von: P.A.Trick am 13 Oktober 2015, 19:36:13
Da ich die cmdalias Funktion für völlig unterbewertet halte, möchte ich noch weitere sinnvolle Befehlskombinationen in diesem Thread sammeln!
Ich fange mal an:

Zeigt alle ignorierten Geräte in FHEM
define c_showignoreddevices cmdalias showignoreddevices AS { join("\n", grep { $attr{$_}{ignore} } sort keys %attr ) }

Und hier noch ein Pendant für Geräte ohne Typdeklaration!

define c_shownotypedevices cmdalias shownotypedevices AS { join("\n", grep { !defined($defs{$_}{TYPE}) } keys %defs) }


Wiki: http://www.fhemwiki.de/wiki/Cmdalias#Beispiele
Titel: Antw:Nützliche aliase
Beitrag von: harway2007 am 13 Oktober 2015, 23:28:51
und wie ruft man die Aliase ab ?
MFG Harway
Titel: Antw:Nützliche aliase
Beitrag von: marvin78 am 14 Oktober 2015, 06:52:22
Commandref zu cmdalias!

In dem Fall:

shownotypedevices
Titel: Antw:Nützliche aliase
Beitrag von: Rince am 14 Oktober 2015, 06:53:53
Einfach ihren Namen eintippern...
Also das, was vor dem AS steht. Das könnte auch ein Befehl (set lamp1 on) sein.
Titel: Antw:Nützliche aliase
Beitrag von: Rince am 15 Oktober 2015, 09:25:05
Ohne konkreten Codeschnipsel, aber praktisch:

Wenn man bei bestimmten Geräten (z.B. MiLights) kein off erlauben will, kann man das so z.B. auf ein anderes Gerät umbiegen.

define aliasMiLight_1 cmdalias set MiLight_1 off AS set HMSchaltaktor_1 off



Der Vorteil im Vergleich zu einem Notify:
Der ursprüngliche Befehl wird nicht verarbeitet
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 15 Oktober 2015, 19:51:51
Auch ein cooles Anwendungsbeispiel!

Hier noch ein einfacher Tipp zum aktivieren des verbose 5 logs

define c_v5 cmdalias v5 AS attr global verbose 5

und zurück zum verbose 3 mit v3

define c_v3 cmdalias v3 AS attr global verbose 3
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 15 Oktober 2015, 19:54:04
Und heute noch einer ,-)

Wer das Text2spech Modul verwendet kann die Sprachausgabe vereinfachen:

define c_say cmdalias say .* AS set MyTTS tts '$EVENT'

say Hallo  ist einfach einfacher ;-) Funktioniert auch in Notifies usw!
Titel: Antw:Nützliche aliase
Beitrag von: rapster am 16 Oktober 2015, 15:43:28
Hier ein cmdalias um einen room umzubennen ohne dabei die devices aus anderen räumen zu entfernen

define cmd_roomrename cmdalias roomrename .* AS { for my $name (devspec2array("room=$EVTPART0")){ map {s/$EVTPART0/$EVTPART1/;; fhem("attr $name room $_")} AttrVal($name,'room','') } }

Zitatroomrename oldroom newroom


Gruß
  Claudiu
Titel: Antw:Nützliche aliase
Beitrag von: Rince am 16 Oktober 2015, 19:34:07
Sehr schick das.
Die cmdaliase sollten ins Wiki...
Titel: Antw:Nützliche aliase
Beitrag von: rapster am 16 Oktober 2015, 20:38:46
Passend zu "roomrename" hier noch ein "roomdelete" cmdalias um einen Raum zu löschen ohne die betroffenen Geräte auch aus anderen Räumen zu löschen.

define cmd_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','') } }

Zitatroomdelete roomName

Gruß
  Claudiu
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 16 Oktober 2015, 21:17:33
Zitat von: Rince am 16 Oktober 2015, 19:34:07
Sehr schick das.
Die cmdaliase sollten ins Wiki...

Ok werde ich morgen machen!

Hier noch einer:

define ls cmdalias ls .* AS list .*$EVENT.*


Kurze Version von list die auch mit Teilen des Devices etwas anfangen kann!
Titel: Antw:Nützliche aliase
Beitrag von: Icinger am 16 Oktober 2015, 21:20:41
Die Verbose 3 und Verbose 5 von P.A.Trick könnte man noch verfeinern:

define v5 cmdalias v5 .* AS {fhem ("attr ".($EVENT||="global")." verbose 5")}
sowie
define v3 cmdalias v3 .* AS {fhem ("attr ".($EVENT||="global")." verbose 3")}

Somit kann man optional auch ein Device angeben, für das der verbose gesetzt wird.

lg, Ici
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 16 Oktober 2015, 21:22:35
Zitat von: Icinger am 16 Oktober 2015, 21:20:41
Die Verbose 3 und Verbose 5 von P.A.Trick könnte man noch verfeinern:

define v5 cmdalias v5 .* AS {fhem ("attr ".($EVENT||="global")." verbose 5")}
sowie
define v3 cmdalias v3 .* AS {fhem ("attr ".($EVENT||="global")." verbose 3")}

Somit kann man optional auch ein Device angeben, für das der verbose gesetzt wird.

lg, Ici

Geil :-) Danke!
Titel: Antw:Nützliche aliase
Beitrag von: rapster am 17 Oktober 2015, 13:31:39
Heut nochmal einen etwas größeren cmdalias "regroup", ist zwar leider etwas lang aber hab ich schon paar mal gebrauchen können :)


define cmd_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) } }


Zitat
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.*
- Die zusätzlichen Gruppen in welchen sich die devices sonst noch befinden bleiben unberührt.
- Als FILTER kann alles was der normale fhem-devspec filter verarbeiten kann angegeben werden.

Es sollte nur aufgepasst werden wenn ein device mehrere ähnlichen Gruppenbennungen wie "attr name group test2,test" hat.
Wenn man hier ein 'regroup test test3' macht, könnte es passieren dass man dadurch bei diesem device die Gruppe 'test2' nach 'test32' umbenennt.
In dem Beispiel müsste man den Befehl z.B. mit 'regroup test$ test3' angeben damit das nicht passiert. Das sollte denke ich allerdings kaum vorkommen.

Gruß
  Claudiu
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 18 Oktober 2015, 08:25:59
So ich habe mal eine Wiki Seite angelegt:

http://www.fhemwiki.de/wiki/Cmdalias#Beispiele

Wer Langeweile hat kann gerne die Beispiel übernehmen! :D


UPDATE: Ich hatte Langeweile ;-)
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 20 Oktober 2015, 21:19:41
Wieder ein neuer -> autocreate!

http://www.fhemwiki.de/wiki/Cmdalias#Beispiele
Titel: Antw:Nützliche aliase
Beitrag von: carlos am 21 November 2015, 11:02:35
Nur zur Info, da ist ein Fehler im Wiki beim roomrename.
Könnte das bitte jemand korregieren?
Gruß
Carlos
Titel: Antw:Nützliche aliase
Beitrag von: krikan am 21 November 2015, 11:10:16
Hallo Carlos,
habe jetzt auf Verdacht geändert, da Du nicht verraten hast, was falsch ist. Es wäre nett, wenn Du kontrollieren könntest.
Gruß, Christian
Titel: Antw:Nützliche aliase
Beitrag von: carlos am 21 November 2015, 11:45:15
Sorry, ich dachte das wäre klar. So wie es hier im Thread gepostet wurde:

define cmd_roomrename cmdalias roomrename .* AS { for my $name (devspec2array("room=$EVTPART0")){ map {s/$EVTPART0/$EVTPART1/;; fhem("attr $name room $_")} AttrVal($name,'room','') } }

So ist es jetzt auch im Wiki korrekt.
Danke
Gruß
Carlos
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 01 Januar 2016, 22:30:17
Für alle die schon einmal nach der Möglichkeit gesucht haben das FHEM Logfile zu leeren! Bitte sehr der brandneue 2016er Alias dafür ;-)

define c_dellog cmdalias dellog AS {qx(truncate $currlogfile --size 0)}

Löscht das aktuelle FHEM logfile! Wiki ist aktualisiert!

http://www.fhemwiki.de/wiki/Cmdalias#Beispiele
Titel: Antw:Nützliche aliase
Beitrag von: Benni am 02 Januar 2016, 22:24:55
Hallo P.A.Trick,

ich habe in diesem Thread (http://forum.fhem.de/index.php/topic,46619.msg383524.html#msg383524) auch mal ein, wie ich finde nützliches cmdalias gebastelt, das vllt. in die entsprechende Liste aufgenommen werden könnte.
Ich habe derzeit noch keinen entsprechenden Wiki-Zugang, deshalb hier die Bitte an dich, ob du das dort eintragen könntest.

Danke dir!

Gruß Benni.
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 03 Januar 2016, 12:39:29
Zitat von: Benni am 02 Januar 2016, 22:24:55
Hallo P.A.Trick,

ich habe in diesem Thread (http://forum.fhem.de/index.php/topic,46619.msg383524.html#msg383524) auch mal ein, wie ich finde nützliches cmdalias gebastelt, das vllt. in die entsprechende Liste aufgenommen werden könnte.
Ich habe derzeit noch keinen entsprechenden Wiki-Zugang, deshalb hier die Bitte an dich, ob du das dort eintragen könntest.

Danke dir!

Gruß Benni.

Hi Beni,
klar habe ich eben aufgenommen!
Gruß
Patrick
Titel: Antw:Nützliche aliase
Beitrag von: Benni am 03 Januar 2016, 14:23:40
Danke dir!
Gruß Benni.
Titel: Antw:Nützliche aliase
Beitrag von: mi.ke am 15 Januar 2016, 20:39:39
Zitat von: P.A.Trick am 01 Januar 2016, 22:30:17
Für alle die schon einmal nach der Möglichkeit gesucht haben das FHEM Logfile zu leeren! Bitte sehr der brandneue 2016er Alias dafür ;-)

define c_dellog cmdalias dellog AS {qx(truncate $currlogfile --size 0)}

Löscht das aktuelle FHEM logfile! Wiki ist aktualisiert!

http://www.fhemwiki.de/wiki/Cmdalias#Beispiele (http://www.fhemwiki.de/wiki/Cmdalias#Beispiele)

Hi.

das ist ja mal wieder ein sensationelles Feature.

Ich hab's mir so erweitert, weil ich wissen will, wann der Log gelöscht wurde.
dellog AS {qx(truncate $currlogfile --size 0);Log 1, "Logfile gelöscht";}

Nun hat Rudi die Jump to the top und Jump to end Links eingecheckt.
http://sourceforge.net/p/fhem/code/10434/ (http://sourceforge.net/p/fhem/code/10434/)

Leider werden diese Links beim Loglöschen ebenfalls gelöscht.

Hat jemand eine Idee, wie man den Code in das cmdAlias bekommt?

Ich bin da leider zu bl..d für. :o

Cheers
mi.ke
Titel: Antw:Nützliche aliase
Beitrag von: Sonic am 16 Januar 2016, 11:40:44
Hallo Zusammen,

ich bekomme ein Fehlermeldung beim Aufruf von c_dellog.

Bitte um den kpl. Aufruf. Ich denke hier ist meine Fehler.  (bin Anfänger)


danke
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 17 Januar 2016, 01:03:42
Zitat von: Sonic am 16 Januar 2016, 11:40:44
Hallo Zusammen,

ich bekomme ein Fehlermeldung beim Aufruf von c_dellog.

Bitte um den kpl. Aufruf. Ich denke hier ist meine Fehler.  (bin Anfänger)


danke

Versuche das mal so!
define c_dellog cmdalias dellog AS {qx(truncate $currlogfile --size 0);;Log 1, "Logfile gelöscht";;}
Titel: Antw:Nützliche aliase
Beitrag von: Sonic am 17 Januar 2016, 09:02:47
Hallo vielen Dank, jetzt hat das geklappt.

Gibt es eine Möglichkeit den Jump to the End wieder zu reaktivieren ?

danke
Titel: Antw:Nützliche aliase
Beitrag von: Bootscreen am 19 Januar 2016, 09:15:57
da ich grad das Problem hatte das ich viele Devices in neue Räume hinzufügen wollte hab ich mir ein passendes Alias geschrieben:

Aufruf: roomadd <devspec> <new_room>
define c_roomadd cmdalias roomadd .* AS { for my $name (devspec2array("$EVTPART0")){ my $old_room = AttrVal($name,'room','');; if (index($old_room, $EVTPART1) == -1) {my $new_room = AttrVal($name,'room','') . ",$EVTPART1";; fhem("attr $name room $new_room")} } }

Es prüft auch ob das Device bereits in dem Raum vorhanden ist. Bei mir hats zwar funktioniert, aber da es mein erstes Script in der Art ist wäre es schön wenn da einer nochmal drauf schaut bevor es evtl ins Wiki übernommen wird.
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 19 Januar 2016, 20:34:15
Zitat von: Bootscreen am 19 Januar 2016, 09:15:57
da ich grad das Problem hatte das ich viele Devices in neue Räume hinzufügen wollte hab ich mir ein passendes Alias geschrieben:

Aufruf: roomadd <devspec> <new_room>
define c_roomadd cmdalias roomadd .* AS { for my $name (devspec2array("$EVTPART0")){ my $old_room = AttrVal($name,'room','');; if (index($old_room, $EVTPART1) == -1) {my $new_room = AttrVal($name,'room','') . ",$EVTPART1";; fhem("attr $name room $new_room")} } }

Es prüft auch ob das Device bereits in dem Raum vorhanden ist. Bei mir hats zwar funktioniert, aber da es mein erstes Script in der Art ist wäre es schön wenn da einer nochmal drauf schaut bevor es evtl ins Wiki übernommen wird.

Cool Danke habe ich ins Wiki übernommen!

http://www.fhemwiki.de/wiki/Cmdalias#roomadd
Titel: Antw:Nützliche aliase
Beitrag von: Sunny am 02 Februar 2016, 12:02:47
Moin Patrick,

für Leute die [HowTo] /dev/watchdog auf BBB oder RasPi für Neustart im Fehlerfall nutzen (http://forum.fhem.de/index.php/topic,20553.0.html) und neustarten wollen, ohne in eine "Bootschleife" zu gelangen.

define c_neustart cmdalias neustart AS save; {WriteStatefile}; shutdown restart

Viele Grüße
Sunny
Titel: Antw:Nützliche aliase
Beitrag von: uniqueck am 04 April 2016, 21:55:14
Ich bin gerade am probieren, wie ich ein cmdalias für pushnotifier bauen kann.


define c_msgconni cmdalias msgconni .* AS set pushMessageConni message 'FHEM' '$EVENT'


Allerdings weiß ich nicht recht, wie ich es machen soll, dass ich auch beim alias den Title der Nachricht mitgeben kann.
Kann mir da jemand weiterhelfen?

Ein ähnliches cmdalias unter say habe ich gefunden, aber das entspricht hier dem Part $EVENT.

Gruß uniqueck
Titel: Antw:Nützliche aliase
Beitrag von: igami am 06 April 2016, 12:34:57
Habe mir eben noch ein cmdalias gebaut um bestimmte Zeilen aus dem Log zu entfernen

define c_wipelog cmdalias wipelog .+ AS {qx(sed -r '/.*$EVENT.*/d' $currlogfile > $currlogfile.tmp && cat $currlogfile.tmp > $currlogfile && rm $currlogfile.tmp);; Log 1, "Logfile um Zeilen mit \"$EVENT\" bereinigt.";;}

Noch etwas unschön, aber es funktioniert.

Grüße
igami
Titel: Antw:Nützliche aliase
Beitrag von: betateilchen am 29 Mai 2016, 12:08:33
Um die uptime der Hardwareplattform (!) auf der fhem läuft, in fhem anzuzeigen, nutze ich folgenden cmdalias:

define alias_uptime cmdalias up AS {my @a = split(/,/,qx(uptime));; @a = split(/up /,$a[0]);;return $a[1]}
Titel: Antw:Nützliche aliase
Beitrag von: justme1968 am 03 Juni 2016, 14:44:52
falls man man den überblick verliert auf welchem fhem rechner man gerade eingeloggt ist: define hostname cmdalias hostname AS {(split('\.', qx(hostname)))[0]}

gruss
  andre
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 03 Juni 2016, 19:01:59
Zitat von: justme1968 am 03 Juni 2016, 14:44:52
falls man man den überblick verliert auf welchem fhem rechner man gerade eingeloggt ist: define hostname cmdalias hostname AS {(split('\.', qx(hostname)))[0]}

gruss
  andre

Cool! Habe ich ins Wiki übernommen!
Titel: Antw:Nützliche aliase
Beitrag von: betateilchen am 03 Juni 2016, 19:18:27
attr global title {(split('\.', qx(hostname)))[0]}

Dann sieht man den Hostname sogar ständig im Browser, ohne ihn abfragen zu müssen ;)
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 03 Juni 2016, 19:23:07
Zitat von: betateilchen am 03 Juni 2016, 19:18:27
attr global title {(split('\.', qx(hostname)))[0]}

Dann sieht man den Hostname sogar ständig im Browser, ohne ihn abfragen zu müssen ;)

Stimmt aber ich arbeite oft in der Console und da hilft der alias doch schon!
Titel: Antw:Nützliche aliase
Beitrag von: betateilchen am 03 Juni 2016, 19:49:19

MBA:~ udo$ telnet fhem-dev 7072
Trying 192.168.123.158...
Connected to fhem-dev.
Escape character is '^]'.

fhem-dev>


mit diesem Patch kriegst Du auch bei telnet den hostname als prompt angezeigt :)


Index: 98_telnet.pm
===================================================================
--- 98_telnet.pm (Revision 11601)
+++ 98_telnet.pm (Arbeitskopie)
@@ -194,7 +194,12 @@
     return if(!$chash);
     $chash->{canAsyncOutput} = 1;
     $chash->{encoding} = AttrVal($name, "encoding", "utf8");
-    $chash->{prompt}  = AttrVal($name, "prompt", "fhem>");
+    $chash->{prompt}  = AttrVal($name, "prompt", AttrVal('global','title','fhem'));
+    if($chash->{prompt} =~ m/^{.*}$/s) {
+       $chash->{prompt}  = eval $chash->{prompt};
+       $chash->{prompt}  =~ s/\n//;
+    }
+    $chash->{prompt} .= '>';
     syswrite($chash->{CD}, sprintf("%c%c%c", 255, 253, 0) )
         if( AttrVal($name, "encoding", "") ); #DO BINARY
     $chash->{CD}->flush();


Alternativ könnte man 98_telnet.pm auch so patchen, dass das Attribut prompt als perlSpecial aufgelöst wird.
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 03 Juni 2016, 19:50:48
Zitat von: betateilchen am 03 Juni 2016, 19:49:19

MBA:~ udo$ telnet fhem-dev 7072
Trying 192.168.123.158...
Connected to fhem-dev.
Escape character is '^]'.

fhem-dev>


mit diesem Patch kriegst Du auch bei telnet den hostname als prompt angezeigt :)


Index: 98_telnet.pm
===================================================================
--- 98_telnet.pm (Revision 11601)
+++ 98_telnet.pm (Arbeitskopie)
@@ -194,7 +194,12 @@
     return if(!$chash);
     $chash->{canAsyncOutput} = 1;
     $chash->{encoding} = AttrVal($name, "encoding", "utf8");
-    $chash->{prompt}  = AttrVal($name, "prompt", "fhem>");
+    $chash->{prompt}  = AttrVal($name, "prompt", AttrVal('global','title','fhem'));
+    if($chash->{prompt} =~ m/^{.*}$/s) {
+       $chash->{prompt}  = eval $chash->{prompt};
+       $chash->{prompt}  =~ s/\n//;
+    }
+    $chash->{prompt} .= '>';
     syswrite($chash->{CD}, sprintf("%c%c%c", 255, 253, 0) )
         if( AttrVal($name, "encoding", "") ); #DO BINARY
     $chash->{CD}->flush();


Alternativ könnte man 98_telnet.pm auch so patchen, dass das Attribut prompt als perlSpecial aufgelöst wird.

Sehr gerne wenn du Rudi davon überzeugt bekommst!? :-)
Titel: Antw:Nützliche aliase
Beitrag von: justme1968 am 03 Juni 2016, 19:55:32
der patch ist eine gute idee.

das hilft aber nur wenn man auch mit prompt arbeitet. und der ist bei copy&paste immer im weg.
Titel: Antw:Nützliche aliase
Beitrag von: betateilchen am 03 Juni 2016, 19:57:16
Zitat von: P.A.Trick am 03 Juni 2016, 19:50:48
Sehr gerne wenn du Rudi davon überzeugt bekommst!? :-)

Schauen wir mal...

https://forum.fhem.de/index.php/topic,54205.0.html

Titel: Antw:Nützliche aliase
Beitrag von: betateilchen am 03 Juni 2016, 19:58:09
Zitat von: justme1968 am 03 Juni 2016, 19:55:32
und der ist bei copy&paste immer im weg.

das verstehe ich grade nicht - ich arbeite in telnet viel mit c&p aber der prompt geht mir dabei nicht verloren.
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 03 Juni 2016, 20:01:44
Zitat von: betateilchen am 03 Juni 2016, 19:57:16
Schauen wir mal...

https://forum.fhem.de/index.php/topic,54205.0.html

Cool Danke!
Titel: Antw:Nützliche aliase
Beitrag von: justme1968 am 03 Juni 2016, 20:03:48
wenn man eine zeile per doppelklick markiert wird der prompt mit markiert wenn er vorhanden ist. deshalb arbeite ich immer ohne prompt.

es ging nicht gegen deinen vorschlag. den finde ich gut. er nützt aber nur demjenigen der mit prompt arbeitet.
Titel: Antw:Nützliche aliase
Beitrag von: betateilchen am 03 Juni 2016, 20:10:09
Zitat von: justme1968 am 03 Juni 2016, 20:03:48
wenn man eine zeile per doppelklick markiert wird der prompt mit markiert wenn er vorhanden ist. deshalb arbeite ich immer ohne prompt.

verstehe ich immer noch nicht. Egal. Ich arbeite immer mit prompt und hatte damit noch nie Probleme.
Ich finde auch den cmdalias praktisch. Hab das einfach nur weitergedacht.

Titel: Antw:Nützliche aliase
Beitrag von: justme1968 am 03 Juni 2016, 20:14:25
und bei mir sieht es so aus. ich kann zeilen die ich selber eingegeben habe per doppelklick markieren. ohne einen prompt am anfang.

Titel: Antw:Nützliche aliase
Beitrag von: betateilchen am 03 Juni 2016, 20:17:23
ok, jetzt weiss ich was Du meinst :) Aber an der Stelle würdest Du wohl auch den cmdalias nicht aufrufen.
Titel: Antw:Nützliche aliase
Beitrag von: justme1968 am 03 Juni 2016, 20:21:14
in dem einen fenster nicht. wenn 4 fenster auf drei fhem systeme schon eine weile offen sind schon :)

Titel: Antw:Nützliche aliase
Beitrag von: rapster am 03 Juni 2016, 21:42:46
Zitat von: justme1968 am 03 Juni 2016, 14:44:52
falls man man den überblick verliert auf welchem fhem rechner man gerade eingeloggt ist: define hostname cmdalias hostname AS {(split('\.', qx(hostname)))[0]}

gruss
  andre

Und wer nicht nur den Hostname sondern den FQDN möchte weil er z.B. wie ich mehrere Instanzen hat bei denen sich nur die Domain unterscheidet ;)
z.B. fhem.abc.de, fhem.xyz.de ...
define cmd_hostname cmdalias hostname AS {`hostname --fqdn`}

Gruß
Claudiu
Titel: Antw:Nützliche aliase
Beitrag von: igami am 20 August 2017, 09:37:28
Habe mir mal ein priorityset gebastelt

defmod priorityset cmdalias priorityset .+\s+(reset|\d+\s+.+) AS {\
  my ($name, $priority, $cmd) = split(/[\s]+/, $EVENT, 3);;\
  \
  return unless(IsDevice($name) && $priority);;\
  \
  if($priority eq "reset"){\
    fhem("setreading $name priorityset 0");;\
  }\
  else{\
    return unless($cmd);;\
    \
    fhem("set $name $cmd;; setreading $name priorityset $priority;;") \
      if(int($priority) >= ReadingsNum($name, "priorityset", 0));; \
  }\
}
Titel: Antw:Nützliche aliase
Beitrag von: dev0 am 20 August 2017, 11:31:57
Wofür braucht man das? Warum warum kann man den Wert von $priority nur erhöhen und nicht verkleinern?
Titel: Antw:Nützliche aliase
Beitrag von: igami am 20 August 2017, 12:11:09
Zitat von: dev0 am 20 August 2017, 11:31:57
Wofür braucht man das? Warum warum kann man den Wert von $priority nur erhöhen und nicht verkleinern?
Ich habe mehrere notify, DOIF, etc. welche den gleichen Aktor schalten. Diese bekommen dann eine unterschiedliche priority und beim Abschließen der Aktion wird das mit reset wieder auf 0 gesetzt.

Konkretes Beispiel:
Meine LED Stripes an der Kaffeeecke werden durch eine Messsteckdose geschaltet.
Power < 0.5 => aus
Power < 5 => grün (Geräte fertig und im Standby)
Power > 5 => blau (Geräte arbeiten)

Nun habe ich aber auch noch verschiedene Licht-Szenen. Sind diese aktiv soll das nicht durch die Steckdose übersteuert werden.

Zugegeben ist das ganze noch nicht ganz ausgereift.
Titel: Antw:Nützliche aliase
Beitrag von: dev0 am 20 August 2017, 12:19:36
Kann man das anwenden, wenn man nicht genau Deine Notifies verwendet? In der commandref habe ich kein 'priorityset' gefunden.
Titel: Antw:Nützliche aliase
Beitrag von: igami am 20 August 2017, 12:46:42
Zitat von: dev0 am 20 August 2017, 12:19:36
Kann man das anwenden, wenn man nicht genau Deine Notifies verwendet? In der commandref habe ich kein 'priorityset' gefunden.
Das wird ja durch das cmdalias ermöglicht. Anstelle von "set <name> cmd" macht man "priorityset <name> <priority> cmd".
Titel: Antw:Nützliche aliase
Beitrag von: Shadow3561 am 02 Oktober 2017, 06:16:53
Moin,

Folgendes Problem besteht:
Ich steuere meine Heizungen mit dem PID20-Regler.
Da 3 Heizungen gleichzeitig gesteuert werden müssen, habe ich mir einen Dummy gebaut. Dieser hat ein setList als Eingabe bekommen und die Werte werden von einem notify an alle PID-Regler weitergegeben.
Dies funktioniert sehr gut.

Jetzt habe ich den dummy bei Amazon Echo als Thermostat eingebunden. Die Befehle werden zum Dummy weitergereicht und auch eingestellt. Jedoch besteht ein Problem mit Ganzzahlen. 19,5 oder 21,5 werden vom Dummy angenommen und auch vom PID-Regler. Möchte ich jedoch 20,0 oder 18,0 einstellen, macht die Amazon api daraus eine Ganzzahl ala 20 oder 18.
Diese Zahlen werden weder vom Dummy noch vom PID-Regler akzeptiert.

Nun zur Frage,
ist es möglich einen cmdalias zu erstellen der einer Ganzzahl ein ".0" anhängt?
Und wenn ja, kann mir jemand einen keinen Denkanstoss geben, wie das ganze umzusetzen ist.

MfG
Titel: Antw:Nützliche aliase
Beitrag von: Amenophis86 am 02 Oktober 2017, 08:26:56
arbeite mit userreading und sprintf, oder arbeite mit readingsChange. Ein cmdalias ist dafür der falsche Weg.
Titel: Antw:Nützliche aliase
Beitrag von: justme1968 am 02 Oktober 2017, 08:51:30
natürlich geht das mit einem cmdalias auch.

aber vielleicht sollte man dem pid modul beibringen das es auch ohne nachkomma stellen funktioniert.
Titel: Antw:Nützliche aliase
Beitrag von: Shadow3561 am 02 Oktober 2017, 09:06:44
Zitat von: Amenophis86 am 02 Oktober 2017, 08:26:56
arbeite mit userreading und sprintf, oder arbeite mit readingsChange. Ein cmdalias ist dafür der falsche Weg.

Das habe ich gemacht.
Mein Kopf war gestern abend wohl nicht so ganz in Form. Habe diesen einfacheren Weg nicht in Betracht gezogen.

MfG
Titel: Antw:Nützliche aliase
Beitrag von: rudolfkoenig am 02 Oktober 2017, 09:42:38
Zitatist es möglich einen cmdalias zu erstellen der einer Ganzzahl ein ".0" anhängt?
defmod add0 cmdalias set dummy [\d]+ AS set dummy {( "$EVTPART1.0" )}
Titel: Antw:Nützliche aliase
Beitrag von: Amenophis86 am 02 Oktober 2017, 09:59:32
Habe mich wohl falsch ausgedrückt. Wie bereits bewiesen geht es auch mit cmdalias, wobei ich finde, dass userreadings der bessere Weg ist. Aber das ist nur meine Meinung :)
Titel: Antw:Nützliche aliase
Beitrag von: Jorche am 02 Januar 2018, 13:09:23
Da suchtm an nach einer Möglichkeit ganze Räume umzubennen und findet direkt die Lösung als cmdalias  8)

Hierzueine kleine Frage: Wie kann ich denn Leerzeichen in den Zielnamen einfügen? Im Ursprungsnamen lassen sich Leerzeichen via '/40' maskieren, im Zielnamen taucht dann jedoch /40 auf.

Dank und Grüße
Titel: Antw:Nützliche aliase
Beitrag von: Phill am 08 Januar 2018, 15:48:12
Gibt es die Möglichkeit einen cmdalias zu erzeugen der die Detailseite von einem Device im Browser öffnet?
In der Art "show global". Oder gibt's da schon was? Oder müsste man das mit Javascript basteln?
Titel: Antw:Nützliche aliase
Beitrag von: rudolfkoenig am 08 Januar 2018, 16:44:23
Was genau soll der cmdalias machen, wenn es im telnet eingegeben wird?
Titel: Antw:Nützliche aliase
Beitrag von: Phill am 08 Januar 2018, 20:10:06
Das wäre schon für den FHEMWEB Zugriff gedacht.
Titel: Antw:Nützliche aliase
Beitrag von: marvin78 am 08 Januar 2018, 20:16:04
Wäre da nicht einfach ein Link hilfreicher? Würdest du bitte mal einen Andwendungsfall beschreiben`?
Titel: Antw:Nützliche aliase
Beitrag von: Phill am 08 Januar 2018, 20:21:23
Ein Textfeld an der Seite wäre da wahrscheinlich das richtige.
Ich will einfach nicht vorher in den Raum klicken, sondern einfach das Device eingeben.
Titel: Antw:Nützliche aliase
Beitrag von: Phill am 09 Januar 2018, 00:09:01
Und hier die Lösung. (https://forum.fhem.de/index.php/topic,82442.0.html)
Titel: Temporäres notify
Beitrag von: Phill am 23 März 2018, 13:38:35
Wollte das mal zur Diskussion stellen. Ist das was fürs WIKI? Funktioniert das überhaupt allgemeingültig?
define ca_tempnotify cmdalias def(mod|ine) \w+ tempnotify .* AS {\
  $EVENT =~ s/tempnotify/notify/;;\
  fhem("defmod $EVENT;;;;delete $EVTPART0");;\
}


Erzeugt ein temporäres notify welches einmal ausgeführt wird, ähnlich eines temporären at.
Verbesserungen sind gern gesehen.
Gruß
Titel: Antw:Nützliche aliase
Beitrag von: choetzu am 03 Mai 2020, 18:10:05
Hallo,

ich versuche grad FHEM auf meinem verstaubten MacMini Server 2010 zum Laufen zu bringen... Soweit hat eigentlich alles sehr gut geklappt. Wo ich aber anecke, ist beim c_dellog. Eines meiner beliebtesten Aliase.. Aber es geht nicht, es kommt immer folgende Meldung im Log:

Do not know what to do. Either use -r or -s and specify files to process on.
2020.05.03 13:21:01 1:  Logfile gelöscht
Do not know what to do. Either use -r or -s and specify files to process on.
2020.05.03 13:21:41 1:  Logfile gelöscht


Ist das eine Berechtigungs- oder eher Mac-Geschichte?

Lg c
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 03 Mai 2020, 19:39:23
Zitat von: choetzu am 03 Mai 2020, 18:10:05
Hallo,

ich versuche grad FHEM auf meinem verstaubten MacMini Server 2010 zum Laufen zu bringen... Soweit hat eigentlich alles sehr gut geklappt. Wo ich aber anecke, ist beim c_dellog. Eines meiner beliebtesten Aliase.. Aber es geht nicht, es kommt immer folgende Meldung im Log:

Do not know what to do. Either use -r or -s and specify files to process on.
2020.05.03 13:21:01 1:  Logfile gelöscht
Do not know what to do. Either use -r or -s and specify files to process on.
2020.05.03 13:21:41 1:  Logfile gelöscht


Ist das eine Berechtigungs- oder eher Mac-Geschichte?

Lg c

Ja macOS kennt truncate nicht. Versuche mal folgendes:

defmod c_dellog cmdalias dellog AS {qx(echo -n  > $currlogfile);;;;Log 1, "Logfile gelöscht";;;;}
Titel: Antw:Nützliche aliase
Beitrag von: choetzu am 04 Mai 2020, 07:35:41
Zitat von: P.A.Trick am 03 Mai 2020, 19:39:23
Ja macOS kennt truncate nicht. Versuche mal folgendes:

defmod c_dellog cmdalias dellog AS {qx(echo -n  > $currlogfile);;;;Log 1, "Logfile gelöscht";;;;}

hat geklappt!! Super, herzlichen Dank.
Ein kleiner Schönheitsfehler kommt noch...


-n
2020.05.04 07:33:32 1:  Logfile gelöscht


Da kommt noch -n .. Wieso auch immer.. Ignorieren?
Titel: Antw:Nützliche aliase
Beitrag von: P.A.Trick am 04 Mai 2020, 07:45:39
Zitat von: choetzu am 04 Mai 2020, 07:35:41
hat geklappt!! Super, herzlichen Dank.
Ein kleiner Schönheitsfehler kommt noch...


-n
2020.05.04 07:33:32 1:  Logfile gelöscht


Da kommt noch -n .. Wieso auch immer.. Ignorieren?

Hm auf meinem mac klappt das.

Schau mal ob das Kommonda

list c_dellog

bei dir den folgenden Inhalt hat:

Internals:
   ALIAS      dellog
   DEF        dellog AS {qx(echo -n  > $currlogfile);;Log 1, "Logfile gelöscht";;}
   FUUID      5c445b5a-f33f-cbb9-cf3c-f12e051b83676d32
   FVERSION   98_cmdalias.pm:0.163000/2018-03-01
   NAME       c_dellog
   NEWCMD     {qx(echo -n  > $currlogfile);;Log 1, "Logfile gelöscht";;}
   NR         2558
   PARAM     
   STATE      defined
   TYPE       cmdalias
Attributes:
   genericDeviceType ignore
   room       System->cmdAlias
   verbose    3
Titel: Antw:Nützliche aliase
Beitrag von: choetzu am 04 Mai 2020, 09:01:41
Danke. Hmm, mein Listing sieht eigentlich gleich aus:

Internals:
   ALIAS      dellog
   DEF        dellog AS {qx(echo -n  > $currlogfile);;Log 1, "Logfile gelöscht";;}
   FUUID      5eaea8d8-f33f-832d-6d97-de4539180ae7cfca
   NAME       c_dellog
   NEWCMD     {qx(echo -n  > $currlogfile);;Log 1, "Logfile gelöscht";;}
   NR         16
   PARAM     
   STATE      defined
   TYPE       cmdalias
Attributes:
   comment    Leert das aktuelle FHEM Logfile
   group      Kommando
   room       Commands


Einzig die Zeile
FVERSION   98_cmdalias.pm:0.163000/2018-03-01

fehlt. Aber ich denke nicht, dass das ein Zusammenhang hat.

Es geht ja, das ist schon mal gut. Mit dem Schönheitsfehler "-n" kann ich gut leben .. ;)