{"id":2417,"date":"2016-10-15T23:05:57","date_gmt":"2016-10-15T22:05:57","guid":{"rendered":"http:\/\/www.hinnerup.net\/?p=2417"},"modified":"2016-10-17T14:40:02","modified_gmt":"2016-10-17T13:40:02","slug":"microsoft-azure-iot","status":"publish","type":"post","link":"https:\/\/www.hinnerup.net\/en\/permanent\/2016\/10\/15\/microsoft-azure-iot\/","title":{"rendered":"Microsoft Azure IoT"},"content":{"rendered":"<style>\n@media only screen and (max-width: 850px) {\n  div.responsive-float-30 {\n    clear:both;\n    width:100% !important;\n    margin-left:0px !important;\n  }\n}\n<\/style>\n<div style=\"float:right;width:30%;margin-left:1em;\" class=\"responsive-float-30\">\n<div style=\"text-align:center;padding:1em;background-color:#eee\">\n<b>Systemet i skematisk form:<\/b><br \/>\n<a href=\"\/wp-content\/uploads\/2016\/10\/iot-nodemcu-1.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" width=\"962\" height=\"666\" src=\"\/wp-content\/uploads\/2016\/10\/iot-nodemcu-1.png\" alt=\"azure-iot-nodemcu\"class=\"size-full wp-image-2422\" style=\"width:90%;padding:0.5em;border:1px solid #ccc;background-color:#fff\" srcset=\"https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/iot-nodemcu-1.png 962w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/iot-nodemcu-1-300x208.png 300w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/iot-nodemcu-1-768x532.png 768w\" sizes=\"auto, (max-width: 962px) 100vw, 962px\" \/><\/a><br \/>\n<small><i>Klik p\u00e5 billedet for at se det i stort format.<\/i><\/small>\n<\/div>\n<p><\/p>\n<div style=\"text-align:center;padding:1em;background-color:#eee\">\n<b>Den anvendte NodeMCU-enhed<\/b><br \/>\n<a href=\"\/wp-content\/uploads\/2016\/10\/nodemcu.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" width=\"765\" height=\"470\" src=\"\/wp-content\/uploads\/2016\/10\/nodemcu.png\" alt=\"nodemcu\" class=\"size-full wp-image-2437\" style=\"width:90%;padding:0.5em\" srcset=\"https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/nodemcu.png 765w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/nodemcu-300x184.png 300w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/a><br \/>\n<small><i>Klik p\u00e5 billedet for at se det i stort format.<\/i><\/small>\n<\/div>\n<\/div>\n<div>\nVi har leget med <a href=\"https:\/\/azure.microsoft.com\">Microsoft Azure<\/a> cloud og <a href=\"https:\/\/en.wikipedia.org\/wiki\/Internet_of_things\">Internet-of-Things (IoT)<\/a> dataopsamling, analyse- og rapporterings-teknologier.<\/p>\n<p>Ganske hurtigt endte vi med en k\u00f8rende demo, der kunne afsende data fra en Internet opkoblet enhed, lade Microsoft Azure indsamle, processere, analysere disse data og endeligt at v\u00e6re istand til at visualisere de behandlede data p\u00e5 et web-baseret real-time dashboard.<\/p>\n<h3 style=\"clear:none\">Azure IoT Suite<\/h3>\n<p>Azure IoT Suite er en samling af teknologier der m\u00e5lretter sig Internet of Things enheder, og kommunikation imellem Azure og IoT enhederne.<\/p>\n<p>Her et uddrag fra <a href=\"https:\/\/azure.microsoft.com\/en-us\/suites\/iot-suite\/\">Microsoft Azure IoT Suite<\/a> beskrivelsen:<\/p>\n<blockquote style=\"font-size:95%\">\n<ul>\n<li>Get started quickly with preconfigured solutions<\/li>\n<li>Tailor preconfigured solutions to meet your needs<\/li>\n<li>Enhance the security of your IoT solutions<\/li>\n<li>Support a broad set of operating systems and protocols<\/li>\n<li>Easily connect millions of devices<\/li>\n<li>Analyze and visualize large quantities of operational data<\/li>\n<li>Integrate with your existing systems and applications<\/li>\n<li>Scale from proof of concept to broad deployment<\/li>\n<\/ul>\n<\/blockquote>\n<p>Vi kan anbefale disse videoer, til hurtigt at danne sig et overblik over Azure IoT Suite teknologierne:<\/p>\n<div>\n<div style=\"float:left;width:25%;text-align:center;padding:1em;background-color:#eee\">\n<a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/videos\/azurecon-2015-introducing-the-microsoft-azure-iot-suite\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"540\" src=\"\/wp-content\/uploads\/2016\/10\/IntroductionAzureIoTSuite_Custom.jpg\" alt=\"Introducing the Microsoft Azure IoT Suite\" class=\"size-full wp-image-2465\" srcset=\"https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/IntroductionAzureIoTSuite_Custom.jpg 960w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/IntroductionAzureIoTSuite_Custom-300x169.jpg 300w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/IntroductionAzureIoTSuite_Custom-768x432.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><br \/>\n<small><i>Link til indhold p\u00e5 azure.microsoft.com, klik p\u00e5 billedet for at se video<\/i><\/small>\n<\/div>\n<div style=\"margin-left:1em;float:left;width:25%;text-align:center;padding:1em;background-color:#eee\">\n<a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/videos\/connect-2015-introduction-to-azure-iot-suite-and-iot-hub-for-developers\/\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"540\" src=\"\/wp-content\/uploads\/2016\/10\/acon309_Custom.jpg\" alt=\"Introduction to IoT Suite and IoT Hub for developers\" class=\"alignnone size-full wp-image-2464\" srcset=\"https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/acon309_Custom.jpg 960w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/acon309_Custom-300x169.jpg 300w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/acon309_Custom-768x432.jpg 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><br \/>\n<small><i>Link til indhold p\u00e5 azure.microsoft.com, klik p\u00e5 billedet for at se video<\/i><\/small>\n<\/div>\n<p><br style=\"clear:both;\"\/>\n<\/div>\n<h3 style=\"clear:none\">Gennemgang af demoen udfra system skemaet<\/h3>\n<p>Her f\u00f8lger en beskrivelse af demonstrationssystemet vi satte op. Start med at granske system skema billedet. Afsnittene herefter tager udgangspunkt i hvert af elementerne i dette billede fra venstre mod h\u00f8jre.<\/p>\n<h3 style=\"clear:none\">NodeMCU<\/h3>\n<p>Til eksperimentet har vi brugt det indlejrede-system <a href=\"http:\/\/nodemcu.com\/index_en.html\">NodeMCU<\/a>. NodeMCU-enhederne udem\u00e6rker sig ved at v\u00e6re meget sm\u00e5 (ca. 5 x 3 cm), nemme at programmere (via <a href=\"https:\/\/www.arduino.cc\/en\/Main\/Software\">Arduino IDE<\/a> v\u00e6rkt\u00f8jet) og har s\u00e5vel indbyggede <a href=\"https:\/\/en.wikipedia.org\/wiki\/General-purpose_input\/output\">GPIO pins<\/a> samt <a href=\"https:\/\/en.wikipedia.org\/wiki\/Wi-Fi\">WiFi<\/a> funktionalitet.<\/p>\n<p>Der er kun anvendt en enkelt NodeMCU enhed, men man ville sagtens kunne bruge mange flere, f.eks. i et produktionsscenarie, op imod Microsoft Azure.<\/p>\n<p><a href=\"https:\/\/github.com\/gloveboxes\/Arduino-ESP8266-Secure-Azure-IoT-Hub-Client\">Denne guide<\/a> beskriver hvordan du kan ops\u00e6tte NodeMCU til at fungere op imod Azure IoT.<\/p>\n<h3 style=\"clear:none\">Azure Function<\/h3>\n<p>Som det f\u00f8rste satte vi en <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/services\/functions\/\">Azure Function<\/a> op, som en <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/functions-bindings-http-webhook\/\">HTTP WebHook<\/a> triggered funktion, dvs. en funktion der kan kaldes via et alment HTTP request ind imod funktionens dedikerede URL hos Azure med en r\u00e6kke parametre. Dette viser hvordan en IoT enhed kan kalde ind p\u00e5 f.eks. en web service eller som her direkte ind p\u00e5 en Azure Function, og p\u00e5 den vis foranledige afviklingen af et tilpasset stykke forretningskode. Dette kunne eksempeltvis resultere i at en e-mail blev afsendt, at en s\u00e6rlig database r\u00e6kke blev skrevet ned, eller at en fejllog-linie blev genereret, og meget andet.<\/p>\n<h3 style=\"clear:none\">Azure IoT Hub<\/h3>\n<p>NodeMCU-enheden er programmeret til at generere tilf\u00e6ldigt data hvert tiende sekund. Disse data b\u00e6res ind via en <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/iot-hub-what-is-iot-hub\/\">Azure IoT Hub<\/a>. Dette endpoint fungerer som kontaktfladen imellem IoT enhederne og Azure skyen, og omvendt, ogs\u00e5 fra Azure til IoT enhederne (s\u00e5kaldt bi-direktionel kommunikation). Azure IoT Hub&#8217;en skalerer automatisk op til mange millioner samtidige IoT enheder.<\/p>\n<p>Eksempel p\u00e5 <a href=\"http:\/\/www.json.org\/\">JSON<\/a> data afsendt fra enheden til Azure:<\/p>\n<p><code class=\"prettyprint\">{<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&#34;Dev&#34;:&#34;nodemcu-hinnerup&#34;,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&#34;Utc&#34;:&#34;2016-10-15T22:29:33&#34;,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&#34;Celsius&#34;:25.00, &#34;Humidity&#34;:50.00, &#34;hPa&#34;:1012, &#34;Light&#34;:0,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&#34;WiFi&#34;:1, &#34;Mem&#34;:21416, &#34;Id&#34;:274,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&#34;Geo&#34;:&#34;Aarhus&#34;<br \/>\n}<br \/>\n<\/code><\/p>\n<h3 style=\"clear:none\">Azure Event Hub (input)<\/h3>\n<p>Dataene flyder herfra videre til en s\u00e5kaldt <a href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/event-hubs-what-is-event-hubs\/\">Azure Event Hub<\/a>. Azure Event Hub&#8217;en er en mellemligende k\u00f8, der kan h\u00e5ndtere millioner af event beskeder i sekundet. S\u00e5ledes samles data op, og gives videre i det tempo den \u00f8vrige processerings-pipeline i systemet kan tage fra med. Disse input data kaldes &#8220;eventhub-hinnerup-input&#8221; i T-SQL koden herunder.\n<\/div>\n<h3 style=\"clear:both\">Azure Stream Analytics<\/h3>\n<p>Den eneste data-pipeline vi har anvendt er <a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/articles\/stream-analytics-introduction\/\">Azure Stream Analytics<\/a>. Her indsamles dataene i realtid og transformation, beregninger og analyse udf\u00f8res efter nogle opstillede forretningsregler. Disse implementeres i T-SQL m\u00e5lrettet Stream Analytics omr\u00e5det. <\/p>\n<p>En r\u00e6kke s\u00e6rlige kommandoer er tilg\u00e6ngelige man ikke finder i standard T-SQL, heriblandt &#8220;<a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/azure\/dn835055.aspx\">TumblingWindow<\/a>&#8221; grupperingen vi gjorde brug af:<br \/>\n<code class=\"prettyprint\" lang=\"sql\"><br \/>\n-- Input data transformation, calculations and analysis<br \/>\nWITH ProcessedData as (<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;SELECT<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Telemetry device data<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX(Celsius) MaxTemperature,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MIN(Celsius) MinTemperature,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVG(Celsius) AvgTemperature,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX(Humidity) MaxHumidity,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MIN(Humidity) MinHumidity,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVG(Humidity) AvgHumidity,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX(hPa&#47;100) MaxPressure,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MIN(hPa&#47;100) MinPressure,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVG(hPa&#47;100) AvgPressure,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Telemetry monitoring metrics<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX(WiFi) WiFiConnectAttempts,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX(Mem) FreeMem,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Telemetry device info<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deviceId,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Time stamp<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Timestamp AS Timestamp<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;FROM<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;eventhub-hinnerup-input&#93;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;GROUP BY<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TumblingWindow (second, 60),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deviceId,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location<br \/>\n)<br \/>\n-- Output data<br \/>\nSELECT * INTO &#91;eventhub-hinnerup-output&#93; FROM ProcessedData<br \/>\n<\/code><\/p>\n<h3 style=\"clear:none\">Azure Event Hub (output)<\/h3>\n<p>De processerede data flyder nu ud via et Azure Event Hub output (&#8220;eventhub-hinnerup-output&#8221; i T-SQL koden herover). Disse kan udstilles via f.eks. <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/WebSockets_API\">WebSocket<\/a>s hvilket vi valgte. Der er mange andre muligheder, f.eks. kunne man ogs\u00e5 udstille dataene via en <a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/services\/app-service\/api\/\">Azure API App<\/a> (s\u00e5 et eksternt system som f.eks. en web-service ogs\u00e5 ville kunne tilg\u00e5 dataene). Man kan godt v\u00e6lge flere output former p\u00e5 en gang.<\/p>\n<h3 style=\"clear:none\">Azure Web App<\/h3>\n<p>Vi fandt en skabelon til et real-time dashboard, der kan konsumere Azure IoT data via <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/WebSockets_API\">WebSocket<\/a>s. Skabelonen kan hentes <a href=\"https:\/\/github.com\/ThingLabsIo\/ThingLabs-IoT-Dashboard\">p\u00e5 GitHub her<\/a>. Dette website deployede vi til en <a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/services\/app-service\/web\/\">Azure Web App<\/a>, og var s\u00e5ledes i rekord fart i luften med et automatisk opdaterende real-time dashboard der kan vise de indsamlede data.<\/p>\n<div style=\"text-align:center;padding:1em;background-color:#eee;margin-bottom:1em\">\n<a href=\"\/wp-content\/uploads\/2016\/10\/azure-iot-realtime-chart.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" width=\"1129\" height=\"319\" src=\"\/wp-content\/uploads\/2016\/10\/azure-iot-realtime-chart.png\" alt=\"azure-iot-realtime-chart\" class=\"size-full wp-image-2468\" style=\"width:90%;padding:0.5em\" srcset=\"https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-iot-realtime-chart.png 1129w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-iot-realtime-chart-300x85.png 300w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-iot-realtime-chart-768x217.png 768w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-iot-realtime-chart-1024x289.png 1024w\" sizes=\"auto, (max-width: 1129px) 100vw, 1129px\" \/><\/a><br \/>\n<small><i>Klik p\u00e5 billedet for at se det i stort format.<\/i><\/small>\n<\/div>\n<p>Vi har godt nok kun \u00e9n enhed tilknyttet systemet, men data fra alle tilknyttede enheder (som man kan specificere n\u00e6rmere kriterier for i Azure portalen) ville i givet fald v\u00e6re blevet vist.<\/p>\n<h3>Afrunding<\/h3>\n<p>Her kan du se det samlede overblik i Azure portalen som vi endte ud med:<\/p>\n<div style=\"text-align:center;padding:1em;background-color:#eee;margin-bottom:1em\">\n<a href=\"\/wp-content\/uploads\/2016\/10\/azure-portal-dashboard-1.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2016\/10\/azure-portal-dashboard-1.png\" alt=\"azure-portal-dashboard\" width=\"1193\" height=\"849\" class=\"size-full wp-image-2499\" style=\"width:90%;padding:0.5em\" srcset=\"https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-portal-dashboard-1.png 1193w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-portal-dashboard-1-300x213.png 300w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-portal-dashboard-1-768x547.png 768w, https:\/\/www.hinnerup.net\/wp-content\/uploads\/2016\/10\/azure-portal-dashboard-1-1024x729.png 1024w\" sizes=\"auto, (max-width: 1193px) 100vw, 1193px\" \/><\/a><br \/>\n<small><i>Klik p\u00e5 billedet for at se det i stort format.<\/i><\/small>\n<\/div>\n<p>Man kunne nemt have indsat storage, til f.eks. en <a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/services\/sql-database\/\">MS SQL database<\/a> og\/eller til et <a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/services\/sql-data-warehouse\/\">data warehouse<\/a>, og s\u00e5 derfra bygge videre med <a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/services\/hdinsight\/\">Azure HDInsights<\/a> big-data analyse og videre endnu med <a href=\"https:\/\/azure.microsoft.com\/da-dk\/documentation\/services\/machine-learning\/\">kunstig intelligens processering<\/a>. Man kunne ogs\u00e5 godt have koblet andre enheder p\u00e5 websitet (mobil browsere fx), ligesom de behandlede data godt ville kunne flyde over i et eksternt system via f.eks. en Azure API App l\u00f8sning. Men, det g\u00e5r desv\u00e6rre nok en hel del ud over det tilt\u00e6nkte omfang for denne demonstration. Indr\u00f8mmet, da vi jo er n\u00f8rder, var det meget sv\u00e6rt at sk\u00e6re fra.<\/p>\n<p>Til enterprise og produktionsbrug vil vi anbefale at der tages et kig p\u00e5 <a href=\"https:\/\/powerbi.microsoft.com\/en-us\/\">Microsoft PowerBI<\/a> v\u00e6rkt\u00f8jet til real-time dashboard visualiseringer og videre dataanalyse form\u00e5l.<\/p>\n<p>Som en afslutning er der vist blot tilbage at sige, at det var sk\u00e6gt og relativt nemt at lege med, og vi h\u00e5ber du har fundet artiklen interessant.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Systemet i skematisk form: Klik p\u00e5 billedet for at se det i stort format. Den anvendte NodeMCU-enhed Klik p\u00e5 billedet for at se det i stort format. Vi har leget med Microsoft Azure cloud og Internet-of-Things (IoT) dataopsamling, analyse- og rapporterings-teknologier. Ganske hurtigt endte vi med en k\u00f8rende demo, der kunne afsende data fra en [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":2470,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,128,131,132],"tags":[134,108,133,135],"class_list":["post-2417","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-azure","category-cloud","category-iot","tag-esp8266","tag-featured","tag-nodemcu","tag-wifi"],"_links":{"self":[{"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/posts\/2417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/comments?post=2417"}],"version-history":[{"count":75,"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/posts\/2417\/revisions"}],"predecessor-version":[{"id":2501,"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/posts\/2417\/revisions\/2501"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/media\/2470"}],"wp:attachment":[{"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/media?parent=2417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/categories?post=2417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hinnerup.net\/en\/wp-json\/wp\/v2\/tags?post=2417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}