by Contributed | May 25, 2021 | Technology
This article is contributed. See the original author and article here.
This year our winter season was one of the coldest I’ve ever experienced, bringing an array of winter related issues. One of the more costly winter issues I’ve seen are busted water faucets. I knew this was not something I wanted to face this year, so I started thinking about the preventable problem and a smarter solution than the traditional foam cover. After considering the design of a foam cover and its inability to fully protect against freezing temperatures, I constructed two insulated thermal units to cover each faucet of my home. Each unit contains an incandescent light to warm the surrounding surface wall of the water pipe connected to the faucet. To monitor effectiveness and alert of potential failures, I built an IoT based solution using an ESP8226 and Azure to monitor, store, and provide insight on the temperature from within the units.
To keep this solution lean and efficient, I went with a serverless architecture and implemented Hot, Warm, and Cold data paths. This serverless architecture makes use of serverless resources in Azure, Functions, IoT Hub, Data Explorer, App Service, and Signal R, to ease the management and cost of the overall solution. To learn more about the power of serverless services and architectures on Azure, look here.
If you’re not familiar with Hot, Warm, and Cold data paths, take a look at the following breakdown to understand the differences between each path as well as which Azure services in this solution enable them:
Hot Path
- For processing or displaying data in real-time
- Real time alerting and streaming operations are performed using this data
- An Azure Function App, Signal R, and web app hosted on an Azure App Service are used here alert and stream data in real-time
- Azure Function App provides a consumption based and elastic resource to ingest all incoming data for processing, alerting, and sending to Azure Signal R
- Azure Signal R and the web app hosted on an Azure App Service enable the ability to stream data through a WebSocket based connection.
Warm Path
- For storing or displaying only a recent subset of data
- Small analytic and batch processing operations are performed on this data
- A web app hosted on an Azure App Service is used here as it can query and display the last 24 hours worth of temperature data per device from Azure Data Explorer
Cold Path
- For long-term storage of data
- Time consuming analytics and batch processing is performed on this data
- Azure Data Explorer is used here as it efficiently stores data for long periods of time, currently with a default of 100 years, and is an easy-to-use analytic engine, built on top of the Kusto Query Language (KQL)
Now each unit contains an ESP8266 with a DHT11 temperature sensor which can either send temperature data to my field gateway, IoT Edge running on a raspberry pi, or directly to Azure IoT Hub. This temperature data is then ingested, monitored, and displayed in real time using the following process:

- An Azure Data Explorer instance ingests all temperature data for long-term storage (Cold data path)
- An Azure Function broadcasts all temperature data to an Azure SignalR instance (Hot data path)
- This Azure Function also sends out a text alert if the temperature falls below a defined threshold
- The Azure SignalR instance broadcasts temperature data to all clients listening on a WebSocket based connection
- An App Service hosts a web app, displaying the latest temperature data record per device from the last 24 hours from Azure Data Explorer (Warm data Path)
- Finally, the web app creates a WebSocket connection to the Azure SignalR instance to receive temperature data in real time (Hot data path)
- If set up correctly, the web app will look like the following:

If you would like to recreate this solution, you can review my GitHub, link below, for instructions on how to set it up end-to-end.
https://github.com/niswitze/Hot-Warm-Cold-On-Azure-IoT
by Contributed | May 25, 2021 | Technology
This article is contributed. See the original author and article here.
Today, we are announcing a preview NuGet package, template, and Visual Studio v16.10 publishing support for creating OpenAPI enabled Azure Functions.
The OpenAPI Specification is an API description format for REST APIs and has become the leading convention for describing HTTP APIs. An OpenAPI description effectively describes your API surface; endpoints, operation parameters for each, authentication methods, and other metadata. As a part of the ecosystem already rich with tools and open-source packages for .NET, we wanted to extend this capability to Azure Functions.
In the early days of Azure Functions, there was a preview feature that allow you to use the OpenAPI specification to document your functions or endpoints. This feature experience was built into the Azure Portal, but never realized in the GA version of the product.
Brady Gaster showed the benefit of a well-designed API using ASP.NET Core and OpenAPI in this post on the ASP.NET Blog.
Getting Started
Using Visual Studio 16.10 or later, create a new Azure Functions project and choose the HttpTrigger template – “Http Trigger with OpenAPI”.

The new function is bootstrapped with the necessary implementation for OpenAPI support. When running the application, notice not only does the function emit the “Function1” endpoint as expected but also additional routes for a dynamic endpoint for OpenAPI document, Swagger document in JSON or YAML, Authentication redirects and the Swagger UI interactive app.

The additional routes are encapsulated when the function app is deployed, meaning that they are there but not exposed as public viewable routes.
Browsing to the `/api/swagger/ui` endpoint show the Swagger UI page which can be thought of as interactive documentation

The dynamic endpoint for the OpenAPI document accepts the version (v2 or v3) of the specification and the extension preferred (json or yaml). In the following example /api/openapi/v2.json returns the appropriate version of the specification in JSON. Note that the emitted JSON includes the operationId, an attribute used to provide a unique string-based identifier for each operation in the API. See more about generating HTTP API clients using Visual Studio Connected Services.

Publish and CI/CD support
As you can imagine, yes right click publish support is here for you. Using the known publishing dialog, pushing your OpenAPI enable function to AppService or Containers and provisioning the needed Azure resources are all handled.

Nothing has changed with the publishing of a new Azure Function, unless you want to also want to use this as a custom connector for your Power Apps. In Visual Studio 16.9 we added support for publishing to an existing Azure API Management service instances and creating new Consumption-mode instances of Azure API Management so you can use the monitoring, security, and integration capabilities of API Management.
In Visual Studio 16.10, the functionality is extended to support the Azure Function project that includes OpenAPI capabilities. When you are publishing an Azure Function with OpenAPI, the API Management tab allowing for selecting an existing instance or creating a new one.

Once the publish operation completes, you’ll be able to view and test the API operations within the API Management portal blade.
As an additional option, the provisioning and deployment of the Azure Function and related resources is now also available as a GitHub Action if your code in committed to a repository.

On finishing the publish dialog, a GitHub Action is created and committed to the repository triggered by a push of any change.

Using either method publishes or updates your Azure Function, creates or updates the API Management instance AND imports the function for you.
Azure API Management
Typically when adding a new API to the API Management instance you would have to manually define names, operations, parameters, endpoints and other metadata. When using the OpenAPI Extension, this is all done for you and any subsequent updates are also handled automatically. The following image shows the “Run” operation from the Azure Function along with all the configuration complete.

Add OpenAPI support to existing projects
For adding OpenAPI support to your existing Azure Functions, the Microsoft.Azure.WebJobs.Extensions.OpenApi package is available for .NET functions using the HttpTrigger. With just a few method decorators, the package makes your existing functions endpoints optimized for discovery.
public static class SayHello
{
[FunctionName("SayHello")]
[OpenApiOperation(operationId: "Run", tags: new[] { "name" })]
[OpenApiParameter(name: "name", In = ParameterLocation.Query, Required = true, Type = typeof(string), Description = "Who do you want to say hello to?")]
[OpenApiResponseWithBody(statusCode: HttpStatusCode.OK, contentType: "text/plain", bodyType: typeof(string), Description = "The OK response")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
…
return new OkObjectResult(responseMessage);
}
}
}
In this example, the AuthorizationLevel is set to “Anonymous”, however with the OpenApiSecurity decorator, using either “code” through querystring or “x-functions-key” through headers; additional security can be applied.
Summary
To learn more about the Azure Functions OpenAPI extension, visit the project on GitHub and checkout the preview documentation. As always. We’re interested in your feedback, please comment below and/or provide more in the issues tab on the repository.
We can’t wait to see what you build.
by Contributed | May 25, 2021 | Technology
This article is contributed. See the original author and article here.
Autodesk is popular for engineering classes in both universities and K-12 schools. We recently published a new class type that that shows how to set up a lab with Inventor and Revit for 3D design.
This class type includes the following information:
- Recommended VM size for the lab.
- How to setup Autodesk, including the licensing server.
- Example costing for the class.
Here is where you can find the new Autodesk class type: Set up a lab with Autodesk using Azure Lab Services – Azure Lab Services | Microsoft Docs
To see how Autodesk can be set up in a lab for Project Lead the Way, read the following class type: Set up Project Lead The Way labs with Azure Lab Services – Azure Lab Services | Microsoft Docs
Thanks!
Azure Lab Services team

by Contributed | May 25, 2021 | Technology
This article is contributed. See the original author and article here.

In this installment of the weekly discussion revolving around the latest news and topics on Microsoft 365, hosts – Vesa Juvonen (Microsoft) | @vesajuvonen, Waldek Mastykarz (Microsoft) | @waldekm are joined by US-based, Microsoft Senior Product Designer on the SharePoint Team, Katie Swanson (Microsoft) | @kswansondesign. Topics discussed in this session include: The art of the possible, the design process and baking in customer feedback, accessibility testing, evolution of and possible future updates to SharePoint look book, diversity and inclusion in the PnP community and in IT generally. Microsoft and the Community delivered 16 articles in the last week!
Please remember to keep on providing us feedback on how we can help on this journey. We always welcome feedback on making the community more inclusive and diverse.
This episode was recorded on Monday, May 24, 2021.
These videos and podcasts are published each week and are intended to be roughly 45 – 60 minutes in length. Please do give us feedback on this video and podcast series and also do let us know if you have done something cool/useful so that we can cover that in the next weekly summary! The easiest way to let us know is to share your work on Twitter and add the hashtag #PnPWeekly. We are always on the lookout for refreshingly new content. “Sharing is caring!”
Here are all the links and people mentioned in this recording. Thanks, everyone for your contributions to the community!
Events:
Microsoft articles:
Community articles:
Additional resources:
If you’d like to hear from a specific community member in an upcoming recording and/or have specific questions for Microsoft 365 engineering or visitors – please let us know. We will do our best to address your requests or questions.
“Sharing is caring!”
Recent Comments