Anwesenheitserkennung mit IP Adresse
Verfasst: Freitag 4. September 2015, 12:19
Hallo ich bin neu hier im Forum.
Bastel hin und wieder an Python Scripten rum. Bisher bin ich auch ganz gut klar gekommen und lese mich auch in diversen Tutorials ein.
Mein Anliegen ist folgendermaßen, ich besitze ein LightManager Air von JBMedia für meine Lichtsteuerung, jetzt will ich bei Anwesenheit bestimmte Lichter Schalten, bzw. Lichter wieder ausschalten wenn ich die Wohnung verlasse. Natürlich soll die Abwesenheit nicht sofort wirken, sondern erst mit einer Verzögerung von ca. 10 Min. So kann man mal kurz das WLAN ausschalten oder auch mal kurz den Müll runterbringen.
Habe dazu ein kleines Programm geschrieben, mit dem Ich meine Anwesenheit auslese, Also ob Handy IP zu pingen ist oder nicht.
Soweit funktioniert es auch ganz gut, aber ab und zu kann er mein Handy nicht Pingen, und schaltet mein Staus auf Abwesend. Ein paar Sekunden später findet er das Handy wieder und setzt den Status auf Anwesend, was natürlich Nachts sehr ärgerlich ist, da im Flur mein Licht an geht. Warum wer das Handy nicht pingen kann ist mir bisher ein rätsel. Gelegentlich überspringt er auch die wartezeit und setzt den Status direkt auf Abwesend.
Hier mal mein Quellcode
Vielleicht findet ja einer von euch mein Fehler, oder es gibt noch ne bessere möglichkeit festzustellen ob mein Handy im Netzwerk ist oder nicht.
Lg Mario
Bastel hin und wieder an Python Scripten rum. Bisher bin ich auch ganz gut klar gekommen und lese mich auch in diversen Tutorials ein.
Mein Anliegen ist folgendermaßen, ich besitze ein LightManager Air von JBMedia für meine Lichtsteuerung, jetzt will ich bei Anwesenheit bestimmte Lichter Schalten, bzw. Lichter wieder ausschalten wenn ich die Wohnung verlasse. Natürlich soll die Abwesenheit nicht sofort wirken, sondern erst mit einer Verzögerung von ca. 10 Min. So kann man mal kurz das WLAN ausschalten oder auch mal kurz den Müll runterbringen.
Habe dazu ein kleines Programm geschrieben, mit dem Ich meine Anwesenheit auslese, Also ob Handy IP zu pingen ist oder nicht.
Soweit funktioniert es auch ganz gut, aber ab und zu kann er mein Handy nicht Pingen, und schaltet mein Staus auf Abwesend. Ein paar Sekunden später findet er das Handy wieder und setzt den Status auf Anwesend, was natürlich Nachts sehr ärgerlich ist, da im Flur mein Licht an geht. Warum wer das Handy nicht pingen kann ist mir bisher ein rätsel. Gelegentlich überspringt er auch die wartezeit und setzt den Status direkt auf Abwesend.
Hier mal mein Quellcode
Code: Alles auswählen
#!/usr/bin/env python
import os, time
import httplib
import urllib2
ip = "192.168.1.22"
logfile = "logfile.log"
warteZeit=10 # sekunden
warteabwesend= 600 #Wartezeit abwesend
def log(msg):
file = open(logfile,"a")
file.write("%s: %s\n" % (time.strftime("%d.%m.%Y %H:%M:%S"), msg))
file.close
def istAnwesend():
response = os.system("ping -c 1 " + ip)
return response == 0
def anwesend():
httpServ = httplib.HTTPConnection("192.168.1.26", 80)
httpServ.connect()
httpServ.request('GET', "/control?key=80")
log("Handy ist anewesend")
def abwesend():
httpServ = httplib.HTTPConnection("192.168.1.26", 80)
httpServ.connect()
httpServ.request('GET', "/control?key=81")
log("Handy ist abewesend")
def warteAufAnwesenheit():
while not istAnwesend():
time.sleep(warteZeit)
anwesend()
def warteAufAbwesenheit():
while istAnwesend():
time.sleep(warteZeit)
log("Warte 10 min ob handy wirklich abwesend ist")
time.sleep(warteabwesend)
while istAnwesend():
time.sleep(warteZeit)
abwesend()
if istAnwesend():
anwesend()
warteAufAbwesenheit()
while True:
warteAufAnwesenheit()
warteAufAbwesenheit()
Lg Mario