ThingConnect
Aller au parent Accueil
Les périphériques ThingConnect disponibles utilisent l'une des technologies suivantes :
Sommaire
- 1 Z-Wave
- 2 Bluetooth Low Energy
- 2.1 Présentation de Bluetooth LE
- 2.2 Utilisation du framework Bluetooth LE IoT
- 2.2.1 Dispositif de découverte des périphériques Bluetooth LE
- 2.2.1.1 Méthodes de mécanisme de découverte dans le Gestionnaire de découverte des périphériques Bluetooth LE
- 2.2.1.2 Evénements du mécanisme de découverte de composant ThingConnect
- 2.2.1.3 Connexion à un périphérique ThingConnect
- 2.2.1.4 Evénement d'erreur du Gestionnaire de découverte de périphérique Bluetooth LE
- 2.2.1.5 Evénements d'erreur du composant ThingConnect
- 2.2.2 Lecture ou abonnement à une caractéristique
- 2.2.3 Ecriture d'une caractéristique
- 2.2.1 Dispositif de découverte des périphériques Bluetooth LE
- 2.3 Résolution des problèmes de l'application Bluetooth LE
- 3 Rubriques
- 4 Voir aussi
Z-Wave
Le protocole Z-Wave est une technologie de communication sans fil entre appareils électroniques qui utilise les radios fréquences. Ce protocole a été conçu pour fonctionner avec les applications de contrôle, de surveillance et de lecture d'état dans des environnements résidentiels ou commerciaux de petite taille. Pour plus d'informations sur la technologie Z-Wave, voir About Z-Wave Technology (EN).
Présentation de la technologie Z-Wave
Afin d'utiliser un périphérique Z-Wave, vous devez disposer d'un périphérique qui agit en tant que contrôleur. Nous testons nos périphériques en utilisant le contrôleur domotique VeraLite (VeraLite Smart Home Controller) (EN), mais vous pouvez tout aussi bien utiliser un contrôleur Z-Wave compatible.
Pour des instructions sur la configuration d'un contrôleur Z-Wave, reportez-vous à la documentation officielle du fabricant. Par exemple, pour le contrôleur domotique VeraLite, reportez-vous à Vera User Guides (EN).
Utilisation du framework Z-Wave IoT
Le framework Z-Wave IoT est basé sur le protocole HTTP et agit comme une couche intermédiaire entre l'utilisateur et le périphérique, facilitant ainsi les interactions. Par l'intermédiaire du framework Z-Wave IoT, vous pouvez interargir avec les périphériques en accédant à leurs propriétés. Les propriétés peuvent être en lecture, en écriture ou les deux à la fois. Pour plus de détails, voir Utilisation des périphériques ThingConnect et Tutoriel : Construction d'une application ThingConnect IoT.
Mécanisme de découverte des périphériques Z-Wave
Pour établir une connexion à un périphérique Z-Wave, vous devez effectuer les opérations suivantes :
- Fournir l'adresse IP du contrôleur Z-Wave : définissez l'adresse IP dans la propriété URL du composant.
- Fournir l'identificateur unique du périphérique : définissez l'identificateur unique du périphérique dans la propriété DeviceNum du composant. Vous pouvez trouver (et modifier) cet identificateur dans l'interface Web de votre contrôleur Z-Wave. Par exemple, dans VeraLite, elle apparaît dans la section Advanced d'un périphérique sous la forme du champ
id.
- Activer le composant : définissez la propriété Active du composant sur
True.
IPAddress = '192.168.1.99'; //IP address of the Z-Wave controller
DeviceID = 1234; //The unique identifier of the device
FVeraAeotecLEDBulb.URL := 'http://' + IPAddress + '/port_3480';
FVeraAeotecLEDBulb.DeviceNum := DeviceID;
FVeraAeotecLEDBulb.Active := True;
IPAddress = "192.168.1.99"; //IP address of the Z-Wave controller
DeviceID = 1234; //The unique identifier of the device
FVeraAeotecLEDBulb->URL = "http://" + IPAddress + "/port_3480";
FVeraAeotecLEDBulb->DeviceNum = DeviceID;
FVeraAeotecLEDBulb->Active = True;
Lecture ou écriture d'une caractéristique
La lecture ou l'écriture d'une caractéristique est une opération simple, elle s'effectue en utilisant les propriétés du composant. Par exemple, pour obtenir la couleur de l'ampoule Aeon Labs, utilisez le code suivant :
Value := FVeraAeotecLEDBulb.Color;
Value = FVeraAeotecLEDBulb->Color;
Abonnement à une caractéristique
La technologie Z-Wave ne fournit pas un moyen de s'abonner à une caractéristique comme cela est le cas pour la technologie BLE. Pour simuler un "abonnement", vous pouvez interroger périodiquement le contrôleur pour vérifier s'il a reçu des alertes.
Ainsi, si vous voulez vous "abonner" à la lecture de la température du thermostat Honeywell, vous pouvez utiliser le code suivant :
procedure THoneywellThermostatApp.Timer1Timer(Sender: TObject);
begin
InsideTempLabel.Text := FloatToStr(FVeraHoneywellThermostat.TemperatureValue) + '°F';
end;
void __fastcall THoneywellThermostatApp::Timer1Timer(TObject *Sender)
{
InsideTempLabel->Text = FloatToStr(FVeraHoneywellThermostat->TemperatureValue) + "F";
}
Réception des alertes
Certains périphériques Z-Wave sont capables de déclencher des alertes. Lorsque ces périphériques déclenchent une alerte, le contrôleur Z-Wave la reçoit. Pour vous "abonner" à une alerte, vous pouvez périodiquement interroger le contrôleur (vous pouvez utiliser un timer ou un thread à cet effet).
Ainsi, si vous voulez vous "abonner" aux alertes du capteur d'ouverture de fenêtre Fibaro, vous pouvez utiliser le code suivant :
var
XMLNodeList: IXMLNodeList;
XMLDocument: IXMLDocument;
...
...
XMLDocument := LoadXMLData(FibaroWindowSensorApp.FVeraFibaroWindowSensor.Xmlfile);
if XMLDocument <> nil then
begin
XMLNodeList := XMLDocument.DocumentElement.ChildNodes['alerts'].ChildNodes;
for I := XMLNodeList.Count - 1 downto 0 do
if (XMLNodeList[I].Attributes['PK_Device']) = DeviceID then
break;
Date = '';
Date := XMLNodeList[I].Attributes['LocalTimestamp'];
...
end;
...
String XMLData, Date;
_di_IXMLNode XMLNodeList, XMLNodeListChild;
_di_IXMLDocument XMLDocument;
...
XMLDocument = LoadXMLData(FibaroWindowSensorApp->FVeraFibaroWindowSensor->Xmlfile);
if (XMLDocument)
{
XMLNodeList = XMLDocument->DocumentElement->ChildNodes->FindNode("alerts");
for (I = XMLNodeList->ChildNodes->Count - 1 ; I >= 0; I--)
{
XMLNodeListChild = XMLNodeList->ChildNodes->Get(I);
if ((XMLNodeListChild->Attributes["PK_Device"]) == (DeviceID))
break;
}
Date = "";
Date = XMLNodeListChild->Attributes["LocalTimestamp"];
...
Permissions d'utilisation Android Z-Wave
Pour utiliser un périphérique Z-Wave sur Android, il n'est pas nécessaire de changer les paramètres par défaut des permissions d'utilisation.
Bluetooth Low Energy
Bluetooth Low Energy (Bluetooth LE) ou Smart Bluetooth fournit un nouvel environnement pour les périphériques qui transfèrent un petit volume de données et qui consomment peu d'énergie.
Présentation de Bluetooth LE
Profil GAP (Generic Access Profile)
Le profil GAP contrôle les connexions et la publication de services en Bluetooth. Le profil GAP d'un périphérique Bluetooth LE détermine la manière dont les périphériques peuvent interagir avec d'autres périphériques.
Le profil GAP définit différents rôles pour ces périphériques :
- Les appareils périphériques, qui transfèrent un petit volume de données et qui consomment moins d'énergie. Les appareils périphériques publient leurs services et peuvent se connecter à un périphérique central puissant. Les appareils périphériques sont par exemple un moniteur de fréquence cardiaque et un moniteur de pression artérielle.
- Les périphériques centraux, qui ont plus de puissance de traitement et de mémoire, et auxquels les appareils périphériques se connectent. Le périphérique central recherche les périphériques et établit la connexion à un appareil périphérique
Plates-formes prises en charge
| Plate-forme | Bluetooth Low Energy | |
|---|---|---|
| Central | Périphérique | |
|
Windows* |
8+ |
|
|
Mac OS X |
10.7+ |
10.9+ |
|
iOS |
5+ |
6+ |
|
Android |
4.3+ |
|
*Windows Server ne prend pas en charge Bluetooth (voir : General Bluetooth Support in Windows (EN)).
Profils GATT (Generic Attribute Profile)
Les profils sont des définitions de haut niveau qui définissent comment utiliser des services standard dans vos applications. Par exemple, le profil Heart Rate (Fréquence cardiaque) est utilisé pour les applications d'entraînement physique ou de santé. Le périphérique serveur équipé d'un capteur de fréquence cardiaque expose le service Heart Rate standard pour que le client Bluetooth LE découvre le service et commence à collecter des données, comme par exemple les bpm (battements par minute).
Le profil GATT est la combinaison des services et des caractéristiques.
La page officielle des profils GATT décrit les spécifications GATT pour les profils standard (EN).
Services Bluetooth LE
Les services sont des collections de caractéristiques et de relations avec d'autres services qui encapsulent le comportement d'une partie d'un périphérique.
Un profil GATT inclut un ou plusieurs services standard qui sont identifiés par un numéro. Par exemple, le numéro officiel suivant a été attribué au service Heart Rate : "0x180D".
Vous trouverez des informations concernant les services standard sur la page officielle des services Bluetooth LE standard (EN).
Caractéristiques Bluetooth LE
Une caractéristique définit un type d'attribut qui contient une valeur logique unique.
Un service peut contenir une ou plusieurs caractéristiques qui fournissent des informations pour le service particulier. Chaque caractéristique est identifiée par un numéro officiel. Par exemple, le service Heart Rate comporte une caractéristique pour mesurer la fréquence cardiaque, Heart Rate Measurement (EN).
Vous trouverez des informations concernant la caractéristique adoptée dans la page officielle des caractéristiques Bluetooth LE standard (EN).
Utilisation du framework Bluetooth LE IoT
Le framework IoT pour périphériques Bluetooth LE utilise TBluetoothDeviceDiscoveryManager pour gérer la connexion avec un périphérique IoT en tant que mécanisme de connexion Bluetooth LE général et encapsule chaque périphérique en tant que composant. Par exemple, le
composant TWahooTICKRHeartRateMonitor encapsule le moniteur de fréquence cardiaque Wahoo TICKR.
Le composant TBluetoothDeviceDiscoveryManager fournit le mécanisme de base pour la connexion aux périphériques Bluetooth LE. Dans le composant TBluetoothDeviceDiscoveryManager, vous pouvez définir un délai d'attente et un nombre de tentatives pour ces périphériques.
Dispositif de découverte des périphériques Bluetooth LE
Méthodes de mécanisme de découverte dans le Gestionnaire de découverte des périphériques Bluetooth LE
Le composant TBluetoothDeviceDiscoveryManager prend en charge plusieurs options pour le mécanisme de découverte (propriété DiscoveryMethod) :
| Type de méthode de découverte | Description |
|---|---|
Connect
|
Le périphérique central se connecte directement à un appareil périphérique donné. |
ScanResponse
|
L'appareil central utilise les données publiées de l'appareil périphérique pour s'y connecter plus vite. |
ScanResponseAllDevices
|
Le périphérique central recherche tous les appareils périphériques ayant le même service primaire dans leurs données publiées. |
- Remarque :
- Pour les applications des plates-formes Windows 32 bits et Windows 64 bits, vous devez définir Connect comme type de méthode de découverte.
- Certains périphériques ne diffusent pas leur nom ou les services dans les données publiées. Vous devez utiliser à la place la méthode de découverte Connect et définir manuellement le nom du périphérique auquel vous souhaitez vous connecter.
- La méthode
ScanResponsese connecte au premier périphérique ThingConnect trouvé comportant un service primaire donné.
Evénements du mécanisme de découverte de composant ThingConnect
Tous les composants Bluetooth LE fournissent les événements suivants pour les méthodes de découverte définies dans le TBluetoothDeviceDiscoveryManager :
| Nom de l'événement | Description |
|---|---|
OnDeviceConnected
|
Lorsque le composant trouve un périphérique et s'y connecte. |
OnDeviceDisconnect
|
Lorsque le composant détecte que le périphérique est déconnecté. |
OnDeviceDiscovered
|
Lorsque le composant trouve un nouveau périphérique (il peut être déclenché plusieurs fois). |
Si la méthode de découverte du TBluetoothDeviceDiscoveryManager est définie sur ScanResponseAllDevices, les événements suivants peuvent être déclenchés avant la connexion au périphérique ThingConnect :
| Nom de l'événement | Description |
|---|---|
OnDeviceListDiscovered
|
Lorsque le composant finit la création de la liste de tous les périphériques découverts. |
Lorsque le composant finit la création de la liste de tous les périphériques découverts (et que l'événement OnDeviceListDiscovered est déclenché), les propriétés suivantes du composant sont mises à jour et vous pouvez les utiliser pour la connexion à un périphérique :
DiscoveredDeviceCount: contient la quantité totale de périphériques découverts contenus dans la liste.DiscoveredDevice: renvoie un périphérique spécifique à partir de la liste des périphériques découverts.
Pour plus d'informations sur ces propriétés, voir Utilisation de la méthode de mécanisme de découverte ScanResponseAllDevices.
Connexion à un périphérique ThingConnect
En fonction du Mécanisme de découverte, vous pouvez vous connecter au périphérique ThingConnect comme suit :
- Pour la méthode
Connect, définissez la propriétéDeviceNamedu composant sur le nom de votre propre composant. - Pour la méthode
ScanResponseAllDevices, utilisez la méthodeConnectDevicepour vous connecter à unDiscoveredDevicedonné. Pour plus d'informations, voir Utilisation de la méthode de mécanisme de découverte ScanResponseAllDevices.
Evénement d'erreur du Gestionnaire de découverte de périphérique Bluetooth LE
Le TBluetoothDeviceDiscoveryManager fournit l'événement suivant :
| Nom de l'événement | Description |
|---|---|
OnGeneralDiscoveryError
|
Lorsque le gestionnaire de périphériques ne trouve aucun périphérique auquel se connecter. La procédure a aussi un paramètre supplémentaire, TGeneralDiscoveryErrorEvent = procedure(const Sender: TObject; const AException: Exception; var Handled: Boolean) of object;
|
Evénements d'erreur du composant ThingConnect
Tous les composants Bluetooth LE fournissent les événements suivants :
| Nom de l'événement | Description |
|---|---|
OnDeviceConnectionError
|
Lorsque le composant ne peut pas récupérer les services depuis le périphérique (le périphérique est maintenant déconnecté). |
Vous devez implémenter les gestionnaires d'événement correspondants lorsque les événements sont déclenchés.
Lecture ou abonnement à une caractéristique
Lorsque l'application se connecte à un périphérique, vous pouvez lire les informations contenues dans les caractéristiques d'un service ou vous abonner à une caractéristique pour obtenir les informations à chaque modification.
Seule une caractéristique en lecture seule a sa valeur Property correspondante dans les composants Bluetooth LE.
- Remarque : Les caractéristiques d'abonnement ont également une valeur
PropertyNamemais seulement à des fins de documentation. Les valeurs de nom de propriété des caractéristiques d'abonnement ne sont pas des propriétés du composant.
Chaque caractéristique comporte un événement. Tous les noms des événements se conforment à On<PropertyName>Update. Le gestionnaire d'événement est déclenché après la lecture de la valeur de la propriété.
- Pour lire les données d'une caractéristique en lecture seule, appelez la méthode
Refresh<PropertyName>. - Pour vous abonner à une caractéristique et commencer à recevoir des mises à jour de données, appelez la méthode
Subscribe<PropertyName>. - Pour vous désabonner d'une caractéristique et arrêter de recevoir des mises à jour de données, appelez la méthode
Unsubscribe<PropertyName>.
Le tableau suivant affiche un exemple des noms de méthode dans le moniteur de fréquence cardiaque Zephyr pour la lecture de la propriété BatteryLevel, et l'abonnement/désabonnement à la caractéristique Heart Rate Measurement (HeartRateMeasurement).
| Service | Caractéristique | Propriété | Nom d'événement | Méthode de lecture | Méthode d'abonnement | Méthode de désabonnement |
|---|---|---|---|---|---|---|
| Battery Service | Battery Level | BatteryLevel
|
OnBatteryLevelUpdate
|
RefreshBatteryLevel
|
||
| Heart Rate | Heart Rate Measurement | HeartRateMeasurement
|
OnHeartRateMeasurementUpdate
|
SubscribeHeartRateMeasurement
|
UnsubscribeHeartRateMeasurement
|
Pour l'utiliser, vous devez ajouter les unités suivantes à la clause Uses de l'application :
- Iot.Family.BluetoothLE.GattTypes
- L'unité Types personnalisée (si le composant définit des types de données personnalisés).
Ecriture d'une caractéristique
Vous pouvez envoyer des données vers le périphérique en écrivant les caractéristiques correspondantes d'un service.
- Les noms des événements se conforment à
On<PropertyName>WriteStatus. Le gestionnaire d'événement est déclenché après l'envoi de la commande vers le périphérique pour écrire une caractéristique. - Pour écrire une caractéristique, assignez la valeur correcte à la propriété. Pour plus d'informations sur la manière d'écrire une caractéristique, voir Ecriture d'une caractéristique.
Pour vérifier si la caractéristique a été mise à jour dans le périphérique, vous devez vous abonner à la notification de tout autre type de données ou lire la valeur en cours de la propriété (cela dépend du périphérique que vous utilisez).
Résolution des problèmes de l'application Bluetooth LE
Services Bluetooth LE standard n'apparaissant pas dans les applications Mac OS X et iOS
Les services standard Bluetooth LE Generic Attribute Profile et Generic Access Profile n'apparaissent pas dans les applications Mac OS X et iOS.
Les systèmes d'exploitation Mac OS X et iOS utilisent les informations sur ces services en interne et filtrent dans la liste des services découverts le service Generic Attribute (EN) et le service Generic Access (EN).
Impossible de connecter les applications Bluetooth LE Windows
Dans les applications Bluetooth LE Windows 32 bits et Windows 64 bits, vous devez appairer les périphériques avant d'essayer de les connecter.
Windows ne prend pas en charge ScanResponse ou le ScanResponseAllDevices comme mécanisme de découverte pour trouver les appareils périphériques. A la place, vous devez utiliser Connect comme mécanisme de découverte dans le composant TBluetoothDeviceDiscoveryManager et définir la propriété DeviceName avec le nom de votre propre périphérique.
Android Bluetooth LE utilise des permissions
Pour les applications Android Bluetooth LE, vous devez activer les permissions d'utilisation requises dans la configuration de projet appropriée (Projet > Options > Permissions d'utilisation) :
- Bluetooth
- Administration du Bluetooth
Rubriques
- Périphériques ThingConnect
- Utilisation des périphériques ThingConnect
- Tutoriel : Construction d'une application ThingConnect IoT