ThingConnect
Go Up to Hauptseite
Die verfügbaren ThingConnect-Geräte verwenden eine der folgenden Technologien:
Inhaltsverzeichnis
- 1 Z-Wave
- 2 Bluetooth Low Energy
- 2.1 Übersicht über Bluetooth LE
- 2.2 Verwenden des IoT-Frameworks für Bluetooth LE
- 2.2.1 Mechanismus zur Ermittlung von Bluetooth LE-Geräten
- 2.2.1.1 Ermittlungsmechanismusmethoden in der Komponente TBluetoothDeviceDiscoveryManager
- 2.2.1.2 Ermittlungsmechanismusereignisse der Komponente ThingConnect
- 2.2.1.3 Verbinden mit einem ThingConnect-Gerät
- 2.2.1.4 Fehlerereignis in der Komponente TBluetoothDeviceDiscoveryManager
- 2.2.1.5 Fehlerereignisse der Komponente ThingConnect
- 2.2.2 Lesen oder Abonnieren eines Merkmals
- 2.2.3 Schreiben eines Merkmals
- 2.2.1 Mechanismus zur Ermittlung von Bluetooth LE-Geräten
- 2.3 Fehlerbehebung bei Bluetooth LE-Anwendungen
- 3 Themen
- 4 Siehe auch
Z-Wave
Das Z-Wave-Protokoll ist eine interoperable, drahtlose, RF-basierte Kommunikationstechnologie, die speziell für Anwendungen zum Steuern, Überwachen und Lesen des Status in Wohn- und Kleingewerbeumgebungen konzipiert ist. Weitere Informationen über die Z-Wave-Technologie finden Sie unter About Z-Wave Technology (EN).
Überblick über Z-Wave
Für die Verwendung eines Z-Wave-Geräts benötigen Sie ein Gerät, das als Kontroller dient. Wir testen unsere Geräte mit dem VeraLite Smart Home Controller (EN), aber Sie können jeden kompatiblen Z-Wave-Controller verwenden.
Anleitungen zum Einrichten eines Z-Wave-Controllers finden Sie in der Dokumentation des jeweiligen Herstellers. Beispielsweise für den VeraLite Smart Home Controller finden Sie in Vera User Guides (EN).
Verwenden des Z-Wave-IoT-Frameworks
Das Z-Wave-IoT-Framework basiert auf HTTP und fungiert als Schicht zwischen dem Benutzer und dem Gerät, was zur Vereinfachung und Transparenz der Interaktion führt. Mit dem Z-Wave-IoT-Framework können Sie durch Zugreifen auf Eigenschaften mit Geräten interagieren. Die Eigenschaften sind entweder lesbar, schreibbar oder beides. Einzelheiten und Beispiele finden Sie unter Arbeiten mit ThingConnect-Geräten und Tutorial: Erstellen einer ThingConnect-IoT-Anwendung.
Ermittlungsmechanismus für Z-Wave-Geräte
Führen Sie die folgenden Schritte aus, um eine Verbindung mit einem Z-Wave-Gerät herzustellen:
- Geben Sie die IP-Adresse des Z-Wave-Controllers an: Legen Sie die IP-Adresse als Eigenschaft URL der Komponente fest.
- Geben Sie den eindeutigen Bezeichner des Geräts an: Legen Sie den eindeutigen Bezeichner des Geräts als Eigenschaft DeviceNum der Komponente fest. Diesen Bezeichner finden Sie in der Weboberfläche Ihres Z-Wave-Controllers; dort können Sie ihn auch ändern. In VeraLite befindet sich der Bezeichner im Abschnitt Advanced eines Geräts im Feld
id
. - Aktivieren Sie die Komponente: Setzen Sie die Eigenschaft Active der Komponente auf
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;
Lesen eines Merkmals oder Schreiben in ein Merkmal
Zum Lesen eines Merkmals oder Schreiben in ein Merkmal verwenden Sie einfach die verfügbaren Eigenschaften der Komponente. Um beispielsweise die Farbe der Aeon Labs Glühbirne zu ermitteln, verwenden Sie den folgenden Code:
Value := FVeraAeotecLEDBulb.Color;
Value = FVeraAeotecLEDBulb->Color;
Abonnieren eines Merkmals
Die Z-Wave-Technologie stellt nicht dieselbe Möglichkeit zum Abonnieren eines Merkmals bereit wie BLE. Um ein "Abonnement" zu simulieren, können Sie den Controller regelmäßig abfragen, um festzustellen, ob er Alarmmeldungen empfangen hat.
Um beispielsweise die Temperaturmessung des Honeywell Thermostats zu "abonnieren", können Sie den folgenden Code verwenden:
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";
}
Empfangen von Alarmmeldungen
Bestimmte Z-Wave-Geräte können Alarmmeldungen auslösen. Von derartigen Geräten ausgelöste Alarmmeldungen werden vom Z-Wave-Controller empfangen. Um eine Alarmmeldung zu "abonnieren", können Sie den Controller regelmäßig abfragen (dazu können Sie einen Zeitgeber oder einen Thread verwenden).
Wenn Sie beispielsweise die Alarmmeldungen des Fibaro Fenstersensors "abonnieren" möchten, verwenden Sie den folgenden Codeauszug als Leitfaden:
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"];
...
Option "Verwendet Berechtigungen" von Z-Wave für Android
Um ein Z-Wave-Gerät unter Android zu verwenden, müssen Sie die Standardeinstellungen für Verwendet Berechtigungen nicht ändern.
Bluetooth Low Energy
Bluetooth Low Energy (Bluetooth LE) oder Smart Bluetooth stellt eine neue Umgebung für Geräte mit einer geringen Datenübertragungsmenge und niedrigerem Energieverbrauch bereit.
Übersicht über Bluetooth LE
Generic Access Profile (GAP)
Das Generic Access Profile steuert die Verbindungen und den in Bluetooth bekanntgegebenen Dienst. Das Generic Access Profile eines Bluetooth LE-Geräts legt fest, wie die Geräte mit anderen Geräten interagieren.
Das Generic Access Profile definiert verschiedene Rollen dieser Geräte:
- Peripheriegeräte mit kleinen zu übertragenden Datenmengen und niedrigem Energieverbrauch. Peripheriegeräte geben ihre Dienste bekannt und können sich mit einem leistungsstarken Hauptgerät verbinden. Herzfrequenzmonitoren und Blutdruckmonitoren sind beispielsweise Peripheriegeräte.
- Hauptgeräte mit höherer Rechenleistung und größerem Speicher, mit denen sich Peripheriegeräte verbinden. Das Hauptgerät sucht nach Geräten und richtet die Verbindung mit einem Peripheriegerät ein.
Plattformunterstützung
Plattform | Bluetooth Low Energy | |
---|---|---|
Hauptgerät | Peripheriegerät | |
Windows* |
8+ |
|
Mac OS X |
10.7+ |
10.9+ |
iOS |
5+ |
6+ |
Android |
4.3+ |
*Windows Server unterstützt Bluetooth nicht (siehe General Bluetooth Support in Windows (EN)).
GATT-Profile (Generic Attribute Profile)
Profile sind allgemeine Definitionen, die festlegen, wie die Standarddienste in Ihren Anwendungen verwendet werden. Beispielsweise gibt es ein Herzfrequenzprofil, das in Fitness- oder Gesundheitsanwendungen eingesetzt wird. Das Servergerät mit einem Herzfrequenzsensor stellt den Standardherzfrequenzdienst (Heart Rate Service) bereit, sodass der Bluetooth LE-Client den Dienst findet und mit dem Sammeln von Daten, z. B. Schläge pro Minute, beginnt.
Das GATT-Profil ist die Kombination aus Dienst und Merkmalen.
Die offizielle Seite mit den GATT-Profilen ist GATT Specifications for Standard Profiles (EN).
Bluetooth LE-Dienste
Dienste sind Sammlungen von Merkmalen und Beziehungen zu anderen Diensten, die das Verhalten eines Geräteteils kapseln.
Ein GATT-Profil enthält einen oder mehrere Standarddienste, die mit einer Zahl bezeichnet sind. Beispielsweise ist dem Dienst Heart Rate (EN) offiziell die Zahl "0x180D" zugeordnet.
Die offizielle Seite mit den Standarddienstinformationen ist Standard Bluetooth LE Services (EN).
Bluetooth LE-Merkmale
Ein Merkmal definiert einen Attributtyp, der einen einzelnen logischen Wert enthält.
Ein Dienst kann mehrere Merkmale enthalten, die Informationen für diesen Dienst bereitstellen. Jedes Merkmal ist mit einer offiziellen Nummer gekennzeichnet. Beispielsweise hat der Herzfrequenzdienst (Heart Rate Service) ein Merkmal zum Messen der Herzfrequenz, Heart Rate Measurement (EN).
Die offizielle Seite mit den übernommenen Merkmalsinformationen ist Standard Bluetooth LE Characteristics (EN).
Verwenden des IoT-Frameworks für Bluetooth LE
Das IoT-Framework für Bluetooth LE
-Geräte verwaltet mit TBluetoothDeviceDiscoveryManager
als allgemeinem Bluetooth LE
-Verbindungsmechanismus die Verbindung mit einem IoT-Gerät und kapselt jedes Gerät als Komponente. Beispielsweise kapselt die TWahooTICKRHeartRateMonitor
-Komponente den Wahoo TICKR Herzfrequenzmonitor.
Die Komponente TBluetoothDeviceDiscoveryManager
stellt den Basismechanismus für die Verbindung mit Bluetooth LE
-Geräten bereit. In der Komponente TBluetoothDeviceDiscoveryManager
können Sie ein Zeitlimit und die Anzahl der erneuten Verbindungsversuche für diese Geräte festlegen.
Mechanismus zur Ermittlung von Bluetooth LE-Geräten
Ermittlungsmechanismusmethoden in der Komponente TBluetoothDeviceDiscoveryManager
Die Komponente TBluetoothDeviceDiscoveryManager
unterstützt mehrere Optionen für den Ermittlungsmechanismus (Eigenschaft DiscoveryMethod
):
Ermittlungsmethodentyp | Beschreibung |
---|---|
Connect
|
Das Hauptgerät verbindet sich direkt mit einem bestimmten Peripheriegerät. |
ScanResponse
|
Das Hauptgerät verwendet die bereitgestellten Daten vom Peripheriegerät, um die Verbindung schneller herzustellen. |
ScanResponseAllDevices
|
Das Hauptgerät sucht nach allen Peripheriegeräten mit dem gleichen primären Dienst in den bereitgestellten Daten. |
- Hinweis:
- Bei Anwendungen für 32-Bit-Windows- und 64-Bit-Windows-Plattformen müssen Sie Connect als Ermittlungsmethodentyp festlegen.
- Einige Geräte senden ihren Namen oder ihre Dienste in den bereitgestellten Daten. Sie müssen stattdessen die Ermittlungsmethode Connect verwenden und den Namen des Geräts, mit dem eine Verbindung hergestellt werden soll, manuell angeben.
- Die Methode
ScanResponse
verbindet mit dem ersten gefundenen ThingConnect-Gerät, das über einen angegebenen primären Dienst verfügt.
Ermittlungsmechanismusereignisse der Komponente ThingConnect
Alle Bluetooth LE-Komponenten stellen die folgenden Ereignisse für in der Komponente TBluetoothDeviceDiscoveryManager
festgelegte Ermittlungsmethoden bereit:
Name des Ereignisses | Beschreibung |
---|---|
OnDeviceConnected
|
Wenn die Komponente ein Gerät findet und eine Verbindung damit herstellt. |
OnDeviceDisconnect
|
Wenn die Komponente feststellt, dass die Verbindung mit dem Gerät aufgehoben wurde. |
OnDeviceDiscovered
|
Wenn die Komponente ein neues Gerät findet (kann mehrmals ausgelöst werden). |
Wenn die Ermittlungsmethode von TBluetoothDeviceDiscoveryManager
auf ScanResponseAllDevices
gesetzt ist, können die folgenden Ereignisse ausgelöst werden, bevor die Verbindung mit dem ThingConnect-Gerät hergestellt wird:
Name des Ereignisses | Beschreibung |
---|---|
OnDeviceListDiscovered
|
Wenn die Komponente das Auflisten aller ermittelten Geräte beendet. |
Wenn die Komponente das Auflisten aller ermittelten Geräte beendet (und das Ereignis OnDeviceListDiscovered
ausgelöst wird), werden die folgenden Komponenteneigenschaften aktualisiert, und Sie können anhand dieser Eigenschaften eine Verbindung mit einem Gerät herstellen:
DiscoveredDeviceCount
: Enthält die Gesamtanzahl der ermittelten Geräte auf der Liste.DiscoveredDevice
: Gibt ein bestimmtes Gerät aus der Liste aller ermittelten Geräte zurück.
Weitere Informationen über diese Eigenschafgen finden Sie unter Verwenden der Ermittlungsmechanismusmethode ScanResponseAllDevices.
Verbinden mit einem ThingConnect-Gerät
Je nach Ermittlungsmechanismus können Sie mit einer der folgenden Methoden eine Verbindung mit dem ThingConnect-Gerät herstellen:
- Setzen Sie für die Methode
Connect
die EigenschaftDeviceName
der Komponente auf den Namen Ihrer eigenen Komponente. - Stellen Sie für die Methode
ScanResponseAllDevices
mit der MethodeConnectDevice
eine Verbindung zu einem bestimmtenDiscoveredDevice
her. Weitere Einzelheiten finden Sie unter Verwenden der Ermittlungsmechanismusmethode ScanResponseAllDevices.
Fehlerereignis in der Komponente TBluetoothDeviceDiscoveryManager
Die Komponente TBluetoothDeviceDiscoveryManager
stellt das folgende Ereignis bereit:
Name des Ereignisses | Beschreibung |
---|---|
OnGeneralDiscoveryError
|
Falls der Gerätemanager kein Gerät findet, mit dem eine Verbindung hergestellt werden kann. Die Prozedur verfügt über einen weiteren Parameter, TGeneralDiscoveryErrorEvent = procedure(const Sender: TObject; const AException: Exception; var Handled: Boolean) of object;
|
Fehlerereignisse der Komponente ThingConnect
Alle Bluetooth LE-Komponenten stellen die folgenden Ereignisse bereit:
Name des Ereignisses | Beschreibung |
---|---|
OnDeviceConnectionError
|
Falls die Komponente die Dienste vom Gerät nicht abrufen kann (das Gerät ist jetzt nicht verbunden). |
Wenn die Ereignisse ausgelöst werden, müssen Sie die entsprechenden Ereignisbehandlungsroutinen implementieren.
Lesen oder Abonnieren eines Merkmals
Sobald die Anwendung eine Verbindung mit einem Gerät hergestellt hat, können Sie die in den Merkmalen eines Dienstes enthaltenen Informationen lesen oder ein Merkmal abonnieren, um die Informationen bei jeder Änderung erneut zu erhalten.
Nur schreibgeschützte Merkmale haben in den Bluetooth LE-Komponenten eine entsprechende Eigenschaft.
- Hinweis: Abonnementmerkmale verfügen auch über einen
PropertyName
-Wert, aber lediglich für Dokumentationszwecke. Die Werte der Eigenschaftsnamen von Abonnementmerkmalen sind keine Eigenschaften der Komponente.
Jedes Merkmal hat ein Ereignis. Alle Namen der Ereignisse entsprechen On<PropertyName>Update
. Die Ereignisbehandlungsroutine wird nach dem Lesen des Eigenschaftswertes ausgelöst.
- Um die Daten eines schreibgeschützten Merkmals zu lesen, rufen Sie die Methode
Refresh<PropertyName>
auf. - Um ein Merkmal zu abonnieren und den Empfang von Datenaktualisierungen zu starten, rufen Sie die Methode
Subscribe<PropertyName>
auf. - Um das Abonnement eines Merkmals aufzuheben und den Empfang von Datenaktualisierungen zu beenden, rufen Sie die Methode
Unsubscribe<PropertyName>
auf.
Die folgende Tabelle enthält ein Beispiel für Methodennamen im Zephyr Herzfrequenzmonitor zum Lesen der Eigenschaft BatteryLevel
und Abonnieren und Aufheben des Abonnements des Merkmals Herzfrequenzmessung (HeartRateMeasurement
).
Dienst | Merkmal | Eigenschaft | Ereignisname | Methode zum Lesen | Methode zum Abonnieren | Methode zum Aufheben des Abonnements |
---|---|---|---|---|---|---|
Battery Service (EN) | Battery Level (EN) | BatteryLevel
|
OnBatteryLevelUpdate
|
RefreshBatteryLevel
|
||
Heart Rate (EN) | Heart Rate Measurement (EN) | HeartRateMeasurement
|
OnHeartRateMeasurementUpdate
|
SubscribeHeartRateMeasurement
|
UnsubscribeHeartRateMeasurement
|
Zur Verwendung dieser Methoden müssen Sie der Uses-Klausel der Anwendung die folgenden Units hinzufügen:
- Iot.Family.BluetoothLE.GattTypes
- Die benutzerdefinierte Unit Types (wenn die Komponente benutzerdefinierte Datentypen definiert).
Schreiben eines Merkmals
Sie können Daten an das Gerät senden, indem Sie die entsprechenden Merkmale eines Dienstes schreiben.
- Die Namen der Ereignisse entsprechen
On<PropertyName>WriteStatus
. Die Ereignisbehandlungsroutine wird ausgelöst, nachdem die Reihenfolge, wie in ein Merkmal geschrieben werden soll, an das Gerät gesendet wurde. - Um in ein Merkmal zu schreiben, weisen der Eigenschaft den richtigen Wert zu. Weitere Informationen über das Schreiben in ein Merkmal finden Sie unter Schreiben in ein Merkmal.
Um zu überprüfen, ob das Merkmal auf dem Gerät aktualisiert wurde, müssen Sie eine Benachrichtigung eines anderen Datentyps abonnieren oder den aktuellen Wert der Eigenschaft lesen (ist abhängig vom verwendeten Gerät).
Fehlerbehebung bei Bluetooth LE-Anwendungen
Bluetooth LE-Standarddienste werden in Mac OS X- und iOS-Anwendungen nicht angezeigt
Die Bluetooth LE-Standarddienste Generic Attribute Profile und Generic Access Profile werden für Mac OS X- und iOS-Anwendungen nicht angezeigt.
Die Betriebssysteme Mac OS X und iOS verwenden die Informationen für diese Dienste intern und filtern aus der Liste der ermittelten Dienste die Dienste Generic Attribute (EN) und Generic Access (EN) heraus.
Windows Bluetooth LE-Anwendungen können keine Verbindung herstellen
In Bluetooth LE-Anwendungen für 32-Bit-Windows und 64-Bit-Windows müssen Sie die Geräte vor dem Herstellen einer Verbindung koppeln.
Windows unterstützt ScanResponse
und ScanResponseAllDevices
als Mechanismen zum Ermitteln von Peripheriegeräten nicht. Stattdessen müssen Sie Connect als Ermittlungsmechanismus in der Komponente TBluetoothDeviceDiscoveryManager
verwenden und die Eigenschaft DeviceName
auf den Namen Ihres eigenen Geräts setzen.
Bluetooth LE Android verwendet Berechtigungen
Für Android Bluetooth LE-Anwendungen müssen Sie die erforderlichen Berechtigungen in der entsprechenden Projektkonfiguration (Projekt > Optionen > Verwendet Berechtigungen) aktivieren:
- Bluetooth
- Bluetooth-Administration
Themen
- ThingConnect-Geräte
- Arbeiten mit ThingConnect-Geräten
- Tutorial: Erstellen einer ThingConnect-IoT-Anwendung