Udostępnij za pośrednictwem


Używanie dynamicznej telemetrii ze wstępnie skonfigurowanym rozwiązaniem do monitorowania zdalnego

Dynamiczne dane telemetryczne umożliwiają wizualizowanie wszelkich danych telemetrycznych wysyłanych do wstępnie skonfigurowanego rozwiązania do monitorowania zdalnego. Symulowane urządzenia wdrażane za pomocą wstępnie skonfigurowanego rozwiązania wysyłają dane telemetryczne temperatury i wilgotności, które można wizualizować na pulpicie nawigacyjnym. Jeśli dostosujesz istniejące symulowane urządzenia, utworzysz nowe symulowane urządzenia lub połączysz urządzenia fizyczne ze wstępnie skonfigurowanym rozwiązaniem, możesz wysłać inne wartości telemetryczne, takie jak temperatura zewnętrzna, rpm lub prędkość wiatru. Następnie można zwizualizować te dodatkowe dane telemetryczne na pulpicie nawigacyjnym.

W tym samouczku użyto prostego urządzenia symulowanego Node.js, które można łatwo modyfikować w celu eksperymentowania z dynamicznymi telemetriami.

Do ukończenia tego samouczka potrzebne są następujące elementy:

  • Aktywna subskrypcja platformy Azure. Jeśli jej nie masz, możesz utworzyć bezpłatne konto próbne w zaledwie kilka minut. Aby uzyskać szczegółowe informacje, zobacz Bezpłatna wersja próbna platformy Azure.
  • Node.js w wersji 0.12.x lub nowszej.

Ten samouczek można wykonać w dowolnym systemie operacyjnym, takim jak Windows lub Linux, gdzie można zainstalować Node.js.

Aprowizacja rozwiązania

Jeśli jeszcze nie przeprowadzono aprowizacji wstępnie skonfigurowanego rozwiązania do monitorowania zdalnego na Twoim koncie:

  1. Zaloguj się, aby azureiotsuite.com przy użyciu poświadczeń konta platformy Azure, a następnie kliknij + , aby utworzyć rozwiązanie.
  2. Kliknij pozycję Wybierz na kafelku Zdalne monitorowanie.
  3. W polu Nazwa rozwiązania wprowadź nazwę wstępnie skonfigurowanego rozwiązania do monitorowania zdalnego.
  4. W polach Region i Subskrypcja wybierz wartości, których chcesz użyć do aprowizacji rozwiązania.
  5. Kliknij pozycję Utwórz rozwiązanie, aby rozpocząć proces aprowizowania. Zwykle trwa on kilka minut.

Oczekiwanie na ukończenie procesu aprowizowania

  1. Kliknij kafelek swojego rozwiązania zawierający informację o stanie aprowizacji.
  2. Zwróć uwagę na informację o stanach aprowizacji podczas wdrażania usług Azure w Twojej subskrypcji platformy Azure.
  3. Po ukończeniu aprowizowania stan zmieni się na wartość Gotowe.
  4. Kliknij kafelek, aby wyświetlić szczegóły rozwiązania w prawym okienku.

Uwaga

Jeśli podczas wdrażania wstępnie skonfigurowanego rozwiązania pojawią się problemy, zapoznaj się z tematami Uprawnienia w witrynie azureiotsuite.com i Często zadawane pytania. Jeśli problemy będą się powtarzać, utwórz żądanie pomocy w portalu.

Czy istnieją jakieś szczegóły dotyczące Twojego rozwiązania, które nie są wyświetlane, a Twoim zdaniem powinny być widoczne? Prześlij nam swoje propozycje dotyczące funkcji, korzystając ze strony User Voice (Opinie użytkowników).

Konfigurowanie symulowanego urządzenia Node.js

  1. Na pulpicie nawigacyjnym monitorowania zdalnego kliknij pozycję + Dodaj urządzenie , a następnie dodaj urządzenie niestandardowe. Zanotuj nazwę hosta usługi IoT Hub, identyfikator urządzenia i klucz urządzenia. Będą one potrzebne w dalszej części tego samouczka podczas przygotowywania aplikacji klienckiej urządzenia remote_monitoring.js.

  2. Upewnij się, że na maszynie deweloperów jest zainstalowana Node.js w wersji 0.12.x lub nowszej. Uruchom polecenie node --version w wierszu polecenia lub w powłoce, aby sprawdzić wersję. Aby uzyskać informacje na temat instalowania Node.js w systemie Linux przy użyciu menedżera pakietów, zobacz Instalowanie Node.js za pośrednictwem menedżera pakietów.

  3. Po zainstalowaniu Node.js sklonuj najnowszą wersję repozytorium azure-iot-sdk-node na maszynę dewelopera. Zawsze używaj gałęzi głównej dla najnowszej wersji bibliotek i przykładów.

  4. Z lokalnej kopii repozytorium azure-iot-sdk-node skopiuj następujące dwa pliki z folderu node/device/samples do pustego folderu na komputerze deweloperskim:

    • packages.json
    • remote_monitoring.js
  5. Otwórz plik remote_monitoring.js i wyszukaj następującą definicję zmiennej:

    var connectionString = "[IoT Hub device connection string]";
    
  6. Zastąp element [parametry połączenia urządzenia usługi IoT Hub] parametry połączenia urządzenia. Użyj wartości dla nazwy hosta usługi IoT Hub, identyfikatora urządzenia i klucza urządzenia, które zanotujesz w kroku 1. Parametry połączenia urządzenia ma następujący format:

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

    Jeśli nazwa hosta usługi IoT Hub to contoso, a identyfikator urządzenia to mydevice, twój parametry połączenia wygląda jak następujący fragment kodu:

    var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="
    
  7. Zapisz plik. Uruchom następujące polecenia w powłoce lub wierszu polecenia w folderze zawierającym te pliki, aby zainstalować niezbędne pakiety, a następnie uruchom przykładową aplikację:

    npm install
    node remote_monitoring.js
    

Obserwowanie dynamicznej telemetrii w akcji

Na pulpicie nawigacyjnym przedstawiono dane telemetryczne dotyczące temperatury i wilgotności z istniejących symulowanych urządzeń:

Domyślny pulpit nawigacyjny

Jeśli wybierzesz urządzenie symulowane Node.js uruchomione w poprzedniej sekcji, zobaczysz dane telemetryczne temperatury, wilgotności i temperatury zewnętrznej:

Dodawanie temperatury zewnętrznej do pulpitu nawigacyjnego

Rozwiązanie do monitorowania zdalnego automatycznie wykrywa dodatkowy typ telemetrii temperatury zewnętrznej i dodaje go do wykresu na pulpicie nawigacyjnym.

Dodawanie typu telemetrii

Następnym krokiem jest zastąpienie danych telemetrycznych wygenerowanych przez urządzenie symulowane Node.js nowym zestawem wartości:

  1. Zatrzymaj urządzenie symulowane Node.js, wpisując Ctrl+C w wierszu polecenia lub powłoce.

  2. W pliku remote_monitoring.js można zobaczyć podstawowe wartości danych dla istniejącej telemetrii temperatury, wilgotności i temperatury zewnętrznej. Dodaj podstawową wartość danych dla obr./min w następujący sposób:

    // Sensors data
    var temperature = 50;
    var humidity = 50;
    var externalTemperature = 55;
    var rpm = 200;
    
  3. Urządzenie symulowane Node.js używa funkcji generateRandomIncrement w pliku remote_monitoring.js w celu dodania losowego przyrostu do podstawowych wartości danych. Losowe generowanie wartości obr./min przez dodanie wiersza kodu po istniejących losowaniach w następujący sposób:

    temperature += generateRandomIncrement();
    externalTemperature += generateRandomIncrement();
    humidity += generateRandomIncrement();
    rpm += generateRandomIncrement();
    
  4. Dodaj nową wartość obr./min do ładunku JSON wysyłanego przez urządzenie do usługi IoT Hub:

    var data = JSON.stringify({
      'DeviceID': deviceId,
      'Temperature': temperature,
      'Humidity': humidity,
      'ExternalTemperature': externalTemperature,
      'RPM': rpm
    });
    
  5. Uruchom urządzenie symulowane Node.js przy użyciu następującego polecenia:

    node remote_monitoring.js

  6. Obserwuj nowy typ telemetrii RPM wyświetlany na wykresie na pulpicie nawigacyjnym:

Dodawanie rpm do pulpitu nawigacyjnego

Uwaga

Może być konieczne wyłączenie, a następnie włączenie urządzenia Node.js na stronie Urządzenia na pulpicie nawigacyjnym w celu natychmiastowego wyświetlenia zmiany.

Dostosowywanie wyświetlania pulpitu nawigacyjnego

Komunikat Informacje o urządzeniu może zawierać metadane dotyczące telemetrii, które urządzenie może wysyłać do usługi IoT Hub. Te metadane mogą określać typy telemetryczne wysyłane przez urządzenie. Zmodyfikuj wartość deviceMetaData w pliku remote_monitoring.js, aby uwzględnić definicję telemetrii zgodnie z definicją Polecenia. Poniższy fragment kodu przedstawia definicję Poleceń (pamiętaj, aby dodać , element po definicji Poleceń ):

'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'
}]

Uwaga

Rozwiązanie do monitorowania zdalnego używa dopasowania bez uwzględniania wielkości liter, aby porównać definicję metadanych z danymi w strumieniu telemetrii.

Dodanie definicji telemetrii, jak pokazano w poprzednim fragmencie kodu, nie zmienia zachowania pulpitu nawigacyjnego. Jednak metadane mogą również zawierać atrybut DisplayName , aby dostosować wyświetlanie na pulpicie nawigacyjnym. Zaktualizuj definicję metadanych telemetrii , jak pokazano w poniższym fragmencie kodu:

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

Poniższy zrzut ekranu przedstawia sposób modyfikowania legendy wykresu na pulpicie nawigacyjnym:

Dostosowywanie legendy wykresu

Uwaga

Może być konieczne wyłączenie, a następnie włączenie urządzenia Node.js na stronie Urządzenia na pulpicie nawigacyjnym w celu natychmiastowego wyświetlenia zmiany.

Filtrowanie typów telemetrii

Domyślnie wykres na pulpicie nawigacyjnym pokazuje każdą serię danych w strumieniu telemetrii. Metadane informacje o urządzeniu umożliwiają pomijanie wyświetlania określonych typów telemetrii na wykresie.

Aby wykres pokazywał tylko dane telemetryczne temperatury i wilgotności, pomiń funkcję ExternalTemperature z metadanych telemetrii Informacji o urządzeniu w następujący sposób:

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

Temperatura zewnętrzna nie jest już wyświetlana na wykresie:

Filtrowanie danych telemetrycznych na pulpicie nawigacyjnym

Ta zmiana wpływa tylko na wyświetlanie wykresu. Wartości danych ExternalTemperature są nadal przechowywane i udostępniane dla dowolnego przetwarzania zaplecza.

Uwaga

Może być konieczne wyłączenie, a następnie włączenie urządzenia Node.js na stronie Urządzenia na pulpicie nawigacyjnym w celu natychmiastowego wyświetlenia zmiany.

Obsługa błędów

Aby strumień danych był wyświetlany na wykresie, jego typ w metadanych Informacje o urządzeniu musi być zgodny z typem danych wartości telemetrycznych. Jeśli na przykład metadane określają, że typ danych wilgotności jest int , a podwójne znajduje się w strumieniu telemetrii, telemetria wilgotności nie jest wyświetlana na wykresie. Jednak wartości wilgotności są nadal przechowywane i udostępniane dla dowolnego przetwarzania zaplecza.

Następne kroki

Teraz, gdy już wiesz, jak używać dynamicznej telemetrii, możesz dowiedzieć się więcej o tym, jak wstępnie skonfigurowane rozwiązania używają informacji o urządzeniu: Metadane informacji o urządzeniu w wstępnie skonfigurowanym rozwiązaniu do monitorowania zdalnego.