Gelöst: Curl, XML, HTTPMOD (Hikvision Kamera über FHEM steuern)

Begonnen von pitman, 30 Mai 2016, 23:17:18

Vorheriges Thema - Nächstes Thema

pitman

Hallo zusammen,

ich habe in meinem Garten eine HIKVISION-Kamera im Einsatz.

In der Kamerasoftware habe ich definiert, dass die Kamera auf einen Einbruchsversuch reagiert.
Wenn in einem bestimmten Ausschnitt des Kamerabildes über mehrere Sekunden eine Bewegung registriert wird, dann wird der Alarm ausgelöst.

Im Falle der Alarmauslösung wird zum einen eine Aufnahme auf meinem NAS gespeichert, zum anderen wird mir eine eMail zugesendet in der 3 Screenshots der Situation angehängt sind.

Dies ist, solange wir nicht zu Hause sind, super!

Wenn wir allerdings zu Hause im Garten sind, dann überschlägt sich mein Handy mit Alarmmails.

Ich würde daher gerne folgendes umsetzen.

Per FHEM würde ich gern über einen Schalter auslösen, dass der Mailversand gestoppt, die Aufzeichnung auf den NAS aber weiterläuft.

Ich habe bereits herausgefunden, dass ich der Kamera per PUT ein XML-File zusenden muss, um die gewünschte Einstellung vorzunehmen.
Den Inhalt der XML-Files (für Ein- und Ausschalten der Funktion) habe ich bereits ermittelt.

Laut Internet scheint man die Information per CURL an die Kamera senden zu können:
ZitatIntrusion Detection => OK
curl http://user:password@ip:port/ISAPI/Smart/FieldDetection/1  >resp.xml
curl -T IntrusionDetection0.xml  http://user:password@ip:port/Smart/FieldDetection/1
curl -T IntrusionDetection1.xml  http://user:password@ip:port/ISAPI/Smart/FieldDetection/1

Jetzt kenne ich mich aber leider weder mit XML noch mit CURL noch mit HTTPMOD aus.

Daher wäre ich dankbar, wenn ihr mir eventuell auf die Sprünge helfen könntet.

Kann mir jemand helfen?

Grüße und vielen Dank vorab
pitman

pitman

Ich schreibe es nochmal anders. Ich habe versucht herauszufinden, wie ich mit httpmod den Inhalt der xml-Datei an die Kamera senden kann.
Ich kriege es aber nicht hin.

Mir fehlt in diesem speziellen Punkt der Zugang zum Verständnis.

Daher hoffe ich auf Unterstützung.

pitman

#2
Könnt ihr mir kurz einen Hinweis geben, ob meine Fragestellung:

a) zu banal
oder
b) mit FHEM so nicht umzusetzen ist

Je nach Antwort könnte ich das Ganze dann ad acta legen, oder meine Recherche nochmal intensivieren.

Danke!

dev0

"Ich kriege es nicht hin" ist ein schlechter Ausgangspunkt um eine sinnvolle Antwort schreiben zu können. Studiere die command ref / wiki und stell konkrete Fragen, wenn du nicht weiter kommst. HTTPMOD oder system call mit curl oder wget sollte aber möglich sein. HttpUtils (siehe wiki) wäre auch eine Alternative.

pitman

Das gebe ich wohl zu, dass der Ausgangspunkt ein schlechter ist.

Ich habe allerdings viel recherchiert und da ich grundsätzlich weiß, dass es mittels CURL gehen soll, genau das aber mit FHEM nicht hinbekomme, hatte ich gehofft, hier in den Anfängerfragen einen Tipp hierzu zu bekommen.

Ich schaue mir dann nochmal HTTPMOD, system call, curl, wget und HttpUtils an.

Vielleicht werde ich dieses Mal schlauer.

dev0

Tipps gerne, aber man muss doch wissen wo es hakt. Z.B. Wie kann ich curl/wget aus fhem heraus aufrufen?
Die Dokumentation zu den Modulen ist die command ref, wenn dort etwas für dich unverständlich ist, dann kann man auch konkrete Fragen stellen.

pitman

Ok, aber genau das ist meine Frage:
Wie kann ich CURL aus FHEM heraus aufrufen.

CoolTux

Schau mal hier. Da solltest Du einige Infos für Dich finden.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

pitman


pitman

Ich möchte noch einmal um Hilfe bitten:

Mittlerweile weiß ich, dass ich die eMail-Funktion durch folgende XML ausschalten kann:
Zitat<?xml version="1.0" encoding="UTF-8"?>
<EventTriggerNotificationList version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
</EventTriggerNotificationList>

Ich weiß, dass ich die XML folgendermaßen an die Kamera senden kann:
Zitatcurl -T mailaus.xml http://user:password@ip:port/ISAPI/EVENT/triggers/fielddetection-1/notifications

Ich habe zunächst versucht dies als RAW-Befehl über IPCAM zu senden, was allerdings nicht funktioniert.

Dann habe ich mich dank Eurer Hinweise eingelesen.
Aber mein FHEM-Wissen ist an dieser Stelle zu beschränkt um weiter zu kommen.

Ich würde gerne genau das tun, was ich oben beschrieben habe, finde aber den Ansatzpunkt nicht.
Konkrete Fragen:
-wo speichere ich die mailaus.xml?
-wie kann ich den obigen curl-Befehl in FHEM ausführen?
-mit welchem Modul kann ich mein Ziel erreichen

Vielen Dank
pitman

pitman

Ok, vielleicht funktioniert es so:

FHEM läuft auf einem RPI. Ich erstelle ein Shellscript:
alarmaus.sh

Ich weiß noch nicht, wie das Script genau aufgebaut sein muß, aber es sollte dann folgende Zeile enthalten:
curl -T mailaus.xml http://user:password@ip:port/ISAPI/EVENT/triggers/fielddetection-1/notifications

Und dieses Shellscript rufe ich über FHEM auf.

Bin ich auf dem richtigen Weg? Ist das ein gangbarer Weg?

CoolTux

Kannst Du den gesamten Befehl nicht aus fhem auf rufen? Sollte doch gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

pitman

Wie müsste der Aufruf erfolgen?

So eine Schaltung stelle ich mir vor:
define Alarm_Aus DOIF ([Schalter1:state] eq "close") (curl -T mailaus.xml http://user:password@ip:port/ISAPI/EVENT/triggers/fielddetection-1/notifications)

Frage 1:
Was muß im zweiten Teil der Klammer angepasst werden?

Frage 2:
Wo auf dem RPI müsste die "mailaus.xml" abgelegt werden?

CoolTux


define Alarm_Aus DOIF ([Schalter1:state] eq "close") ({ qx(curl -T mailaus.xml http://user:password@ip:port/ISAPI/EVENT/triggers/fielddetection-1/notifications) })


Bin nicht so der DOIF User aber schau mal ob das klappt und wenn nicht im Log schauen was er meckert
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net