Comment tester l'accessibilité aux sondes depuis les serveur
Comment les ajouter dans domoticz
Je ne sais pas si j'utilise bien le script de test :
Code : Tout sélectionner
$ sudo ./test.py
from: can't read /var/mail/bluepy.btle
./test.py: 3: ./test.py: Syntax error: "(" unexpected
xxxk@debian:~$
Code : Tout sélectionner
import DomoticzEvents as DE
import sys
sys.path.append("/usr/local/lib/python3.7/dist-packages/")
from bluepy.btle import Scanner, DefaultDelegate
import os
midevices = {
"a4:c1:38:95:C8:0D": {'device': ATC_A00001},
"a4:c1:38:22:B4:B2": {'device': ATC_B00002},
"a4:c1:38:CC:D6:76": {'device': ATC_C00003},
"a4:c1:38:DC:6E:3E": {'device': ATC_D00004}
}
otherdevices = {}
def update(idx, t, h):
#0=Normal 1=Comfortable 2=Dry 3=Wet
c = 0
url = "http://127.0.0.1:8080/json.htm?type=command¶m=udevice&idx="+str(idx)+"&nvalue=0&svalue="+str(t)+';'+str(h)+';'+str(c)
os.system('/usr/bin/curl "'+url+'"')
def log(s):
#DE.Log(str(s))
return
def display(t):
for a,b in t.items():
log(a)
for c,d in b.items():
log(str(c)+' : '+str(d))
# 1a18 a4c138a3c592 00cc 27 4e 0b58 3c
# - mac temp hu %bat vbat frame_packet_counter
class ScanDelegate(DefaultDelegate):
def __init__(self):
DefaultDelegate.__init__(self)
def handleDiscovery(self, dev, isNewDev, isNewData):
global midevices, scan, otherdevices
t = {}
if dev.addr in midevices:
for (adtype, desc, value) in dev.getScanData():
t[adtype] = value
if t[22][0:4] == '1a18' and len(t[22]) == 30:
if not 'temp' in midevices[dev.addr]:
scan = scan + 1
data = t[22]
#midevices[dev.addr]['name'] = t[9]
midevices[dev.addr]['temp'] = int(data[16:20],16)/10
midevices[dev.addr]['humi'] = int(data[20:22], 16)
midevices[dev.addr]['bat'] = int(data[22:24], 16)
midevices[dev.addr]['vbat'] = int(data[24:28], 16) /1000
midevices[dev.addr]['count'] = int(data[28:30], 16)
#log(dev.addr+' == '+data+' > '+str(midevices[dev.addr]['bat'])+'%')
else:
if isNewDev:
otherdevices[dev.addr] = {}
for (adtype, desc, value) in dev.getScanData():
otherdevices[dev.addr][adtype] = value
#========= MAIN =========#
log("BLUETOOTH START")
scanner = Scanner().withDelegate(ScanDelegate())
scanner.clear()
scanner.start()
i = 0
scan = 0
while scan<len(midevices) and i < 5:
i = i + 1
scanner.process(2)
scanner.stop()
log('BLUETOOTH END '+str(i))
#display(midevices)
for m, d in midevices.items():
if 'temp' in d and d['device']:
update(d['device'], str(d['temp']), str(d['humi']))
#display(otherdevices)
log('BLUETOOTH UPDATE ')