Oktatóanyag: Az épület kiépítése és a munkakörülmények monitorozása az Azure Digital Twins előzetes verziójával

Fontos

Megjelent az Azure Digital Twins szolgáltatás új verziója. Az új szolgáltatás bővített képességeinek fényében az eredeti Azure Digital Twins szolgáltatást (amelyet a jelen dokumentációs készlet ismertet) kivonták.

Az új szolgáltatás dokumentációjának megtekintéséhez tekintse meg az aktív Azure Digital Twins-dokumentációt.

Ez az oktatóanyag bemutatja, hogyan használhatja az Azure Digital Twins előzetes verzióját a kívánt hőmérsékleti feltételek és kényelemszint figyelésére. A mintaépület konfigurálása után az oktatóanyag lépéseit követve kiépítheti az épületet, és egyéni függvényeket futtathat az érzékelőadatokon.

Eben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Határozza meg a monitorozni kívánt feltételeket.
  • Felhasználó által definiált függvény (UDF) létrehozása.
  • Érzékelőadatok szimulálása.
  • Felhasználó által definiált függvény eredményeinek lekérése.

Előfeltételek

Ez az oktatóanyag feltételezi, hogy befejezte az Azure Digital Twins beállítását. Mielőtt továbblépne, győződjön meg arról, hogy rendelkezik a következőkkel:

Tipp

Ha új példányt hoz létre, használjon egyedi Digital Twins-példánynevet.

A monitorozni kívánt feltételek meghatározása

Megadhatja az eszköz vagy az érzékelő adatainak figyelésére szolgáló konkrét feltételeket, amelyeket egyezőknek nevezünk. Ezután definiálhat felhasználó által definiált függvényeket. A felhasználó által definiált függvények egyéni logikát hajtanak végre a szóközökből és eszközökből származó adatokon, amikor az egyezők által megadott feltételek teljesülnek. További információkért olvassa el az adatfeldolgozást és a felhasználó által definiált függvényeket.

Az occupancy-quickstart mintaprojektben nyissa meg az src\actions\provisionSample.yaml nevű fájlt a Visual Studio Code-ban. Figyelje meg a megfeleltetők típussal kezdődő szakaszt. Minden ilyen típusú bejegyzés létrehoz egy egyeztetőt a megadott névvel. Az egyező a dataTypeValue típusú érzékelőt figyeli. Figyelje meg, hogyan kapcsolódik a Fókusz szoba A1 nevű térhez, amely egy eszközcsomóponttal rendelkezik, amely néhány érzékelőt tartalmaz. Ha olyan egyezőt szeretne kiépíteni, amely nyomon követi az egyik ilyen érzékelőt, győződjön meg arról, hogy a dataTypeValue értéke megegyezik az érzékelő dataType értékével.

Adja hozzá a következő egyezőt a meglévő megfelelők alá. Győződjön meg arról, hogy a kulcsok egymáshoz vannak igazítva, és a szóközöket nem tabulátorok váltják fel. Ezek a sorok a provisionSample.yaml fájlban is megtalálhatók megjegyzésként megadott sorokként. A megjegyzéseket úgy szüntetheti meg, hogy eltávolítja a karaktert az # egyes sorok előtt.

      - name: Matcher Temperature
        dataTypeValue: Temperature

Ez az egyező nyomon követi az SAMPLE_SENSOR_TEMPERATUREelső oktatóanyagban hozzáadott érzékelőt.

Felhasználó által meghatározott függvény létrehozása

A felhasználó által definiált függvényekkel testre szabhatja az érzékelőadatok feldolgozását. Ezek egyéni JavaScript-kódok, amelyek az Azure Digital Twins-példányon belül futtathatók, ha a megfeleltetők által leírt feltételek teljesülnek. Mindegyik monitorozni kívánt érzékelőhöz létrehozhat megfeleltetőket és felhasználó által meghatározott függvényeket. További információkért olvassa el az adatfeldolgozást és a felhasználó által definiált függvényeket.

A provisionSample.yaml mintafájlban keresse meg a userdefinedfunctions típussal kezdődő szakaszt. Ez a szakasz egy felhasználó által definiált függvényt helyez üzembe egy megadott névvel. Ez az UDF a matcherNames alatt található egyezők listáján működik. Figyelje meg, hogy megadhatja szkriptként a saját JavaScript-fájlját a felhasználó által meghatározott függvényhez.

A roleassignments nevű szakaszt is figyelje meg. Hozzárendeli a helyrendszergazda szerepkört a felhasználó által definiált függvényhez. Ez a szerepkör lehetővé teszi, hogy hozzáférjen a kiépített terek bármelyikéből származó eseményekhez.

  1. Konfigurálja úgy az UDF-et, hogy tartalmazza a hőmérséklet-megfeleltetőt. Ehhez adja hozzá az alábbi sort, vagy távolítsa el a megjegyzést az alábbi sorból a provisionSample.yaml fájl matcherNames csomópontjában:

            - Matcher Temperature
    
  2. Nyissa meg az src\actions\userDefinedFunctions\availability.js fájlt a szerkesztőben. Ez a provisionSample.yamlszkriptelemében hivatkozott fájl. A felhasználó által definiált függvény ebben a fájlban olyan feltételeket keres, amikor nem észlelhető mozgás a helyiségben, és a szén-dioxid-szint 1000 ppm alatt van.

    Módosítsa a JavaScript-fájlt a hőmérséklet és egyéb feltételek monitorozásához. Adja hozzá a következő kódsorokat, hogy megkeresse azokat a feltételeket, amikor nem észlelhető mozgás a helyiségben, a szén-dioxid-szint 1000 ppm alatt van, a hőmérséklet pedig 78 Fahrenheit fok alatt van.

    Megjegyzés

    Ez a szakasz módosítja a fájlt src\actions\userDefinedFunctions\availability.js , így részletesen megismerheti a felhasználó által definiált függvények írásának egyik módját. Választhatja azonban, hogy közvetlenül használja a fájl src\actions\userDefinedFunctions\availabilityForTutorial.js a beállításban. Ebben a fájlban szerepel az oktatóanyaghoz szükséges összes módosítás. Ha inkább ezt a fájlt használja, ügyeljen arra, hogy a megfelelő fájlnevet használja az src\actions\provisionSample.yamlfájl szkriptkulcsához.

    a. A fájl elején adja hozzá a következő sorokat a hőmérséklethez az // Add your sensor type here megjegyzés alá:

        var temperatureType = "Temperature";
        var temperatureThreshold = 78;
    

    b. A megjegyzés // Add your sensor variable herealá szúrja be a következő sorokat a definiált var motionSensorutasítás után:

       var temperatureSensor = otherSensors.find(function(element) {
           return element.DataType === temperatureType;
       });
    

    c. A megjegyzés // Add your sensor latest value herealá szúrja be a következő sort a definiált var carbonDioxideValueutasítás után:

        var temperatureValue = getFloatValue(temperatureSensor.Value().Value);
    

    d. Távolítsa el a következő kódsorokat // Modify this line to monitor your sensor value megjegyzés alól:

       if(carbonDioxideValue === null || motionValue === null) {
           sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide or motion are null, returning");
           return;
       }
    

    Cserélje le ezeket a következő sorokra:

        if(carbonDioxideValue === null || motionValue === null || temperatureValue === null){
            sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide, motion, or temperature are null, returning");
            return;
        }
    

    e. Távolítsa el a következő kódsorokat // Modify these lines as per your sensor megjegyzés alól:

        var availableFresh = "Room is available and air is fresh";
        var noAvailableOrFresh = "Room is not available or air quality is poor";
    

    Cserélje le ezeket a következő sorokra:

        var alert = "Room with fresh air and comfortable temperature is available.";
        var noAlert = "Either room is occupied, or working conditions are not right.";
    

    f. Távolítsa el a következő if-else kódblokkot a // Modify this code block for your sensor megjegyzés után:

        // 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));
        }
    

    És cserélje le az alábbi if-else blokkra:

        // 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);
        }
    

    A módosított UDF olyan feltételt keres, amelyben elérhetővé válik egy helyiség, ahol a szén-dioxid és a hőmérséklet a megengedett korlátokon belül van. Létrehoz egy értesítést a parentSpace.Notify(JSON.stringify(alert)); utasítással, amikor ez a feltétel teljesül. A feltétel teljesülésétől függetlenül beállítja a monitorozott tér értékét a megfelelő üzenettel.

    : Mentse a fájlt.

  3. Nyisson meg egy parancsablakot, és lépjen az occupancy-quickstart\src mappára. Futtassa a következő parancsot a térbeliintelligencia-gráf és a felhasználó által definiált függvény kiépítéséhez:

    dotnet run ProvisionSample
    

    Fontos

    A Digital Twins Management API-hoz való jogosulatlan hozzáférés megakadályozása érdekében a foglaltsági gyorsindítási alkalmazásnak be kell jelentkeznie az Azure-fiók hitelesítő adataival. Rövid időre menti a hitelesítő adatokat, így előfordulhat, hogy nem kell minden alkalommal bejelentkeznie, amikor futtatja. A program első futtatásakor, és amikor a mentett hitelesítő adatok lejárnak, az alkalmazás egy bejelentkezési oldalra irányítja, és megad egy munkamenet-specifikus kódot, amelyet beírhat az adott oldalra. Az utasításokat követve jelentkezzen be Azure-fiókjával.

  4. A fiók hitelesítése után az alkalmazás elkezd létrehozni egy térbeli mintagráfot a provisionSample.yaml fájlban konfigurált módon. Várja meg, amíg a kiépítés befejeződik. Eltarthat néhány percig. Ezután figyelje meg a parancsablak üzeneteit, és figyelje meg, hogyan jön létre a térbeli diagram. Figyelje meg, hogyan hoz létre az alkalmazás egy IoT Hubot a gyökércsomóponton vagy a Venue.

  5. A parancsablak kimenetéből másolja a szakasz alatti Devices értékeket ConnectionStringa vágólapra. Erre az értékre szüksége lesz az eszközkapcsolat szimulálásához a következő szakaszban.

    Kiépítési minta

Tipp

Ha a kiépítés közepén a következőhöz hasonló hibaüzenet jelenik meg: "Az I/O-művelet megszakadt egy szálból való kilépés vagy egy alkalmazáskérés miatt", próbálja meg újra futtatni a parancsot. Ez akkor fordulhat elő, ha a HTTP-ügyfél túllépte az időkorlátot egy hálózati problémából.

Az érzékelőadatok szimulálása

Ebben a szakaszban az eszközkapcsolat nevű projektet fogja használni a mintában. Érzékelőadatokat szimulál a mozgás, a hőmérséklet és a szén-dioxid észleléséhez. Ez a projekt véletlenszerű értéket állít elő az érzékelők számára, és az eszköz kapcsolati sztringjével elküldi őket az IoT Hubnak.

  1. Egy külön parancsablakban lépjen az Azure Digital Twins-mintára, majd az eszközkapcsolati mappára.

  2. Futtassa ezt a parancsot annak ellenőrzéséhez, hogy helyesek-e a projekt függőségei:

    dotnet restore
    
  3. Nyissa meg az appsettings.json fájlt a szerkesztőben, és szerkessze a következő értékeket:

    a. DeviceConnectionString: Rendelje hozzá a ConnectionString értékét az előző szakasz kimeneti ablakából. Másolja ezt a sztringet teljesen az idézőjelek közé, hogy a szimulátor megfelelően kapcsolódjon az IoT Hubhoz.

    b. HardwareId az Érzékelők tömbben: Mivel az Azure Digital Twins-példányhoz kiépített érzékelők eseményeit szimulálja, a fájlban található hardverazonosítónak és az érzékelők nevének egyeznie kell a sensorsprovisionSample.yaml fájl csomópontjával.

    Adjon hozzá egy új bejegyzést a hőmérséklet-érzékelőhöz. Az appsettings.jsonÉrzékelő csomópontjának a következőhöz hasonlóan kell kinéznie:

    "Sensors": [{
      "DataType": "Motion",
      "HardwareId": "SAMPLE_SENSOR_MOTION"
    },{
      "DataType": "CarbonDioxide",
      "HardwareId": "SAMPLE_SENSOR_CARBONDIOXIDE"
    },{
      "DataType": "Temperature",
      "HardwareId": "SAMPLE_SENSOR_TEMPERATURE"
    }]
    
  4. Futtassa ezt a parancsot a hőmérséklettel, a mozgással és a szén-dioxiddal kapcsolatos eszközesemények szimulálásának elindításához:

    dotnet run
    

    Megjegyzés

    Mivel a szimulációs minta nem kommunikál közvetlenül a Digital Twins-példánnyal, nincs szükség hitelesítésre.

A felhasználó által definiált függvény eredményeinek lekérése

A felhasználó által meghatározott függvény mindig fut, amikor a példány eszköz- és érzékelőadatokat fogad. Ez a szakasz lekérdezi az Azure Digital Twins-példányt a felhasználó által definiált függvény eredményeinek lekéréséhez. A közel valós időben értesítjük, ha rendelkezésre áll egy szoba, hogy a levegő friss, és a hőmérséklet megfelelő.

  1. Nyissa meg a minta kiépítéséhez használt parancsablakot vagy egy új parancsablakot, és lépjen ismét a minta occupancy-quickstart\src mappájába.

  2. Futtassa a következő parancsot, és jelentkezzen be, amikor a rendszer kéri:

    dotnet run GetAvailableAndFreshSpaces
    

A kimeneti ablak bemutatja, hogyan fut a felhasználó által definiált függvény, és hogyan metszi az eseményeket az eszközszimulációból.

Az UDF kimenete

Ha a figyelt feltétel teljesül, a felhasználó által definiált függvény a tér értékét a megfelelő üzenettel állítja be, ahogy azt korábban láttuk. A GetAvailableAndFreshSpaces függvény kinyomtatja az üzenetet a konzolon.

Az erőforrások eltávolítása

Ha ezen a ponton szeretné megszüntetni az Azure Digital Twins felfedezését, nyugodtan törölje az ebben az oktatóanyagban létrehozott erőforrásokat:

  1. A Azure Portal bal oldali menüjében válassza a Minden erőforrás lehetőséget, válassza ki a Digital Twins erőforráscsoportot, és válassza a Törlés lehetőséget.

    Tipp

    Ha problémába ütközik a Digital Twins-példány törlésekor, a javítás szolgáltatásfrissítést vezetett be. Próbálkozzon újra a példány törlésével.

  2. Ha szükséges, törölje a mintaalkalmazásokat a munkagépen.

Következő lépések

Most, hogy kiépítette a szóközöket, és létrehozott egy keretrendszert az egyéni értesítések aktiválásához, az alábbi oktatóanyagok egyikére léphet: