Ankündigung

Einklappen
Keine Ankündigung bisher.

Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs

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

    Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs

    Hallo zusammen,
    zunächst mal vielen Dank, dass es mit smarthomeNG weitergeht. Und es gibt schon echt ein paar coole Neuerungen. Nun bin ich auch auf das neue smarthomeNG umgezogen und habe meine Logiken natürlich vom bisherigen kopiert. Bei einer Logik für meine Kameras erhalte ich jedoch immer ein "Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs" und kann dies nicht deuten. Vielleicht habt ihr eine Idee. Leider ist es natürlich eines meiner umfangreicheren Logiken.

    Ich kann auch sagen, dass die Logik eigentlich genau das macht, was sie soll. Lediglich die Fehlermeldung stört mich.

    Auszug aus dem Log
    Code:
    2016-09-16  21:41:28 DEBUG    Rxx_BWM_Snapshots Triggering Rxx_BWM_Snapshots - by: Logic source: None dest: None value: /var/www/html/smartVISU/pages/loeser/pic at: 2016-09-16 21:41:28.550868+02:00
    2016-09-16  21:41:28 DEBUG    Rxx_BWM_Snapshots Triggering Rxx_BWM_Snapshots - by: Logic source: None dest: None value: /var/www/html/smartVISU/pages/loeser/pic at: 2016-09-16 21:41:30.551047+02:00
    2016-09-16  21:41:28 DEBUG    Rxx_BWM_Snapshots Triggering Rxx_BWM_Snapshots - by: Logic source: None dest: None value: /var/www/html/smartVISU/pages/loeser/pic at: 2016-09-16 21:41:32.551165+02:00
    2016-09-16  21:41:28 DEBUG    Rxx_BWM_Snapshots Triggering Rxx_BWM_Snapshots - by: Logic source: None dest: None value: /var/www/html/smartVISU/pages/loeser/pic at: 2016-09-16 21:41:34.551273+02:00
    2016-09-16  21:41:28 DEBUG    Rxx_BWM_Snapshots Triggering Rxx_BWM_Snapshots - by: Logic source: None dest: None value: /var/www/html/smartVISU/pages/loeser/pic at: 2016-09-16 21:41:36.551377+02:00
    2016-09-16  21:41:28 DEBUG    Rxx_BWM_Snapshots Triggering Rxx_BWM_Snapshots - by: Logic source: None dest: None value: /var/www/html/smartVISU/pages/loeser/pic at: 2016-09-16 21:41:38.551479+02:00
    2016-09-16  21:41:28 DEBUG    Rxx_BWM_Snapshots Triggering Rxx_BWM_Snapshots - by: Logic source: None dest: None value: /var/www/html/smartVISU/pages/loeser/pic at: 2016-09-16 21:41:48.551589+02:00
    [COLOR=#FF0000]2016-09-16  21:41:28 ERROR    Main         Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    Traceback (most recent call last):
      File "/usr/local/smarthome/bin/smarthome.py", line 331, in start
        self.connections.poll()
      File "/usr/local/smarthome/lib/connection.py", line 101, in poll
        for fileno, event in self._epoll.poll(timeout=1):
    InterruptedError: [Errno 4] Unterbrechung während des Betriebssystemaufrufs[/COLOR]
    2016-09-16  21:41:30 DEBUG    Main         Triggering Rxx_BWM_Light - by: Item source: R93.BWM dest: None value: False
    2016-09-16  21:41:30 DEBUG    Main         Triggering Rxx_BWM_Snapshots - by: Item source: R93.BWM dest: None value: False
    2016-09-16  21:41:30 WARNING  Rxx_BWM_Light Rxx_BWM_Light : Skript wurde aufgerufen aber ist gesperrt. Trigger: {'value': False, 'dest': None, 'source': 'R93.BWM', 'by': 'Item'}
    [COLOR=#FF0000]2016-09-16  21:41:30 ERROR    Main         Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    Traceback (most recent call last):
      File "/usr/local/smarthome/bin/smarthome.py", line 331, in start
        self.connections.poll()
      File "/usr/local/smarthome/lib/connection.py", line 101, in poll
        for fileno, event in self._epoll.poll(timeout=1):
    InterruptedError: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    2016-09-16  21:41:32 ERROR    Main         Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    Traceback (most recent call last):
      File "/usr/local/smarthome/bin/smarthome.py", line 331, in start
        self.connections.poll()
      File "/usr/local/smarthome/lib/connection.py", line 101, in poll
        for fileno, event in self._epoll.poll(timeout=1):
    InterruptedError: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    2016-09-16  21:41:34 ERROR    Main         Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    Traceback (most recent call last):
      File "/usr/local/smarthome/bin/smarthome.py", line 331, in start
        self.connections.poll()
      File "/usr/local/smarthome/lib/connection.py", line 101, in poll
        for fileno, event in self._epoll.poll(timeout=1):
    InterruptedError: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    2016-09-16  21:41:36 ERROR    Main         Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    Traceback (most recent call last):
      File "/usr/local/smarthome/bin/smarthome.py", line 331, in start
        self.connections.poll()
      File "/usr/local/smarthome/lib/connection.py", line 101, in poll
        for fileno, event in self._epoll.poll(timeout=1):
    InterruptedError: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    2016-09-16  21:41:38 ERROR    Main         Connection polling failed: [Errno 4] Unterbrechung während des Betriebssystemaufrufs
    Traceback (most recent call last):
      File "/usr/local/smarthome/bin/smarthome.py", line 331, in start
        self.connections.poll()
      File "/usr/local/smarthome/lib/connection.py", line 101, in poll
        for fileno, event in self._epoll.poll(timeout=1):
    InterruptedError: [Errno 4] Unterbrechung während des Betriebssystemaufrufs[/COLOR]
    Hier ist die leider etwas längere Logik. Es wird von einem Bewegungsmelder getriggert und ruft sich dann selbst mehrfach über den Sheduler auf und macht Bilder von der zugehörigen Kamera in gewissen Abständen. Diese werden auch korrekt abgelegt. Lediglich die oben gezeigte Fehlermeldung irritiert mich.

    Logic
    Code:
    [COLOR=#008000]#!/usr/bin/env python
    # -*- coding: iso-8859-1 -*-
    # Imports
    # Maybe needs to install "apt-get install python-requests"[/COLOR]
    import time
    import os
    
    [COLOR=#008000]# ------------------------------------------------------------------------------------------------
    # Beschreibung
    # Dieses Skript prüft den BWM, erstellt Bilder und legt diese ab
    # ------------------------------------------------------------------------------------------------
    
    # Logik aktiv?[/COLOR]
    if sh.ZENTRAL.LOGIKEN.BWM_SNAPSHOTS():
    [COLOR=#008000]# Für Debug Zwecke wird angezeigt das das Skript gestartet wurde[/COLOR]
        logger.debug('{} : START : trigger={}'.format(logic.name, trigger))
    
    [COLOR=#008000]# Ermitteln, welches Item die Aktion ausgelöst hat[/COLOR]
        itemname = ''
        itemname = trigger['source']
    [COLOR=#008000] # Sofern das Skript durch sich selbst aufgerufen wurde, enthält der
        # value die Zieldatei (Pfad und Dateiname). Anhand dieser werden die
        # Bilder von der Kamera asgewertet.
        # Aufbau der Zieldatei (des triggervalues):
        # /var/www/html/smartVISU/pages/loeser/picturegallery/20161231/232559_00s_R93.jpg[/COLOR]
        triggervalue = str(trigger['value'])
    
    [COLOR=#008000]# SELBSTAUFRUF?
        # Prüfung ob das Skript durch sich selbst aufgerufen wurde
        # Prüfung auf ein manuell gesetzten Value[/COLOR]
        if triggervalue[-4:] == '.jpg':
            if triggervalue[-7:] == 'R91.jpg':
    [COLOR=#008000] # Haustuerkamera[/COLOR]
                camname = 'R91'
                url2retrieve = 'http://192.168.123.249/Streaming/channels/2/picture'
                username = 'abc'
                userpass = 'xyz'
                authoption = '--digest'
                ispyid=13
            elif triggervalue[-7:] == 'R93.jpg':
    [COLOR=#008000] # Gartenkamera[/COLOR]
                camname = 'R93'
                url2retrieve = 'http://192.168.123.248/tmpfs/snap.jpg'
                username = 'cde'
                userpass = 'efg'
                authoption = '--anyauth'
                ispyid=14
    
    [COLOR=#008000]# ISPY Id aufheben, wenn es sich nicht um das 00s Bild handelt[/COLOR]
            midstr_triggervalue = triggervalue[-11:]
            midstr_triggervalue = midstr_triggervalue[:3]
            if midstr_triggervalue == '00s':
                ispyid=-1
    
    [COLOR=#008000]# Bild speichern
            # Mit dem echo wird das Passwort geschrieben und mit der Option
            # -S anschließend beim sudo Befehl eingelesen. So muss es nicht
            # explizit eingegeben werden, was in dem Skript nicht möglich ist.[/COLOR]
            os.system("echo <geheim> | sudo -S/usr/local/smarthome/logics/cam.sh " + triggervalue + " " + url2retrieve + " " + username + " " + userpass + " " + authoption + " " + str(ispyid))
    
            if midstr_triggervalue == '20s':
    [COLOR=#008000]# Merker, dass gerade das Grabbing aktiv ist, wieder zurücksetzen[/COLOR]
                camitem = sh.return_item(camname + '.KAMERA_GRABBING_IN_PROGRESS')
                camitem('off')
    
    [COLOR=#008000]# Benutzer und Gruppe rekursiv anpassen
                # Für das Verzeichnis und alle unterlagerten Dateien. Das ist dann zwar doppelt und dreifach aber dafür funktionierts.
                # Mit dem Benutzer www-data und der Gruppe www-data kann die PHP Seite "picturegallery" anschließend die Dateien und Verzeichnisse löschen.[/COLOR]
                os.system("echo <geheim> | sudo -S chown -R www-data:www-data " + "/var/www/html/smartVISU/pages/loeser/picturegallery/" + time.strftime('%Y%m%d'))
    
    [COLOR=#008000]  # AUFRUF DURCH BWM (nur wenn kein Selbstaufruf stattgefunden hat)?[/COLOR]
        elif not itemname == '':
    [COLOR=#008000] # Item speichern[/COLOR]
            item = sh.return_item(itemname)
    
    [COLOR=#008000] # Anhand des Itemnamens die Parameter festlegen[/COLOR]
            if itemname == 'R91.BWM':
                camname = 'R91'
                messagetext = 'Bewegung vor der Haustür erkannt.'
                mailheaderprefix = 'HOME Haustür'
                delaytime0 = 0   [COLOR=#008000]# Bild  0s nach Aktivierung (muss 0 sein, damit im Dateinamen 00s steht, relevant für die ISPY Id)[/COLOR]
                delaytime1 = 3  [COLOR=#008000] # Bild  3s nach Aktivierung[/COLOR]
                delaytime2 = 6   [COLOR=#008000]# Bild  6s nach Aktivierung[/COLOR]
                delaytime3 = 9   [COLOR=#008000]# Bild  9s nach Aktivierung[/COLOR]
                delaytime4 = 12  [COLOR=#008000]# Bild 12s nach Aktivierung[/COLOR]
                delaytime5 = 15  [COLOR=#008000]# Bild 15s nach Aktivierung[/COLOR]
                delaytime6 = 20 [COLOR=#008000] # Bild 20s nach Aktivierung (muss in Summe 20 ergeben, damit im Dateinamen 20s steht, relevant für Abschluss der Aufnahme)[/COLOR]
            elif itemname == 'R93.BWM':
                camname = 'R93'
                messagetext = 'Bewegung im Garten erkannt.'
                mailheaderprefix = 'HOME Garten'
                delaytime0 = 0   [COLOR=#008000]# Bild  0s nach Aktivierung (muss 0 sein, damit im Dateinamen 00s steht, relevant für die ISPY Id)[/COLOR]
                delaytime1 = 2[COLOR=#008000]   # Bild  2s nach Aktivierung[/COLOR]
                delaytime2 = 4   [COLOR=#008000]# Bild  4s nach Aktivierung[/COLOR]
                delaytime3 = 6   [COLOR=#008000]# Bild  6s nach Aktivierung[/COLOR]
                delaytime4 = 8   [COLOR=#008000]# Bild  8s nach Aktivierung[/COLOR]
                delaytime5 = 10  [COLOR=#008000]# Bild 10s nach Aktivierung[/COLOR]
                delaytime6 = 20 [COLOR=#008000] # Bild 20s nach Aktivierung (muss in Summe 20 ergeben, damit im Dateinamen 20s steht, relevant für Abschluss der Aufnahme)[/COLOR]
    
            if item():
    [COLOR=#008000] # Nur wenn der BWM True meldet, werden Bilder gemacht
                # Beim Wechsel von 1 > 0 erfolgt nichts
    
                # Merker, dass das Grabbing gerde aktiv ist
                # Wird nach dem letzten Grabbing der Kamera zurückgesetzt[/COLOR]
                camitem = sh.return_item(camname + '.KAMERA_GRABBING_IN_PROGRESS')
    
    [COLOR=#008000]   # Grabbing aktiv?[/COLOR]
                if not camitem():
    [COLOR=#008000]# Grabbing aktuell nicht aktiv -> Erster Durchlauf
                    # Merker setzen[/COLOR]
                    camitem('on')
    
    [COLOR=#008000] # Zeit ermitten[/COLOR]
                    dateandtimestring = "" + time.strftime('%d.%m.%Y %H:%M:%S')
                    dateandtimestringfile = "" + time.strftime('%Y%m%d_%H%M%S')
                    timestring = "" + time.strftime('%H%M%S')
    
    [COLOR=#008000]# Speicherort preparieren
                    # Erstelle das Verzeichnis[/COLOR]
                    try:
                        os.makedirs('/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d'))
                    except OSError:
                        pass
    
    [COLOR=#008000]  # Aufbau der Zieldatei:
                    # /var/www/html/smartVISU/pages/loeser/picturegallery/20161231/232559_00s_R93.jpg
                    # Speichern des gesamten Dateinamens mit Verzeichnisbaum[/COLOR]
                    timetext = '' + str(delaytime0) + 's'
                    if (len(timetext) < 3):
                        timetext = '0' + timetext
                    out_location_A = '/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d') + '/' + timestring + '_' + timetext + '_' + camname + '.jpg'
                    timetext = '' + str(delaytime1) + 's'
                    if (len(timetext) < 3):
                        timetext = '0' + timetext
                    out_location_B = '/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d') + '/' + timestring + '_' + timetext + '_' + camname + '.jpg'
                    timetext = '' + str(delaytime2) + 's'
                    if (len(timetext) < 3):
                        timetext = '0' + timetext
                    out_location_C = '/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d') + '/' + timestring + '_' + timetext + '_' + camname + '.jpg'
                    timetext = '' + str(delaytime3) + 's'
                    if (len(timetext) < 3):
                        timetext = '0' + timetext
                    out_location_D = '/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d') + '/' + timestring + '_' + timetext + '_' + camname + '.jpg'
                    timetext = '' + str(delaytime4) + 's'
                    if (len(timetext) < 3):
                        timetext = '0' + timetext
                    out_location_E = '/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d') + '/' + timestring + '_' + timetext + '_' + camname + '.jpg'
                    timetext = '' + str(delaytime5) + 's'
                    if (len(timetext) < 3):
                        timetext = '0' + timetext
                    out_location_F = '/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d') + '/' + timestring + '_' + timetext + '_' + camname + '.jpg'
                    timetext = '' + str(delaytime6) + 's'
                    if (len(timetext) < 3):
                        timetext = '0' + timetext
                    out_location_G = '/var/www/html/smartVISU/pages/loeser/picturegallery/' + time.strftime('%Y%m%d') + '/' + timestring + '_' + timetext + '_' + camname + '.jpg'
    
    [COLOR=#008000]# Skript erneut mit den verschiedenen Verzögerungen aufrufen.
                    # Es wird mit einem definierten Triggervalue (hier: Zieldatei) aufgerufen, damit darauf reagiert werden kann.[/COLOR]
                    logic.trigger(dt=sh.now() + datetime.timedelta(seconds=delaytime0), value=out_location_A)
                    logic.trigger(dt=sh.now() + datetime.timedelta(seconds=delaytime1), value=out_location_B)
                    logic.trigger(dt=sh.now() + datetime.timedelta(seconds=delaytime2), value=out_location_C)
                    logic.trigger(dt=sh.now() + datetime.timedelta(seconds=delaytime3), value=out_location_D)
                    logic.trigger(dt=sh.now() + datetime.timedelta(seconds=delaytime4), value=out_location_E)
                    logic.trigger(dt=sh.now() + datetime.timedelta(seconds=delaytime5), value=out_location_F)
                    logic.trigger(dt=sh.now() + datetime.timedelta(seconds=delaytime6), value=out_location_G)
        else:
    [COLOR=#008000]      # Info im Meldesystem[/COLOR]
            messagetext = '{} : Skript wurde ohne Trigger Item aufgerufen. Trigger:{}'.format(logic.name, trigger)
            logger.error(messagetext)
    
    [COLOR=#008000]  # Für Debug Zwecke wird angezeigt das das Skript beendet wurde
        # So kann eingesehen werden, welche Ausgaben zwischenzeitlich ausgegeben wurden.[/COLOR]
        logger.debug('{} : ENDE'.format(logic.name))
    
    else:
    [COLOR=#008000]   # Melden, wenn die Funktion aktuell gesperrt ist, jedoch die Ausführung versucht wurde.[/COLOR]
        messagetext = '{} : Skript wurde aufgerufen aber ist gesperrt. Trigger: {}'.format(logic.name, trigger)
        logger.warn(messagetext)


    Aus der Logik aufgerufenes Skript
    Code:
    [COLOR=#008000]#!/bin/bash
    # Skript, welches das Bild tatsächlich von der Kamera ausliest.
    # Die Kameras verfügen über unterschiedliche Authentifizierungs Mechanismen.
    # Bis zur Version 1.13.4 von WGET funktionierte das noch einwandfrei, ab
    # der Version 1.15  konnte mit der Kamera vor der Haustüre (Trendnet) keine
    # Authentifizerung mehr durchgeführt werden. Daher wurde auf CURL gewechselt.
    # Hierbei kann zur not die Authentifizierungsmethode mitgegeben werden.
    #
    # Parameter
    # %1 - outfile (example:  "/var/www/html/smartvisu/pages/loeser/picturegallery/20160122/20160122_235959_A_R91.jpg')
    # %2 - source (example: "http://192.168.123.249/Streaming/channels/1/picture")
    # %3 - username (example: "user")
    # %4 - userpass (example: "pass")
    # %5 - authentification option (example: "", or "--digest")
    
    # Werte die übergeben werden von logic_Rxx_BWM.py[/COLOR]
    outfile=$1
    source=$2
    username=$3
    userpass=$4
    authoption=$5
    ispyid=$6
    
    [COLOR=#008000]# Grab the screen cap
    # Hier wird nun mit dem curl Befehl gearbeitet
    #   wget --user=$username --password=$userpass --output-document=$outfile $source
    #   curl --user $username:$userpass $source $authoption -o $outfile[/COLOR]
    curl --user $username:$userpass $source $authoption -o $outfile #>> /usr/local/smarthome/var/log/smarthome.log 2>&1
    chmod a+rwx $outfile
    
    [COLOR=#008000]# Starte die Aufzeichnung ebenfall bei ISPY
    # ID=13 --> CAM01, Haustür
    # ID=14 --> CAM02, Garten[/COLOR]
    if [ $ispyid -gt -1 ]; then
        curl http://<interne IP>:8080/executecmd?id=$ispyid
    fi
    Ich bin für jede Idee dankbar.
    Zuletzt geändert von loeserman; 12.11.2016, 18:20.

    #2
    Ich habe mittlerweile die Lösung gefunden, so dass ich keine Fehlermeldungen mehr erhalte. Bisher habe ich immer die Kamerabilder per CURL geholt und dazu aus dem Python ein bash Skript aufgerufen. Irgendwie hatte ich das damals mit der Authentifizierung bei der Kamera nicht mit Python hinbekommen. Das habe ich mir heute nochmal angesehen und das ganze bash Skript nun durch ein Python Skript ersetzt.

    Code:
    [COLOR=#008000]#!/usr/bin/env python
    # -*- coding: iso-8859-1 -*-
    # Imports[/COLOR]
    import requests
    from requests.auth import HTTPDigestAuth
    
    [COLOR=#008000]# ------------------------------------------------------------------------------------------------
    # MODUL Beschreibung
    # Funktion rund um die Kamera. Einlesen und speichern der Bilder und Bildvergleich
    # ------------------------------------------------------------------------------------------------[/COLOR]
    
    
    [COLOR=#008000]# Funktion, welches das Bild tatsächlich von der Kamera ausliest.
    # Die Kameras verfügen über unterschiedliche Authentifizierungs Mechanismen.[/COLOR]
    [COLOR=#008000]# sh         : Smarthome Klasse, damit das Objekt bekannt ist (unsaubere Programmierung, aber so sollte es gehen)
    # logger     : Logger Klasse, damit das Objekt bekannt ist    (unsaubere Programmierung, aber so sollte es gehen)
    # outputfile : Dateiname und Pfad unter dem das Bild gespeichert wird (example:  "/var/www/html/smartvisu/pages/loeser/picturegallery/2016012/20160122_235959_A_R91.jpg')
    # camname    : Kameraname (R91=Haustür, R93=Garten)
    # ispyid     : ID für die Aufnahme eines Videos mittels ISPY (-1=nichts, 13=Haustür, 14=Garten)[/COLOR]
    def saveWebcamPicsAndStartISpyCapture(sh, logger, outputfile, camname, ispyid):
    [COLOR=#008000]    # Flag um zu prüfen, ob ein Request durchgeführt wurde[/COLOR]
        camnameok = False
    
    [COLOR=#008000]    # In abhängigkeit der übergebenen Kamera wird ein Request auf das Kamerabild
        # durchgeführt mit der zugehörigen Authentifizierung.[/COLOR]
        if camname=='R91':
            r = requests.get('http://<IP Cam 1>/Streaming/channels/1/picture', auth=HTTPDigestAuth('username', 'userpass'))
            camnameok = True
        elif camname == 'R93':
            r = requests.get('http:/<IP Cam 2>/tmpfs/snap.jpg', auth=('username', 'userpass'))
            camnameok = True
        else:
            camnameok = False
    
    [COLOR=#008000]    # Nur wenn überhaupt ein Request ausgeführt wurde, wird mit der Bearbeitung fortgefahren[/COLOR]
        if (camnameok == True):
    [COLOR=#008000]        # Prüfung ob der Webserver OK zurückgemeldet hat,
            # nur dann kann das Paket auch Daten enthalten[/COLOR]
            if r.status_code == 200:
    [COLOR=#008000]            # Output Datei erstellen und öffnen zum Schreiben[/COLOR]
                with open(outputfile, 'wb') as f:
    [COLOR=#008000]                # Den Content vom Response auslesen und in die Datei schreiben[/COLOR]
                    for chunk in r.iter_content():
                        f.write(chunk)
    [COLOR=#008000]                # Datei schließen (eventuell ist dies nicht notwendig)[/COLOR]
                    f.close
    
    [COLOR=#008000]        # Starte die Aufzeichnung ebenfall bei ISPY
            # ID=-1 --> Keine Aufnahme
            # ID=13 --> CAM01, Haustür
            # ID=14 --> CAM02, Garten[/COLOR]
            if int(ispyid) > -1:
                requests.get('http://<interne IP>:8080/executecmd?id={}'.format(int(ispyid)))

    Kommentar

    Lädt...
    X