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
und wie ruft man die Aliase ab ?
MFG Harway
Commandref zu cmdalias!
In dem Fall:
shownotypedevices
Einfach ihren Namen eintippern...
Also das, was vor dem AS steht. Das könnte auch ein Befehl (set lamp1 on) sein.
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
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
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!
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
Sehr schick das.
Die cmdaliase sollten ins Wiki...
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
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!
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
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!
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
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 ;-)
Wieder ein neuer -> autocreate!
http://www.fhemwiki.de/wiki/Cmdalias#Beispiele
Nur zur Info, da ist ein Fehler im Wiki beim roomrename.
Könnte das bitte jemand korregieren?
Gruß
Carlos
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
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
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
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.
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
Danke dir!
Gruß Benni.
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
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
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";;}
Hallo vielen Dank, jetzt hat das geklappt.
Gibt es eine Möglichkeit den Jump to the End wieder zu reaktivieren ?
danke
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.
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
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
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
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
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]}
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
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!
attr global title {(split('\.', qx(hostname)))[0]}
Dann sieht man den Hostname sogar ständig im Browser, ohne ihn abfragen zu müssen ;)
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!
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.
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!? :-)
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.
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
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.
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!
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.
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.
und bei mir sieht es so aus. ich kann zeilen die ich selber eingegeben habe per doppelklick markieren. ohne einen prompt am anfang.
ok, jetzt weiss ich was Du meinst :) Aber an der Stelle würdest Du wohl auch den cmdalias nicht aufrufen.
in dem einen fenster nicht. wenn 4 fenster auf drei fhem systeme schon eine weile offen sind schon :)
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
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));; \
}\
}
Wofür braucht man das? Warum warum kann man den Wert von $priority nur erhöhen und nicht verkleinern?
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.
Kann man das anwenden, wenn man nicht genau Deine Notifies verwendet? In der commandref habe ich kein 'priorityset' gefunden.
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".
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
arbeite mit userreading und sprintf, oder arbeite mit readingsChange. Ein cmdalias ist dafür der falsche Weg.
natürlich geht das mit einem cmdalias auch.
aber vielleicht sollte man dem pid modul beibringen das es auch ohne nachkomma stellen funktioniert.
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
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" )}
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 :)
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
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?
Was genau soll der cmdalias machen, wenn es im telnet eingegeben wird?
Das wäre schon für den FHEMWEB Zugriff gedacht.
Wäre da nicht einfach ein Link hilfreicher? Würdest du bitte mal einen Andwendungsfall beschreiben`?
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.
Und hier die Lösung. (https://forum.fhem.de/index.php/topic,82442.0.html)
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ß
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
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";;;;}
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?
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
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 .. ;)