Dela via


Använda dynamisk telemetri med den förkonfigurerade fjärrövervakningslösningen

Med dynamisk telemetri kan du visualisera all telemetri som skickas till den förkonfigurerade fjärrövervakningslösningen. De simulerade enheter som distribueras med den förkonfigurerade lösningen skickar telemetri för temperatur och luftfuktighet, som du kan visualisera på instrumentpanelen. Om du anpassar befintliga simulerade enheter, skapar nya simulerade enheter eller ansluter fysiska enheter till den förkonfigurerade lösningen kan du skicka andra telemetrivärden som den externa temperaturen, RPM eller vindhastigheten. Du kan sedan visualisera den här ytterligare telemetrin på instrumentpanelen.

I den här självstudien används en enkel Node.js simulerad enhet som du enkelt kan ändra för att experimentera med dynamisk telemetri.

För att slutföra den här självstudien behöver du:

  • En aktiv Azure-prenumeration. Om du inte har något konto kan du skapa ett kostnadsfritt utvärderingskonto på bara några minuter. Mer information finns i Kostnadsfri utvärderingsversion av Azure.
  • Node.js version 0.12.x eller senare.

Du kan slutföra den här självstudien om alla operativsystem, till exempel Windows eller Linux, där du kan installera Node.js.

Etablera lösningen

Om du inte redan har etablerat den förkonfigurerade lösningen för fjärrövervakning i ditt konto:

  1. Logga in på azureiotsuite.com med dina autentiseringsuppgifter för Azure-kontot och klicka för + att skapa en lösning.
  2. Klicka på Välj på panelen Fjärrövervakning.
  3. Ange ett lösningsnamn för den förkonfigurerade lösningen för fjärrövervakning.
  4. Välj den region och prenumeration som du vill använda för att etablera lösningen.
  5. Klicka på Skapa lösning för att påbörja etableringen. Den här processen tar normalt flera minuter.

Vänta tills etableringsprocessen har slutförts

  1. Klicka på ikonen för din lösning med statusen Etablerar.
  2. Observera etableringsstatusen när Azure-tjänsterna distribueras i din Azure-prenumeration.
  3. När etableringen har slutförts ändras statusen till Klar.
  4. Klicka på ikonen så ser du informationen om din lösning i den högra rutan.

Kommentar

Om det uppstår några problem när du distribuerar den förkonfigurerade lösningen kan du läsa Behörigheter på webbplatsen azureiotsuite.com och Vanliga frågor och svar. Om problemen kvarstår så skapa en tjänstbiljett på portalen.

Finns det något som du förväntar dig att se men som inte visas för din lösning? Lämna förslag på funktioner i User Voice.

Konfigurera den Node.js simulerade enheten

  1. På instrumentpanelen för fjärrövervakning klickar du på + Lägg till en enhet och lägger sedan till en anpassad enhet. Anteckna IoT Hub-värdnamnet, enhets-ID:t och enhetsnyckeln. Du behöver dem senare i den här självstudien när du förbereder klientprogrammet för remote_monitoring.js enhet.

  2. Kontrollera att Node.js version 0.12.x eller senare är installerad på utvecklingsdatorn. Kör node --version i en kommandotolk eller i ett gränssnitt för att kontrollera versionen. Information om hur du använder en pakethanterare för att installera Node.js på Linux finns i Installera Node.js via pakethanteraren.

  3. När du har installerat Node.js klonar du den senaste versionen av lagringsplatsen azure-iot-sdk-node till utvecklingsdatorn. Använd alltid huvudgrenen för den senaste versionen av biblioteken och exemplen.

  4. Från din lokala kopia av lagringsplatsen azure-iot-sdk-node kopierar du följande två filer från mappen node/device/samples till en tom mapp på utvecklingsdatorn:

    • packages.json
    • remote_monitoring.js
  5. Öppna filen remote_monitoring.js och leta efter följande variabeldefinition:

    var connectionString = "[IoT Hub device connection string]";
    
  6. Ersätt [IoT Hub-enheten niska veze] med din enhet niska veze. Använd värdena för ditt IoT Hub-värdnamn, enhets-ID och enhetsnyckel som du antecknade i steg 1. En enhet niska veze har följande format:

    HostName={your IoT Hub hostname};DeviceId={your device id};SharedAccessKey={your device key}
    

    Om ditt IoT Hub-värdnamn är contoso och enhets-ID:t är mydevice ser din niska veze ut som följande kodfragment:

    var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
    
  7. Spara filen. Kör följande kommandon i ett gränssnitt eller en kommandotolk i mappen som innehåller dessa filer för att installera nödvändiga paket och kör sedan exempelprogrammet:

    npm install
    node remote_monitoring.js
    

Observera dynamisk telemetri i praktiken

Instrumentpanelen visar telemetri för temperatur och luftfuktighet från befintliga simulerade enheter:

Standardinstrumentpanelen

Om du väljer den Node.js simulerade enhet som du körde i föregående avsnitt visas telemetri för temperatur, luftfuktighet och extern temperatur:

Lägg till extern temperatur på instrumentpanelen

Fjärrövervakningslösningen identifierar automatiskt den extra telemetritypen för extern temperatur och lägger till den i diagrammet på instrumentpanelen.

Lägg till en telemetrityp

Nästa steg är att ersätta telemetrin som genereras av den Node.js simulerade enheten med en ny uppsättning värden:

  1. Stoppa den Node.js simulerade enheten genom att skriva Ctrl+C i kommandotolken eller gränssnittet.

  2. I filen remote_monitoring.js kan du se basdatavärdena för den befintliga telemetrin temperatur, luftfuktighet och extern temperatur. Lägg till ett basdatavärde för rpm enligt följande:

    // Sensors data
    var temperature = 50;
    var humidity = 50;
    var externalTemperature = 55;
    var rpm = 200;
    
  3. Den Node.js simulerade enheten använder funktionen generateRandomIncrement i filen remote_monitoring.js för att lägga till ett slumpmässigt steg i basdatavärdena. Randomisera rpm-värdet genom att lägga till en kodrad efter de befintliga randomiseringarna enligt följande:

    temperature += generateRandomIncrement();
    externalTemperature += generateRandomIncrement();
    humidity += generateRandomIncrement();
    rpm += generateRandomIncrement();
    
  4. Lägg till det nya rpm-värdet i JSON-nyttolasten som enheten skickar till IoT Hub:

    var data = JSON.stringify({
      'DeviceID': deviceId,
      'Temperature': temperature,
      'Humidity': humidity,
      'ExternalTemperature': externalTemperature,
      'RPM': rpm
    });
    
  5. Kör den Node.js simulerade enheten med följande kommando:

    node remote_monitoring.js

  6. Observera den nya RPM-telemetritypen som visas i diagrammet på instrumentpanelen:

Lägg till RPM på instrumentpanelen

Kommentar

Du kan behöva inaktivera och sedan aktivera den Node.js enheten på sidan Enheter på instrumentpanelen för att se ändringen omedelbart.

Anpassa instrumentpanelens visning

Meddelandet Device-Info kan innehålla metadata om den telemetri som enheten kan skicka till IoT Hub. Dessa metadata kan ange de telemetrityper som enheten skickar. Ändra värdet deviceMetaData i filen remote_monitoring.js så att den innehåller en telemetridefinition som följer kommandodefinitionen. Följande kodfragment visar kommandodefinitionen (se till att lägga till en , efter kommandodefinitionen):

'Commands': [{
  'Name': 'SetTemperature',
  'Parameters': [{
    'Name': 'Temperature',
    'Type': 'double'
  }]
},
{
  'Name': 'SetHumidity',
  'Parameters': [{
    'Name': 'Humidity',
    'Type': 'double'
  }]
}],
'Telemetry': [{
  'Name': 'Temperature',
  'Type': 'double'
},
{
  'Name': 'Humidity',
  'Type': 'double'
},
{
  'Name': 'ExternalTemperature',
  'Type': 'double'
}]

Kommentar

Fjärrövervakningslösningen använder en skiftlägeskänslig matchning för att jämföra metadatadefinitionen med data i telemetriströmmen.

Att lägga till en telemetridefinition som visas i föregående kodfragment ändrar inte instrumentpanelens beteende. Metadata kan dock även innehålla ett DisplayName-attribut för att anpassa visningen på instrumentpanelen. Uppdatera definitionen av telemetrimetadata enligt följande kodfragment:

'Telemetry': [
{
  'Name': 'Temperature',
  'Type': 'double',
  'DisplayName': 'Temperature (C*)'
},
{
  'Name': 'Humidity',
  'Type': 'double',
  'DisplayName': 'Humidity (relative)'
},
{
  'Name': 'ExternalTemperature',
  'Type': 'double',
  'DisplayName': 'Outdoor Temperature (C*)'
}
]

Följande skärmbild visar hur den här ändringen ändrar diagramförklaringen på instrumentpanelen:

Anpassa diagramförklaringen

Kommentar

Du kan behöva inaktivera och sedan aktivera den Node.js enheten på sidan Enheter på instrumentpanelen för att se ändringen omedelbart.

Filtrera telemetrityperna

Som standard visar diagrammet på instrumentpanelen alla dataserier i telemetriströmmen. Du kan använda metadata för enhetsinformation för att förhindra visning av specifika telemetrityper i diagrammet.

Om du bara vill att diagrammet ska visa telemetri för temperatur och luftfuktighet utelämnar du ExternalTemperature från telemetrimetadata för enhetsinformation enligt följande:

'Telemetry': [
{
  'Name': 'Temperature',
  'Type': 'double',
  'DisplayName': 'Temperature (C*)'
},
{
  'Name': 'Humidity',
  'Type': 'double',
  'DisplayName': 'Humidity (relative)'
},
//{
//  'Name': 'ExternalTemperature',
//  'Type': 'double',
//  'DisplayName': 'Outdoor Temperature (C*)'
//}
]

Utomhustemperaturen visas inte längre i diagrammet:

Filtrera telemetrin på instrumentpanelen

Den här ändringen påverkar bara diagramvisningen. ExternalTemperature-datavärdena lagras fortfarande och görs tillgängliga för alla serverdelsbearbetningar.

Kommentar

Du kan behöva inaktivera och sedan aktivera den Node.js enheten på sidan Enheter på instrumentpanelen för att se ändringen omedelbart.

Hantera fel

För att en dataström ska visas i diagrammet måste dess typ i metadata för enhetsinformation matcha datatypen för telemetrivärdena. Om metadata till exempel anger att typen av fuktighetsdata är int och en dubbel finns i telemetriströmmen visas inte luftfuktighetstelemetrin i diagrammet. Fuktighetsvärdena lagras dock fortfarande och görs tillgängliga för alla serverdelsbearbetningar.

Nästa steg

Nu när du har sett hur du använder dynamisk telemetri kan du lära dig mer om hur de förkonfigurerade lösningarna använder enhetsinformation: Metadata för enhetsinformation i den förkonfigurerade fjärrövervakningslösningen.