Dit is de R&D site van Michel om te experimenteren met- en te leren over Microsoft Azure en Amazon Web Services (AWS).
Experimenteren met data-opslag van Microsoft Azure (Azure Table Storage), serverless functions (Azure Functions) en queues (Azure queues) en Amazon Web Services (AWS) (AWS DynamoDB), serverless functions (AWS Lambda) en queues (AWS Simple Queue Service).
Dan moet er wel data zijn om te verwerken, en gecombineerd met de liefde voor de Raspberry PI is dat een temperatuurmeting geworden. Die is er altijd, met variabele waardes, dus een ideaal onderwerp voor dit project.
Er zijn twee gegevensstromen: de temperatuurmeting naar de storage en een tweetal aggregatieprocessen. Daarnaast is er nog een monitoring proces dat dagelijks kijkt of er nog metingen worden verwerkt.
De temperatuur wordt gemeten met een DS18B20 meter aan de Raspberry PI.
Deze roept elke 5 minuten via HTTP een Azure Function aan die de meetwaarde in een queue plaatst. Een 2e Azure Function, die luistert naar berichten die op de queue worden geplaatst, pakt het bericht uit de queue en plaatst het in Azure Table Storage.
Er lopen 's-nachts twee aggregatie processen en 1 monitoring proces, geïmplementeerd als Azure Function:
Bepalen uurwaardes.
Voor de basis temperatuur informatie is het voldoende om de meetwaardes per uur te hebben. Dit proces aggregeert de data uit de Azure Table Storage naar uurwaardes en slaat deze op in Azure Table Storage.
Bepalen minimum- en maximumtemperaturen.
Dit proces bepaalt voor elke dag de minimum- en maximumtemperatuur en slaat deze op in Azure Table Storage.
Monitoren meetwaardes.
Dit proces houdt in de gaten of er nog regelmatig meetwaardes worden vastgelegd.
De website is een .NET 8 ASP.NET MVC website.
De tabbladen, statistiek-meldingen en tabellen zijn gemaakt met Bootstrap 5.
De grafieken (zie verder) zijn volledig geconfigureerd in JavaScript en halen de data op bij een API controller die onderdeel van de website is.
De data wordt door een repository uit Azure Table Storage gehaald. De repositories zijn voorzien van een cachedecorator die, afhankelijk van de actualiteit van de data, lang of kort cacht.
Alle grafieken zijn gemaakt met behulp van AmCharts.
AmCharts geeft een gratis licentie wanneer je een AmCharts logo/link bij de grafiek plaatst.
De eerste ervaringen met dit voor mij nieuwe JavaScript grafieken framework waren prettig. De voorbeelden op de site zijn duidelijk, de help is uitgebreid en het geheel rendert snel en als SVG.