IPS und Whatsapp

Moin,

ich wollte irgendwie vom IPS benachrichtigt werden, wenn was passiert.
Da ich aber keine Lust habe für ein SMS Gateway Geld zu bezahlen, kam mir Whatsapp in den Sinn.

Nach ein paar Stunden Surfen fand ich eine Whatsapp php Lib. Nur leider kann man nicht mit 2 Geräte Online sein also habe ich mir mal erstes eine neue SIM-Karte besorgt…

Die Lib braucht aber das Whatsapp Passwort was leider so nicht sichtbar ist, aber auch dafür gibt es ein Tool.
->Ich weiß nicht ob man das hier beschreiben darf wie man das Passwort ausließt? Deswegen erst mal ohne.

Nach ein paar Stunden rumprobieren Reagiert mein IPS nun auf Whatsapp :smiley:

Senden -> Temp aussen
Antwort -> Es ist -4Grad draußen

:smiley:

Ich habe erst mal nur etwas provisorischen Code zusammen geschrieben. Ich werde mal versuchen die Tage das mehr zu beschreiben und zu posten.

…klingt Interessant… PROWL ist kostenlos und fertig entwickelt. Zudem braucht man keine extra SIM;)
Bin dennoch auf die Lösung/Code gespannt.
LG

Hallo Salos,

wieso machst du es nicht über die Email funktion? Ist vorhanden und kostet nix. Geht natürlich nur wenn dein Handy Emails empfangen kann.

Push Nachrichten in der App, Prowl, eMail…

Also kostengünstige Lösungen gibts da schon einige !

Moin,

warum ich das mache? Weil Whatsapp jeder hat und ich brauche nix extra auf dem Handy einrichten!

Und die Sim kostet ja nix. Die bekommt man ja so zugesendet für lau.

Hi, also ich habe großes Interesse an der Lösung, vor allem das bidirektionale gefällt mir. So brauch ich nicht immer das VPN zu starten um bspw verschiedene Stati abzufragen!

Über eine Anleitung würd ich mich also freuen!

Gruß
spooniester

dto. find ich ebenfalls sehr interessant

Ich habe mal WhatsApp mit Bluestacks App Player auf dem PC installiert, man kann auch die Festnetznummer angeben und man erhält den Code für die Freischaltung per Anruf. Eventuell ist das hilfreich, dann kann man sich die Sim sparen.

Hallo,

so dann fange ich mal an:

-Sim Karte bekommt man kostenlos bei o2 (o2 Freikarte)

-Passwort für Whatsapp:

Da gibt es ein einfaches Tool: HIER

Das Tool ist eigentlich selbsterklärend. Und man kann immer nur mit einen Gerät online sein!

-Whatsapi herunterladen:

Diese Lib herunterladen und abspeichern HIER

-Mein Script:

Ist bisher nur das Empfangen und Config Script:

Config:

<?
//Whatsapp Einstellungen
$userPhone        = '491...';      //Handynummer ohne + einfach 4917...
$userIdentity     = '';    //Imei Nummer
$userName         = '';               //User Name
$password         = '';   //Passwort Whatsapp per WART Herausfinden
$debug            = false;
////////////////////////

//Variablen
$ID_Temp_Mess = 13489 /*[test\Whatsapi\Empf_Mess]*/ ; //ID der Zwischenspeichers(String)
$ID_Temp_Nr = 12894 /*[test\Whatsapi\Empf_Nr]*/ ; //ID der Zwischenspeichers(String)

//Whatsapi Speicherotz
$Whatsapi = 'D:\IP-Symcon\scripts\src\php\whatsprot.class.php';


?>

Empfangen:

<?
//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->PollMessages();
$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);
	
}





?>

Unbenannt.PNG

So V1.2

Das Bilder senden geht leider noch nicht. Aber in der Config kann man nun einstellen was IPS wem antworten soll.

Config:

<?
//Whatsapp Einstellungen
$userPhone        = '';      //Handynummer ohne + einfach 4917...
$userIdentity     = '';    //Imei Nummer
$userName         = '';               //User Name
$password         = '';   //Passwort Whatsapp per WART Herausfinden
$debug            = false;
////////////////////////

//Variablen
$ID_Temp_Mess = 13489 /*[test\Whatsapi\Empf_Mess]*/ ; //ID der Zwischenspeichers(String)
$ID_Temp_Nr = 12894 /*[test\Whatsapi\Empf_Nr]*/ ; //ID der Zwischenspeichers(String)

//Whatsapi Speicherotz
$Whatsapi = 'D:\IP-Symcon\scripts\src\php\whatsprot.class.php';


//Whatsapi Antworten alles kleine schreiben!!! Die Ankommende Nachricht wird automatisch auf kleinschrift umgewandelt
//Sende Array
//0 = Text Nachricht
//1 = Antort Nummer
//2 = Foto Senden TRUE FALSE
//3 = Ort des Fotos


function Antwort($message)
{
	switch($message)
	{
	   case "temp aussen":
	      $Send_Mess = "Es ist ".GetValue(31565  /*[Grodenstr\Funk-Temp\Außen hinten\Temperatur]*/)."Grad draussen";
	      $Send_To = '491';
	      $Send_Pic = False;
	      $Send_Path ="";
	      break;
	   //Panja
	   case "temp":
	      $Send_Mess = "Es ist ".GetValue(31565  /*[Grodenstr\Funk-Temp\Außen hinten\Temperatur]*/)."Grad draussen (Blexen)";
	      $Send_To = '49';
	      $Send_Pic = False;
	      $Send_Path ="";
	      break;
	   case "temp schlaf":
	      $Send_Mess = "Es ist ".GetValue(47409  /*[Grodenstr\Funk-Temp\Schlafzimmer\Temperatur]*/)."Grad im Schlafzimmer";
	      $Send_To = '491';
	      $Send_Pic = False;
	      $Send_Path ="";
	      break;
	   case "temp stube":
	      $Send_Mess = "Es ist ".GetValue(22267  /*[Grodenstr\Funk-Temp\Stube\Temperatur]*/)."Grad in der Stube";
	      $Send_To = '491';
	      $Send_Pic = False;
	      $Send_Path ="";
	      break;
	   case "gartenlicht?":
	      if (GetValue($ID_GartenLi) == 1)
	      {
	         $Temp = "AN";
			}
			else
			{
			   $Temp = "AUS";
			}
	      $Send_Mess = "Das Gartenlicht ist ".$Temp;
	      $Send_To = '491';
	      $Send_Pic = False;
	      $Send_Path ="";
	      break;
	   case "gartenlicht=aus":
	      ModBus_WriteCoil($ID_GartenLi_M,false);
	      $Send_Mess = "AUS";
	      $Send_To = '4917';
	      $Send_Pic = False;
	      $Send_Path ="";
	      break;
	   case "gartenlicht=ein":
	      ModBus_WriteCoil($ID_GartenLi_M,true);
	      $Send_Mess = "EIN";
	      $Send_To = '4917';
	      $Send_Pic = False;
	      $Send_Path ="";
	      break;
	   case "foto":
	      $Send_Mess = "Foto";
	      $Send_To = '491';
	      $Send_Pic = True;
	      $Send_Path ='';
	      break;
	}
	
	
	$Ret[0] = $Send_Mess;
	$Ret[1] = $Send_To;
	$Ret[2] = $Send_Pic;
	$Ret[3] = $Send_Path;
	
	return $Ret;

}


?>

Empf:

<?
//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->PollMessages();
$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);
         
      }
	}
	
	
}





?>

Hast du das mit dem Bild aus IPS mitsenden hingekriegt? Sonst noch vielen Dank Sallos -> interessante Sache

Bin ich noch dran. Ein Bild was im Netz liegt geht! Nur ich bekomm keine Bilder auf dem Whatsapp Server hochgeladen…Alternativ müsste man die auf einen andere Bild Server laden.

Jop das ist eine Knacknuss. Bestehende aus dem Netz gehen aber lokale sind schwierig.

Wie gesacht sonst müsste man sie auf einen FTP Server laden oder so…

Passend zum Thema: WhatsApp droht API Entwicklern mit rechtlichen Schritten

Wundert mich fast, dass es immer noch funktioniert…

Edit:

Ich beobachte ja „die Konkurenz“ telegram immer noch gespannt :wink:

Gruß,

Toni

Hehe ja das hab ich auch gelesen…Ist aber auch schon wieder ne Zeit her.

Die API macht ja ein Android Handy nach, also eher zweifelhaft das der Server den unterschied merkt… Ein Whatsapp update könnte die API aber natürlich ausschließen…mal sehn ich finde die Funktion ganz nett :smiley:

Und das Whatsapp unsicher ist wissen wir ja wohl alle…und alle nutzen es :wink:

Es gibt ja noch mehr alternativen, aber er hat die schon installiert???

schade, die github seiten sind wohl down, hat noch wer kopien davon?

Gruß Robert

Ja hab ich auf meinem andrem Rechner…schick mir doch einfach ne pn

dem der Datenschutz und die Privatsphäre egal ist… oder noch nie hinterfragt hat, wie der Dienst arbeitet…

Also für mich ein absolutes NOGO…

(Dies stellt meine persönliche Meinung dar, ich will niemanden angreifen…)

Ich lebe auch sehr gut ohne :wink: :smiley: :smiley: