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.
Důležité
Byla vydána nová verze služby Azure Digital Twins. Vzhledem k rozšířeným funkcím nové služby se původní služba Azure Digital Twins (popsaná v této sadě dokumentace) vyřadila z provozu.
Pokud chcete zobrazit dokumentaci k nové službě, navštivte aktivní dokumentaci ke službě Azure Digital Twins.
V tomto kurzu se dozvíte, jak pomocí služby Azure Digital Twins Preview monitorovat prostory pro požadované podmínky teploty a úroveň pohodlí. Po konfiguraci ukázkové budovymůžete na své budově zřizovat a spouštět vlastní funkce na datech snímačů pomocí kroků v tomto návodu.
V tomto kurzu se naučíte:
- Definujte podmínky pro monitorování.
- Vytvoření uživatelem definované funkce (UDF).
- Simulace dat ze snímačů
- Získejte výsledky uživatelem definované funkce.
Požadavky
V tomto kurzu se předpokládá, že jste dokončili nastavení služby Azure Digital Twins. Než budete pokračovat, ujistěte se, že máte:
- Účet Azure.
- Instance služby Digital Twins spuštěná.
- Ukázky Digital Twins C# byly staženy a extrahovány na vašem pracovním počítači.
-
.NET Core SDK verze 2.1.403 nebo novější na vývojovém počítači pro sestavení a spuštění ukázky. Spuštěním
dotnet --versionověřte, že je nainstalovaná správná verze. - Visual Studio Code k prozkoumání vzorového kódu.
Návod
Pokud zřizujete novou instanci, použijte jedinečný název instance Služby Digital Twins.
Definování podmínek pro monitorování
Můžete definovat sadu konkrétních podmínek, které se mají monitorovat v datech zařízení nebo snímačů, nazývané matchery. Pak můžete definovat funkce označované jako uživatelem definované funkce. Uživatelem definované funkce spouštějí vlastní logiku na datech, která pocházejí z vašich prostorů a zařízení, když nastanou podmínky určené porovnávacími kritérii. Další informace najdete v tématu Zpracování dat a uživatelem definované funkce.
V ukázkovém projektu occupancy-quickstart otevřete soubor src\actions\provisionSample.yaml v editoru Visual Studio Code. Zaznamenejte část, která začíná druhem shody. Každá položka tohoto typu vytvoří porovnávací prvek se zadaným Názvem. Matcher bude monitorovat senzor typu s hodnotou datového typu. Všimněte si, jak souvisí s prostorem pojmenovaným jako Focus Room A1, ve kterém je uzel zařízení obsahující několik senzorů. Pokud chcete zřídit matcher, který bude sledovat jeden z těchto senzorů, ujistěte se, že jeho dataTypeValue odpovídá dataType senzoru.
Pod existující porovnávací vzory přidejte následující párovací prvek. Ujistěte se, že jsou klávesy zarovnané a mezery nejsou nahrazeny tabulátory. Tyto řádky jsou také přítomné v souboru provisionSample.yaml jako zakomentované řádky. Komentář můžete zrušit odebráním znaku # před každým řádkem.
- name: Matcher Temperature
dataTypeValue: Temperature
Tento matcher bude sledovat senzor SAMPLE_SENSOR_TEMPERATURE, který jste přidali v prvním tutoriálu.
Vytvoření uživatelem definované funkce
Pomocí uživatelem definovaných funkcí můžete přizpůsobit zpracování dat snímačů. Jsou to vlastní JavaScriptové kódy, které se mohou spouštět v rámci vaší instance služby Azure Digital Twins, když nastanou konkrétní podmínky popsané matchery. Můžete vytvářet matchery a uživatelsky definované funkce pro každý senzor, který chcete monitorovat. Další informace najdete v tématu Zpracování dat a uživatelem definované funkce.
V ukázkovém souboru provisionSample.yaml vyhledejte oddíl začínající typem userdefinedfunctions. Tato sekce poskytuje uživatelem definovanou funkci s daným Názvem. Tento UDF se aplikuje na seznam porovnávačů pod matcherNames. Všimněte si, jak můžete jako skript poskytnout vlastní javascriptový soubor pro UDF.
Všimněte si také oddílu s názvem přiřazení rolí. Přiřadí roli Správce prostoru k uživatelem definované funkci. Tato role umožňuje přístup k událostem, které pocházejí z libovolného zřízeného prostoru.
Nakonfigurujte UDF tak, aby obsahovala detektor teploty přidáním nebo zrušením komentáře k řádce v uzlu
matcherNamessouboru provisionSample.yaml.- Matcher TemperatureOtevřete soubor \actions\userDefinedFunctions\availability.js src v editoru. Toto je soubor odkazovaný v elementu script souboru provisionSample.yaml. Uživatelem definovaná funkce v tomto souboru hledá podmínky, když se v místnosti nezjistí žádný pohyb a úrovně oxidu uhličitého jsou nižší než 1 000 ppm.
Upravte soubor JavaScriptu tak, aby monitoroval teplotu a další podmínky. Přidejte následující řádky kódu pro vyhledání podmínek, pokud v místnosti není zjištěn žádný pohyb, úrovně oxidu uhličitého jsou nižší než 1 000 ppm a teplota je nižší než 78 stupňů Fahrenheita.
Poznámka:
Tato část upraví soubor \actions\userDefinedFunctions\availability.js src, abyste se mohli podrobně naučit jedním ze způsobů, jak napsat uživatelem definovanou funkci. Můžete se ale rozhodnout přímo použít soubor src\actions\userDefinedFunctions\availabilityForTutorial.js v nastavení. Tento soubor obsahuje všechny změny potřebné pro tento kurz. Pokud místo toho použijete tento soubor, nezapomeňte použít správný název souboru pro skript klíč v src\actions\provisionSample.yaml.
a. V horní části souboru přidejte následující řádky pro teplotu pod komentář
// Add your sensor type here:var temperatureType = "Temperature"; var temperatureThreshold = 78;b) Přidejte následující řádky za řádek, který definuje
var motionSensor, pod komentář// Add your sensor variable here:var temperatureSensor = otherSensors.find(function(element) { return element.DataType === temperatureType; });c. Přidejte následující řádek za příkaz, který definuje
var carbonDioxideValue, pod komentář// Add your sensor latest value here:var temperatureValue = getFloatValue(temperatureSensor.Value().Value);d. Odeberte následující řádky kódu zpod komentáře
// Modify this line to monitor your sensor value:if(carbonDioxideValue === null || motionValue === null) { sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide or motion are null, returning"); return; }Nahraďte je následujícími řádky:
if(carbonDioxideValue === null || motionValue === null || temperatureValue === null){ sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide, motion, or temperature are null, returning"); return; }e. Odeberte následující řádky kódu zpod komentáře
// Modify these lines as per your sensor:var availableFresh = "Room is available and air is fresh"; var noAvailableOrFresh = "Room is not available or air quality is poor";Nahraďte je následujícími řádky:
var alert = "Room with fresh air and comfortable temperature is available."; var noAlert = "Either room is occupied, or working conditions are not right.";f. Odeberte následující blok kódu if-else po komentáři
// Modify this code block for your sensor:// If carbonDioxide less than threshold and no presence in the room => log, notify and set parent space computed value if(carbonDioxideValue < carbonDioxideThreshold && !presence) { log(`${availableFresh}. Carbon Dioxide: ${carbonDioxideValue}. Presence: ${presence}.`); setSpaceValue(parentSpace.Id, spaceAvailFresh, availableFresh); } else { log(`${noAvailableOrFresh}. Carbon Dioxide: ${carbonDioxideValue}. Presence: ${presence}.`); setSpaceValue(parentSpace.Id, spaceAvailFresh, noAvailableOrFresh); // Set up custom notification for poor air quality parentSpace.Notify(JSON.stringify(noAvailableOrFresh)); }A nahraďte ho následujícím blokem if-else:
// If sensor values are within range and room is available if(carbonDioxideValue < carbonDioxideThreshold && temperatureValue < temperatureThreshold && !presence) { log(`${alert}. Carbon Dioxide: ${carbonDioxideValue}. Temperature: ${temperatureValue}. Presence: ${presence}.`); // log, notify and set parent space computed value setSpaceValue(parentSpace.Id, spaceAvailFresh, alert); // Set up notification for this alert parentSpace.Notify(JSON.stringify(alert)); } else { log(`${noAlert}. Carbon Dioxide: ${carbonDioxideValue}. Temperature: ${temperatureValue}. Presence: ${presence}.`); // log, notify and set parent space computed value setSpaceValue(parentSpace.Id, spaceAvailFresh, noAlert); }Upravený UDF bude hledat podmínku, kdy bude místnost k dispozici, a oxid uhličitý a teplota budou v mezích tolerovatelných limitů. Při splnění této podmínky vygeneruje oznámení s příkazem
parentSpace.Notify(JSON.stringify(alert));. Nastaví hodnotu monitorovaného prostoru bez ohledu na to, jestli je podmínka splněna, s odpovídající zprávou.gram Uložte soubor.
Otevřete příkazové okno a přejděte do složky occupancy-quickstart\src. Spuštěním následujícího příkazu zřiďte graf prostorové inteligence a uživatelem definovanou funkci:
dotnet run ProvisionSampleDůležité
Aby se zabránilo neoprávněnému přístupu k rozhraní API služby Digital Twins Management, vyžaduje aplikace pro rychlý start obsazenosti , abyste se přihlásili pomocí přihlašovacích údajů účtu Azure. Ukládá přihlašovací údaje po krátkou dobu, takže se nemusíte při každém spuštění přihlašovat. Při prvním spuštění tohoto programu a po vypršení platnosti uložených přihlašovacích údajů vás aplikace přesměruje na přihlašovací stránku a poskytne kód specifický pro relaci, který se má na této stránce zadat. Postupujte podle pokynů a přihlaste se pomocí svého účtu Azure.
Po ověření účtu aplikace začne vytvářet ukázkový prostorový graf nakonfigurovaný v provisionSample.yaml. Počkejte, až se zřizování dokončí. Bude to trvat několik minut. Potom sledujte zprávy v příkazovém okně a všimněte si, jak se prostorový graf vytvoří. Všimněte si, jak aplikace vytvoří centrum IoT v kořenovém uzlu nebo v uzlu označeném jako
Venue.Z výstupu v příkazovém okně zkopírujte do schránky hodnotu
ConnectionString, která se nachází pod oddílemDevices. Tuto hodnotu budete potřebovat k simulaci připojení zařízení v další části.Ukázka zřízeníProvision sample
Provision sample
Návod
Pokud se zobrazí chybová zpráva podobná tomu, že operace vstupně-výstupní operace byla přerušena z důvodu ukončení vlákna nebo požadavku aplikace uprostřed zřizování, zkuste příkaz spustit znovu. K tomu může dojít v případě, že došlo k vypršení časového limitu klienta HTTP kvůli problému se sítí.
Simulace dat snímačů
V této části použijete v ukázce projekt s názvem připojení zařízení. Budete simulovat data senzorů pro detekci pohybu, teploty a oxidu uhličitého. Tento projekt generuje náhodné hodnoty pro senzory a odesílá je do centra IoT pomocí připojovacího řetězce zařízení.
V samostatném příkazovém okně přejděte do ukázky služby Azure Digital Twins a pak přejděte do složky připojení zařízení.
Spuštěním tohoto příkazu se ujistěte, že jsou závislosti projektu správné:
dotnet restoreOtevřete soubor appsettings.json v editoru a upravte následující hodnoty:
a. DeviceConnectionString: Přiřaďte hodnotu
ConnectionStringve výstupním okně z předchozí části. Celý tento řetězec zkopírujte v uvozovkách, aby se simulátor mohl správně připojit ke službě IoT Hub.b) HardwareId v poli senzorů : Protože simulujete události ze senzorů zřízených pro instanci služby Azure Digital Twins, ID hardwaru a názvy senzorů v tomto souboru by měly odpovídat uzlu
sensorssouboru provisionSample.yaml.Přidejte novou položku pro senzor teploty. Senzory v appsettings.json by měly vypadat takto:
"Sensors": [{ "DataType": "Motion", "HardwareId": "SAMPLE_SENSOR_MOTION" },{ "DataType": "CarbonDioxide", "HardwareId": "SAMPLE_SENSOR_CARBONDIOXIDE" },{ "DataType": "Temperature", "HardwareId": "SAMPLE_SENSOR_TEMPERATURE" }]Spuštěním tohoto příkazu spusťte simulaci událostí zařízení pro teplotu, pohyb a oxidu uhličitého:
dotnet runPoznámka:
Vzhledem k tomu, že ukázka simulace přímo nekomunikuje s vaší instancí služby Digital Twins, nevyžaduje ověření.
Získání výsledků uživatelem definované funkce
Uživatelem definovaná funkce se spustí pokaždé, když instance obdrží data ze zařízení a senzorů. Tato část dotazuje instanci služby Azure Digital Twins, aby získala výsledky funkce definované uživatelem. Budete upozorněni téměř v reálném čase, když je k dispozici místnost, že vzduch je čerstvý a teplota je správná.
Otevřete příkazové okno, které jste použili k nastavení ukázky, nebo nové příkazové okno a znovu přejděte do složky occupancy-quickstart\src této ukázky.
Po zobrazení výzvy spusťte následující příkaz a přihlaste se:
dotnet run GetAvailableAndFreshSpaces
V okně výstupu se dozvíte, jak uživatelem definovaná funkce spouští a zachycuje události z simulace zařízení.
Pokud je monitorovaná podmínka splněna, uživatelsky definovaná funkce nastaví hodnotu prostoru s příslušnou zprávou, jak jsme viděli dříve. Funkce GetAvailableAndFreshSpaces vypíše zprávu v konzole.
Uklidit zdroje
Pokud v tuto chvíli chcete zastavit zkoumání služby Azure Digital Twins, můžete odstranit prostředky vytvořené v tomto kurzu:
V nabídce vlevo na Azure portalvyberte Všechny prostředky, vyberte skupinu prostředků Digital Twins a vyberte Odstranit.
Návod
Pokud jste měli potíže s odstraněním instance Digital Twins, byla nasazena aktualizace služby s opravou. Zkuste znovu odstranit svou instanci.
V případě potřeby odstraňte ukázkové aplikace na pracovním počítači.
Další kroky
Teď, když jste zřídili prostory a vytvořili architekturu pro aktivaci vlastních oznámení, můžete přejít na některý z následujících kurzů: