Dieses Mal werden wir uns Gateway- und Subgeräte-Szenarien für die Verbindung von ** IoT ** -Geräten mit der Cloud ansehen.
In vielen IoT-Szenarien greift das Gerät selbst nicht auf das Internet zu. Sie fragen sich möglicherweise, wie Sie Ihre Daten in die Cloud verschieben können.
Die Cloud IoT Platform unterstützt direkte Verbindungen auf Geräten mithilfe eines speziellen Protokolls namens MQTT.
Interessanterweise unterstützt diese Art von Konnektivitätsprotokoll auch das Mounten des Geräts am Gateway als Untergerät des Gateways, sodass der Proxy des Gateways das Gerät mit der IoT-Plattform verbinden kann. Das Gateway-Gerät selbst fungiert dann als IoT-Gateway-Gerät und stellt eine MQTT-Verbindung zur IoT-Plattform her, um Daten zu senden und zu empfangen. Darüber hinaus ist dieses Gerät auch für die Verwaltung von Untergeräten verantwortlich. All dies umfasst daher auch die folgenden Operationen:
Abhängig vom lokalen Netzwerk sind die Kommunikationsprotokolle zwischen dem Gateway und dem Subgerät HTTP, MQTT, ZigBee. , [Modbus](http://www.bb-elec.com/Learning-Center/All-White-Papers/Modbus/The-Answer-to-the-14-Most-Frequently-Asked-Modbus.aspx?spm = a2c65.11461447.0.0.13e627e6SUARNc), BLE a2c65.11461447.0.0.13e627e6SUARNc), OPC-UA. Diese Logik wird vom Gateway implementiert. Diese Konnektivitätsfunktionen können jedoch nicht vom IoT SDK bereitgestellt werden.
Schauen wir uns nun an, wie das oben beschriebene Szenario eingerichtet wird, insbesondere die Gateway- und Subdevice-Szenarien. Dazu müssen Sie die folgenden Schritte ausführen.
Um ein Netzwerkprodukt zu erstellen, müssen Sie einen Knotentyp auswählen (in diesem Lernprogramm als Gateway bezeichnet). Das Gateway kann die Untergeräte verwalten, die auf den Untergeräten vorhandenen topologischen Beziehungen beibehalten und diese topologischen Beziehungen mit der Cloud synchronisieren.
Als Referenz zeigt die folgende Abbildung die topologischen Beziehungen, die zwischen dem Gateway und seinen Untergeräten bestehen.
Sie können das Gateway-Gerät verbinden, indem Sie die folgenden Parameter einstellen.
LinkKitInitParams params = new LinkKitInitParams();
DeviceInfo gatewayInfo = new DeviceInfo();
gatewayInfo.productKey = gateway.productKey;
gatewayInfo.deviceName = gateway.deviceName;
gatewayInfo.deviceSecret = gateway.deviceSecret;
params.deviceInfo = gatewayInfo;
LinkKit.getInstance().init(params, ILinkKitConnectListener)
Wenn das Gateway-Gerät verbunden ist, wird es in der Konsole mit dem Status "Online" angezeigt.
Sie können Netzwerktopologien hinzufügen, indem Sie die folgenden Parameter festlegen:
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewayAddSubDevice(
deviceInfo, // the ID of the sub-device
SubDeviceConnectListener)
Sie können dies stattdessen in der Konsole tun.
Sie können Untergeräte anschließen, indem Sie die folgenden Parameter einstellen.
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDeviceLogin(
deviceInfo, // the ID of the sub-device
ISubDeviceActionListener)
Sie können dies stattdessen in der Konsole tun.
Anschließend können Sie die Verbindungsinformationen des Untergeräts auf der Konsole überprüfen.
Sie können Daten für Untergeräte melden, indem Sie die folgenden Parameter einstellen.
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDevicePublish(
topic, // sub-device topic
data, // the data
deviceInfo, // the ID of the sub-device
ISubDeviceActionListener)
Sie können stattdessen die Konsole verwenden.
Sie können Subgeräte Themen abonnieren lassen, indem Sie die folgenden Parameter festlegen:
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDeviceSubscribe(
topic, // sub-device subscription topic
deviceInfo, // the ID of the sub-device
ISubDeviceActionListener)
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewaySubDeviceLogout(
deviceInfo, // the ID of the sub-device
ISubDeviceActionListener)
DeviceInfo deviceInfo = new DeviceInfo();
deviceInfo.productKey = productKey;
deviceInfo.deviceName = deviceName;
deviceInfo.deviceSecret = deviceSecret;
LinkKit.getInstance().getGateway().gatewayDeleteSubDevice(
deviceInfo, // the ID of the sub-device
ISubDeviceRemoveListener)
Recommended Posts