*.xml mit curl -T schreiben

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Antworten
past
Beiträge: 6
Registriert: 28.12.2015, 15:28

*.xml mit curl -T schreiben

Beitrag von past » 28.12.2015, 16:17

Hallo,

ich möchte gerne mit der CCU2 zum Ein- und Ausschalten der Bewegungserkennung eine jeweils angepasste *.xml-Datei per Script auf eine IP-Kamera schreiben.
Entsprechendes Gerät mit CUxD habe ich erzeugt. Aber mit dem ausführenden Script bzw. dem Syntax habe ich grosse Probleme...

Der entsprechende curl-Aufruf zum lesen der XML lautet

Code: Alles auswählen

"curl http://192.168.178.31:80/ISAPI/System/Video/inputs/channels/1/motionDetectionext >MotionDetection1.xml"
, mit

Code: Alles auswählen

"curl -T MotionDetection1.xml http://@192.168.178.31:80/ISAPI/System/Video/inputs/channels/1/motionDetectionext"
kann ich die XML wieder zurück schreiben. Habe es dann mal bei der Programmerstellung unter "Skript bearbeiten" so probiert:

Code: Alles auswählen

/usr/local/addons/cuxd/curl -T /usr/local/addons/cuxd/Kameraalarm/Camera01/MotionDetection1.xml "http://192.168.178.31:80/ISAPI/System/Video/inputs/channels/1/motionDetectionext"
Als Fehler erhalte ich folgendes:

Code: Alles auswählen

Dec 28 14:40:41 homematic-ccu2 local0.err ReGaHss: Error: ParseProgram: SyntaxError= usr/local/addons/cuxd/curl -T /usr/local/addons/cuxd/Kameraalarm/Camera01/MotionDetection1.xml "http://192.168.178.31:80/ISAPI/System/Video/inputs/channels/1/motionDetectionext"  [../Platform/DOM/iseESP.cp
Ist bestimmt zu einfach gedacht, oder ? Kann mir vielleicht jemand weiter helfen?


Gruss past

past
Beiträge: 6
Registriert: 28.12.2015, 15:28

Re: *.xml mit curl -T schreiben

Beitrag von past » 29.12.2015, 17:04

Soweit habe ich es geschafft mit folgenden Code erfolgreich die XML über SSH zu schreiben:

Code: Alles auswählen

LD_LIBRARY_PATH=/usr/local/addons/cuxd/ /usr/local/addons/cuxd/curl -u user:passwort -T /usr/local/addons/cuxd/Kameraalarm/Camera01/LineDetect0.xml http://192.168.178.31:80/ISAPI/Smart/LineDetection/1
echo fertig
Antwort:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<requestURL>/ISAPI/Smart/LineDetection/1</requestURL>
<statusCode>1</statusCode>
<statusString>OK</statusString>
<subStatusCode>ok</subStatusCode>
</ResponseStatus>
Verpacke ich das nun in folgendem Script funktioniert das nicht mehr...

Code: Alles auswählen

#!/bin/sh
LD_LIBRARY_PATH=/usr/local/addons/cuxd/ /usr/local/addons/cuxd/curl -u user:passwort -T /usr/local/addons/cuxd/Kameraalarm/Camera01/LineDetect0.xml http://192.168.178.31:80/ISAPI/Smart/LineDetection/1
echo fertig
als Antwort kommt nur:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
</requestURL>ISAPI/Smart/LineDetection/1
<statusCode>4</statusCode>
<statusString>Invalid Operation</statusString>
<subStatusCode>invalidOperation</subStatusCode>
</ResponseStatus>
fertig
Mir als Neueinsteiger ohne Programmierkenntnisse fällt nichts dazu ein, vielleicht doch einer eine Idee? :?:

Gruss past

Schattenschimmer
Beiträge: 79
Registriert: 20.03.2016, 21:49

Re: *.xml mit curl -T schreiben

Beitrag von Schattenschimmer » 08.10.2017, 14:41

Dieser Thread ist nicht mehr der neueste, aber die Lösung hilft vielleicht noch anderen:

Aufgabe: HM soll die Motion Detection in einer Kamera (Hikvision, Trendnet ist afaik baugleich) aktivieren und deaktivieren.

Ich habe dafür zwei xml-Dateien aus der Kamera geladen. Einmal mit Motion Dectection = on und die andere mit Motion Detection = off.
Hier der curl-Befehl für Windows oder Linux, um diese Dateien von der Kamera zu laden:

Code: Alles auswählen

curl http://Benutzername:Passwort001@192.168.12.34:80/ISAPI/System/Video/inputs/channels/1/motionDetectionext >MotionDetection1.xml
Benutzername, Passwort und IP-Adresse müssen natürlich angepaßt werden.


Der Rest habe ich in der CCU2 gemacht:
Systemvariable "Kamera01Status" angelegt, Variablentyp = Zeichenkette. Unter ->Einstellungen ->Benutzerwaltung habe ich diese Systemvariable auf der Startseite angelegt, damit ich die Rückmeldungen der Kamera sehen kann.

Auf der CCU2 zwei Ordner angelegt:
1. /usr/local/addons/cuxd/kameras/Cam01/MotionDetectionAn/
2. /usr/local/addons/cuxd/kameras/Cam01/MotionDetectionAus/
In diese beiden Ordner habe ich die jeweilige Datei "MotionDetection1.xml" gepackt.

Dann ein Programm erstellt, welches bei einer Systemvariable "Abwesenheit=wahr" das folgende Script ausführt, welches wiederum die Datei "MotionDetection1.xml" in die Kamera schiebt (ich habe hier einen freien Kanal eines bestehenden CUxD-Gerätes verwendet, ggfls. müßt ihr ein Gerät in CUxD anlegen):

string s_cuxd = "CUxD.CUX2801301:2.";
string s_cmd = "/usr/local/addons/cuxd/extra/curl -T /usr/local/addons/cuxd/kameras/Cam01/MotionDetectionAn/MotionDetection1.xml http://Benutzername:Password@192.168.12.34:80/ISAPI/System/Video/inputs/channels/1/motionDetectionext";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("Kamera01Status").State (dom.GetObject (s_cuxd # "CMD_RETS").State());

Die grünen Werte müssen angepaßt werden.

Hier noch mal als Code:

Code: Alles auswählen

string s_cuxd = "CUxD.CUX2801301:2.";
string s_cmd = "/usr/local/addons/cuxd/extra/curl -T /usr/local/addons/cuxd/kameras/Cam01/MotionDetectionAn/MotionDetection1.xml http://Benutzername:Password@192.168.12.34:80/ISAPI/System/Video/inputs/channels/1/motionDetectionext";
dom.GetObject (s_cuxd # "CMD_SETS").State (s_cmd);
dom.GetObject (s_cuxd # "CMD_QUERY_RET").State (1);
dom.GetObject ("Kamera01Status").State (dom.GetObject (s_cuxd # "CMD_RETS").State());

Damit bei "Abwesenheit=falsch" das Motion Detection wieder deaktiviert wird, muß ein zweites Script im gleichen oder einem anderen Programm angelegt werden. In diesem Sript muß das Verzeichnis natürlich
/usr/local/addons/cuxd/kameras/Cam01/MotionDetectionAus/MotionDetection1.xml
heißen.

Viel Spaß :wink:
Es ist riskant, die CCU/2 per NAT (Portweiterleitung) aus dem Internet erreichbar zu machen!
Auch mit Passwortschutz ist die CCU/2 NICHT sicher, Passwörter können vergleichsweise einfach umgangen werden. Die CCU/2 kann dann von Fremden gesteuert und übernommen werden, von da aus können das eigene Netzwerk und Ziele im Internet ausgespäht bzw. angegriffen werden.
Lösung: VPN Tunnel statt NAT

mazze85
Beiträge: 24
Registriert: 28.04.2015, 14:48

Re: *.xml mit curl -T schreiben

Beitrag von mazze85 » 15.12.2017, 18:25

Gibt es nur diese Möglichkeit ? Oder kann man auch anders Optionen Aktivieren bzw. Deaktivieren ? Ich will den Privaten Bereich deaktivieren wenn Variable Alarm auf Ausgelöst steht. So das ich dann mehr einsicht habe. Und das bei allen Kameras die ich habe.

Schattenschimmer
Beiträge: 79
Registriert: 20.03.2016, 21:49

Re: *.xml mit curl -T schreiben

Beitrag von Schattenschimmer » 02.01.2018, 15:17

Das müßte gehen, ohne jetzt in die Doku geschaut zu haben.

Zu ziemlich alles, was sich in der Web-Gui konfigurieren läßt kann auch über xml konfiguriert werden.

Die Frage ist dann eher, welcher Wert geändert werden muß.
Dazu entweder die sehr umfangreiche Beschreibung (xml API) studieren oder mit dem aktivierten und deaktivierten privaten Bereich je eine xml-Datei von der Kamera laden und diese Dateien dann einfach nutzen bzw. bei Bedarf von der CCU in die Kamera schieben lassen.
Es ist riskant, die CCU/2 per NAT (Portweiterleitung) aus dem Internet erreichbar zu machen!
Auch mit Passwortschutz ist die CCU/2 NICHT sicher, Passwörter können vergleichsweise einfach umgangen werden. Die CCU/2 kann dann von Fremden gesteuert und übernommen werden, von da aus können das eigene Netzwerk und Ziele im Internet ausgespäht bzw. angegriffen werden.
Lösung: VPN Tunnel statt NAT

Antworten

Zurück zu „CUxD“