Grüß Euch, ich versuche gerade verzweifelt ein FileLog auszulesen (um die relevanten Teile dann per Telegramm zu verschicken).
Ich scheitere allerdings bereits am ersten Teil, denn
get FileLog_AlexaVoice - - 2019-01-01 2019-10-03
liefert zwar schön alle Daten aus (das Datum wird dann später noch automatisch angepasst), aber ich brauche das ganze Gedöns nicht, sondern hätte nur gerne das was hinter "voice: " steht
2019-08-04_16:55:35 ECHO_G090U6078353034F voice: echo
2019-08-04_16:51:35 ECHO_G2A0QU0573940MW1 voice: echo spiele sido
2019-08-04_16:50:35 ECHO_G2A0QU0573940MW1 voice: spiele deine freunde
2019-08-03_21:40:02 ECHO_G090L91174160MCL voice: echo was steht an
2019-08-02_10:05:09 ECHO_G090L91174160MCL voice: stoppe bayern drei
2019-08-02_10:04:09 ECHO_G090L91174160MCL voice: echo spiel bayern drei
2019-08-02_10:03:09 ECHO_G090L91174160MCL voice_timestamp: 1564732940533
2019-08-02_10:03:09 ECHO_G090L91174160MCL voice: echo stoppe bayern drei
Anhand der Commandref und der Wiki habe ich mich mal versucht, das zu "filtern", aber ich bin offensichtlich zu doof:
ich müsste ja eigentlich nur <col>:<regexp>:<default>:<fn> anhängen soweit ich das kapiere. Nachdem ich nur stumpf immer die 4. Spalte brauche, habe ich es mit
get FileLog_AlexaVoice - - 2019-01-01 2019-10-03 4
versucht - da kommt dann #4 raus. mit 4::: kommt #4::: raus.
Kann mir bitte jemand auf die Sprünge helfen ::)
Danke und viele Grüße
doc
PS: Ziel ist quasi eine Tagesauswertung der Befehle per Telegram
get FileLog ist für SVG Plots gedacht, und kann meines Wissens nur numerische Werte zurückgeben. Probier mal z.B.
get FileLog_AlexaVoice - - 2019-04-08 2019-04-08 4:::$fld[4]=~"echo"?100:50
Einige 100 und 50 sollten schon kommen.
Hm, da kommt nur
#4:::$fld[4]=~"echo"?100:50
zurück. Aber okay, wenn das nicht geht, muss ich das halt in einer Perl-Funktion umbügeln ;-)
Schade, aber das bekomme ich schon irgendwie hin.
Viele Grüße
Hmm da kommt wahrscheinlich nichts zurück weil ich 2019-04-08 statt 2019-08-04 geschrieben habe...
Haha, stimmt und ich habe es stumpf übernommen ;-)
Jetzt kommt was, ist aber leider nicht brauchbar, brauche ja den Text. Bastel gerade an einer völlig umständlichen Perl-Funktion, um das hinzubekommen. Schauen wir mal, wie weit ich komme ???
2019-08-02_10:03:09 50
2019-08-02_10:03:09 50
2019-08-02_10:04:09 50
2019-08-02_10:05:09 50
2019-08-03_21:40:02 50
2019-08-04_16:07:35 50
2019-08-04_16:50:35 50
2019-08-04_16:51:35 50
2019-08-04_16:52:35 50
2019-08-04_16:55:35 50
2019-08-04_16:55:35 50
#4:::$fld[4]=~"echo"?100:
Gracias!
Nachdem das echt klappt (hat mich auch 2 Stunden gekostet ;)) - wer es brauchen kann:
sub
SendAlexa(){
my $yesterday = POSIX::strftime("%Y-%m-%d",localtime(time-24*60*60));
my $text = fhem("get FileLog_AlexaVoice - - ".$yesterday."_00:00:00 ".$yesterday."_24:00:00");
my @lines = split("\n",$text);
my $newtext;
my $next;
foreach my $line (@lines){
my @lineparts = split(" ",$line);
$next=false;
foreach my $linepart (@lineparts){
if ($linepart eq "voice:"){
$next=true;
next;
}
if ($next == true) {
$newtext = $newtext . " " . $linepart;
}
}
}
fhem("msg push |Alexa Übersicht| $newtext");
}
Geht sicher auch eleganter - aber mit Perl hatte ich es noch nie so wirklich - eher stumpf als trumpf, Funktion vor Schönheit ;D