Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

6 Schritt:Schritt 1: Einrichten der Kamera Schritt 2: Installieren von Python Steuerelemente Schritt 3: So haben wir es: Hacking Bewegung Schritt 4: So haben wir es: Hacking Video Schritt 5: So haben wir es: Hacking Audio Schritt 6: Die Zukunft


Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

In diesem Instructable erfahren Sie, wie Sie die Video, Mikrofon und Steuerungen der 30 € abfangen Kaicong SIP1602 Wireless-Schwenk-Neige-Kamera auf Windows, Linux oder OSX! Alles ist fein säuberlich in Python-Skripte gerollt; Sie können die Ausgangsdaten für Dinge wie Sprach Transkription, Computer Vision und automatische Richtungssteuerung zu verwenden. Wenn Sie etwas wirklich abenteuerlich, lesen Sie weiter und Sie werden meine Methoden lernen, entdecken und Reverse Engineering Wireless-Kameras!
Einbauzeit: ~ 30 Minuten
Du wirst brauchen:
A Kaicong SIP1602 WiFi Pan-Tilt-Kamera HINWEIS: Offenbar ist die Popularität dieser Instructable ausgelöscht Amazon-Aktie. Andere haben berichtet, dass diese 45 € Tenvis Kamera ist ein guter Ersatz. Ein Computer oder ein Netzwerk-Router mit einem Ethernet-Anschluss Ein Arbeits 802.11b / g Wireless-Netzwerk (WLAN-N ist mit dieser Kamera nicht unterstützt) Grundkenntnisse der Eingabeaufforderung oder Terminal (ändern Verzeichnisse, führen Sie eine Datei)
Für etwas anderes als nur die Installation und den Betrieb der Kamera-Code, wird mittelaktive Erfahrung in Python und OpenCV auch sehr nützlich sein. Lassen Sie uns um es zu bekommen!

Wenn Sie diesen Hack mögen, vergessen Sie nicht, uns auf Instructables, folgen Sie Facebook oder Twitter , und schauen Sie sich unsere anderen Projekte auf unserer Website !

Schritt 1: Einrichten der Kamera

  1. Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Alle 7 Artikel anzeigen

    Auf dem Feld, das die Kamera enthält, ist Kaicong Motto: "Nichts wichtiger als Safty". Und es zeigt - sie wirklich das Handbuch sicher, denn jeder, der nicht lesen kann Mandarin wird eine ziemlich harte Zeit zu verstehen, es geschafft! Das heißt, die Installation ist überraschend einfach.
    Erste Schritte:
      Nehmen Sie die Kamera, Wand-Ladegerät, und Ethernet-Kabel aus dem Karton. Stecken Sie das Ladegerät an eine Steckdose, und schließen Sie die Kamera an den Computer oder Router Ethernet-Port über das Kabel. Schalten Sie Ihre Kamera immer und schauen auf der Unterseite. Sie sollten einen Host-Namen enthalten sind, sowie den Benutzernamen und das Kennwort für Ihre Kamera zu sehen (Spoiler Alert: es ist "admin" und "123456") Tragen Sie Ihre Domain (meiner war 385345.kaicong.info) in Ihrem Browser. Geben Sie Login-Daten der Kamera an der Eingabeaufforderung, und Sie werden auf eine Liste von Links zu verschiedenen Browser-Modi richten. Wählen Sie die beste Art für Ihren Browser. Viel Spaß beim Klicken Tasten für ein bisschen! Sie werden bemerken, dass die Server-Push-Modus für Chrome und Firefox nicht über ein funktionsfähiges Mikrofon oder Lautsprecher ausgegeben, die recht lahm ist. Die IE-Version erfordert auch die Installation eines ActiveX-Objekt, aber alle Funktionen arbeiten, sobald es installiert ist. Beachten Sie auch die IP-Adresse in der Web-URL - wir werden später benötigt.

    Wireless Setup:
      Es sollte ein kleines Zahnrad-Symbol am unteren Ende der Säule der Steuertasten an der Seite, die Sie bei Schritt 5. Klicken Sie auf dies sein, und Sie werden auf die Seite Einstellungen getroffen werden. Klicken Sie auf den Link WLAN-Einstellungen auf der linken Seite der Seite. Klicken Sie auf das Texteingabe mit "SSID" und geben Sie den Namen Ihres drahtlosen Netzwerks. Stellen Sie sicher, die "authetication" Drop-Down-Taste, um Authentifizierungstyp des Netzwerks festgelegt ist (in der Regel WPA2-PSK AES, wenn in Ihrem Netzwerk ein Kennwort) Klicken Sie auf das "Shared Key" Texteingabe, und geben Sie in Ihrem Netzwerk-Passwort, wenn Sie eine haben. Klicken Sie auf die Schaltfläche "Set". Die Kamera wird zurückgesetzt und mit dem Netzwerk verbinden.

    Sicherheitshinweis:
    Standardmäßig sind diese Kameras sichtbar für jeden im Internet, die Ihr <Nummer> errät .kaicong.info Adresse - die genial für Projekte, aber nicht so toll für die Sicherheit und die Privatsphäre sein kann. Um dies zu lösen, können Sie entweder Ihren DDNS-Benutzernamen und Passwort, oder setzen Sie einfach beide zu leeren (was es unmöglich macht, um die Kamera außerhalb Ihres lokalen Netzwerk zugreifen)

Schritt 2: Installieren von Python Steuerelemente

  1. Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Mit der Kamera vorgenommen werden komplette, müssen wir ein paar Bibliotheken installieren, bevor wir unsere Skripts ausführen.
    Für Windows: Hier sind Links zu Windows-Installations-Tutorials, oder Seiten, auf denen Sie das Windows Installer finden.
    Python 2.7 OpenCV für Python PyAudio PyGame
    Für Ubuntu: Setup kann über diesen Befehl: sudo apt-get install python python-opencv python-pyaudio python-pygame
    Für OSX: Zunächst installieren OpenCV und Homebrew - ich musste zusätzlich installieren eigen ( brew install eigen ), um Compiler-Fehler zu verhindern.
    Dann führen Sie den folgenden:
    brew install python
    brew install gcc
    brew install homebrew/python/pygame
    brew install portaudio
    Dann laden Sie die pyaudio Wrapper für OSX und installieren Sie das auch.
    Die Repo:
    Nun, da wir die Abhängigkeiten aus dem Weg zu bekommen, den Kopf über die Git Repository , wo dieses Projekt gehostet wird, laden Sie es, und entpacken Sie die Dateien. Öffnen Sie ein Befehlsfenster oder Terminal in das Verzeichnis mit den extrahierten Dateien, und führen Sie jedes Skript mit den folgenden Befehlen ersetzt 192.168.1.19 mit der IP-Adresse der Kamera:
    python KaicongAudio.py 192.168.1.19
    Dieses Skript zieht Audio vom Mikrofon und spielt sie auf Ihrem Lautsprecher.
    python KaicongVideo.py 192.168.1.19
    Dieses Skript zeigt Video von der Kamera und zeigt sie in einer OpenCV-Fenster.
    python KaicongMotor.py 192.168.1.19
    Dieses Skript öffnet sich ein schwarzes Pygame Fenster. Klicken Sie ihn mit der Maus, damit es Ihrer Tastatur kann zu erfassen, wählen Sie mit den WASD-Tasten zu schwenken und zu kippen die Kamera!
    An dieser Stelle haben wir erfolgreich die Kamera eingehängt und können Audio-, Video-, und Motorsteuerung von ihm über die Programmierung abzufangen. Aber wie wir das tun? Lesen Sie weiter, um herauszufinden ...

Schritt 3: So haben wir es: Hacking Bewegung

  1. Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Wir begannen mit einer Kamera mit einer Web-Seite Schnittstelle und wollte es programmgesteuert, so was könnte besser sein, um herauszufinden, wie es funktioniert, als den Code zu inspizieren?
    Wir retteten die Webseite auf die Festplatte und sah monitor.htm. Es war dort, dass wir einige interessante suchen Größen wie PTZ_UP und PTZ_STOP, die Motion-Control-Konstanten sein schien. Davon ausgehend, bis eröffneten wir das Bahninspektions Konsole (Ctrl + Shift + C in Chrome) und kontrolliert den Datenverkehr im Netzwerk, während Sie auf die Kamera-Bewegungstasten. Wir fanden mehrere Anrufe an eine decoder_control.cgi Seite mit einem "command =" Argument passend zu den Konstanten fanden wir früher in der HTML - ein, wenn ein Klick beginnt, und eine andere, wenn ein Klick endet. So sind die Kontrollen ON / OFF und via HTTP GET-Anforderung? Lass es uns herausfinden!
    Wir kopiert die URL wir sahen:
    http://192.168.1.19:81/decoder_control.cgi?loginus...
    in den Browser geladen und die Seite, und sicher genug, die Kamera setzte sich in Bewegung! Von da war es eine Frage der wirft die Konstanten und eine format URL String in Python, um den Controller zu vervollständigen. Fertig.
    Aber was ist mit Video? Eine Kamera ist keine Kamera ohne sie, nachdem alle ...

Schritt 4: So haben wir es: Hacking Video

  1. Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Wie sich herausstellt, war Video Hacking eigentlich ganz einfach - wir schauten in den Netzwerkanforderungen und fand eine Menge von Anfragen an snapshot.cgi . Die Eingabe einer von diesen in Chrome erzeugt ein Standbild jedes Mal die Seite geladen wurde. Ordentlich!
    Aber wir wollten etwas ein bisschen effizienter: die gestreamte Video dass das ActiveX-Objekt schien zu empfangen. Die ActiveX-Objekt selbst schien nicht allzu sinnvoll, zu zerlegen (Umkehranordnung Code ist total überbewertet), so dass wir stattdessen geöffnet Wireshark . Wir filtriert die Erfassung bis zur IP unserer Kamera (Capture-> Optionen-> Capture Filter) und begann mit der Erfassung, vor dem Neuladen der Seite ActiveX-Steuerelement in unserem Browser. Was wir fanden zwei GET-Anforderungen für audiostream.cgi und livestream.cgi , vermutlich für die Audio und Video.
    Abgesehen von der Audio-URL für jetzt, wandten wir uns an Google, um zu sehen, ob jemand eine IP-Kamera-Video-Stream vor decodiert. Unter einer Suche nach " IP-Kamera HTTP-Stream "fanden wir ein handliches kleines Python-Skript , um alles in OpenCV Laufen zu bringen. Es war nur zu ersetzen URL des Skripts mit uns, und wir waren in der Wirtschaft!
    Als nächstes wurde es Zeit, um die Audio abzufangen.

Schritt 5: So haben wir es: Hacking Audio

  1. Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Anreise Video war nicht zu hart. Hoffentlich Audio würde genauso einfach, oder? Nach ein paar Stunden der Google-Suche, sah es wie niemand sonst jemals geschafft hat, erfolgreich herausziehen und zu decodieren, den Audiostream von einer IP-Kamera. Wir waren auf unserer eigenen.
    Gehen wir zurück zu unserem audiostream.cgi url wir über Wireshark gefunden, gefangen wir ein paar Bytes der Audio mit Ubuntu:
    wget http://192.168.1.252:81/audiostream.cgi?user=admi...
    Dann drücken Sie Strg + C zum Abschalten des Stroms. Raw-Audio in der Hand, über marschierten wir zu Audacity zu versuchen, es über Datei- spielen> Import-> Rohdaten. Die meisten Versuche klang wie Lärm, aber wir fanden, dass mit Hilfe der VOX ADPCM-Codierung bei 8 kHz erzeugt etwas erkennbar!
    Es war immer noch die Frage der Beseitigung dieser seltsame Muster Klicks. Ich dachte mir, dass es etwas mit den Paketen zu tun, wie mit dem Videostrom mussten wir einige Überschriften zu Beginn und am Ende entfernen musste. Vielleicht ist das gleiche gilt mit Audio?
    Wir haben uns ein wenig genauer an jedem Paket, und bemerkte, dass die Daten der Autor mit der gleichen 0x55aa15a8 ... Bytes, plus ein Wert, der nach oben gezählt werden jedes Paket, und ein langer Strom von Nullen sah, für insgesamt 32 Bytes . Vermutlich wurde Audacity Einnahme dieser Paket-Header als Audiodaten und versuchen, sie zu decodieren, was, was machte die fiesen Klickgeräusche ist.
    Einige experimentelle Python-Skripte später, entfernten wir die Header und übergeben sie durch den ADPCM-Decodierer in Audacity - die meisten Klicks entfernt wurden! Aber es gab ein paar mehr, links speziell in den lauter Teile des Audio.
    So lesen wir in, wie ADPCM funktioniert - anscheinend ist es kodiert Audio über den Unterschied zwischen den Proben, und speichert die vorherige Audio-Zustand, so dass sie die zwei und fügen Sie erzeugen eine neue Probe. Nach ein paar weiteren Python-Skripte, gelang es uns, die Pakete direkt zu erfassen und setzen diesen Zustand zu Beginn jedes Pakets. Klicks vollständig entfernt, und nichts als Kamera Audio geblieben. Erfolg!

Schritt 6: Die Zukunft

  1. Hack a $ 30 WiFi Pan-Tilt-Kamera - Video, Audio und Motorsteuerung mit Python

    Es ist fantastisch, ein so komplexes Gerät komplett steuerbar über python haben. Wir planen mit unserer Kamera für Personenerkennung und Zimmerbelegung Tracking sowie gesprochene Sprachbefehle, aber wir von einigen anderen Verwendungen für eine Kamera wie diese, wie denken können:
    Ergänzen ein RC-Auto oder Flugzeug, um First-Person-Video-Anzeigen während der Fahrt Legen Sie es auf einer Softair oder NERF Revolver und verfolgen Sie Ihre Opfer ein rockin 'custom built Haus Sicherheitssystem verwenden CV Objekterkennung zu verfolgen, wo Ihr Haustier gehen automatisch, wenn Sie aren Set 't es Machen Sie eine Remote-Telepräsenzroboter Rip off der Kamerateil und befestigen Sie alles, was genau positioniert werden muss (Laser, Roboterarme ...) Erstellen Sie eine Remote-Zeitraffer-System mit langsamen Schwenks über die Zeit
    Wir werden auf diesen Kameras Hacking werden mit wenigstens einige solcher Projekte im Auge, so sicher sein, uns zu folgen auf Facebook und Instructables, wenn Sie nach Inspiration suchen!