Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Inledning
I de förkonfigurerade lösningarna kan du konfigurera regler som utlöses när ett telemetrivärde för en enhet når ett specifikt tröskelvärde. Använd dynamisk telemetri med den förkonfigurerade fjärrövervakningslösningen som beskriver hur du kan lägga till anpassade telemetrivärden, till exempel ExternalTemperature i din lösning. Den här artikeln visar hur du skapar en anpassad regel för dynamiska telemetrityper i din lösning.
I den här guiden används en enkel Node.js simulerad enhet för att generera dynamisk telemetri som ska skickas till den förkonfigurerade lösningens serverdel. Sedan lägger du till anpassade regler i Visual Studio-lösningen RemoteMonitoring och distribuerar den här anpassade serverdelen till din Azure-prenumeration.
För att slutföra denna handledning 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 för att skapa en simulerad enhet.
- Visual Studio 2015 eller Visual Studio 2017 används för att modifiera den förkonfigurerade lösningens backend med dina nya regler.
Etablera lösningen
Om du inte redan har etablerat den förkonfigurerade fjärrövervakningslösningen i ditt konto:
- Logga in på azureiotsuite.com med dina autentiseringsuppgifter för Azure-kontot och klicka på + för att skapa en lösning.
- Klicka Välj på rutan Fjärrövervakning.
- Ange ett lösningsnamn för den förkonfigurerade fjärrövervakningslösningen.
- Välj den regionen och den prenumerationen du vill använda för att implementera lösningen.
- Klicka på Skapa lösning för att starta etableringsprocessen. Den här processen tar vanligtvis flera minuter att köra.
Vänta tills konfigurationsprocessen har slutförts
- Klicka på rutan för din lösning med statusen Tilldelning.
- Observera Provisioning-tillstånd när Azure-tjänster distribueras i din Azure-prenumeration.
- När etableringen är klar ändras statusen till Redo.
- Klicka på panelen för att se information om din lösning i den högra rutan.
Anmärkning
Om du stöter på problem med att distribuera den förkonfigurerade lösningen kan du läsa Behörigheter på azureiotsuite.com webbplats och vanliga frågor och svar om . Om problemen kvarstår skapar du en tjänstbegäran på -portalen.
Finns det information som du förväntar dig att se som inte visas för din lösning? Ge oss förslag på funktioner för User Voice.
Anteckna det lösningsnamn som du valde för distributionen. Du behöver lösningens namn senare i den här handledningen.
Konfigurera den simulerade enheten Node.js
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 handledningen när du förbereder remote_monitoring.js-enhetens klientprogram.
Kontrollera att Node.js version 0.12.x eller senare är installerad på utvecklingsdatorn. Kör
node --versioni en kommandotolk eller en terminal 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.När du har installerat Node.jsklonar 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.
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
Öppna filen remote_monitoring.js och leta efter följande variabeldefinition:
var connectionString = "[IoT Hub device connection string]";Ersätt [IoT Hub-enhetsanslutningssträngen] med enhetsanslutningssträngen. Använd värdena för ditt IoT Hub-värdnamn, enhets-ID och enhetsnyckel som du antecknade i steg 1. En enhetsanslutningssträng 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 anslutningssträngen ut som följande kodfragment:
var connectionString = "HostName=contoso.azure-devices.net;DeviceId=mydevice;SharedAccessKey=2s ... =="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:
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:
Fjärrövervakningslösningen identifierar automatiskt den extra telemetritypen för extern temperatur och lägger till den i diagrammet på instrumentpanelen.
Du kan stoppa Node.js-konsolappen när du har verifierat att den skickar ExternalTemperature-telemetri till den förkonfigurerade lösningen. Håll konsolfönstret öppet eftersom du kör den här Node.js konsolappen igen när du har lagt till den anpassade regeln i lösningen.
Lagringsplatser för regel
Information om regler sparas på två platser:
- DeviceRulesNormalizedTable-tabell – Den här tabellen lagrar en normaliserad referens till de regler som definieras av lösningsportalen. När lösningsportalen visar enhetsregler frågar den den här tabellen efter regeldefinitionerna.
- DeviceRules-blob – Den här bloben lagrar alla regler som definierats för alla registrerade enheter och definieras som en referensinmatning till Azure Stream Analytics-jobben. När du uppdaterar en befintlig regel eller definierar en ny regel i lösningsportalen uppdateras både tabellen och blobben för att återspegla ändringarna. Regeldefinitionen som visas i portalen kommer från tabellarkivet och regeldefinitionen som refereras av Stream Analytics-jobben kommer från bloben.
Uppdatera Visual Studio-lösningen RemoteMonitoring
Följande steg visar hur du ändrar Visual Studio-lösningen RemoteMonitoring så att den innehåller en ny regel som använder telemetrin ExternalTemperature som skickas från den simulerade enheten:
Om du inte redan har gjort det klonar du lagringsplatsen azure-iot-remote-monitoring till en lämplig plats på den lokala datorn med hjälp av följande Git-kommando:
git clone https://github.com/Azure/azure-iot-remote-monitoring.gitI Visual Studio öppnar du filen RemoteMonitoring.sln från din lokala kopia av lagringsplatsen azure-iot-remote-monitoring .
Öppna filen Infrastructure\Models\DeviceRuleBlobEntity.cs och lägg till en ExternalTemperature-egenskap på följande sätt:
public double? Temperature { get; set; } public double? Humidity { get; set; } public double? ExternalTemperature { get; set; }I samma fil lägger du till egenskapen ExternalTemperatureRuleOutput enligt följande:
public string TemperatureRuleOutput { get; set; } public string HumidityRuleOutput { get; set; } public string ExternalTemperatureRuleOutput { get; set; }Öppna filen Infrastructure\Models\DeviceRuleDataFields.cs och lägg till följande ExternalTemperature-egenskap efter den befintliga egenskapen Humidity :
public static string ExternalTemperature {
get { return "ExternalTemperature"; } } ```
I samma fil uppdaterar du metoden _availableDataFields för att inkludera ExternalTemperature enligt följande:
private static List<string> _availableDataFields = new List<string> { Temperature, Humidity, ExternalTemperature };
7. Öppna filen Infrastructure\Repository\DeviceRulesRepository.cs och ändra metoden BuildBlobEntityListFromTableRows enligt följande:
```csharp
else if (rule.DataField == DeviceRuleDataFields.Humidity)
{
entity.Humidity = rule.Threshold;
entity.HumidityRuleOutput = rule.RuleOutput;
}
else if (rule.DataField == DeviceRuleDataFields.ExternalTemperature)
{
entity.ExternalTemperature = rule.Threshold;
entity.ExternalTemperatureRuleOutput = rule.RuleOutput;
}
```
Återskapa och distribuera om lösningen.
Nu kan du distribuera den uppdaterade lösningen till din Azure-prenumeration.
Öppna en kommandotolk med administratörsrättigheter och navigera till rotkatalogen av din lokala kopia av lagringsplatsen azure-iot-remote-monitoring.
Om du vill distribuera den uppdaterade lösningen kör du följande kommando som ersätter {distributionsnamn} med namnet på din förkonfigurerade lösningsdistribution som du antecknade tidigare:
build.cmd cloud release {deployment name}
Uppdatera Stream Analytics-jobbet
När distributionen är klar kan du uppdatera Stream Analytics-jobbet så att de nya regeldefinitionerna används.
I Azure-portalen går du till resursgruppen som innehåller dina förkonfigurerade lösningsresurser. Den här resursgruppen har samma namn som du angav för lösningen under distributionen.
Navigera till Stream Analytics-jobbet med namnet {deployment name}-Rules.
3. Klicka på Stoppa för att stoppa Stream Analytics-jobbet från att köras. (Du måste vänta tills strömningsjobbet har stoppats innan du kan redigera frågan).
4. Klicka på Fråga. Redigera frågan så att den innehåller SELECT-instruktionen för ExternalTemperature. Följande exempel visar den fullständiga frågan med den nya SELECT-instruktionen :
```
WITH AlarmsData AS
(
SELECT
Stream.IoTHub.ConnectionDeviceId AS DeviceId,
'Temperature' as ReadingType,
Stream.Temperature as Reading,
Ref.Temperature as Threshold,
Ref.TemperatureRuleOutput as RuleOutput,
Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
Ref.Temperature IS NOT null AND Stream.Temperature > Ref.Temperature
UNION ALL
SELECT
Stream.IoTHub.ConnectionDeviceId AS DeviceId,
'Humidity' as ReadingType,
Stream.Humidity as Reading,
Ref.Humidity as Threshold,
Ref.HumidityRuleOutput as RuleOutput,
Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
Ref.Humidity IS NOT null AND Stream.Humidity > Ref.Humidity
UNION ALL
SELECT
Stream.IoTHub.ConnectionDeviceId AS DeviceId,
'ExternalTemperature' as ReadingType,
Stream.ExternalTemperature as Reading,
Ref.ExternalTemperature as Threshold,
Ref.ExternalTemperatureRuleOutput as RuleOutput,
Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
Ref.ExternalTemperature IS NOT null AND Stream.ExternalTemperature > Ref.ExternalTemperature
)
SELECT *
INTO DeviceRulesMonitoring
FROM AlarmsData
SELECT *
INTO DeviceRulesHub
FROM AlarmsData
```
Klicka på Spara för att ändra den uppdaterade regelfrågan.
Klicka på Start för att starta Stream Analytics-jobbet igen.
Lägg till din nya regel på instrumentpanelen
Nu kan du lägga till ExternalTemperature-regeln till en enhet på instrumentpanelen för lösningen.
- Gå till lösningsportalen.
2. Gå till panelen Enheter .
3. Leta upp den anpassade enhet som du skapade som skickar ExternalTemperature-telemetri och klicka på Lägg till regel på panelen Enhetsinformation.
4. Välj ExternalTemperature i datafältet.
Ange Tröskelvärde till 56. Klicka sedan på Spara och visa regler.
Gå tillbaka till instrumentpanelen för att visa larmhistoriken.
I konsolfönstret som du lämnade öppet startar du Node.js-konsolappen för att börja skicka ExternalTemperature-telemetridata .
8. Observera att tabellen Larmhistorik visar nya larm när den nya regeln utlöses.
Ytterligare information
Att ändra operatorn > är mer komplext och går utöver de steg som beskrivs i den här självstudien. Även om du kan ändra Stream Analytics-jobbet så att det använder vilken operator du vill, är det en mer komplex uppgift att återspegla den operatören i lösningsportalen.
Nästa steg
Nu när du har sett hur du skapar anpassade regler kan du lära dig mer om de förkonfigurerade lösningarna: