Klingt nach einer guten Lösung. Magst du das vielleicht etwas ausführlicher beschreiben oder gibts vielleicht sogar irgendwie ein Tutorial im Web?
SS, iPhones und Webserver (Synology WebStation sollte gehen, oder?) sind vorhanden. Welche Art "Links" schickt Geofency an den Server? Was ist die Web-API der SS?
Na klar kann ich es ausführlicher beschreiben, eine plug & play Lösung kann ich allerdings nicht bieten.
Grundlage ist folgende:
Die Surveillance Station lässt sich nicht nur über das Web Frontend steuern, sondern auch mit direkten Befehlen über eine URL. Das heisst ich schicke einen Link and die Diskstation und kann mit diesem Link die Surveillance Station aktivieren bzw. deaktivieren. ES gibt noch viele weiter Funktionen die sich steuern lassen. (Dokumentation hier:
http://ukdl.synology.com/download/Document/DeveloperGuide/Surveillance_Station_Web_API.pdf )
In der Praxis läuft es so daß man sich aber auch per Web Befehl an der Surveillance Station erst einloggen muss, dann den Befehl ausführen und dann wieder ausloggen. Es ist also mehr als eine simple URL Zeile notwendig.
Daher bietet es sich an das ganze über ein Script bzw. irgendwas anderes auszuführen das einem diese Arbeit abnimmt.
Sagen wir einfach es gibt ein Script fürs einschalten und eins fürs ausschalten:
Einschalten:
- einloggen
- Surveillance Station aktivieren
- ausloggen
Ausschalten:
- einloggen
- Surveillance Station aktivieren
- ausloggen
Nun muss ich dieses Script nur noch per URL von aussen aufrufen und das Einschalten bzw. Ausschalten wird ausgeführt.
Die URL kannst du mit Geofency am iPhone mit der FUnktion "Webhook" aufrufen und dort beim betreten / verlassen verschiedene URLs aufrufen, eben das deaktivieren und aktivieren.
Ich selbst habe dafür die Webstation aktiviert und habe dort eine PHP seite laufen an die ich den Paramter ein- / ausschalten übergebe. Zusätzlich übergebe ich den Nutzer (notwendig wenn mehr als ein Nutzer im Haushalt ist). Das ganze wird in einer MySQL Tabelle protokolliert und wenn beide Nutzer abwesend sind wird erst das script fürs einschalten aktiviert.Sobald nur ein nutzer wieder anwesend ist wird wieder abgeschalten.
Um eine dauerhafte aktivierung im Nachtzeitraum zu schaffen habe ich im PHP script noch einen vergleich der Uhrzeit mit aktivierung / deaktivierung unabhängig von der Anwesenheit. Daz umuss aber ein Cronjob laufen der die PHP seite zum Beispiel alle 30 min aufruft damit der Uhrzeitvergleich stattfinden kann.
Mein ganzes PHP ist seit 6 Jahren eingerostet und ich möchte ungern das halbfertige hier posten, daher belasse ich es bei ein paar Codeschnipseln:
Variablen:
$httpformat="https"; //hier angeben ob http oder https
$port="5001"; //port
$loginname="LOGINNAME"; //Loginname an der Surveillance Station
$passwd="PASSWORT"; //passwort an der Surveillance Station
$ip="192.168.0.XXX"; //ip adresse der Surveillance station im LAN
$cam_id="2"; // Kamera ID mit script "hole Kamera ID" abfragen, später automatisieren
Login an der Surveillance Station:
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=".$loginname."&passwd=".$passwd."&session=SurveillanceStation&format=sid'");
$obj = json_decode($json, true);
$sid = $obj["data"]["sid"];
Kamera aktivieren:
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/SurveillanceStation/camera.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=2&_sid=".$sid);
Kamera deaktivieren:
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/SurveillanceStation/camera.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=2&_sid=".$sid);
Logout Surveillance Station:
$out = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout&session=SurveillanceStation");
Ich denke damit lässt sich schon was anfangen wenn man PHP und MySQL soweit im Griff hat.
Ein Stolperstein für mich war noch daß der DSM Aufgabenplaner (übernimmt den Cronjob alle halbe stunde die PHP Seite aufzurufen) keine URLs mit Variablenübergabe aufrufen kann sondern nur die reine Php Seite.