Ankündigung

Einklappen
Keine Ankündigung bisher.

Webcam per CGI ansprechen

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

    #16
    Dann schau mal bitte ob dir der nachfolgenden Screenshot schon hilft - oder wie ich einen günstigen Filter in Wireshark dafür setze
    Bildschirmfoto 2015-05-31 um 17.27.09.png

    Kommentar


      #17
      War das nun das, was gehen soll oder was nicht geht?
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #18
        Der Screenshot zeigt eine Browsereingabe (also wenn es richtig funktioniert). Das muss nun auf den EibPC übertragen werden.

        Kommentar


          #19
          Nun, Du trennst mit dem "&"-Zeichen, der Wireshark sieht da aber ein ";". Dann hast Du usr=eibPC&pwd=myLogin -+ während im wireshark offenbar ein
          pwd=eibPC;userName=myLogin;übertragen wird. Mindestens der Unterschied usr und userName ist komisch.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #20
            Guter Hinweis! Nachdem ich nun noch mal ein bisschen mit wireshark hantiert habe sehe ich nun, das ein Verbundung tur Webcam gar nicht hergestellt wird. Also das connecttcp geht nicht auf 0! Woran kann das liegen?
            Desweiteren sehe ich auch mal als connection state die 3 - wie kann man diese Verbindung schließen?
            Danke!

            Kommentar


              #21
              Desweiteren verstehe ich gerade eine Sache nicht: Ich habe eine zweite IP Verbindung die etwas anderes macht.
              Mit if event(readtcp(FoscamPort, FoscamIP,FOS_XML_Message)) sage ich ja eindeutig von welcher IP Verbindung ich Daten empfangen möchte.
              Es ist aber so, das ich als Rückgabewert Daten der zweiten Verbindung bekomme!! (und nein - die Variable dafür hat einen anderen Namen;-))

              Kommentar


                #22
                Mmmh, langsam verliere ich einfach die Lust an dem Ding.
                Ich habe nun noch mal alles neu aufgesetzt, besten wissen und Gewissen, aber ich kriege es einfach nicht hin. Ich habe wirklich schon viele kniffelige Situationen mit dem EibPC gemeistert, aber nun weiss ich nicht mehr weiter.
                • Fakt ist: Schicke ich mit dem Browser einen String so antwortet die Kamera.
                • Versuche ich gleiches mit dem EibPC, so sehe ich noch nicht mal einen connect versuch im WireShark. Anfangs ist der Verbindungsstatus zwar 0 aber es passiert nichts.
                • Bei einem weiterem Versuch verbleibt der EibPC im Verbindungsstatus 3!

                Folglich kann ich auch nicht sehen ob der String der richtige ist den ich schicke wenn noch nicht mal das Connect klappt!

                Orientiert habe ich mich an den Wunderground Macro, denn simpler kann man eine kommunikation eingentlich nicht aufbauen....
                Für kreative Ideen bin ich dankbar!

                Kommentar


                  #23
                  Zitat von DerMitdemBusSpricht Beitrag anzeigen
                  Mit if event(readtcp(FoscamPort, FoscamIP,FOS_XML_Message)) sage ich ja eindeutig von welcher IP Verbindung ich Daten empfangen möchte.
                  Nein, readtcp modifiziert die Argumente. Du musst das dann so abfragen, wie im Handbuch auf S74 ("TCP/IP Server und Client") beschrieben und erläutert:
                  Code:
                  if event(readtcp(Port,IP,StringPlayer)) and (Port==808u16) and (IP==192.168.22.21) then
                  Daher werden Port und IP und die Daten in Stringplayer überschrieben, alsbald igrendeine Kommukation von außen an den EibPC kommt. Mann muss dann eben prüfen (oben mit ==808u16 bzw. ==192.168.22.21), ob es für die gerade genutze Warteschlange das Passende ist und dann verarbeiten bzw. zwischenpuffern.
                  Zitat von DerMitdemBusSpricht Beitrag anzeigen
                  [*]Versuche ich gleiches mit dem EibPC, so sehe ich noch nicht mal einen connect versuch im WireShark. Anfangs ist der Verbindungsstatus zwar 0 aber es passiert nichts.
                  Wie auch, dein wireshark am Rechner sieht das natürlich nicht, du musst das mit einem Managed Switch machen.
                  Orientiert habe ich mich an den Wunderground Macro, denn simpler kann man eine kommunikation eingentlich nicht aufbauen....
                  Für kreative Ideen bin ich dankbar!
                  Trotzdem ist sowas wie der wireshark richtig zu nutzen und dann am Ende kann man immer Fehler machen ...
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #24
                    Ok, danke, das sind wenigstens mal wieder ein paar Hinweise mit denen ich arbeiten kann.
                    Das Wireshark nicht den ganzen Traffic sehen kann hatte ich nicht berücksichtigt, klingt aber plausibel.
                    Jedenfalls motiviert mich das noch mal heute Abend ein paar Dinge zu probieren.
                    Bedankt.

                    Kommentar


                      #25
                      Gelöst. Geht.
                      Wiedereinmal war eine empirische herangehensweise notwendig. Probieren, probieren, probieren.
                      Ich bin jetzt in der Lage mit dem eibPC meine Kamera scharf und unscharf zu schalten. Das ganze geht nun mit in die Alarm-Regelung vom Haus.
                      Im Grunde war ich mit allen meinen Ansätzen auch nicht weit daneben, am Ende lage es dann aber an dem String den man zur Kamera schickt.
                      Wireshark war da sicherlich eine Hilfe. Ihr auch;-)
                      Danke!

                      LG

                      Kommentar


                        #26
                        Zitat von DerMitdemBusSpricht Beitrag anzeigen
                        Gelöst. Geht.
                        na da würde ich gerne schon die Lösung beziehungsweise auch das Problem sehen - nachdem wir uns damit beschäftigt haben
                        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                        Enertex Produkte kaufen

                        Kommentar


                          #27
                          Ja klar, kein Ding. Aber wie schon gesagt - am Ende ist es nicht wirklich viel neues...
                          Code:
                          FOSCAMgetMotionDetectConfig(192.168.222.30,80u16,$USERNAME$,$PASSWORD$,FoscamTcpConnect,FoscamMotionDetection)
                          Das ist der Aufruf. Mit dem TcpConnect stelle ich eine Verbindung her, mit dem MotionDetection (True or false) schalte ich scharf/unscharf.
                          Wie man das nun bei sich nutzt bleibt ja jedem selbst überlassen.

                          Das Makro sieht derzeit wie folgt aus (habs noch nicht auf Beauty getrimmt, bitte um Nachsicht...)
                          Code:
                          :begin FOSCAMgetMotionDetectConfig(FoscamIP, FoscamPort, FoscamUser, FoscamPwd, FoscamTrigger,FoscamDetection)
                          :info $controls FOSCAM via CGI$\\
                              $IP Address$\\
                              $IP Port [u16]$\\
                              $Cam-Username$\\
                              $Cam-Password$\\
                              $Trigger$\\
                              $Enable/Disable Motion Detection\\
                          :shortinfo $controls FOSCAM FI 9805W$\\
                          
                          FOS_XML_Message=$$
                          FOS_handle=$$
                          :var CRLF@
                          CRLF@= $$
                          FOS_GetMotionSET=$$
                          FOS_GetMotionUnSET=$$
                          :var FPort@
                          FPort@=0u16
                          :var FIP@
                          FIP@=0u32
                          
                          
                          
                          if systemstart() then{\\
                          stringset(CRLF@, 0x0A0Du16, 0u16);\\
                          FOS_GetMotionUnSET=$GET /cgi-bin/CGIProxy.fcgi?usr%3DUSERNAME%26pwd%3DPASSWORD%26cmd%3DsetMotionDetectConfig%26isEnable%3D0%26snapInterval%3D2%26sensitivity%3D0%26linkage%3D2%26triggerInterval%3D0%26schedule0%3D281474976710655%26schedule1%3D281474976710655%26schedule2%3D281474976710655%26schedule3%3D281474976710655%26schedule4%3D281474976710655%26schedule5%3D281474976710655%26schedule6%3D281474976710655%26area0%3D963%26area1%3D895%26area2%3D1023%26area3%3D967%26area4%3D975%26area5%3D1023%26area6%3D1023%26area7%3D1086%26area8%3D30%26area9%3D1024%261434121984348 HTTP/1.0$ + CRLF@ + CRLF@;\\
                          FOS_GetMotionSET = $GET /cgi-bin/CGIProxy.fcgi?usr%3DUSERNAME%26pwd%3DPASSWORD%26cmd%3DsetMotionDetectConfig%26isEnable%3D1%26snapInterval%3D2%26sensitivity%3D0%26linkage%3D2%26triggerInterval%3D0%26schedule0%3D281474976710655%26schedule1%3D281474976710655%26schedule2%3D281474976710655%26schedule3%3D281474976710655%26schedule4%3D281474976710655%26schedule5%3D281474976710655%26schedule6%3D281474976710655%26area0%3D963%26area1%3D895%26area2%3D1023%26area3%3D967%26area4%3D975%26area5%3D1023%26area6%3D1023%26area7%3D1086%26area8%3D30%26area9%3D1024%261434121909850 HTTP/1.0$ + CRLF@ + CRLF@\\
                          }endif
                          
                          //communication variables
                          FoscamSendDelay
                          FoscamSendDelay = 500u64
                          
                          FOSCAMconnectionState
                          FOSCAMconnectionState = 6u08
                          
                          FOSCAMCommandSent
                          FOSCAMCommandSent=0b01
                          
                          Foscam_Init=AUS
                          Fos_CNT_ConnectTCP=0u08
                          Fos_CNT_SendTCP=0u08
                          Fos_CNT_ReceiveTCP=0u08
                          Fos_CNT_CloseTCP=0u08
                          Fos_CNT_FailTCP=0u08
                          Fos_CNT_CloseTCP_03=0u08
                          
                          // connect to host
                          
                          if after(FoscamTrigger, FoscamSendDelay) then \\
                              FOSCAMconnectionState = connecttcp(FoscamPort, FoscamIP);\\
                              Fos_CNT_ConnectTCP=Fos_CNT_ConnectTCP+1u08\\
                          endif
                          
                          // Send and Activate Motion Detection
                          if(after(FoscamTrigger,1000u64) == EIN and FoscamDetection) then \\
                          sendtcparray(FoscamPort, FoscamIP, FOS_GetMotionSET,size(FOS_GetMotionSET));\\
                          FOSCAMCommandSent=1b01;\\
                          endif
                          
                          // Send and Deactivate Motion Detection
                          if(after(FoscamTrigger,1000u64) == EIN and !FoscamDetection) then \\
                          sendtcparray(FoscamPort, FoscamIP, FOS_GetMotionUnSET,size(FOS_GetMotionUnSET));\\
                          FOSCAMCommandSent=1b01;\\
                          endif
                          
                          
                          if(after(FoscamTrigger,10000u64) == EIN) then {\\
                              closetcp(FoscamPort,FoscamIP);\\
                              FoscamTrigger=AUS}endif
                          
                          //failed TCP Connection
                          if change(FOSCAMconnectionState) \\
                              and FOSCAMconnectionState >= 2u08 \\
                              and FOSCAMconnectionState <= 6u08 then \\
                              Fos_CNT_FailTCP=Fos_CNT_FailTCP+1u08\\
                          endif
                          
                          // receive data
                          if event(readtcp(FPort@, FIP@,FOS_XML_Message)) and (FPort@==FoscamPort) and (FIP@==FoscamIP) then {
                              FOS_handle=FOS_XML_Message;\\
                              Fos_CNT_ReceiveTCP=Fos_CNT_ReceiveTCP+1u08\\
                          } endif
                          
                          :end
                          Das handling bei einer Failed Connection ist noch nicht sauber. Die FOS_CNT Variablen benutze ich gerne zum Debuggen. Können natürlich gelöscht werden. Hier und da sind noch ein paar Verbesserungen nötig.

                          Aber von mir noch mal ganz klar der Hinweis für alle die Versuchen mit CGI Skripten zu arbeiten:
                          1) Wireshark laufen lassen
                          2) Aus dem Browser heraus die eigentliche Funktionalität über das Webinterface an die Kamera schicken und mitsniffen
                          3) Den string dann verweden.

                          Probleme hatte ich auch mit HTTP 1.0 und 1.1 - mein Browser macht das mit 1.1 und im eibPC muss ich 1.0 nutzen sonst bekomme ich Bad Request (400)

                          Aber am Ende muss ich echt sagen - selten hat mich eine Sache so gewurmt. Jetzt läuft es und ich bin total happy.
                          Wenn ich das Haus verlasse bekomme ich alle Fotos direkt aufs Handy geschickt. So muss das sein...

                          LG und vielen Dank noch mal!


                          Kommentar


                            #28
                            Ein interessanter Ansatz... bzw Projekt...

                            Hat Jemand eine Idee ob auch die HIKVISION Kameras sich auf diese Weise ansteuern lassen?

                            LG

                            Ralf
                            Wenn etwas schief gehen kann... Wird es schief gehen :-)

                            Kommentar


                              #29
                              Wenn deine Kamera ein webinterface hat dann sollte das funktionieren.
                              Installiere Wireshark und schau dir an was für Komandos geschickt werden.

                              Oder Goolgle mal nach CGI und HIKVISION...

                              Kommentar


                                #30
                                Oh Oh, Wireshark... da hab ich leider keine Ahnung von...

                                CGI hat die HIKVISION wohl...
                                Wenn etwas schief gehen kann... Wird es schief gehen :-)

                                Kommentar

                                Lädt...
                                X