Script für Amazon Dashbuttons
This commit is contained in:
parent
2707b19583
commit
0f214c7538
1 changed files with 82 additions and 0 deletions
82
Dashbutton.py
Normal file
82
Dashbutton.py
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import logging
|
||||||
|
import urllib2
|
||||||
|
|
||||||
|
# Constants
|
||||||
|
timespan_threshhold = 3
|
||||||
|
|
||||||
|
# Globals
|
||||||
|
lastpress = datetime.datetime(1970, 1, 1)
|
||||||
|
|
||||||
|
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
|
||||||
|
from scapy.all import *
|
||||||
|
|
||||||
|
|
||||||
|
def button_pressed_dash1():
|
||||||
|
global lastpress
|
||||||
|
thistime = datetime.datetime.now()
|
||||||
|
timespan = thistime - lastpress
|
||||||
|
if timespan.total_seconds() > timespan_threshhold:
|
||||||
|
current_time = datetime.datetime.strftime(thistime, '%Y-%m-%d %H:%M:%S')
|
||||||
|
print
|
||||||
|
'Dash button pressed at ' + current_time
|
||||||
|
urllib2.urlopen('http://10.0.1.100:8181/loksoft.exe?ret=dom.GetObject("Dash1").State(1)')
|
||||||
|
|
||||||
|
|
||||||
|
def button_pressed_dash2():
|
||||||
|
global lastpress
|
||||||
|
thistime = datetime.datetime.now()
|
||||||
|
timespan = thistime - lastpress
|
||||||
|
if timespan.total_seconds() > timespan_threshhold:
|
||||||
|
current_time = datetime.datetime.strftime(thistime, '%Y-%m-%d %H:%M:%S')
|
||||||
|
print
|
||||||
|
'Dash button pressed at ' + current_time
|
||||||
|
urllib2.urlopen('http://10.0.1.100:8181/loksoft.exe?ret=dom.GetObject("Dash2").State(1)')
|
||||||
|
|
||||||
|
|
||||||
|
def button_pressed_dash3():
|
||||||
|
global lastpress
|
||||||
|
thistime = datetime.datetime.now()
|
||||||
|
timespan = thistime - lastpress
|
||||||
|
if timespan.total_seconds() > timespan_threshhold:
|
||||||
|
current_time = datetime.datetime.strftime(thistime, '%Y-%m-%d %H:%M:%S')
|
||||||
|
print
|
||||||
|
'Dash button pressed at ' + current_time
|
||||||
|
urllib2.urlopen('http://10.0.1.100:8181/loksoft.exe?ret=dom.GetObject("Dash3").State(1)')
|
||||||
|
|
||||||
|
|
||||||
|
def button_pressed_dash4():
|
||||||
|
global lastpress
|
||||||
|
thistime = datetime.datetime.now()
|
||||||
|
timespan = thistime - lastpress
|
||||||
|
if timespan.total_seconds() > timespan_threshhold:
|
||||||
|
current_time = datetime.datetime.strftime(thistime, '%Y-%m-%d %H:%M:%S')
|
||||||
|
print
|
||||||
|
'Dash button pressed at ' + current_time
|
||||||
|
urllib2.urlopen('http://10.0.1.100:8181/loksoft.exe?ret=dom.GetObject("Dash3").State(1)')
|
||||||
|
|
||||||
|
lastpress = thistime
|
||||||
|
|
||||||
|
|
||||||
|
def udp_filter(pkt):
|
||||||
|
options = pkt[DHCP].options
|
||||||
|
for option in options:
|
||||||
|
if isinstance(option, tuple):
|
||||||
|
if 'requested_addr' in option:
|
||||||
|
# we've found the IP address, which means its the second and final UDP request, so we can trigger our action
|
||||||
|
mac_to_action[pkt.src]()
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
mac_to_action = {'ac:63:be:f8:54:72': button_pressed_dash2, '50:f5:da:1a:6b:39': button_pressed_dash1,
|
||||||
|
'50:f5:da:5c:c1:59': button_pressed_dash3, 'ac:63:be:4f:41:a1': button_pressed_dash4}
|
||||||
|
mac_id_list = list(mac_to_action.keys())
|
||||||
|
|
||||||
|
print
|
||||||
|
"Waiting for a button press..."
|
||||||
|
sniff(prn=udp_filter, store=0, filter="udp", lfilter=lambda d: d.src in mac_id_list)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue