Surveillance Station Bewegungserkennung von unterwegs aktivieren/deaktivieren

Status
Für weitere Antworten geschlossen.

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Nochmal ich: kann es sogar sein, dass die Aktivierung/Deaktivierung in der SS gar nicht mehr klappt? Kann das bitte mal ein prüfen, der das auch umgesetzt hat? Stehe grad ein wenig auf dem Schlauch, denn bei mir klappts nicht mehr. Danke
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.164
Punkte für Reaktionen
412
Punkte
393
Hallo,
probiere mal
/usr/local/bin/php56
als php Aufruf.

Gruß Götz
 

createch2

Benutzer
Mitglied seit
22. Dez 2013
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Nochmal ich: kann es sogar sein, dass die Aktivierung/Deaktivierung in der SS gar nicht mehr klappt? Kann das bitte mal ein prüfen, der das auch umgesetzt hat? Stehe grad ein wenig auf dem Schlauch, denn bei mir klappts nicht mehr. Danke

Bei wem funktioniert die Lösung noch? Ich habe heute auf DSM 6 gewechselt und meine scripte laufen nicht mehr.
Der cronjob Pfad fürPHP wurde schon geändert, aber das Feedback beim an/ausschalten per webapi bleibt komplett aus.
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Bei mir klappt es mit dem neuen php-Pfad wieder. Dachte auch zwischenzeitlich, da ist was an der Api gewechselt. Aber ich hab auch eine neue geplante Aufgabe erstellt. Vielleicht will DSM 6 nicht mit den alten Aufgaben/cronjobs?
 

createch2

Benutzer
Mitglied seit
22. Dez 2013
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Cronjob / Aufgaben kann ich als Ursache ausschließen weil auch das händische Aufrufen meines PHP scripts keinen Erfolg bringt.
PHP selbst läuft auber, aber ich bekomme keine Session ID zurück.

Kannst du mir mal ein Codeschnipsel schicken?
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Schicke dir alles was du möchtest, weiß nur nicht, was du genau möchtest? Bin doch ein Laie...du erinnerst dich bestimmt noch ;-)
 

createch2

Benutzer
Mitglied seit
22. Dez 2013
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Mich würde der Part mit dem Login an der Surveillance Station schonmal interessieren.
Bei mir schaut das so aus und da bekomme ich keine Session ID zurück bzw. angezeigt:

//--------BEGINN SURVEILLANCE STATION LOGIN
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=2&account=".$loginname."&passwd=".$passwd."&session=SurveillanceStation&format=sid'");
$obj = json_decode($json, true);
$sid = $obj["data"]["sid"];
echo "Login sid:".$sid."<br>";
//--------ENDE SURVEILLANCE STATION LOGIN

Ohne Session ID kann ich mit dem Rest nicht fortfahren.
 

createch2

Benutzer
Mitglied seit
22. Dez 2013
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
update: es liegt scheinbar am https. Wenn ich den Aufruf über HTTP mache funktioniert es. Naja, damit kann ich erstmal leben.
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Bei mir gehts noch mit https. Füge hier mal mein komplettes File an:

<CODE>
<?php

if (isset($_POST['cam_mode'])){$cam_mode=$_POST['cam_mode'];}else{ if (isset($_GET['cam_mode'])){$cam_mode=$_GET['cam_mode'];}else{unset($cam_mode);}}
if (isset($_POST['user'])){$user=$_POST['user'];}else{ if (isset($_GET['user'])){$user=$_GET['user'];}else{unset($user);}}
if (isset($_POST['pass'])){$pass=$_POST['pass'];}else{ if (isset($_GET['pass'])){$pass=$_GET['pass'];}else{unset($pass);}}
//include ("xxxx.php"); //Verbindung zu Kategorie Tabelle herstellen
//--------beginn settings
$P_TIME_START = time()+microtime();
$dbname="logfile"; // hier Datenbankname eintragen
$dbhost="127.0.0.1"; // ip Adresse localhost
$dbuser="root"; // username SQL benutzer
$dbpass="Passwort"; // passwort SQL Nutzer
if(@mysql_connect($dbhost,$dbuser,$dbpass)==0){die ("Die MySQL Verbindung an die gewünschte Datenbank wurde zurückgewiesen (MySQL läuft nicht)");}
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
$httpformat="https"; //hier angeben ob http oder https
$port="Port"; //port
$loginname="Name"; //Loginname an der Surveillance Station
$passwd="Passwort"; //passwort an der Surveillance Station
$ip="IP"; //ip adresse der Surveillance station
$cam_id="1"; // Kamera ID mit script "hole Kamera ID" abfragen, später automatisieren
$night_start="2100"; //Beginn Nachtmodus Format HHmm
$night_end="0559"; //Ende Nachtmodus Format HHmm
$uhrzeit = date("Hi",time());
$path="/webapi/_______________________________________________________entry.cgi";

//---------BEGINN USERSPERRE
if ((($user=="User2") and ($pass=="Passwort")) or (($user=="User1") and ($pass=="Passwort")))
{echo $user."<br>";} else {$user="cronjob";$pass="Passwort";echo $user."<br>";}
//---------ENDE USERSPERRE


//---------BEGINN zeitsteuerung Nachtmodus
if (($uhrzeit > $night_end) AND ($uhrzeit < $night_start))
{
//Tagmodus
echo "Tagmodus aktiv<br>";
$presence=0;
}
else
{
//Nachtmodus
echo "Nachtmodus aktiv<br>";
$presence=1;
}

//---------Ende zeitsteuerung Nachtmodus

//------BEGINN LOGFILE IN DATENBANK TABELLE 'logfile' SCHREIBEN

if ($cam_mode=="on")
{
$presence=0;
}
else
{
if ($cam_mode=="off")
{$presence=1;}
}
mysql_query("INSERT INTO logtable (TIME,USERNAME,PRESENT) VALUES (NOW(),'$user','$presence')");
//------ENDE LOGFILE SCHREIBEN




//------BEGINN ANWESENHEITSAUSWERTUNG
//echo "Statusanzeige Anwesenheit:<br><br>";

$result_entry = mysql_query("SELECT * FROM `logtable` WHERE USERNAME like '%cronjob%' ORDER BY ID DESC");
$result_entry_num = mysql_num_rows($result_entry);
if ($result_entry_num==0)
{echo "nichts gefunden";}
else
{
$presentA=mysql_result($result_entry,0,"PRESENT");
// echo "Nachtmodus:".$presentA."<br>";
}

$result_entry = mysql_query("SELECT * FROM `logtable` WHERE USERNAME like '%User2%' ORDER BY ID DESC");
$result_entry_num = mysql_num_rows($result_entry);
if ($result_entry_num==0)
{echo "nichts gefunden";}
else
{
$presentB=mysql_result($result_entry,0,"PRESENT");
$timeB=mysql_result($result_entry,0,"TIME");
echo "User2s Anwesenheitsstatus ist jetzt: <B>".$presentB."</B> (1=Anwesend; 0=Abwesend) seit ".$timeB."<br>";
}

$result_entry = mysql_query("SELECT * FROM `logtable` WHERE USERNAME like '%User1%' ORDER BY ID DESC");
$result_entry_num = mysql_num_rows($result_entry);
if ($result_entry_num==0)
{echo "nichts gefunden";}
else
{
$presentC=mysql_result($result_entry,0,"PRESENT");
$timeC=mysql_result($result_entry,0,"TIME");
echo "User1s Anwesenheitsstatus ist jetzt: <B>".$presentC."</B> (1=Anwesend; 0=Abwesend) seit ".$timeC."<br>";
}
if (($presentB+$presentC)==0)
{$cam_mode="on";}
else
{$cam_mode="off";}
if ($presentA==1){$cam_mode="on";}



//------ENDE ANWESENHEITSAUSWERTUNG

//--------BEGINN SURVEILLANCE STATION LOGIN
//-------auskommentiert, andere Version darunter versuchen $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'");
$json = file_get_contents('http://IP:port/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=name&passwd=Passwort&session=SurveillanceStation&format=sid');

$obj = json_decode($json, true);
$sid = $obj["data"]["sid"];
//echo "Login sid:".$sid."<br>";
//echo "Login cam_id:".$cam_id."<br>";
//--------ENDE SURVEILLANCE STATION LOGIN



//--------BEGINN SURVEILLANCE STATION Aktiviere Kamera
if ($cam_mode=="on")
{
$json = file_get_contents('http://IP:port/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=1&_sid='.$sid);

echo "<br><B>Kamera ist jetzt aktiviert </B><br>";
}
if ($cam_mode=="off")
{
$json = file_get_contents('http://IP:port/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=1&_sid='.$sid);
//echo $json."<B>Kamera ist jetzt deaktiviert</B> <br>";
echo "<B><br>Kamera ist jetzt deaktiviert</B> <br>";
}
//--------ENDE SURVEILLANCE STATION Aktiviere Kamera


//----BEGINN logout Surveillance Station
// auskommentiert $out = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout&session=SurveillanceStation");
$out = file_get_contents('http://IP:port/webapi/auth.cgi?api=SYNO.API.Auth&method=Logout&version=3&session=SurveillanceStation&format=sid');

//----ENDE logout Surveillance Station

</code>
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Habe mir jetzt eine zweite Kamera bestellt. @createch2, hast du eine Idee, wie ich das am besten einbinde? Mache ich dann einfach einen zweiten Aufruf beim Aktivieren/Deaktivieren der Kamera mit einer cameraIds=2 ?

Und in den Settings am Anfang des php ist die cam_id=1 ja hardcoded. Muss daran was geändert werden?
 

StefanWxx

Benutzer
Mitglied seit
15. Sep 2014
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hi,
sollte normal mit Komma gehen: cameraids=2,3 z.B.
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Danke, werde ich testen. Aber wozu ist dann in den Settings überhaupt die Angabe cam_id=1 ? Oder dann da auch mit Komma arbeiten?
 

StefanWxx

Benutzer
Mitglied seit
15. Sep 2014
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
also wenn du die Settingsverwenden möchtest:
cam_id=1,2


musst du später in den beiden Urls antstelle der 1 den Namen der Variablen eintragen:

...&version=3&cameraIds=$cam_id&....
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Danke! Ich werde berichten. Denn nach wie vor eine extrem coole Lösung, was createch2 da gebaut hat. Funktioniert (nahezu) ohne Probleme und man muss sich nicht um das Ein-/Ausschalten der Kameras kümmern.
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Hat hier jemand eigentlich schon auf das Dokument zur API 2.4 hingewiesen?


Weiß einer wie das ist, wenn man alle Kameras über die API deaktiviert ob die Synology in den Ruhezustand geht oder muss man das Paket dafür stoppen?
 

Rabutax

Benutzer
Mitglied seit
04. Jan 2016
Beiträge
17
Punkte für Reaktionen
3
Punkte
3
Hallo,

finde die Idee klasse, über die Erkennung des Handys die Bewegungserkennung zu steuern.
Bin jetzt nicht so bewandert in PHP und bitte schon vorab um Gnade, aber kann man statt Geofence nicht auch
über einen Ping-Aufruf das Handy lokalisieren und dann entsprechende Steuerbefehle an die Bewegungserkennung senden?

Gruß
Rabutax
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Wenn deine DS immer läuft oder z.B. ein pi.

Dann könntest du per ping testen ob das Gerät zuhause im WLAN ist und entsprechend ein Script nutzen.

Hab mir gestern auch erstmal ein Script für den pi geschrieben welches sowas genau macht. Erst wenn alle IPs abgemeldet sind sollen die Kameras angehen und wenn man wieder da ist wieder aus.
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Aber ist es nicht so, dass z.B. das iPhone das WLAN trennt, wenn es im Standby ist? Mag sein, dass das bei Android anders ist. Bei mir klappts jedenfalls so echt perfekt. Zweite Cam ist auch grad eingebunden, allerdings mit separatem Befehl, nicht über das Komma wie von Stefan vorgeschlagen, das hat nicht geklappt.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat