Ankündigung

Einklappen
Keine Ankündigung bisher.

Logikbaustein: Hikvisionkameras als Bewegungsmelder

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #91
    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.

    Kommentar


      #92
      Hab den Baustein aktualisiert
      * Zertifikat CA pinning
      * NOSSL an EN[5] falls denn wirklich kein SSL geht
      * Eingang 6 zum reboot der CAM

      ist im DL wenn vento66 sein GO gibt ;-)
      Nils

      aktuelle Bausteine:
      BusAufsicht - ServiceCheck - Pushover - HS-Insight

      Kommentar


        #93
        Super Arbeit!! Danke

        Kommentar


          #94
          Zitat von NilsS Beitrag anzeigen
          Hab den Baustein aktualisiert
          * Zertifikat CA pinning
          * NOSSL an EN[5] falls denn wirklich kein SSL geht
          * Eingang 6 zum reboot der CAM

          ist im DL wenn vento66 sein GO gibt ;-)
          Hallo Nils S,
          gibts den Baustein auch für eine Dahua IP Kamera
          Gruß

          Kommentar


            #95
            Ich bekomme keinen Login hin.

            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

            Kommentar


              #96
              Status 401 heißt eigentlich nicht authorisiert.

              Benutzername/Passwort falsch? evtl. auch ungünstige Sonderzeichen drin (% oder \ / leerzeichen).
              Nils

              aktuelle Bausteine:
              BusAufsicht - ServiceCheck - Pushover - HS-Insight

              Kommentar


                #97
                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


                Den User seh ich aber nun in der Kamera verbunden
                Zuletzt geändert von derPaul; 22.11.2018, 19:54.

                Kommentar


                  #98
                  Hab gerade mal mit einem kleinen node Script getestet und dort hab ich es ans laufen bekommen.
                  Die Events werden getriggert ... seltsam ...

                  Kommentar


                    #99
                    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
                    Zuletzt geändert von NilsS; 23.11.2018, 14:50.
                    Nils

                    aktuelle Bausteine:
                    BusAufsicht - ServiceCheck - Pushover - HS-Insight

                    Kommentar


                      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.
                      Angehängte Dateien
                      Zuletzt geändert von derPaul; 23.11.2018, 15:35.

                      Kommentar


                        Kamera und HS im gleichen Subnetz.
                        Und auch gleiches subnetz wie bei deinem Test mit Node
                        Nils

                        aktuelle Bausteine:
                        BusAufsicht - ServiceCheck - Pushover - HS-Insight

                        Kommentar


                          Jap ... wie gesagt ... den Benutzer seh ich auch Verbunden in der Kamera ... Also die Verbindung zur Kamera an sich klappt ...

                          Kommentar


                            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.
                            Nils

                            aktuelle Bausteine:
                            BusAufsicht - ServiceCheck - Pushover - HS-Insight

                            Kommentar


                              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.

                              Kommentar


                                Code:
                                        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
                                Angehängte Dateien
                                Nils

                                aktuelle Bausteine:
                                BusAufsicht - ServiceCheck - Pushover - HS-Insight

                                Kommentar

                                Lädt...
                                X