Sdílet prostřednictvím


Kurz: Zřízení budovy a monitorování pracovních podmínek pomocí služby Azure Digital Twins Preview

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:

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.

  1. Nakonfigurujte UDF tak, aby obsahovala detektor teploty přidáním nebo zrušením komentáře k řádce v uzlu matcherNames souboru provisionSample.yaml.

            - Matcher Temperature
    
  2. Otevř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.

  3. 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 ProvisionSample
    

    Dů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.

  4. 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.

  5. Z výstupu v příkazovém okně zkopírujte do schránky hodnotu ConnectionString, která se nachází pod oddílem Devices. Tuto hodnotu budete potřebovat k simulaci připojení zařízení v další části.

    Ukázka zřízeníProvision sampleProvision sampleProvision 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í.

  1. 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í.

  2. Spuštěním tohoto příkazu se ujistěte, že jsou závislosti projektu správné:

    dotnet restore
    
  3. Otevřete soubor appsettings.json v editoru a upravte následující hodnoty:

    a. DeviceConnectionString: Přiřaďte hodnotu ConnectionString ve 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 sensors souboru 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"
    }]
    
  4. Spuštěním tohoto příkazu spusťte simulaci událostí zařízení pro teplotu, pohyb a oxidu uhličitého:

    dotnet run
    

    Pozná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á.

  1. 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.

  2. 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í.

UDF výstup pro

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:

  1. 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.

  2. 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ů: