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