Ankündigung

Einklappen
Keine Ankündigung bisher.

Webcam per CGI ansprechen

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

    Webcam per CGI ansprechen

    Hallo zusammen,
    ich habe derzeit mehrere Foscam Webcams am laufen und bin damit wirklich zufrieden. Nun möchte ich die Alarmfunktion der Kamera per Kommando (CGI based on http protocol port) an und abschalten können. Die Komplette Schnittstellenbeschreibung der Kamera liegt mit vor. Unterstützt werden 'get' und 'post'.
    Nun habe ich hier im Forum gesucht aber leider nicht das passende Beispiel mit aha-Effekt gefunden.
    Deshalb hier die Frage an die Experten Runde: Ist das möglich mit dem EibPC diese Kommandos zu schicken und wenn ja: eine kurze Erläuterung wertvoll für mich.
    Beispiele natürlich auch. Vielen Dank!!

    LG
    Chris

    #2
    Interessanter Ansatz! Nachdem ich auch sowohl Foscams als auch EibPC hab, klingt das interessant, wirklich helfen kann ich Dir aber auch nicht....
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      einfach mit dem PC die KOmmandos an die CAM senden und mittele Wireshark aufzeichnen - so kommst du erstmal an die genaue Sytax

      Zum Thema "Senden" gibt es einige Beispiele im Forum....
      EPIX
      ...und möge der Saft mit euch sein...
      Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

      Kommentar


        #4
        ersteres ist in der erwähnten Doku recht gut beschrieben, ich glaube die Umsetzung in EibPC-Code ist eher die Frage.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #5
          Ja genau. Mir geht es mehr um die EibPC seite.
          Also Verbindungsaufbau, Übertragung und Empfang. Möchte das Rad an dieser Stelle auch nicht neu erfinden. Vielleicht hat jemand schonmal so etwas gemacht und es lässt sich anpassen? Das wäre mal mein Wunsch ;-)

          Vielen Dank!

          Kommentar


            #6
            da gibt es mehrere Beiträge zu dem Thema:
            - Kommunikation mit der Fritzbox
            - schalten einer Steckdosenleiste
            - ....

            Da siehts du wunderbar wie der Header aufzubauen ist, wie man die zeitliche Abfolge der Befehle macht...
            EPIX
            ...und möge der Saft mit euch sein...
            Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

            Kommentar


              #7
              Danke für die Hinweise. Zur Steckdosenleiste habe ich nichts gefunden und die Fritzbox Geschichte ist schon leicht over-sized. Denke das ich mich daran orientieren werde. Aber noch mal für mich zum Verständnis: Den String den ich mit zusammenbastel sollte auch jederzeit per in der Browserzeile den gleichen gewünschten Effekt ausführen!?

              Kommentar


                #8
                weil ich ein guter "Lapp" bin....
                https://knx-user-forum.de/forum/suppo...port-80-senden

                "kann" man finden, wenn man im Forum eibpc mit dem stichwort "sendtcp" sucht, und dann die Beiträge durchgeht - aber kostet Zeit....

                Die Forensuche ist leider noch nicht ganz "ausgereift".....
                EPIX
                ...und möge der Saft mit euch sein...
                Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                Kommentar


                  #9
                  Vielen Dank, sehr hilfreich! Dann wollen wir mal loslegen ,-)

                  Kommentar


                    #10
                    Hallo Chris,

                    habe auch mehrere Foscams (FI9831W und FI8918W). Vor Version 3 hatte ich den Link zum Bild mittels dframe eingebettet. So hatte ich ein Livebild. dframe geht aber nicht mehr (es gab mehrer Posts dazu, Sicherheitseinstellungen im Browser etc. etc.), so dass die Empfehlung war picture zu nutzen.
                    Bei picture bekomme ich aber kein Livebild hin, sondern nur das erste Standbild beim Aufruf.
                    Wie hast Du das konkret gelöst?
                    Ich möchte doch über die Visu sehen wer vor der Tür steht bevor über die Visu den Türöffner betätige.

                    Danke und Gruß
                    Ralf

                    Kommentar


                      #11
                      Hallo Ralf,

                      derzeit mache ich das auch nur mit einem statischem Bild
                      picture(38)[1,1] ($Einfahrt$,$http://192.168.200.224/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=guest&pwd=xxx$)
                      das klappt auch wunderbar.
                      Ein livebild einbinden würde ich evtuell mal hiermit probieren:
                      /cgi-bin/CGIProxy.fcgi?cmd=getVideoStreamParam&usr=admin&pw d=

                      Kommentar


                        #12
                        ok, danke.
                        Mit dframe hatte ich eben einen stream.
                        Gruß
                        Ralf

                        Kommentar


                          #13
                          Hallo Ralf,
                          dann sei doch mal bitte so nett und poste mal kurz die ganze Zeile ;-)
                          Danke!

                          Kommentar


                            #14
                            Ich bin nun zurück bei meinem Problem und überlege gerade ob ich das Handtuch werfe oder nicht...
                            Also folgendes: Gebe ich in meinen Browser folgendes ein:
                            http://192.168.22.224/cgi-bin/CGIPro...=eibPC&pwd=xxx
                            dann kommt die Kamera mit folgender Info zurück:
                            <CGI_Result>
                            <result>0</result>
                            <timeSource>0</timeSource>
                            <ntpServer>192.168.22.1</ntpServer>
                            <dateFormat>2</dateFormat>
                            <timeFormat>1</timeFormat>
                            <timeZone>-3600</timeZone>
                            <isDst>1</isDst>
                            <dst>60</dst>
                            <year>2015</year>
                            <mon>5</mon>
                            <day>30</day>
                            <hour>19</hour>
                            <minute>28</minute>
                            <sec>21</sec>
                            </CGI_Result>


                            Soweit so gut. Netzwerk geht, IP stimmt, Port ist ja dann die 80 und User+Passwort sind auch ok.

                            Jetzt die Umsetzung im eibPC.
                            Da habe ich ein Macro geschrieben das wiefolgt aussieht:
                            Code:
                            begin FOSCAMgetMotionDetectConfig(FoscamIP, FoscamPort, FoscamUser, FoscamPwd, FoscamTrigger)
                            :info $controls FOSCAM via CGI$\\
                                $IP Address$\\
                                $IP Port [u16]$\\
                                $Cam-Username$\\
                                $Cam-Password$\\
                                $Trigger$\\
                            :shortinfo $controls FOSCAM FI 9805W$\\
                            
                            FOS_XML_Message=$$
                            FOS_handle=$$
                            :var CRLF@
                            CRLF@= $$
                            FOS_GetMotionD=$$
                            
                            
                            // - - - http string
                            if systemstart() then{\\
                            stringset(CRLF@, 0x0A0Du16, 0u16);\\
                            FOS_GetMotionD= $GET /cgi-bin/CGIProxy.fcgi?cmd=getSystemTime&usr=eibPC&pwd=myLogin$ + CRLF@\\
                            //FOS_GetMotionD= $GET /cgi-bin/CGIProxy.fcgi?cmd%3DgetSystemTime%26usr%3DeibPC%26pwd%3DmyLogin$ + 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) or Foscam_Init then \\
                            FOSCAMconnectionState = connecttcp(FoscamPort, FoscamIP);\\
                            Fos_CNT_ConnectTCP=Fos_CNT_ConnectTCP+1u08\\
                            endif
                            
                            // - - - send TCP telegram
                            //if change(FOSCAMconnectionState) and FOSCAMconnectionState == 0u08 then {
                            if(after(FoscamTrigger,1000u64) == EIN) then {\\
                            sendtcparray(FoscamPort, FoscamIP, FOS_GetMotionD,size(FOS_GetMotionD));\\
                            Foscam_Init=AUS;\\
                            Fos_CNT_SendTCP=Fos_CNT_SendTCP+1u08;\\
                            FOSCAMCommandSent=1b01\\
                            }endif
                            
                            // - - - if connection is already open
                            if change(FOSCAMconnectionState) and FOSCAMconnectionState == 3u08 then {
                            closetcp(FoscamPort,FoscamIP);\\
                            FOSCAMconnectionState=7u08;\\
                            Fos_CNT_CloseTCP_03=Fos_CNT_CloseTCP_03+1u08\\
                            }endif
                            
                            // - - - failed TCP Connection
                            if change(FOSCAMconnectionState) \\
                                and FOSCAMconnectionState >= 2u08 \\
                                and FOSCAMconnectionState <= 6u08 then \\
                                Foscam_Init = EIN;\\
                                Fos_CNT_FailTCP=Fos_CNT_FailTCP+1u08\\
                            endif
                            
                            // - - - receive data
                            if event(readtcp(FoscamPort, FoscamIP,FOS_XML_Message)) then {
                            FOS_handle=FOS_XML_Message;\\
                            Fos_CNT_ReceiveTCP=Fos_CNT_ReceiveTCP+1u08\\
                            } endif
                            
                            // - - - disconnect
                            if after(FOSCAMCommandSent, 3000u64) then {
                            closetcp(FoscamPort,FoscamIP);\\
                            FoscamTrigger=0b01;\\
                            FOSCAMconnectionState=7u08;\\
                            FOSCAMCommandSent=0b01;\\
                            Fos_CNT_CloseTCP=Fos_CNT_CloseTCP+1u08\\
                            }endif
                            
                            :end
                            Ein paar Sachen sind gerade auskommentiert, das sind versuche.
                            Die Handhabung der Verbindung ist auch noch nicht perfekt, gebe ich zu.
                            Ich habe auch wieder ein paar Counter eingebaut um zu sehen ob Verbindung aufgebaut wird.
                            Dies scheint auch der Fall zu sein. Aber was ich auch probiere, ich bekomme nie die Antwort von der Kamera.

                            Frage 1) - ich bin mir unsicher ob vor dem http-string nicht noch ein $GET /cgi-....$ muss? -> Ergebniss war bisher aber das gleiche.
                            Frage 2) - tippe ich mal die Zeile die ich Übertrage in eine Shell ein, dann klappt die Verbindung auch nicht. Warum aus dem Browser?

                            Für weitere Hinweise bin ich und mein eibPC dankbar - denn der hat das ständige Neustarten auch satt ;-)Bedankt!

                            Kommentar


                              #15
                              Zitat von DerMitdemBusSpricht Beitrag anzeigen
                              I
                              Frage 1) - ich bin mir unsicher ob vor dem http-string nicht noch ein $GET /cgi-....$ muss? -> Ergebniss war bisher aber das gleiche.
                              Frage 2) - tippe ich mal die Zeile die ich Übertrage in eine Shell ein, dann klappt die Verbindung auch nicht. Warum aus dem Browser?
                              Für weitere Hinweise bin ich und mein eibPC dankbar - denn der hat das ständige Neustarten auch satt ;-)Bedankt!
                              Nimm wireshark und teste mit dem Browser: Dann siehst Du genau, was Du schicken musst. Die Daten, was das wireshark liefert mal hier mal posten.
                              Dann kannst Du auch mal mit dem Skript vergleichen. Optimal wäre es, wenn dein Switch auch einen Ausgang hat, der den Traffic loggen lässt. Dann siehst Du auch das, aber das wäre erst Schritt 3.
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X