Erste Schritte mit php, bitte um Hilfe

Status
Für weitere Antworten geschlossen.

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

ich möchte dies hier gerne verwirklichen: http://www.synology-forum.de/showth...kennung-von-unterwegs-aktivieren-deaktivieren

Leider hakt es bei mir bereits bei den ersten Schritten. Folgendes System: 414j, DSM 5.2 mit Update 2, Webstation, phpmyadmin und MariaDB installiert. Zugriff jeweils auch entsprechend vorhanden.

Bei mir tauchen aber die ersten Hürden bereits bei der Frage auf, wie ich wo eine php-Seite erstelle.

Im ersten Schritt würde es mir reichen, es hinzubekommen, die Surveillance Station via Webbefehl an und auszuschalten. Kann mir als absolutem Laien da wer weiterhelfen? Das mit den Befehlen habe ich glaube ich verstanden, nicht jedoch, wie eine ganze php-Datei aussehen muss, und wohin ich diese legen muss. Einfach nur in den \web\phpmyadmin Ordner?

Und eine SQL-Tabelle brauche ich doch dann erst später, wenn ich mehrere Nutzer und oder Nachtzeiten schalten möchte, oder verstehe ich da was falsch?

Danke für eure Hinweise.

Grüße
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Ich mache hier einfach mal weiter, ein bisschen bin ich vorwärts gekommen, wäre aber nach wie vor für jeden Hinweis dankbar:

Wenn ich die folgende phpinfo.php in den root-Ordner lege, bekomme ich über die Angabe meiner DDNS-Adresse\phpinfo.php alle Infos zu PHP angezeigt, wie es sein sollte.

PHP:
<?php
phpinfo();
?>

Insofern denke ich, dass ist soweit in Ordnung. Ich habe dann eine ausschalten.php ebenfalls in den root-Ordner gelegt.

PHP:
<?php

$httpformat="http"; //hier angeben ob http oder https
$port="5000"; //port
$loginname="administrator"; //Loginname an der Surveillance Station
$passwd="Passwort"; //passwort an der Surveillance Station
$ip="192.168.178.99"; //ip adresse der Surveillance station im LAN
$cam_id="1"; // 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 deaktivieren:
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/_______________________________________________________entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=".$cam_id."&_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");


?>

Wenn ich dann die php-Seite aufrufe, passiert gar nichts. Leere Seite im Browser. Ist im Code ein Fehler oder mache ich etwas falsch?

Und speziell:
1. oben steht "ip adresse der Surveillance station im LAN". Hat die Surveillance station eine andere IP als die Diskstation? Ich habe die IP meiner Diskstation eingegeben.
2. sollte die komplette Surveillance station stoppen (also wie im Paketzentrum auf stoppen) oder nur die Überwachung?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Die IP ist die gleiche im LAN wie die der DS. Der Aufruf im Skript deaktiviert die Kamera, dazu gibt es keine rückmeldung, daher bleibt alles weiß - das Paket SS muss dabei laufen. Wenn Du das nun mit einer vorherigen Abfrage des Zustands aktiv/deaktiv verknüpfst, könntest Du mit einer Bedingungen die Kamera aktivieren bzw. deaktivieren, d.h. mit jedem Aufruf des Skripts togglen. Ich hab das aus meinem Skript, musst Du mit Deinen Variablen anpassen.

Code:
<?php
... 
//GetList
$json = file_get_contents('https://IP:9901/webapi/_______________________________________________________entry.cgi?api=SYNO.SurveillanceStation.Camera&method=List&version=3&_sid='.$sid);
$obj = json_decode($json, true);
$cam_activated = $obj["data"]["cameras"][0]["enabled"];
 
if($cam_activated == false){
 //Activate cam
 $json = file_get_contents('https://IP:9901/webapi/_______________________________________________________entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=x&_sid='.$sid);
} 
else
{
 //Deactivate cam
 $json = file_get_contents('https://IP:9901/webapi/_______________________________________________________entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Disable&version=3&cameraIds=x&_sid='.$sid);
}
?>
 
Zuletzt bearbeitet:

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Danke für deine Antwort.

Da ich das mit dem Geofence verbinden will, ist ja glaube ich der Toggle (also ein/ausschalten mit nur einem Befehl) nicht sinnvoll. Heißt dass denn, dass ich jetzt im Prinzip schon richtig liege mit dem Vorgehen? Würde mich ja stark wundern. Dann wird es wohl dringend Zeit, mal auch endlich die Kamera anzuschließen (bin bisher noch nicht dazu gekommen), um die Trockenübungen zu beenden.

Und dann möchte ich noch das Mehrnutzerprinzip wie in dem verlinkten Thread machen: also nur wenn zwei Handys dann via Geofence abwesend sind, den Befehl auch triggern. Da hört es bei mir aber komplett auf, wie ich das dann lösen soll. Muss dafür eine SQL-Datenbank angelegt werden? Und wenn ja, wie wird die dann befüllt?
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Das ist das, was ich derzeit mit Unterstützung hinbekommen habe:

PHP:
<?php
$httpformat="http"; //hier angeben ob http oder https
$port="80"; //port
$loginname="admin"; //Loginname an der Surveillance Station
$passwd="Password"; //passwort an der Surveillance Station
$ip="192.168.178.99"; //ip adresse der Surveillance station im LAN
$cam_id="2"; // Kamera ID mit script "hole Kamera ID" abfragen, später automatisieren
// db
$db_name = "root";
$db_pw = "Password";
$db_database = "Surveillance";
$db_table = "user";
$db_ip = "127.0.0.1";
 
// activate Surveillance
$surveillance = true;
// connect to db
$connection = mysql_connect($db_ip, $db_name,$db_pw) or die ("No connection. User or password is wrong");
// select table
mysql_select_db($db_database) or die ("The Database ". $db_database ." doesn't exist");
 
// update table
$query = "UPDATE ".$db_table." Set available = ".mysql_real_escape_string($_GET['available']).", time = NOW() WHERE id = ".mysql_real_escape_string($_GET['id'])." AND password='".mysql_real_escape_string($_GET['pw'])."'";
$update = mysql_query($query);
 
if (!$update) {
    die('Error: ' . mysql_error());
}
 
// select info
 
$query = "SELECT available FROM ".$db_table;
$result = mysql_query($query);
while($row = mysql_fetch_object($result)) {
   if ($row->available == true)
    $surveillance = false;
}

//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"];
if ($surveillance) {
//Kamera aktivieren:
$json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/_______________________________________________________entry.cgi?api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=".$cam_id."&_sid=".$sid);
}else {
//Kamera deaktivieren:
}

//Logout Surveillance Station:
$out = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout &session=SurveillanceStation");

?>

Die Werte werden wunderbar in die DB geschrieben und ich bekomme auch keine Fehlermeldung, allerdings wird die Kamera nicht aktiviert. Findet wer von euch einen Fehler? Ich leider nicht.
 

createch2

Benutzer
Mitglied seit
22. Dez 2013
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Ist denn deine Kamera ID wirklich die #2 ? Das musst du erst rausfinden.
 

the_stig

Benutzer
Mitglied seit
28. Mai 2015
Beiträge
139
Punkte für Reaktionen
0
Punkte
16
Ja, das ist sie. Habe ich durch ausprobieren rausgefunden, wo würde man das sonst herbekommen?

Und ich bin inzwischen weiter. Jetzt klappt alles soweit, sogar inklusive SQL. Ich würde jetzt daran gehen wollen, den Cronjob einzurichten, damit die Kamera nachts aktiviert wird...da hab ich noch nicht recht den Zugang zu. Muss ich nochmal tiefer einsteigen.
 
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