Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Logikbaustein: Hikvisionkameras als Bewegungsmelder
Sorry, zweimal Mobotix geschrieben
ich meinte natürlich Hikvision...
Bei Mobotix lass ich mir ein Telegramm von der Cam schicken, da brauchts ja keinen Logikbaustein.
22.11.2018 18:55:40 (15)
File "[12296_HikvisionAlerts_0]", line 94, in _connect
File "[12296_HikvisionAlerts_0]", line 76, in _get_request
File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 435, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 548, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 473, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 401: Unauthorized
Was mache ich falsch?
HTTPS hab ich aktiviert ... habs auch mit NOSSL probiert.
HS : 4.7
Cam : DS-2CD2142FWD-I mit V 5.5.0
Abruf der ISAPI funzt und die LineDetection als Event taucht da auch auf.
Ok nun bin ich ein Schritt weiter. Die Auth stand nur auf Digest nicht auf Digest/Basic...
Zuletzt geändert von derPaul; 22.11.2018, 19:43.
Grund: Teil gelöst
Habs gerade bearbeitet :-) ... Die Auth stand nur auf Digest ... muss aber auf Digest / Basic stehen ...
Wenn SSL an ist muss ich da irgendwas noch eintragen beim SSL Eingang?
Den Cert String aus der Cam Config ?
Bekomme jetzt mit NOSSL folgendes :
File "[12296_HikvisionAlerts_0]", line 94, in _connect
File "[12296_HikvisionAlerts_0]", line 114, in _read
File "/usr/lib/python2.7/socket.py", line 451, in readline
data = self._sock.recv(self._rbufsize)
File "/usr/lib/python2.7/httplib.py", line 597, in read
s = self.fp.read(amt)
File "/usr/lib/python2.7/socket.py", line 384, in read
data = self._sock.recv(left)
timeout: timed out
Zeig mal bitte deine Logik.
EN[5] leer heißt SSL verwenden aber Zert nicht prüfen
EN[5] mit base64 PEM Zertifikat heißt SSL verwenden Zert prüfen
EN[5] NOSSL heißt Zugriff per HTTP
Mit was hast du mit Node getestet? gegen Port 443 SSL oder Port 80?
EDIT: Digest Auth kannst du weglassen .. absolut kein Gewinn (war mal für unsichere Verbindungen gedacht um das Passwort darüber nicht im Klartext, ist aber nicht sicher da das MD5 was verwendet wird generell als unsicher gilt) bleib also bei BASIC und das über SSL/TLS
Ja also in der Kamera musst ich auf "Digest/Basic" umstellen ... da hab ich nur "Digest" oder "Digest/Basic" zur Verfügung ...
Mit node hab ich gegen 80 also nicht HTTPS geprüft.
Ich hab beides Probiert am EN[5] ... Leer und auch NOSSL ... bei NOSSL bekomm ich den Timeout siehe oben.
Bei Leer (also HTTPS) quasi das selbe nur das da noch was mit SSL Timeout steht.
Nach meinem Test mit node würd ich denken das die Socketverbindung nicht aufrecht bleibt?! Gab deshalb nämlich auch da extra ein Fix in dem Node Modul.
Hmm also es wäre kein großes Problem den Timeout da zur vergrößern ... aber das behebt ja nicht die Ursache für das Problem
Warum ist da ein Timeout auf der URL?
Da sollte ja eigentlich keiner sein, und es ist ja auch bei vielen Installationen keiner.
Vor Allem wie ist das dann mit der Zuverlässigkeit.
Ich fragte wegen dem Subnet weil die Packete (also auch der komplette GET Request) ja bei der Cam ankommen könnten aber keine Route zurück vorhanden wäre. Dann wäre in der Kamera die Auth da aber es kämen keine Daten zurück.
Subnetz ist zu 100% korrekt ...
Synology, rpi (lief das node skript drauf) etc. können ja auch alle drauf zugreifen ... Ich benutze auch nur das eine Subnetz zuhause.
Wärst du in der Lage mir eine Version zukommen zu lassen die ein try/catch an der Stelle macht, dann können wir debuggen...
Mich wundert das auch gerade ein wenig wieso ich da ein Timeout bekomme.
while True:
self.connect_error = 0
_connect_wait_time = { 0:0, 1:11, 2:11, 3:45, 4:11, 5:30, 6:60, 7:60, 8:120, 9:120 }
try:
self._read(self._get_request(self.url,timeout=1))
except (urllib2.URLError,socket.timeout,ssl.SSLError):
self.MC.Debug.setErr(__import__('sys').exc_info(),self.host) ## vorerst
pass
except ssl.CertificateError:
## Abbruch Zertifikat wird nicht von alleine wieder
self.MC.Debug.setErr(__import__('sys').exc_info(),self.host)
break
except:
self.MC.Debug.setErr(__import__('sys').exc_info(),self.host)
self.send_to_output(4,0)
self.connect_error += 1
time.sleep(_connect_wait_time.get(self.connect_error,360))
Das ist ja ein try except drin. Da kommt ja der Fehler an.
Aber danach können wir auch nix mehr ändern, da der Socket in darunter liegenden Layer dann schon tot ist.
Ich kann aber gerne den timeout mal auf 5 setzen. Das ist aber eigentlich schlecht, weil der Socket dann im Fehlerfall auch erst später merkt das die Cam weg ist.
Aber kannst ja mal damit testen
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar