Guten Abend Leute,
wenn ich meinem Yowsup Account von meinem Smartphone eine Sprachnachricht schicke, bekomme ich im message-Reading sowas wie
[Media Type:audio, Size:10987, URL:https://mmi308.whatsapp.net/d/6V2MsdK7-GTgUK8an121jFZx5nMABScLeqT22w/ApEMsDF_Uz4E6HRLhnkCE84A6VT8IzAcaNR-y3OsH_mg.aac]
angezeigt.
Die Adresse kann ich dann einwandfrei über die FHEM Kommandozeile mit dem Befehl
"sudo omxplayer https://mmi308.whatsapp.net/d/6V2MsdK7-GTgUK8an121jFZx5nMABScLeqT22w/ApEMsDF_Uz4E6HRLhnkCE84A6VT8IzAcaNR-y3OsH_mg.aac"
anhören.
Wie bekomme ich nun (womöglich per notify oder DOIF) die URL aus dem Reading so rausgezogen, dass ich diese Sounddatei sobald sie eintrifft direkt abspielen lassen kann. Momentan mache ich das ja manuell (siehe oben).
Habe mit notify und $EVTPART3 rum probiert. Aber irgendwie komme ich da nicht weiter. Mein bisheriger laienhafter Versuch sieht ungefähr so aus
chr:message:Media Type:audio "sudo omxplayer "$EVTPART4""
Selbst wenn die Definition richtig wäre, wäre ja der $EVTPART4 "URL:https://mmi308.whatsapp.net/d/6V2MsdK7-GTgUK8an121jFZx5nMABScLeqT22w/ApEMsDF_Uz4E6HRLhnkCE84A6VT8IzAcaNR-y3OsH_mg.aac]". Das ist ja als URL auch schon zu viel.
Danke für sachdienliche Hinweise :-)
Gruß
Christian
mit einem notify etwa so:chr:message.*audio.* { if( $EVENT =~ m/(http.*aac)/ ) { my $url = $1; system("sudo omxplayer $url &"); } }
im DEF bereich eingeben.
gruss
andre
Hallo Andre,
danke erstmal. Klappt aber leider nicht :-\
Event Monitor sagt folgendes:
2015-12-17 17:14:09 yowsup chr chatstate: composing
2015-12-17 17:14:09 yowsup chr chatstate: paused
2015-12-17 17:14:10 yowsup chr chatstate: received
2015-12-17 17:14:10 yowsup chr message: [Media Type:audio, Size:8288, URL:https://mmi320.whatsapp.net/d/hK7xhFLUzhB-nFKSR4slNVZy31IABScaUCFYdg/ApbJ0U_oSsWtx7w8XoQnpRMt-ZKYancEy69burF_j1e4.aac]
Log dieses:
2015.12.17 17:14:10 3: WA_Sound_abspielen return value: Unknown command if(, try help.
Unknown command ("sudo, try help.
Unknown command }, try help.
2015.12.17 17:14:10 3: chr: received command: [Media Type:audio, Size:8288, URL:https://mmi320.whatsapp.net/d/hK7xhFLUzhB-nFKSR4slNVZy31IABScaUCFYdg/ApbJ0U_oSsWtx7w8XoQnpRMt-ZKYancEy69burF_j1e4.aac]
2015.12.17 17:14:10 3: WhatsApp: sending /message send 491xxxxxx2 'Unknown command [Media, try help.'
Kannst du damit was anfangen? Brauchst du noch andere Infos? Ich bin definitiv ratlos :-[
ich hatte oben zwei klammern vergessen.
gruss
andre
Danke für die prompte Antwort. Klappt aber immer noch nicht.
Logfile:
2015.12.17 17:38:00 3: WA_Sound_abspielen return value: syntax error at (eval 26155) line 1, near "m/(http.*aac)/ { "
Can't use global $1 in "my" at (eval 26155) line 1, near "= $1"
Global symbol "$url" requires explicit package name at (eval 26155) line 1.
syntax error at (eval 26155) line 1, near "} }"
2015.12.17 17:38:00 3: chr: received command: [Media Type:audio, Size:11758, URL:https://mms877.whatsapp.net/d/rMQaebf4xWMH0TOtzgYKolZy5OgABScapV-VOQ/AuY5mUhYPFj66VrKcN0ERvUyW6rtMjA1Wu5vYXsTixnh.aac]
2015.12.17 17:38:00 3: WhatsApp: sending /message send 491xxxx92 'Unknown command [Media, try help.'
Wie kommt man eigentlich auf solche Codes? Ich raff da gar nichts ::)
arg... das kommt vom tippen auf dem handy. es hat noch eine klammer gefehlt.
gruss
andre
Der absolute Hammer. Ich danke dir vielmals. Das nächste Bier (oder alternativ etwas alkoholfreies) geht auf mich! 8) :-*
Kannst du mir auch noch bitte sagen, wie ich den obigen Code erweitern muss, wenn ich einen wietern Befehl (FHEM Befehl, oder auch system-Befehlt) nach dem abspielen noch ausführen möchte?
system geht etwa so:system("(cmd1;cmd2;cmd3)&");
in dem du nach system noch fhem aufrufst:system("..."); fhem("...");
aber die beiden sind in deinem fall nicht synchronisiert da das abspielen mit dem & im hintergrund erfolgt. sonst würde dein fhem die ganze zeit blockieren.
wenn du nach dem abspielen etwas in fhem machen möchtest musst du aus der shell ebene wieder fhem aufrufen. etwa so:system("(cmd1;cmd2;fhem.pl 7072 \"set fhem ...\")&");
oder du steckst alles in ein shell script und rufst dann dieses mit system auf. das ist auf die dauer einfacher zu warten.
gruss
andre