Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Python write to file

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

    Problem mit Python write to file

    Hallo,
    folgendes Problem: Ich habe an meinem Eingang eine IP-Kamera. Diese liefert einen MJPEG-Stream.
    Ich möchte nun, wenn jemand die Glocke betätigt, ein Foto erstellen lassen und dieses abspeichern. Die Logik wird also über ein item getriggert.
    Folgenden Code habe ich programmiert (IP unkenntlich gemacht):

    #!/usr/bin/env python2

    import urllib2
    response = urllib2.urlopen('http://192.***.*.***/axis-cgi/jpg/image.cgi?resolution=1920x1080')
    data = response.read()

    # Write data to file
    filename = "/usr/local/smarthome/Bilder/test.jpg"
    file_ = open(filename, 'w')
    file_.write(data)
    file_.close()
    Wenn ich den Python Live-Modus in der Konsole starte und den Code eingebe, passt alles.
    Wenn ich die Logik im Backend auslöse, wird aber kein Bild gespeichert.
    Benutzerrechte im Zielordner habe ich bereits angepasst.

    Hat jemand einen Tipp, woran das liegen könnte?
    Zuletzt geändert von Maxthomas2001; 08.12.2018, 19:21.

    #2
    Du bist noch unter Python2 unterwegs???? --> #!/usr/bin/env python2

    Ein wenig mehr Info wäre hilfreich:
    - steht was im Log?
    - wird eine leere Datei angelegt oder wird keine Datei angelegt?

    Übrigens: Wenn Deine Kamera nicht im Internet hängt, ist das unkenntlich machen der IP Adresse albern. Wenn die Kamera im Internet hängt und nicht gesichert ist, ist das fahrlässig.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Hallo,
      normalerweise nutze ich schon Python3. Aber das Modul urllib2 gibts nicht unter Python3. Und urllib3 kennt keinen Befehl urlopen. Deswegen in diesem Fall Python2.

      Im log steht: ImportError: No module named 'urllib2'
      Komischerweise funktioniert es aber, wenn ich den Live-Modus in der Konsole benutze.

      Ich habe nun folgenden Code versucht:

      Code:
      import urllib.request
      url = 'http://192.168.1.21/axis-cgi/jpg/image.cgi?resolution=1920x1080'
      urllib.request.urlretrieve(url, '/usr/local/smarthome/Bilder/test.jpg')
      Damit funktioniert alles. Aber angeblich soll das Modul urllib.request bald nicht mehr unterstützt werden.

      Kommentar


        #4
        Und Python 2 wird demnächst auch nicht mehr unterstützt werden

        (Python 2 End of Life ist am 31.12.2019)
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Ich würde mal Python request lib nutzen. Beispiele finden sich hier oder hier. Und wenn es dann funzt, wäre ein Artikel für den SmartHomeNG Blog nett :-)

          Kommentar

          Lädt...
          X