BLExxx
BLExxx 
Fonctions Bluetooth Low Energy
Les fournisseurs de service BLE doivent être définis dans un fichier ble.ini sous la forme :
[General]
DeviceCount=x
[Device1]
Capa=READ/NOTIFY
MAC=mac address
Service=Service ID
Charact=Cgaract ID
VarName=variable name to get the result in case of BGD() fct
[Device2]
...
[DeviceX]
Device1 sera alors appelé, dans les fonctions BLE par sont index 1, Device2 par son
exemple :
[General]
DeviceCount=2
[Device1]
Name=temp_et_hum_imm
Type=LYWSD03MMC
Capa=READ
KeepCnx=true
AutoRcnx=2
VarName=BLEresult
MAC=a4:c1:38:55:a7:2c
Service=ebe0ccb0-7a0a-4b0c-8a1a-6ff2997da3a6
Charact=ebe0ccc1-7a0a-4b0c-8a1a-6ff2997da3a6
[Device2]
Name=temp_et_hum_histo
Type=LYWSD03MMC
Capa=READ
KeepCnx=false
AutoRcnx=0
VarName=BLEhisto
MAC=a4:c1:38:55:a7:2c
Service=ebe0ccb0-7a0a-4b0c-8a1a-6ff2997da3a6
Charact=ebe0ccbb-7a0a-4b0c-8a1a-6ff2997da3a6
Les fonctions BLE
BSC() / BLEScan()
BDC(index) : BLE Deconnection du device 1
BGD(index) / BLEGetData(index)
Dans le cas de la fonction BGD(index), le système va lire le fichier ble.ini, va se connecter au module BLE selon la MAC address indiquée, puis récupérer l'information livrée pare le service/characterstic.
Le résultat sera enregistré, en hexadécimal, dans la variable éfinie dans le ble.ini sous la section du device correspondant
Un exemple de récupération de température est donné ci-dessous
Les événements BLE
--- sous réserve de modification --
Les événements BLE sont :
<BLEx> où x est l'index du device
<C> DP(connect) </C> pour l'événement de connection
<D>...</D> pour l'événement de déconnection
<N>...</N> pour l'événement de notification
</BLEx>
exemple de d'appel de la fct BGD():
<Sys>
<Start>ST(1,30,s);ST(2,5,m);</Start>
</Sys>
<T01>
LD(B,255);
SV(BLEresu,BGD(1));
IF(NGT(GV(BLEresu),0),SG(temperature,DP(DIV(AD(HCA(GV(BLEresult),0,d),NSL(HCA(GV(BLEresult),1,d),8)),100,f2))));
IF(NGT(GV(BLEresu),0),SG(humidity,DP(HCA(GV(BLEresult),2,d))));
IF(NGT(GV(BLEresu),0),SG(voltage,DP(DIV(AD(HCA(GV(BLEresult),3,d),NSL(HCA(GV(BLEresult),4,d),8)),1000,f3))));
IF(NGT(GV(BLEresu),0),ST(1,5,m),ST(1,30,s));
LD(G,255);
</T01>
<T02>
LD(R,255);
BDC(1);
DL(2000);
SV(BLEresu,BGD(2));
IF(NGT(GV(BLEresu),0),SG(h_index,DP(AD(HCA(GV(BLEhisto),0,d),NSL(HCA(GV(BLEhisto),1,d),8),NSL(HCA(GV(BLEhisto),2,d),16),NSL(HCA(GV(BLEhisto),3,d),24)))));
IF(NGT(GV(BLEresu),0),SG(h_time,DP(AD(HCA(GV(BLEhisto),4,d),NSL(HCA(GV(BLEhisto),5,d),8),NSL(HCA(GV(BLEhisto),6,d),16),NSL(HCA(GV(BLEhisto),7,d),24)))));
IF(NGT(GV(BLEresu),0),SG(h_hum,DP(HCA(GV(BLEhisto),13,d))));
IF(NGT(GV(BLEresu),0),SG(h_temp,DP(DIV(AD(HCA(GV(BLEhisto),8,d),NSL(HCA(GV(BLEhisto),9,d),8)),10,f1))));
IF(NGT(GV(BLEresu),0),ST(2,1,h),ST(2,5,m));
LD(G,255);
</T02>
exemple d'événements :
<BLE1>
<C>DP(BLE1 Connect);</C>
<Dx>DP(BLE1 Disconnect);ST(3,10,s);</Dx>
<Dx>DP(BLE1 Disconnect);</Dx>
<FC>DP(BLE1 Fail to connect);ST(2,10,s);</FC>
<N>
DP(BLE1 Notify);DP(CC(FreeHeap:,GS(FreeHeap)));
SG(temperature,DP(DIV(AD(HCA(GV(BLEresult),0,d),NSL(HCA(GV(BLEresult),1,d),8)),100,f2)));
SG(humidity,DP(HCA(GV(BLEresult),2,d)));
SG(voltage,DP(DIV(AD(HCA(GV(BLEresult),3,d),NSL(HCA(GV(BLEresult),4,d),8)),1000,f3)));
</N>
</BLE1>
Créé avec HelpNDoc Personal Edition: Outil de création d'aide complet