Voici un code python pour utiliser ces boutons
Code : Tout sélectionner
#!/usr/bin/python2
from scapy.all import sniff, ARP
import time
import urllib2
import urllib
buttons = []
domoticz_ip = "127.0.0.1"
domoticz_port = "8080"
url_schema = "http"
timeout = 6
url = "%s://%s:%s/json.htm?" % (url_schema, domoticz_ip, domoticz_port)
# get from http://www.adminsub.net/mac-address-finder/amazon
mac_address_amazon_vendor = ["F0D2F1", "F0272D", "AC63BE", "A002DC", "94BA31", "8871E5", "8841C1", "84D6D0", "74C246",
"747548", "6854FD", "5CC9D3", "50F5DA", "50B363", "44650D", "34D270", "0C47C9", "001A90", ]
class Button:
def __init__(self, mac, name, domoticz_idx, status="Toggle"):
self.mac = mac
self.name = name
# Can be Toggle, On or Off
self.status = status
self.last_running = 0
self.domoticz_idx = domoticz_idx
def __str__(self):
return self.name
def setStatus(self):
data = {'type': 'command',
'param': 'switchlight',
'idx': self.domoticz_idx,
'switchcmd': self.status
}
urllib2.urlopen(url + urllib.urlencode(data))
self.last_running = time.time()
buttons.append(Button("88:71:e5:xx:xx:xx", "ON", 2))
buttons.append(Button("34:d2:70:xx:xx:xx", "kleenex", 3))
def arp_display(pkt):
if pkt[ARP].op == 1:
dash_mac = pkt[ARP].hwsrc
res = [x for x in buttons if x.mac == dash_mac]
if res and time.time() - res[0].last_running > timeout:
print "%s pushed" % res[0].name
res[0].setStatus()
elif ''.join(dash_mac.split(':')[0:3]).upper() in mac_address_amazon_vendor and not res:
print "%s Unknown Amazon device" % pkt[ARP].hwsrc
print sniff(prn=arp_display, filter="arp", store=0)
Il faut avoir le paquet python-scapy d'installé.
On peut ajouter des boutons à la ligne 40:
buttons.append(Button("88:71:e5:xx:xx:xx", "ON", 2))
Le premier paramètre est l’adresse MAC du bouton, le second est son nom, et le dernier est le numéro idx de Domoticz.
Quand on appuie sur le bouton, le matériel IDX de domoticz changera de statut.
Pour le service, il faut créer le fichier /etc/systemd/system/dash_amazon.service:
Code : Tout sélectionner
[Unit]
Description=Dash Amazon
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/python2 -u /opt/dash_amazon.py
[Install]
WantedBy=multi-user.target
On démare le service
systemctl enable /etc/systemd/system/dash_amazon.service
systemctl start dash_amazon