ThingConnect

De IoT
Aller à : navigation, rechercher

Aller au parent Accueil


Les périphériques ThingConnect disponibles utilisent l'une des technologies suivantes :

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. AeonLightLedBulb-DeviceNum.png
  • Activer le composant : définissez la propriété Active du composant sur True.
Delphi :
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;
C++ :
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 :

Delphi :
Value := FVeraAeotecLEDBulb.Color;
C++ :
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 :

Delphi :
procedure THoneywellThermostatApp.Timer1Timer(Sender: TObject);
begin
  InsideTempLabel.Text := FloatToStr(FVeraHoneywellThermostat.TemperatureValue) + '°F';
end;
C++ :
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 :

Delphi :
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;
...
C++ :
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 ScanResponse se 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 :

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, Handled. Si vous voulez gérer vous-même l'exception, définissez Handled sur True.

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 PropertyName mais 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

Voir aussi