Hilfe für DynDNS Ersatz / Bei Änderung externer IP Versand einer Email/SMS

Begonnen von AnonymousHolger, 02 Oktober 2016, 12:10:27

Vorheriges Thema - Nächstes Thema

AnonymousHolger

Hallo,
ich bin gerade in der "Findungsphase" für eine neue Funktion, die ich gerne implementieren möchte.

Hintergrund:
Synology DS216+ mit FHEM und Traccar im Einsatz:
Traccar loggt die von GPS Trackern über GPRS übermittelten Daten und stellt diese graphisch dar
-> Flottenmanagement mit GPS Tracker im Auto und z.B. versteckt am Ebike zur Diebstahlsicherung

Nun gibt es sowohl GPS Tracker, die DNS Auflösung unterstützen (z.B: TK5000) und ich kann die GPRS Konfigurierung mit dem DNS Namen vornehmen, den ich verwende.
Der Grossteil der GPS Tracker kann jedoch DNS Namensserveradressen nicht auflösen und benötigt daher per SMS die GPRS Definition der IP und des Ports.
--> Also müsste ich bei jeden Änderung der meiner DynDNS zugeordnenten IP durch den Anbieter (KabelBW) über kontinuierliche Abfrage prüfen, was ist die aktuelle externe IP, ist die IP geändert, und wenn, sende eine email, die dann via SMS77 Service als SMS an den Tracker weitergeleitet wird.

Aktuell läuft bei mir FHEM mit Fritzbox Modul und ich kann die externe IP Adresse daher als reading box_ipExtern schon einmal sehen.

Wie würdet ihr das Thema angehen ?
Gesteuert über FHEM oder ist es ggf. sogar besser ein *.sh script zu generieren, das genau so etwas tut, und nur das Script z.B. aus FHEM zu triggern (dann hab ich es übersichtlich im FHEM, da ich Cron etc derzeit auf der DS nicht verwende).

Codebeispiele nehme ich gerne :-) .. bin immer noch nicht so "perl" beflissen ...

Danke

AnonymousHolger

#1
Sooo, hab es nun wohl selbst mit PHP geschafft ....

Da ich mal wieder Probleme mit der Emailfunktion hatte (sendemail wie von M.Fischer für Synology vorgeschlagen wollte bei mir nicht funktionieren wegen Perl Fehlern. auch nicht mit Active Perl :-( ....)

Mit dem Notify auf das Perlscript kann FHEM jetzt regelmässig prüfen, ob die externe IP geändert wurde, und wenn das festgestellt wird, dann wir dem Tracker per Email2SMS Service von SMS77 der entsprechende Befehl zugeschickt, die Daten an die neue IP zu schicken ...
Scheint gut zu funktionieren.

Notify FHEM wie folgt:
#Define External IP Updatefunktion für Tracker
define UpdateIPForTracker at +*00:05:00 {system("php /volume1/web/PHPMailScript/IPUpdateScript.php >> $currlogfile 2>&1 &")}


<?
$NewIP=shell_exec('curl -s http://whatismijnip.nl |cut -d " " -f 5');
echo "NewIP: ", $NewIP;
$OldIP = file_get_contents('/volume1/web/PHPMailScript/OldIP.txt');
echo "OldIP: ", $OldIP;
$account="GmailSenderAccount@gmail.com";
$password="GmailPasswort";
$to="email2sms@sms77.de";
$from="SenderAccount";
$from_name="SenderName";
$msg="<SMS77Passwort>#<AddressBookEntry>#Direct";
$subject="<TrackerStringToChangeIP ";
$subject.=$NewIP;
$subject.=" TrackerStringToChangePort";

$handle = fopen ("/volume1/web/PHPMailScript/OldIP.txt", w);
fwrite ($handle, $NewIP);
fclose ($handle);

if($NewIP != $OldIP){
  include("phpmailer/class.phpmailer.php");
  $mail = new PHPMailer();
  $mail->IsSMTP();
  $mail->CharSet = 'UTF-8';
  $mail->Host = "smtp.gmail.com";
  $mail->SMTPAuth= true;
  $mail->Port = 465; // Or 587
  $mail->Username= $account;
  $mail->Password= $password;
  $mail->SMTPSecure = 'ssl';
  $mail->From = $from;
  $mail->FromName= $from_name;
  $mail->isHTML(true);
  $mail->Subject = $subject;
  $mail->Body = $msg;
  $mail->addAddress($to);
  if(!$mail->send()){
    echo "Mailer Error: " . $mail->ErrorInfo;
  }else{
    echo "Tracker Update has been sent";
  }
}else{
  echo "No Tracker Update required";
}
?>