ThingConnect

Aus IoT
Wechseln zu: Navigation, Suche

Go Up to Hauptseite


Die verfügbaren ThingConnect-Geräte verwenden eine der folgenden Technologien:

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. AeonLightLedBulb-DeviceNum.png
  • Aktivieren Sie die Komponente: Setzen Sie die Eigenschaft Active der Komponente auf 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;

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:

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

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";
}

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:

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"];
...

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 Eigenschaft DeviceName der Komponente auf den Namen Ihrer eigenen Komponente.
  • Stellen Sie für die Methode ScanResponseAllDevices mit der Methode ConnectDevice eine Verbindung zu einem bestimmten DiscoveredDevice 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, Handled. Wenn Sie die Exception selbst behandeln möchten, setzen Sie Handled auf True.

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

Siehe auch