Hallo zusammen,
wie im Projektmachbarkeitsthread schon beschrieben, möchte ich bei einem Anruf auf meinem Festnetztelefon meine LED-Schreibtischbeleuchtung als Signalisierung blinken lassen.
dbv wies mich auf ein ähnliches Projekt hin. Allerdings werden bei mir, nach Anpassung des Codes, die LED nur bei Beginn des Klingelns geschaltet, das IF-Statement wird also anscheinend nicht durchlaufend ausgewertet.
Zur Ansteuerung der LED-nutze ich den pi-blaster von sarfata, da ich diesen auch schon woanders verwendet habe und um saubere Fades durchzuführen.
Es folgt mein krümeliger Versuch, den ursprünglichen Code abzuändern.
TL,DR: Warum wird die innnere if-Schleife bei einem Anruf nur einmal ausgeführt?
Code
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import telnetlib
import time
import os
import sys
import itertools
myfunc = itertools.cycle([0,1]).next
HOST = "fritz.box"
PORT = 1012
#ESPEAK_BINARY = "/usr/bin/espeak -v german+f2"
print( "Started in %s" % sys.path[0] )
tn = telnetlib.Telnet( HOST, PORT )
try:
while True:
event = tn.read_until( b"\n" ).decode( "utf-8" )
edata = event.split( ';' )
print( edata )
if edata[1] == "RING":
caller = edata[3]
print( "Incoming call from %s" % caller )
print "Test"
#LED Befehl:
cmd = "echo 17=" + str(myfunc()) + " > /dev/pi-blaster"
#os.system(cmd)
#DEBUG print
print(cmd)
else:
print "else"
except EOFError as eof:
print( "Connection closed by remote host." )
print( "All done." )
Alles anzeigen