Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přehled scénáře
V tomto scénáři vytvoříte zařízení, které odešle následující telemetrii do předkonfigurovaného řešení vzdáleného monitorování:
- Vnější teplota
- Vnitřní teplota
- Vlhkost
Kód na zařízení pro zjednodušení generuje ukázkové hodnoty, ale doporučujeme, abyste ukázku rozšířili připojením skutečných senzorů k zařízení a odesláním skutečné telemetrie.
Zařízení také dokáže reagovat na metody vyvolané z řídicího panelu řešení a požadovaných hodnot vlastností nastavených na řídicím panelu řešení.
K dokončení tohoto kurzu potřebujete aktivní účet Azure. Během několika minut si můžete vytvořit bezplatný zkušební účet, pokud ho ještě nemáte. Podrobnosti najdete v článku Bezplatná zkušební verze Azure.
Než začnete
Než napíšete jakýkoli kód pro vaše zařízení, musíte zřídit předkonfigurované řešení vzdáleného monitorování a zřídit nové vlastní zařízení v daném řešení.
Zřízení předkonfigurovaného řešení vzdáleného monitorování
Zařízení, které vytvoříte v tomto kurzu, odesílá data do instance vzdáleného monitorování předkonfigurovaného řešení. Pokud jste ještě ve svém účtu Azure nezřídili předkonfigurované řešení vzdáleného monitorování, postupujte následovně:
- Na stránce https://www.azureiotsolutions.com/ kliknutím na + vytvořte řešení.
- Klikněte na Vybrat na panelu vzdáleného monitorování pro vytvoření vašeho řešení.
- Na stránce Vytvořit řešení pro vzdálené monitorování zadejte název řešení podle svého výběru, vyberte oblast, do které chcete nasadit, a vyberte předplatné Azure, které chcete použít. Potom klikněte na Vytvořit řešení.
- Počkejte, až se proces zřizování dokončí.
Výstraha
Předkonfigurovaná řešení používají fakturovatelné služby Azure. Předkonfigurované řešení z vašeho předplatného nezapomeňte odebrat, abyste se vyhnuli zbytečným poplatkům. Předkonfigurované řešení můžete z předplatného úplně odebrat na stránce https://www.azureiotsolutions.com/.
Po dokončení procesu zřizování řešení pro vzdálené monitorování kliknutím na Spustit otevřete řídicí panel řešení v prohlížeči.
Řídicí panel řešení
Nakonfigurujte své zařízení v řešení pro vzdálené monitorování
Poznámka:
Pokud jste už ve svém řešení zřídili zařízení, můžete tento krok přeskočit. Při vytváření klientské aplikace potřebujete znát přihlašovací údaje zařízení.
Aby se zařízení mohlo připojit k předkonfigurovanýmu řešení, musí se k IoT Hubu identifikovat pomocí platných přihlašovacích údajů. Přihlašovací údaje zařízení můžete načíst z řídicího panelu řešení. Přihlašovací údaje zařízení zahrnete do klientské aplikace později v tomto kurzu.
Pokud chcete přidat zařízení do řešení pro vzdálené monitorování, proveďte na řídicím panelu řešení následující kroky:
V levém dolním rohu řídicího panelu klikněte na Přidat zařízení.
Na panelu Vlastní zařízení klikněte na Přidat nové.
zařízeníZvolte Umožnit mi definovat vlastní ID zařízení. Zadejte ID zařízení, jako například mydevice, klikněte na Kontrola ID, abyste ověřili, že název již není používán, a následně klikněte na Vytvořit pro zřízení zařízení.
Poznamenejte si přihlašovací údaje zařízení (ID zařízení, název hostitele služby IoT Hub a klíč zařízení). Vaše klientská aplikace potřebuje tyto hodnoty pro připojení k řešení pro vzdálené monitorování. Potom klikněte na Done (Hotovo).
Vyberte zařízení v seznamu zařízení na řídicím panelu řešení. Potom na panelu Podrobnosti o zařízení klepněte na Povolit zařízení. Stav zařízení je nyní v provozu. Řešení pro vzdálené monitorování teď může přijímat telemetrická data z vašeho zařízení a vyvolávat metody v zařízení.
Vytvoření ukázkového řešení node.js
Ujistěte se, že na vývojovém počítači je nainstalovaná Node.js verze 0.11.5 nebo novější. Verzi můžete zkontrolovat spuštěním node --version na příkazovém řádku.
Na vývojovém počítači vytvořte složku s názvem RemoteMonitoring . Přejděte do této složky v prostředí příkazového řádku.
Spuštěním následujících příkazů stáhněte a nainstalujte balíčky, které potřebujete k dokončení ukázkové aplikace:
npm init npm install azure-iot-device azure-iot-device-mqtt --saveVe složce RemoteMonitoring vytvořte soubor s názvem remote_monitoring.js. Otevřete tento soubor v textovém editoru.
Do souboru remote_monitoring.js přidejte následující příkazy
require:'use strict'; var Protocol = require('azure-iot-device-mqtt').Mqtt; var Client = require('azure-iot-device').Client; var ConnectionString = require('azure-iot-device').ConnectionString; var Message = require('azure-iot-device').Message;Za příkazy
requirepřidejte následující deklarace proměnných. Zástupné hodnoty [ID zařízení] a [Klíč zařízení] nahraďte hodnotami, které jste si poznamenali pro své zařízení na řídicím panelu řešení pro vzdálené monitorování. Pomocí názvu hostitele služby IoT Hub z řídicího panelu řešení nahraďte [IoTHub Name]. Pokud je například název hostitele služby IoT Hub contoso.azure-devices.net, nahraďte [IoTHub Name] contoso:var connectionString = 'HostName=[IoTHub Name].azure-devices.net;DeviceId=[Device Id];SharedAccessKey=[Device Key]'; var deviceId = ConnectionString.parse(connectionString).DeviceId;Přidejte následující proměnné pro definování některých základních telemetrických dat:
var temperature = 50; var humidity = 50; var externalTemperature = 55;Přidejte následující pomocnou funkci pro tisk výsledků operace:
function printErrorFor(op) { return function printError(err) { if (err) console.log(op + ' error: ' + err.toString()); }; }Přidejte následující pomocnou funkci, která se má použít k randomizaci hodnot telemetrie:
function generateRandomIncrement() { return ((Math.random() * 2) - 1); }Přidejte následující definici objektu DeviceInfo , který zařízení odesílá při spuštění:
var deviceMetaData = { 'ObjectType': 'DeviceInfo', 'IsSimulatedDevice': 0, 'Version': '1.0', 'DeviceProperties': { 'DeviceID': deviceId, 'HubEnabledState': 1 } };Přidejte následující definici pro hodnoty nahlášené digitálním dvojčetem zařízení. Tato definice obsahuje popis přímých metod, které zařízení podporuje:
var reportedProperties = { "Device": { "DeviceState": "normal", "Location": { "Latitude": 47.642877, "Longitude": -122.125497 } }, "Config": { "TemperatureMeanValue": 56.7, "TelemetryInterval": 45 }, "System": { "Manufacturer": "Contoso Inc.", "FirmwareVersion": "2.22", "InstalledRAM": "8 MB", "ModelNumber": "DB-14", "Platform": "Plat 9.75", "Processor": "i3-9", "SerialNumber": "SER99" }, "Location": { "Latitude": 47.642877, "Longitude": -122.125497 }, "SupportedMethods": { "Reboot": "Reboot the device", "InitiateFirmwareUpdate--FwPackageURI-string": "Updates device Firmware. Use parameter FwPackageURI to specifiy the URI of the firmware file" }, }Přidejte následující funkci pro zpracování volání přímé metody Reboot :
function onReboot(request, response) { // Implement actual logic here. console.log('Simulated reboot...'); // Complete the response response.send(200, "Rebooting device", function(err) { if(!!err) { console.error('An error occurred when sending a method response:\n' + err.toString()); } else { console.log('Response to method \'' + request.methodName + '\' sent successfully.' ); } }); }Přidejte následující funkci pro zpracování volání přímé metody InitiateFirmwareUpdate . Tato přímá metoda používá parametr k určení umístění image firmwaru ke stažení a inicializuje aktualizaci firmwaru na zařízení asynchronně:
function onInitiateFirmwareUpdate(request, response) { console.log('Simulated firmware update initiated, using: ' + request.payload.FwPackageURI); // Complete the response response.send(200, "Firmware update initiated", function(err) { if(!!err) { console.error('An error occurred when sending a method response:\n' + err.toString()); } else { console.log('Response to method \'' + request.methodName + '\' sent successfully.' ); } }); // Add logic here to perform the firmware update asynchronously }Přidejte následující kód pro vytvoření instance klienta:
var client = Client.fromConnectionString(connectionString, Protocol);Přidejte následující kód:
- Otevřete připojení.
- Odešle objekt DeviceInfo .
- Nastavte obslužnou rutinu pro požadované vlastnosti.
- Odešlete ohlášené vlastnosti
- Zaregistrujte obslužné rutiny pro přímé metody.
- Začněte odesílat telemetrii.
client.open(function (err) { if (err) { printErrorFor('open')(err); } else { console.log('Sending device metadata:\n' + JSON.stringify(deviceMetaData)); client.sendEvent(new Message(JSON.stringify(deviceMetaData)), printErrorFor('send metadata')); // Create device twin client.getTwin(function(err, twin) { if (err) { console.error('Could not get device twin'); } else { console.log('Device twin created'); twin.on('properties.desired', function(delta) { console.log('Received new desired properties:'); console.log(JSON.stringify(delta)); }); // Send reported properties twin.properties.reported.update(reportedProperties, function(err) { if (err) throw err; console.log('twin state reported'); }); // Register handlers for direct methods client.onDeviceMethod('Reboot', onReboot); client.onDeviceMethod('InitiateFirmwareUpdate', onInitiateFirmwareUpdate); } }); // Start sending telemetry var sendInterval = setInterval(function () { temperature += generateRandomIncrement(); externalTemperature += generateRandomIncrement(); humidity += generateRandomIncrement(); var data = JSON.stringify({ 'DeviceID': deviceId, 'Temperature': temperature, 'Humidity': humidity, 'ExternalTemperature': externalTemperature }); console.log('Sending device event data:\n' + data); client.sendEvent(new Message(data), printErrorFor('send event')); }, 5000); client.on('error', function (err) { printErrorFor('client')(err); if (sendInterval) clearInterval(sendInterval); client.close(printErrorFor('client.close')); }); } });Uložte změny do souboru remote_monitoring.js.
Spuštěním následujícího příkazu na příkazovém řádku spusťte ukázkovou aplikaci:
node remote_monitoring.js
Zobrazení telemetrie zařízení na řídicím panelu
Řídicí panel v řešení pro vzdálené monitorování umožňuje zobrazit telemetrická data odesílaná do IoT Hubu.
V prohlížeči se vraťte na řídicí panel řešení pro vzdálené monitorování, klikněte na Zařízení na levém panelu a přejděte do seznamu Zařízení.
V seznamu zařízení byste měli vidět, že stav vašeho zařízení je spuštěný. Pokud ne, klikněte na Povolit zařízení v panelu Podrobnosti o zařízení.
Klikněte na Řídicí panel pro návrat na řídicí panel, vyberte své zařízení v rozevíracím seznamu Zařízení k zobrazení pro zobrazení jeho telemetrie. Telemetrie z ukázkové aplikace je 50 jednotek pro vnitřní teplotu, 55 jednotek pro vnější teplotu a 50 jednotek pro vlhkost.
Vyvolání metody na vašem zařízení
Řídicí panel v řešení pro vzdálené monitorování umožňuje vyvolat metody na vašich zařízeních prostřednictvím IoT Hubu. Například v řešení pro vzdálené monitorování můžete vyvolat metodu pro simulaci restartování zařízení.
Na řídicím panelu řešení pro vzdálené monitorování klikněte na Zařízení na levém panelu a přejděte na seznam Zařízení.
Klikněte na Device ID pro vaše zařízení v seznamu zařízení .
Na panelu Podrobnosti o zařízení klepněte na Metody.
V rozevíracím seznamu Metoda vyberte InitiateFirmwareUpdatea potom v FWPACKAGEURI zadejte fiktivní adresu URL. Kliknutím na Vyvolat metodu zavoláte metodu v zařízení.
Zpráva se zobrazí v konzoli, když vaše zařízení spouští kód a zpracovává metodu. Výsledky metody se přidají do historie na portálu řešení:
Další kroky
Článek Přizpůsobení předkonfigurovaných řešení popisuje některé způsoby, jak tuto ukázku rozšířit. Mezi možná rozšíření patří použití skutečných senzorů a implementace dalších příkazů.
Další informace o oprávněních najdete na webu azureiotsuite.com.