IPS und Whatsapp

@Jannis:

Vielen Dank für deine Info, es funktioniert und war recht schnell eingerichtet.

Versenden geht schnell, beim empfangen dauert es etwas…

So ich habe noch mal geguckt.

$w->PollMessage();

hat sich geänder hatte mich versehen.
Das war früher $w->PollMessages();

Nee,
das ist es auch nicht.

PollMessage() ist im Script schon geändert.
Habe verm. da schon das neuere von dir gehabt.

Muss ich morgen nochmal schauen, was da genau geändert wurde.

Grüße,
Doc

Hallo Jannis,
vielen Dank für das Script. Es funktioniert auf meinem BananaPI nach kleinen Änderungen:

Im Sendescript standen die Übergabeparameter $nummer und $text nicht zur Verfügung. Ich musste stattdessen $_IPS[‚nummer‘] und $_IPS[‚text‘] verwenden.

In der Datei events/MyEvents.php muss „onMessage“ aktiviert werden (ich hatte anfangs angenommen, dass sich Dein Hinweis nur auf das Aktivieren weiterer Features bezog).

Ich starte mittels Ereignis das Empfangsscript alle 20 sec - funktioniert auch super. Wenn ich es richtig verstehe, connected sich das Script dabei auch jedes Mal auf’s Neue. Ich weiß nicht, ob Whatsapp damit ein Problem hat und den Account irgendwann mal sperrt (?). Eigentlich müsste es ja ausreichen, „$w->pollMessage()“ zyklisch auszuführen (und vielleicht in größeren Abständen mal ein reconnect anzuschubsen).

Gruß
Peter

Hallo Peter

Das mit dem „Datei events/MyEvents.php muss „onMessage“ aktiviert werden“ hab ich extra ausprobiert und bei mir klappt es ohne aktivierung. Vielleicht fehlt dir das hier?

$w->eventManager()->bind("onGetMessage", "onMessage");

und dazu die entsprechende Funktion?

function onMessage($mynumber, $from, $id, $type, $time, $name, $body)
{
    //print_r( "Message from $name:
$body

");
     SetValueString(123456/*[Zentrale\Push\Whatsapp\Empf_Nr]*/, $name);
    SetValueString(987654/*[Zentrale\Push\Whatsapp\Empf_Mess]*/, $body);

}

Ich hab mal auf die schnelle die „onGetImage“ Funktion ausprobiert und es klappt bei mir auch ohne anpassung der MyEvents.php.

Das hier einfügen

$w->eventManager()->bind("onGetImage", "onImage");

und diese Funktion anlegen und schon erscheint ein gesendetes Bild im Webfront wenn man die Stringvariable 112233 als ~html anlegt.

function onImage($mynumber, $from, $id, $type, $time, $name, $size, $url, $file, $mimetype, $filehash, $width, $height, $preview)

{
    //print_r( "Message from $name:
$ $url $preview 

");
    
     SetValueString(112233 /*[Zentrale\Push\Whatsapp\Bild]*/ /*[Zentrale\Push\Whatsapp\Empf_Nr]*/, '<img src="'.$url.'">');

}

@Doc und sallos

kann es sein das ihr zwei versiedene Sourcen (<= schreibt man das so???) verwendet?
Diese Versionen hab ich so gefunden:
venomous0x/WhatsAPI <= auf die bezieht sich das erste Script von sallos ist aber seit einer Weile nicht aktualisiert worden
shirioko/WhatsAPI <= ist ein ableger von der ersten und neuer

mgp25/WhatsAPI-Official <= Funktioniert mit events und ist aktueller
Ich benutzt mitlerweile die mpg25 version die du Doc ja auch verlinkt hattest.

Gruß Jannis

Ich hatte bis jetzt die von venomous0x genommen und dann nochmal die von mgp25.

Die habe ich heute nochmal upgedated (ist ca. 5h erst alt) und bekomme nun mit deinem Script und dem von Sallos folgende Fehlermeldung:

Fatal error: Call to undefined function socket_create() in C:\IPS2\scripts\src\whatsprot.class.php on line 480
Abort Processing during Fatal-Error: Call to undefined function socket_create()
Error in Script C:\IPS2\scripts\src\whatsprot.class.php on Line 480

Verliere so langsam den Überblick, was noch funktioniert und was nicht.

Grüße,
Doc

Ich nutze das Script hier mit dem zugehörigen Config Script v. Sallos:
Ich denke, da ist wohl in der aktuellen Source was geändert worden?

@Sallos,
kannst du mal schauen, ob das noch die funktionierende Version ist, die du benutzt?
Und mir evtl den Link zu den Sourcen geben, den du auch nutzt?

Danke,
Doc

//Config Script ermitelln
$SELF = IPS_GetObject($IPS_SELF);
$ID_Config = $SELF['ParentID'];
$DateiNa_Config = IPS_GetScriptFile($ID_Config);

include($DateiNa_Config);
require $Whatsapi;


$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);

$w->pollMessage();
$msgs = $w->GetMessages();

//Arary zerlegen
if( !empty( $msgs ) )
{

    foreach($msgs as $m){
       $attri = $m->getAttributes();
       $from = str_replace("@s.whatsapp.net", "",$attri['from']);
       $time = date("m/d/Y H:i",$attri['t']);
       foreach (($m->getChildren()) as $child) {
               if (($child->getTag()) == "body")
                    {
                         //Nachricht auslesen und Großschreibung entfernen
                   $body = strtolower($child->getData());
               }
               else if (($child->getTag()) == "notify")
                    {
                   $name = $child->getAttribute('name');
               }
        }
    }


    SetValueString($ID_Temp_Nr, $from);
    SetValueString($ID_Temp_Mess, $body);

    //Config Switch
    $Ret = Antwort($body);
    //Sende Array
    //0 = Text Nachricht
    //1 = Antort Nummer
    //2 = Foto Senden TRUE FALSE
    //3 = Ort des Fotos
    //Antworten
    if ($Ret[1] == $from)
    {
      $w->sendMessage($Ret[1], $Ret[0]);
      if ($Ret[2] == True)
      {
         $URL = $w->uploadFile('D:\Current.jpg');
         echo $URL;
         $w->sendMessageImage($Ret[1], $URL, false);

      }
    }


}

Bei mir funktioniert dieses auch unter Ubuntu, nur beim Empfangen wird immer
die gleiche Nachricht empfangen und im IOS-Client erfolgt auch keine bestätigung das diese gelesen wurde.

Hat jemand ein Idee, weshalb die Nachrichten nicht als gelesen gekennzeichnet werden?

Viele Grüße
Ralf

Hi zusammen,

nachdem leider das alte WhatsApp Script bei mir nicht mehr funktioniert habe ich auf das Neue, von Janina vorgestellte, geschwenkt.
Leider habe ich gerade ein Brett vor dem Kopf und bekomme es nicht hin so wie im alten Script auf bestimmte Texte reagieren zu können, also automatisch zu antworten bzw. Aktionen in IPS ausführen zu können.

Kann mir jemand kurz auf die Sprünge helfen?

Danke

Hallo spooniester
auf die schnelle würde ich es so machen.

Im Empfangsscript die function onMessage abändern:

function onMessage($mynumber, $from, $id, $type, $time, $name, $body)
    {
    //print_r( "Message from $name:
$body

");
 //   SetValueString(xxxxx, $name);
  //  SetValueString(xxxxxx, $body);
  if ($name=="Hans")
  {
  switch($body)
    {
       case "temp aussen":
          $Send_Mess = "Es ist ".GetValue(31565  /*[Grodenstr\Funk-Temp\Außen hinten\Temperatur]*/)."Grad draussen";
       IPS_RunScriptEx(123456, Array("nummer" => 'Name1', "text" =>  $Send_Mess ));  
          
  break;
          case "temp":
          $Send_Mess = "Es ist ".GetValue(31565  /*[Grodenstr\Funk-Temp\Außen hinten\Temperatur]*/)."Grad draussen (Blexen)";  
IPS_RunScriptEx(123456, Array("nummer" => 'Name1', "text" =>  $Send_Mess ));  
 
          break;
case "Licht an":
      //machirgendwas
   break;
 }
    } 

123456 ist die ID des Sendescriptes.
Ist jetzt aber nur schnell hingeschrieben und als Anregung gedacht, ich habs nicht ausprobiert.
Ich würde noch die $name variable überprüfen, nicht das da jeder bei dir was schalten kann.

Gruß Jannis

P.S.: Unser Segelboot hieß mal Janina, danke für die Verwechslung :smiley:

Hallo,

ich wollte einen neuen WhatsApp Account mit einer meiner Festnetznummern „eröffnen“. Das Ganze habe ich mit dem BlueStacks Android Emulator versucht. Jedoch sagt WhatsApp mit, dass meine Nummer nicht gültig ist… :confused:
Erkennt WhatsApp das Android auf einem Emulator läuft und versucht es erst gar nicht? Hatte sowas einmal gelesen. Wie sind euere Erfahrungen damit? Oder prüfen die evtl. ob es sich um eine Festnetznummer handelt?

Grüße

jevico

HI!

Festnetznummer sollte funktionieren >> WhatsApp ohne SIM-Karte nutzen - so gehts mit Festnetznummer

Weiterer Link bezüglich WhatsApp mit PC:
Whatsapp auf dem PC installieren? ANLEITUNG (Computer)

Grüße,
Chris

P.S.: Unser Segelboot hieß mal Janina, danke für die Verwechslung :smiley:

Hi JANNIS,

sorry, diese bl***de Autovervollständigung :slight_smile:

Hat funktioniert, danke!!!

spooniester

Welche Quelle hast du denn jetzt genommen?
Bei mir funktioniert das Empfanger immer noch nicht …

Grüße,
Doc

Habe es nach Jannis Anleitung gemacht und in der Datei events/MyEvents.php alles einkommentiert was Message beinhaltete!

Jetzt gehts bei mir!

Das Problem mit dem Socket bestand auch bei meiner Installation. Die beiden wo es läuft haben das wohl mal intuitiv selber installiert. Man muss die entsprechende Socket-Extension nach installieren für IPS. Es gibt dazu ne einfache Anleitung hier

http://www.ip-symcon.de/forum/threads/16631-PHP-Extensions-f%FCr-IP-Symcon-2-6-oder-neuer

Einfacher dieser folgen und zwar mit der Sockets.dll – Ich würde nicht einfach alle reinpacken und installieren… zum einen wegen Stabilität und zum anderen wegen Performance. Ich hatte mal die SNMP.Dll verwendet… meine Fresse ist das Teil buggy…

So wenn ihr das macht, kommt auch der Socketfehler nicht mehr und der Rest läuft wohl wie gedacht.

Gruss

Doc oder die welche genau nach Sallos gegangen sind…

erstens den Teil mit from und str_replace würde ich beibehalten aber wie folgt ändern… sonst ist die Nummer falsch

   $from = str_replace("@s.whatsapp.net", "", $from);

Dann denkt natürlich daran die Instanzierung von

	$ID_Temp_Mess = xxx /*[SCRIPT\WHATSUP\Empfang_MSG]*/ ; //ID der Zwischenspeichers(String)
	$ID_Temp_Nr = xxxx

muss neu in die onMessage funktion und gehört nicht mehr an den Anfang. So thats it… läuft gut… ankommen der Nachrichten dauert aber schon etwas. Später schau ich mir mal die Sache mit den Bilder an… das ist natürlich cool wenn das nun so einfach geht.

Hallo allerseits!

Falls ihr es noch nicht kennt und jemand ein wenig Lust zum „Testen“ hat :smiley:

WhatsSpy
>> Verwendung auf eigene Gefahr! Nur für Testzwecke!

http://blog.simonszu.de/whatsspy/ (Gute Anleitung für die Einrichtung auf einem Raspberry PI)

Was kann man damit „auslesen/überwachen/…“?
[i]> Online/Offline status (even with privacy options set to „nobody“)
> Profile Pictures *
> Status Messages *
> Privacy Settings

  • only if privacy option is set to „everyone“ (set by default)[/i]

Grüße,
Chris

Vielleicht wurde es hier schon genannt… aber ich hau es trotzdem noch mal raus :wink:

Bei Android Geräten bietet sich hervorragend NotifyMyAndroid an. Bis zu einer bestimmten Anzahl an Nachrichten am Tag kostenlos, wenn man mehr verschicken möchte kostet das ganze einen einmaligen Preis von ich glaube 2 Euro (Lifetime) :smiley:

Nutze es privat und für die Firma.
Man kann jeder Nachricht eine Priorität vergeben. Am Handy kann man für jede Priorität einen eigenen Klingelton hinterlegen. Bei mir ist z.B. die höchste Priorität mit einer Sirene versehen :cool:

Notify My Android - Home

Hi,

also die Erstellung eines Accounts mit einer Festnetznummer hat nun funktioniert. Leider Kämpfe ich noch mit dem WART Tool. Es gibt dazu keinerlei Anleitung.

Phone number: Ist klar
Passwort: Habe ich eins eingegeben
Was hat es mit dem Code auf sich? Brauche ich den? Den habe ich doch bereits per Anruf bekommen und bei WhatsApp eingegeben.
Was mich irritiert ist, dass es kein Feld IMEI gibt.

Ich habe jetzt folgende Angaben in der Config gemacht und bekomme immer einen Login-Fehler:


$userPhone        = '49xxxxxxxxxx';      //Handynummer ohne + einfach 4917...
$userIdentity     = '000000000000000';    //Imei Nummer
$userName         = 'Ist nur der Nick';           //User Name
$password         = '%8fc%17s%7d%c8%ec%xxxxxxxxxxxxxxxxxxxxxxxxx';

Ich verstehe es nicht :frowning: