[32_yowsup.pm] Whatsapp versenden (Mit Handy- oder Festnetznummer)

Begonnen von AHA1805, 01 Oktober 2014, 21:58:55

Vorheriges Thema - Nächstes Thema

Porsti

#150
Hallo zusammen,

ich bin am verzweifeln.
Über die Console bekomme ich Whatsapp Nachrichten verschickt aber über fhem klappt leider nichts.
Habe hier auch schon einige Beiträge in diesem Thema durchgelesen.

Jetzt hänge ich aber fest.
Habe folgendes schon gemacht:

{system("sudo /usr/bin/python2.6 /opt/yowsup-master/yowsup-cli demos -s 491xxxxxxx \"Garage ist zu\" -c /opt/fhem/yowsup.cfg 2\> /tmp/test.txt")}


Inhalt der Datei test.txt

Traceback (most recent call last):
  File "/opt/yowsup-master/yowsup-cli", line 5, in <module>
    import sys, argparse, yowsup, logging
ImportError: No module named argparse


Über
python yowsup-cli demos -c /opt/yowsup-master/config.example -s 491xxxxxxxx "Das ist ein Test"
klappt es ohne Probleme.

Die Datei /opt/fhem/yowsup.cfg hat den gleichen Inhalt wie /opt/yowsup-master/config.example nur mit den rechten von fhem.

Habe alles als root wie im ersten Beitrag beschrieben installiert.
Kann mir da jemand weiter helfen??

Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

JoWiemann

Hallo Porsti,

Du hast doch yowsup bestimmt unter: /opt/yowsup-master installiert? Oder!

Warum rufst Du dann im Fhem Commandline yowsup über /usr/local/bin/ auf?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Porsti

Hallo Jörg,

war ein kopierfehler.

Habe gerade aber noch mal getest mit /opt/yowsup-master/yowsup-cli aber es bleibt leider das gleiche in der Datei und es kommt keine Nachricht an.

Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

JoWiemann

Zweite Frage: Du rufst in der Fhem Commandline über {system("sudo /usr/bin/python2.6 ... auf und im Telnet nur mit python. Die Vermutung liegt nahe, dass für python2.6 das Modul argparse einfach nicht installiert oder registriert ist. Welche Pythonversion mit python aufgerufen wird kannst Du mit python -V feststellen.

Grüße Jörg

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Fhemeinsteiger

ZitatJetzt hänge ich aber fest.
Habe folgendes schon gemacht:
Code: [Auswählen]
{system("sudo /usr/bin/python2.6 /opt/yowsup-master/yowsup-cli demos -s 491xxxxxxx \"Garage ist zu\" -c /opt/fhem/yowsup.cfg 2\> /tmp/test.txt")}

das funktioniert hier nicht, wenn du dich an den ersten Beitrag gehalten hast.
dann solltest du dich an Beitrag 2 halten:
Zitat{system("python /opt/yowsup-master/yowsup-cli -c /opt/fhem/config.example -s 49xxxxxxx \"Das ist ein Test\"")}

vielleicht hilft es?

Porsti

Hallo zusammen,

habe gerade die veroschläge ausprobiert:

{system("python /opt/yowsup-master/yowsup-cli -c /opt/fhem/yowsup.cfg -s 49xxxxxxx \"Das ist ein Test\"")}


Hatte diesen gesehen und gedacht das dieser dann überarbeitet im ersten Beitrag eingebunden wurde.
Mit dieser Config klappt es leider auch nicht. Wenn ich es ausführe bekomme ich keine Nachricht und eine -1 in fhem.

Wenn ich

python -V

ausführe bekomme ich diese Antwort: Python 2.7.3

Habe hier im Thema doch irgendwo gelesen das yowsup nur unter 2.6 lauffähing ist ??

Gruß & Danke für eure Hilfe
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

JoWiemann

Python 2.7.3 habe ich auch und es funktioniert. Anbei mal meine WhatsApp Sub in der 99_myUtils.pm.


sub
sendWhatsApp($$)
{
  my ($handy,$text) = @_;

  my $retWhatsApp = qx(sudo python /home/pi/yowsup/yowsup-cli demos -c /home/pi/yowsup/config.fnetz -s $handy '$text' 2\>&1 &);

  $retWhatsApp =~ s/\n|\r/ /g; #s,[\r\n]*,,g;        # remove CR from return-string

  Log3 "sendWhatsApp", 3, "sendWhatsApp: $retWhatsApp";

  return $retWhatsApp;
}


Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Porsti

Danke Jörg,

mit deiner Datei hat es nach dem anpassen der Pfade sofort funktioniert.

Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

VB90

#158
Langsam zweifel ich an mir selbst, wenn ich sehe, das es bei anderen anstandslos funktioniert.

Nach einem erneuten Download und Installation (wenn man das entpacken eines Verzeichnisses so nennen kann) bekomme ich immernoch ein "Authentication Error: not-authorized" wenn ich versuche, über die Konsole eine Nachricht zu senden.
Das config-file mit meiner Nummer und dem Reg-Code habe ich selbstredent wieder in das Verzeichnis kopiert.

Nu stehe ich mal wieder auf dem Schlauch, jetzt wo ich eine für mich sinnvolle Verwendung gefunden habe...

vb

edit:

nu funktioniert es.
habe mich nochmal durch die Links gearbeitet und in der env_android.py nach Anleitung eine Zeile geändert.

Kaum macht man es richtig, schon gehts :)

Mal sehen ob ich dieser Tage den Empfang noch hinbekomme.
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

DieterL

Zitat von: VB90 am 18 Mai 2015, 17:23:12

habe mich nochmal durch die Links gearbeitet und in der env_android.py nach Anleitung eine Zeile geändert.


Hallo VB90,
könntest Du mir bitte verraten, was Du geändert hast, oder wo, in welcher Anleitung es steht was geändert werden muß ?!
Es wäre sehr nett- vielen Dank.
Raspi 2, Cul868, CUL433, Jeelink,HM-USB,4 *ITM100, 6* FHT8V, 6*CMR500, x-FS20 Komp., X- FS20 ST-4, 6* FS20 DI22-4 , YWT-8500, 4* Sonos Play:1, 2* Sonos Pl5, div selbstgestrickte Sensoren, 5* S555TH,9 * LaCrosse TX 29-IT, Philips Hue, 4* Piri-2,HomeMatic 4-Kanal-Schalter, 2*Velux,Bluetooth Stick

VB90

#160
@Dieter

sehr gern, will mal sehen ob ich noch alles zusammen bekomme.

Auf Seite 10 gab Stefan mit dem Tipp, mit dem Update. Danke dafür.
Der dort enthaltene Link ist dieser:
https://github.com/tgalal/yowsup/issues/746
Dort wird widerum zu folgendem Dokument auf Github verlinkt: https://github.com/tgalal/yowsup/pull/751/files


Darin sind farbig die Änderungen in der env_android.py aus dem Ordner /opt/yowsup-master/yowsup/env hinterlegt.
Achtung, deine Ordnerstruktur kann leicht anders sein.

Zum Beispiel wird aus Zeile 18 alt (rot markiert) die Zeile 18 neu (grün).
Analog dazu die Zeilen 21 und 23. Wobei ich letztere bei mir nicht ändern musste.

Speichern, fertig.
Ich habe FHEM neu gestartet, danach funktionierte es. Im Zweifel den ganzen Rechner neu starten.

Hintergrund der Änderung:
In dieser Datei steht, als was sich dein Raspberry oder was auch immer, bei Whatsapp am Server ausgibt.
In diesem Falle als Samsung Galaxy S3, mit Android 4.3 etc.
In der alten Version war was unstimmig, so das es zum bekannten "Authentication failed" kam.

Bei mir ist mit den Änderungen der Fehler behoben und mein Odroid sendet mir Nachrichten, auch aus FHEM heraus.

Nur der Empfang klemmt bei mir noch, kam noch nicht dazu, mich mit den Änderungen der 99_myUtils zu befassen.

Hoffe, ich habe nichts vergessen, Viel Erfolg.
Backup nicht vergessen. Sichere dir vorallem die env_android.py in der originalen Version, bevor du sie änderst.

vb

edit: Könnt ihr mir in dem Zusammenhang weiter helfen?
Ich möchte über einem Homematic HM-LC-SW1-FM benachrichtig werden, wenn er schaltet.
Das funktioniert auch, und zwar derzeit als notify : HM_395290:.* {sendWhatsApp("4915xxxxxxxxx","Nachricht von $NAME: $EVENT")}
Mein Problem: Ich bekomme 6 Medlungen zur Statusänderung
Zitat[20.5.2015, 19:42] UMTS-Modem: Nachricht von HM_395290: set_off
[20.5.2015, 19:42] UMTS-Modem: Nachricht von HM_395290: deviceMsg: off (to T_HMLAN1)
[20.5.2015, 19:42] UMTS-Modem: Nachricht von HM_395290: level: 0
[20.5.2015, 19:42] UMTS-Modem: Nachricht von HM_395290: pct: 0
[20.5.2015, 19:42] UMTS-Modem: Nachricht von HM_395290: off
[20.5.2015, 19:42] UMTS-Modem: Nachricht von HM_395290: timedOn: off

Mir würde jedoch ein einfaches "Nachricht von: on" bzw "off" reichen.
Kann mir jemand nen Tipp geben, wie ich mein notify anstelle des Sterns ( HM_395290:.*) ändern muss?

Danke,

vb

edit 2: Hab ein DOIF daraus gemacht, funktioniert bestens.

Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Cybers

Hallo,

nach längerem habe ich heute mal ein wenig Zeit gefunden mich um den Whatsapp-Empfang zu kümmern und den letzten Stand in mein Fhem-System einzubauen. Das scheint jetzt zuverlässig zu laufen. Danke an Jörg.

Gibt es die Möglichkeit die Nummer des Versenders und den Nachrichtentext in zwei verschiedene Readings zu schreiben? Zur Not würde mir auch helfen, daß nur der Text ohne Nummer in "state" steht.

Gruß, Sascha
FHEM 6.2 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

JoWiemann

Hallo,

hier geht Dein Wunsch in Erfüllung.

state wird mit Datum/Uhrzeit gefüllt
Phone mit der Telefonnummer
Message mit der Nachricht

Defines:

define WhatsApp dummy
attr WhatsApp room Siri

define WhatsApp_Rec notify WhatsApp:.*Message.* {WhatsAppNotify("49...")}
attr WhatsApp_Rec room Siri

99_myUtils

# ------------------------------------------------------------------------------------
# Funktion um WhatsApp Nachrichten auszuwerten
# 1. Mobilfunknummer
#
# ------------------------------------------------------------------------------------
sub
WhatsAppNotify($) {

  my $CallerNr = shift;

  my $Sender = ReadingsVal("WhatsApp", "Phone", "none");
  my $Message = ReadingsVal("WhatsApp", "Message", "none");

  my $MeldText = "";
  my $ret = "";

  if($Sender eq $CallerNr) {
     Log3 "WhatsAppNotify", 3, "WhatsApp (WhatsAppNotify): Sender $Sender definied: $Message";
     $ret = fhem($Message);
     if($ret) {
       Log3 "WhatsAppNotify", 3, "WhatsApp (WhatsAppNotify): Sender $Sender action: $Message - error action: $ret";
       $MeldText = "WhatsApp (WhatsAppNotify): Sender $Sender action: $Message - error action: $ret";
       sendWhatsApp($CallerNr,$MeldText);
     } else {
       Log3 "WhatsAppNotify", 3, "WhatsApp (WhatsAppNotify): Sender $Sender action: $Message - action: Ok";
       $MeldText = "WhatsApp (WhatsAppNotify): Sender $Sender action: $Message - action: Ok";
       sendWhatsApp($CallerNr,$MeldText);
     }
  } else {
     Log3 "WhatsAppNotify", 3, "WhatsApp (WhatsAppNotify): $CallerNr Sender $Sender not definied: $Message";
  }
}


Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

phel

#163
Hallo zusammen,

mich hat gestört, dass ich seit dem update nicht mehr ohne sudo Nachrichten verschicken konnte. Vielleicht ist dies nur ein Problem auf meinem System - vielleicht hilft es aber auch anderen.

yowsup schreibt in ein privates Verzeichnis, ~/.yowsup
Anscheinend gab es beim ermitteln oder beschreiben fehler - vielleicht weil der user fhem kein homedirectory hat?
Ich habe daher in der Datei yowsup/yowsup/common/constants.py den Pfad in einen absoluten Pfad geändert:
PATH_STORAGE = "/opt/fhem/.yowsup"
Anbei auch die resultierende Datei.

edit: { qx(printenv) } bringt ans Tageslicht, warum dieses Problem existiert.:
CONSOLE=/dev/console
HOME=/
OLDPWD=/
runlevel=2
INIT_VERSION=sysvinit-2.88
TERM=linux
COLUMNS=82
PATH=/sbin:/usr/sbin:/bin:/usr/bin
RUNLEVEL=2
PREVLEVEL=N
SHELL=/bin/sh
PWD=/opt/fhem
previous=N
LINES=26

HOME ist auf / gesetzt, klar, dass mein user darauf keine Schreibrechte hat.

phel

#164
Zitat von: phel am 30 Mai 2015, 00:44:06
Hallo zusammen,

mich hat gestört, dass ich seit dem update nicht mehr ohne sudo Nachrichten verschicken konnte. Vielleicht ist dies nur ein Problem auf meinem System - vielleicht hilft es aber auch anderen.

yowsup schreibt in ein privates Verzeichnis, ~/.yowsup
Anscheinend gab es beim ermitteln oder beschreiben fehler - vielleicht weil der user fhem kein homedirectory hat?
[...]
edit: { qx(printenv) } bringt ans Tageslicht, warum dieses Problem existiert.:
CONSOLE=/dev/console
HOME=/
[...]

Kurz nochmal nachgedacht, sauberer ist es einfach HOME zu setzen, dann muss nicht in den Quelldateien rumgepfuscht werden!
meine 99_myUtils.pm sieht jetzt so aus:
sub
sendWhatsApp($$)
{
  my ($handy,$text) = @_;

  my $retWhatsApp = qx( export HOME=\${PWD} && python yowsup/yowsup-cli demos -c yowsup/config -s $handy '$text' 2\>&1 &);


  $retWhatsApp =~ s/\n|\r/ /g; #s,[\r\n]*,,g;        # remove CR from return-string

  Log3 "sendWhatsApp", 3, "sendWhatsApp: $retWhatsApp";

  return $retWhatsApp;
}

Angepasst habe ich folgenden Teil:
     my $retWhatsApp = qx( export HOME=\${PWD} && python yowsup/yowsup-cli demos -c yowsup/config -s $handy '$text' 2\>&1 &);
Ich setze das HOME directory auf das Arbeitsverzeichnis - man könnte natürlich auch mit HOME=/opt/fhem einen statischen Pfad wählen.

Grüße
phel