Naja nicht ganz Andreas,
irgendwie hat es beim Absenden wieder die Abstände zerschossen.
Sprich das ping und das if befindet sich alles in der while schleife, lediglich das
print os.getpid()
signal.signal(signal.SIGTERM, sighandler)
befindet sich über der while schleife.
Und so funktioniert das ganze auch.
Was mich eher interessiert gerade ist der Post von meigrafd.
Beim Ping habe ich ja nun extra eingestellt das er nur einmal versucht zu pingen.
Und so wie ich das verstanden habe bringt er ja eine 0 wenn er den router anpingen kann, bei allem anderen soll die led blinken.
Von daher versteh ich nicht was daran ungenau ist?
Ich verstehe deine Funktion schon, ist ja auch recht simpel alles.
ich müsste ja nur deine funktion hinzufügen.
und mit if abfragen ob diese funktion ein true rausgibt.
EDIT:
Ich habe das ganze mal angepasst.
So sieht das derzeite Script aus.
import smbus
import time, os
import sys
import signal
import socket
from errno import ECONNREFUSED
i2c = smbus.SMBus(1)
def sighandler(_signal, _stackframe):
print "Check Network LED aus"
i2c.write_byte_data(0x6B, 0x0C, 0x00)
sys.exit()
def ping(host, port, timeout=3):
try:
socket.setdefaulttimeout(timeout)
socket.socket().connect((host, port))
print("Host: " + str(host) + ":" + str(port) + " ist erreichbar")
return True
except socket.timeout as err:
print("Timeout")
return False
except socket.error as err:
if err.errno == ECONNREFUSED:
return False
print os.getpid()
signal.signal(signal.SIGTERM, sighandler)
while True:
if ping("192.168.2.1", 80) == True:
i2c.write_byte_data(0x6B, 0x0C, 0x01)
time.sleep(10)
else:
i2c.write_byte_data(0x6B, 0x0C, 0x01)
time.sleep(0.5)
i2c.write_byte_data(0x6B, 0x0C, 0x00)
time.sleep(0.5)
Alles anzeigen
Nun muss ich nur mal schauen das ich die blinkrate etwas flüssiger mache.
Da ja die LED länger ausbleibt wie an ist, allein bis der ganze Code abgearbeitet wurde.