Hallo Zusammen,
ich versende seit einem halben Jahr diverse Statusmeldungen von FHEM über yowsup (per shellscript) an Whats App.
Am 1 Mai musste ich ein Update von yowsup einspielen, da Whats App irgendwas geändert hatte und yowsup eine Meldung auswarf, das die Authentifizierung fehlgeschlagen ist.
Update über Git Pull gemacht und yowsup Aufruf funktioniert wieder sofern ich das Script aus der shell manuell aufrufe.
Wenn ich das Script aber aus FHEM aufrufe wird das script zwar ausgeführt, aber keine nachricht über yowsup abgesetzt.
Das Shell Script sieht so aus:
#!/bin/bash
myStr=""
#echo "You start with $# positional parameters"
# Loop until all parameters are used up
while [ "$1" != "" ]; do
#echo "Parameter 1 equals $1"
#echo "You now have $# positional parameters"
<------>myStr="$myStr $1"
# Shift all the parameters down by one
shift
done
echo "Parameters: $myStr"
logger Vor Whats App Aufruf $myStr
#python /opt/yowsup/yowsup-cli demos --debug --config /opt/yowsup/config --send 49xxxxxxxxxx "$myStr"
python /opt/yowsup/yowsup-cli demos --config /opt/yowsup/config --send 49xxxxxxxxxxxxxx Hallo
logger Nach Whats App Aufruf
/opt/fhem/cfg/scripts/svdrpsend.pl -d vdr -p 6419 MESG "$myStr"
Der Aufruf aus myUtils sieht so aus:
######## Nachricht per WhatsApp Versenden. ############
sub
WhatsApp($)
{
my ($myMessage) = @_;
Log 1, "Sub: WhatsApp -> Nachricht: $myMessage";
system("screen -dm sh -c '/opt/fhem/cfg/scripts/send_whatsapp.sh $myMessage'");
}
Was mir noch aufgefallen ist sind die unterschiedlichen Ausgaben des Loggers in die messages Datei:
May 3 11:01:51 cubie root: Vor Whats App Aufruf
May 3 11:01:53 cubie root: Nach Whats App Aufruf
May 3 11:02:10 cubie logger: Vor Whats App Aufruf Bewegung in der Lounge
May 3 11:02:11 cubie logger: Nach Whats App Aufruf
Wenn ich das Script aus der shell manuell aufrufe wird die Nachricht an Whats App abgesetzt und der Eintrag in der messages Datei mit "root" gekennzeichnet.
Wenn das Script über FHEM aufgerufen wird dann steht dort "logger" und die Nachricht wird nicht gesendet.
Kann es sich um ein Rechte Problem handeln?
Zur Info: Der letzte Aufruf im script (per svdrpsend) um eine Nachricht an den VDR zu senden funktioniert auch wenn das Script über FHEM aufgerufen wird.
Habe schon so einiges versucht aber keine Lösung gefunden.
Vielleicht habt Ihr ja noch eine Idee oder Hinweis für mich.
Danke, Stefan.
Ich bin ein Stückchen weiter gekommen.
Es handelt sich in der Tat um ein Berechtigungsproblem, bin mir aber im Moment nicht klar wie ich das Lösen kann.
Ich haber mal den Aufruf für yowsup umgestellt.
Statt ein Script aufzufrufen nutze ich den den direkten Aufruf über python aus FHEM heraus:
#Direkter Aufruf
system("python /opt/yowsup-master/yowsup-cli demos -c /opt/yowsup-master/config.example -s $nr \"$Message\"");
Dabei bekomme ich nun Debug Ausgaben in der Konsole:
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/root/.yowsup'
In "/root/.yowsup/" liegt eine Ordner mit der Handynummer 4915112345678 und 2 Dateien (id, nonce).
Auf diese möchte yowsup nun gerne zugreifne, darf aber nicht.
Habe mal kurz den /root/ Ordner lesend auch für andere User frei gegeben und schon funktionierte der Versand der Nachrichten wieder.
Habt Ihr einen Vorschlag wie das sinnvoll aufzulösen ist? Anderen Usern den Zugriff auf den /root/ Ornder zu geben ist bestimmt nicht sinnvoll.
Kann mann vielleicht den Python Aufruf per "sudo" ausführen?
Danke, Stefan.
Hallo Stefan,
ja geht. Du must aber dem User fhem die entsprechende Berechtigung geben.
sudo visudo
und dort ergänzen:
fhem ALL=(ALL) NOPASSWD: ALL
Dann kannst du mit System("sudo ...) in Fhem arbeiten.
Grüße Jörg
Hallo Jörg,
Danke Dir!
Das war der entscheidende Hinweis.
Jetzt kann FHEM auch wieder Nachrichten über yowsup versenden. :D
VG, Stefan.