{"id":26,"date":"2019-03-18T18:18:48","date_gmt":"2019-03-18T17:18:48","guid":{"rendered":"https:\/\/azure.teamprojects.de\/?page_id=26"},"modified":"2019-03-21T10:15:58","modified_gmt":"2019-03-21T09:15:58","slug":"raspberry-pie","status":"publish","type":"page","link":"https:\/\/azure.teamprojects.de\/?page_id=26","title":{"rendered":"Raspberry Pi Schnellstart Anleitung"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_17 counter-hierarchy counter-decimal ez-toc-grey\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" style=\"display: none;\"><i class=\"ez-toc-glyphicon ez-toc-icon-toggle\"><\/i><\/a><\/span><\/div>\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1\"><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Einleitung\" title=\"Einleitung\">Einleitung<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Voraussetzungen\" title=\"Voraussetzungen\">Voraussetzungen<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Vorbereitung\" title=\"Vorbereitung\">Vorbereitung<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Raspberry_Pi_Betriebssystem_installieren\" title=\"Raspberry Pi Betriebssystem installieren\">Raspberry Pi Betriebssystem installieren<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Raspberry_Pi_aktualisieren\" title=\"Raspberry Pi aktualisieren\">Raspberry Pi aktualisieren<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Temperatursensor_an_das_Raspberry_Pi_anschliessen\" title=\"Temperatursensor an das Raspberry Pi anschlie\u00dfen\">Temperatursensor an das Raspberry Pi anschlie\u00dfen<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Erste_Schritte\" title=\"Erste Schritte\">Erste Schritte<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Die_iot-hub_Bibliothek_installieren\" title=\"Die iot-hub Bibliothek installieren\">Die iot-hub Bibliothek installieren<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Anlegen_des_Geraets_in_IoTHub\" title=\"Anlegen des Ger\u00e4ts in IoTHub\">Anlegen des Ger\u00e4ts in IoTHub<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Eine_Service_Bus_Queue_erzeugen\" title=\"Eine Service Bus Queue erzeugen\">Eine Service Bus Queue erzeugen<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Das_Message-Routing\" title=\"Das Message-Routing\">Das Message-Routing<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Erstellen_einer_Logic_App\" title=\"Erstellen einer Logic App\">Erstellen einer Logic App<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Der_Code\" title=\"Der Code\">Der Code<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/azure.teamprojects.de\/?page_id=26\/#Vertiefte_Tutorials\" title=\"Vertiefte Tutorials\">Vertiefte Tutorials<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"Einleitung\"><span class=\"ez-toc-section\" id=\"Einleitung\"><\/span>Einleitung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In diesem Tutorial geht es darum, einen Raspberry Pi 3 mit dem Clouddienst Microsoft Azure zu verbinden. In diesem schnell Tutorial werden wir einen Client auf dem Raspberry Pi programmieren, der mit einem Azure IoT Hub verbunden wird, Cloud-To-Device Nachrichten empfangen und Device-To-Cloud Nachrichten senden kann. Zudem werden wir es in Azure einrichten, dass Nachrichten mit einem bestimmten Tag direkt per Mail an uns gesendet werden. Um dem ganzen dabei noch etwas Funktionalit\u00e4t zu geben h\u00e4ngen wir einen Temperatursensor an unser Raspberry und senden die Temperaturdaten.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"1024\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-1024x1024.png\" alt=\"\" class=\"wp-image-69\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-1024x1024.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-150x150.png 150w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-300x300.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-768x768.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik.png 1200w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h2 id=\"Voraussetzungen\"><span class=\"ez-toc-section\" id=\"Voraussetzungen\"><\/span>Voraussetzungen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>F\u00fcr dieses Quick Tutorial sind beinahe keine Programmierkenntnisse erforderlich. Wenn man verstehen will was im Code passiert sind Kenntnisse in Python jedoch von Vorteil. Zudem sollte man zumindest ein wenig mit Linux umgehen k\u00f6nnen.<\/p>\n\n\n\n<h2 id=\"Vorbereitung\"><span class=\"ez-toc-section\" id=\"Vorbereitung\"><\/span>Vorbereitung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3><span class=\"ez-toc-section\" id=\"Raspberry_Pi_Betriebssystem_installieren\"><\/span>Raspberry Pi Betriebssystem installieren<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p> <\/p>\n\n\n\n<p>Um das Raspberry Pi nutzen zu k\u00f6nnen muss ein Betriebssystem installiert werden, daf\u00fcr bietet sich Raspbian an, das speziell zu diesem Zweck entwickelt wurde. Um dieses Betriebssystem auf dem Pi zu installieren verwenden wir NOOBS, die New-Out-Of-Box-Software die auf der Raspberry Pi Website heruntergeladen werden kann.<\/p>\n\n\n\n<p>Die\n.zip Datei muss auf die microSD Karte des Pis extrahiert werden.<\/p>\n\n\n\n<p>Sollte\ndas Raspberry Pi bereits mit vorinstalliertem NOOBS auf der microSD\nKarte gekommen sein, k\u00f6nnen sie dies \u00fcberspringen.<\/p>\n\n\n\n<p>Um die Installation am Pi ausf\u00fchren zu k\u00f6nnen sollten sie Tastatur, Maus und einen Bildschirm anschlie\u00dfen. Wenn sie nun die SD-Karte mit NOOBS in den Slot des Pis stecken und ihn dann starten indem sie das Netzteil anschlie\u00dfen, sollte ein Fenster auftauchen, in dem Gefragt wird, welches Betriebssystem installiert werden soll. W\u00e4hlen sie \u201eRaspbian\u201c und installieren sie es.  <\/p>\n\n\n\n<h3><span class=\"ez-toc-section\" id=\"Raspberry_Pi_aktualisieren\"><\/span>Raspberry Pi aktualisieren<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Die\nInstallation wird einige Zeit in Anspruch nehmen. Wenn sie\nabgeschlossen ist, nehmen sie sich etwas Zeit um sich mit dem\nStartmen\u00fc vertraut zu machen und gucken sie insbesondere nach der\nPython2 IDLE. Im Neuesten Softwarepatch ist diese nicht mehr direkt\nim Startmen\u00fc zu finden. Mittels des Startmen\u00fc-Editors k\u00f6nnen sie\ndie IDLE aber wieder zum Startmen\u00fc hinzuf\u00fcgen.<\/p>\n\n\n\n<p>Bevor\nsie damit anfangen k\u00f6nnen neue Updates herunterzuladen m\u00fcssen sie\nzun\u00e4chst noch ihr Pi mit dem Internet verbinden, daf\u00fcr k\u00f6nnen sie\nentweder ein LAN-Kabel nutzen oder ihr Wi-Fi.<\/p>\n\n\n\n<p>Sobald\nsie Verbunden sind, schlie\u00dfen sie alle unn\u00f6tigen Fenster und \u00f6ffnen\nsie ein Teminal Fenster. Hier werden wir nun zwei Befehle eingeben.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get update\ufeff<\/code><\/pre>\n\n\n\n<p>Dies wird ein paar Sekunden dauern, wenn das Terminal sie auffordert, das n\u00e4chste Kommando einzugeben, schreiben sie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get dist-upgrade<\/code><\/pre>\n\n\n\n<p>Das zweite Kommando updated ihr Raspbian image auf die aktuellste Version.<\/p>\n\n\n\n<h3><span class=\"ez-toc-section\" id=\"Temperatursensor_an_das_Raspberry_Pi_anschliessen\"><\/span>Temperatursensor an das Raspberry Pi anschlie\u00dfen<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Der in diesem Tutorial verwendete Temperatursensor DS18B20 verwendet das 1-Wire Bus Interface, bevor wir dieses an unserem Raspberry Pi nutzen k\u00f6nnen, m\u00fcssen wir dieses daf\u00fcr vorbereiten. Daf\u00fcr nutzen wir folgenden Konsolen Befehl um die Konfiguration des Raspberries zu ver\u00e4ndern<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudonano \/boot\/config.txt<\/code><\/pre>\n\n\n\n<p>Dies \u00f6ffnet die Datei im nano Editor und erlaubt uns diese zu ver\u00e4ndern. Wir suchen nun innerhalb dieser Datei nach der Zeile, die <br><code>dtoverlay=w1-gpio<\/code><br> enth\u00e4lt, existiert sie nicht f\u00fcgen wir sie ganz am Ende der Datei hinzu und speichern das ganze. Damit die \u00c4nderungen in Kraft treten m\u00fcssen wir das Pi neu starten.  <\/p>\n\n\n\n<p>Wir bauen jetzt noch einen Schaltkreis mit dem Temperatursensor auf, daf\u00fcr nutzen wir neben diesem einen GND Pol, einen 3.3V Pol  des Pis, sowie den GPIO Pin 4. zwischen dem Kontakt mit dem 3.3V pol und dem Mittleren F\u00fc\u00dfchen des Sensors wird ein 4.7 Kohm Widerstand eingesetzt. An dem Ende, das nicht mit den 3.3V verbunden ist legen wir das Kable an, das zum GPIO Pin 4 f\u00fchrt.  <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"403\" height=\"600\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-1.png\" alt=\"\" class=\"wp-image-73\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-1.png 403w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-1-202x300.png 202w\" sizes=\"(max-width: 403px) 100vw, 403px\" \/><\/figure>\n\n\n\n<p>Nachdem\nwir diesen Schaltkreis aufgebaut haben k\u00f6nnen wir mittels einiger\nBefehle testen, ob unsere Einstellungen korrekt sind.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo modprobe w1-gpio\nsudo modprobe w1-therm\ncd\/sys\/bus\/w1\/devices\nls<\/code><\/pre>\n\n\n\n<p>Dies\nwird alle Ger\u00e4te, die \u00fcber den 1-Wire Bus angeschlossen sind\nanzeigen. Der Temperatursensor wird eine ID haben, die mit einer 28\nanf\u00e4ngt, der viele Nummern folgen. Nun k\u00f6nnen wir testen ob der\nSensor arbeitet, indem wir das Folgende eintippen, dabei wird XXXX\ndurch die Zahlen, die der 28 folgen ersetzt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd 28-xxxx\ncat w1_slave<\/code><\/pre>\n\n\n\n<p>Nun\nsollte man das folgende erhalten. Geschieht das, arbeitet der Sensor<\/p>\n\n\n\n<p>a3 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES<br>a3 01 4b 46 7f ff 0e 10 d8 t=32768 <\/p>\n\n\n\n<h2 id=\"Erste-Schritte\"><span class=\"ez-toc-section\" id=\"Erste_Schritte\"><\/span>Erste Schritte<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3><span class=\"ez-toc-section\" id=\"Die_iot-hub_Bibliothek_installieren\"><\/span>Die iot-hub Bibliothek installieren<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Wenn sie ihr Raspberry Pi richtig eingerichtet haben, m\u00fcssen wir jetzt die IoTHub Bibliothek installieren. Daf\u00fcr gibt es zwei Methoden; entweder besuchen sie Github (<a href=\"https:\/\/github.com\/Azure-Samples\/iot-hub-python-raspberrypi-client-app\">https:\/\/github.com\/Azure-Samples\/iot-hub-python-raspberrypi-client-app<\/a>) und laden das Repository als Zip herunter, oder sie k\u00f6nnen das Repository via Terminal klonen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install git-core\ngit clone https:\/\/github.com\/Azure-Samples\/iot-hub-python-raspberrypi-client-app.git<\/code><\/pre>\n\n\n\n<p>\num die Bibliothek zu kompilieren nutzen sie die\nFolgenden Kommandos (passen sie den Dateipfad an wenn n\u00f6tig):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd .\/iot-hub-raspberrypi-client-app\nsudo chmod u+x setup.sh\nsudo .\/setup.sh<\/code><\/pre>\n\n\n\n<p> Tipps:<\/p>\n\n\n\n<p> &#8211; Sie k\u00f6nnen Verzeichnisse mittels *Joker wechseln, wenn sie keine Verzeichnisse mit    \u00e4hnlichem Namen haben. Beispiel: \u201ecd .\/iot-*\u201c wird sie ins passende Verzeichnis  bringen.<\/p>\n\n\n\n<p> Das kompilieren der Bibliothek hat einen Ordner iothub_python erzeugt. Suchen sie diesen Ordner und suchen sie nach einem File mit dem Namen: iothub_client.so<\/p>\n\n\n\n<p> Diese Datei m\u00fcssen sie kopieren und in dem Ordner, in dem sie ihr sp\u00e4teres Programm schreiben wollen wieder einf\u00fcgen, damit der Code funktioniert und die Klassen aus der Bibliothek verwendet werden k\u00f6nnen.<\/p>\n\n\n\n<h3><span class=\"ez-toc-section\" id=\"Anlegen_des_Geraets_in_IoTHub\"><\/span>Anlegen des Ger\u00e4ts in IoTHub<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\nWenn sie bereits einen IoTHub erstellt haben, k\u00f6nnen\nsie hier weiter machen, ansonsten folgen sie bitte dem Tutorial ( XXX\n)<\/p>\n\n\n\n<p> \u00d6ffnen sie ihren IoT Hub in ihrem Internet Browser und navigieren sie zum IoT Devices Reiter. In diesem k\u00f6nnen sie nun per klick auf das blaue <strong>+<\/strong>  ein neues Ger\u00e4t erzeugen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"556\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-2-1024x556.png\" alt=\"\" class=\"wp-image-79\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-2-1024x556.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-2-300x163.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-2-768x417.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/grafik-2.png 1701w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Nach einem Klick auf das Plus \u00f6ffnet sich die Ansicht zum erstellen eines neuen Ger\u00e4ts, geben sie hier ihrem Ger\u00e4t eine einzigartige ID und setzen sie das H\u00e4kchen bei Auto-generate-Keys. Zum Schluss best\u00e4tigen sie die Erstellung durch klicken auf save.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"587\" height=\"931\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceCreate.png\" alt=\"\" class=\"wp-image-81\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceCreate.png 587w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceCreate-189x300.png 189w\" sizes=\"(max-width: 587px) 100vw, 587px\" \/><\/figure>\n\n\n\n<p>Das so erzeugt Ger\u00e4t l\u00e4sst sich nun in der Ger\u00e4teansicht anw\u00e4hlen. Wenn das Ger\u00e4t angew\u00e4hlt ist, \u00f6ffnet sich eine neue Sicht, in der Informationen \u00fcber das Ger\u00e4t angezeigt werden. Wichtig ist hierbei der Prim\u00e4re Verbindungsschl\u00fcssel, den wir f\u00fcr die sp\u00e4tere Verwendung noch brauchen werden.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"443\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceInfos-1024x443.png\" alt=\"\" class=\"wp-image-82\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceInfos-1024x443.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceInfos-300x130.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceInfos-768x332.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/IoTDeviceInfos.png 1696w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h2 id=\"Bus-Queue\"><span class=\"ez-toc-section\" id=\"Eine_Service_Bus_Queue_erzeugen\"><\/span>Eine Service Bus Queue erzeugen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Damit wir unsere Nachrichten weiterleiten k\u00f6nnen m\u00fcssen wir im Azure Portal zuerst mal eine Service Bus Queue erzeugen. Diese finden wir beim erstellen unter dem Punkt Integration.<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"644\" height=\"660\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_1.png\" alt=\"\" class=\"wp-image-83\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_1.png 644w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_1-293x300.png 293w\" sizes=\"(max-width: 644px) 100vw, 644px\" \/><\/figure>\n\n\n\n<p>Als n\u00e4chstes m\u00fcssen wir einige Felder ausf\u00fcllen. Dabei w\u00e4hlen wir den Namen f\u00fcr den Namespace unserer zuk\u00fcnftigen Bus Queues sowie das Tier und die Resourcengruppe. Bei dieser k\u00f6nnen wir unsere bereits fr\u00fcher erzeugte Gruppe wieder w\u00e4hlen. Wenn wir alles ausgef\u00fcllt haben klicken wir auf create und warten bis der Namespace erzeugt wurde.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"365\" height=\"616\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_2.png\" alt=\"\" class=\"wp-image-84\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_2.png 365w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_2-178x300.png 178w\" sizes=\"(max-width: 365px) 100vw, 365px\" \/><\/figure>\n\n\n\n<p>\u00d6ffnen wir nun den soeben erstellten Service Bus Namespace k\u00f6nnen wir unter \u00dcbersicht mit einem Klick auf das blaue + neben Queue eine neue Queue hinzuf\u00fcgen. Dieser geben wir einfach einen Namen, in unserem Fall \u201eCriticalHighMailQueue\u201c da sie das versenden von Mail bei zu hoher Temperatur \u00fcbernehmen soll.  <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"441\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_3-1024x441.png\" alt=\"\" class=\"wp-image-85\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_3-1024x441.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_3-300x129.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_3-768x331.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/BusQueue_3.png 1302w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h2 id=\"Message-Routing\"><span class=\"ez-toc-section\" id=\"Das_Message-Routing\"><\/span>Das Message-Routing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\nJetzt da wir einen Service Bus haben k\u00f6nnen wir uns\ndaran machen die Nachrichten auch an diese weiterzuleiten. Daf\u00fcr\ngehen wir im Azure Portal auf unseren IoTHub und w\u00e4hlen den Punkt\nNachrichtenrouting. Hier k\u00f6nnen wir eine neue Route festlegen, die\nes uns erlaubt die Nachrichten direkt an den Service Bus zu schicken.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"438\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing1-1024x438.png\" alt=\"\" class=\"wp-image-86\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing1-1024x438.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing1-300x128.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing1-768x328.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing1.png 1104w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Hier geben wir unserer neuen Route erst mal einen Namen. Als\nn\u00e4chstes m\u00fcssen wir den gew\u00fcnschten Endpunkt ausw\u00e4hlen. Da wir\nbisher noch keinen Endpunkt haben klicken wir auf das schwarze +\ndaneben und w\u00e4hlen Service Bus Queue aus. Es \u00f6ffnet sich ein neues\nFenster, in dem wir dem Endpunkt einen Namen geben. Zudem w\u00e4hlen wir\neinen Bus Namespace aus, den wir ja zuvor erstellt haben und k\u00f6nnen\ndann aus den unter diesem Namespace erzeugten Queues w\u00e4hlen. Wir\nw\u00e4hlen die gew\u00fcnschte aus und klicken auf erstellen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"581\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing3-1024x581.png\" alt=\"\" class=\"wp-image-87\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing3-1024x581.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing3-300x170.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing3-768x436.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/Routing3.png 1036w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Mit unserem neuen Endpunkt k\u00f6nnen wir nun die Route fertig machen. Dabei m\u00fcssen wir noch zwei Felder ausf\u00fcllen. Bei Data Source w\u00e4hlen wir Device Telemety Data aus, da wir ja die vom Raspberry geschickten Telemetriedaten verwenden wollen und zu guter letzt m\u00fcssen wir noch etwas bei routing query eintragen. Wir l\u00f6schen alles was zuvor da war und \u00e4ndern es zu level = \u201ecritical_H\u201c <\/p>\n\n\n\n<h2 id=\"Logic-App\"><span class=\"ez-toc-section\" id=\"Erstellen_einer_Logic_App\"><\/span>Erstellen einer Logic App<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\nDa wir unsere Nachrichten jetzt\nwie gew\u00fcnscht weiterleiten k\u00fcmmern wir uns jetzt darum, wie aus der\nNachricht eine Mail wird. Daf\u00fcr nutzen wir die Azur eigenen Logic\nApps. <br>Wir erstellen zun\u00e4chst einmal eine Logic App, daf\u00fcr gehen\nwir beim erstellen von neuen Ressourcen auf das Tab Integration und\nw\u00e4hlen Logic App aus. Ein neues Fenster \u00f6ffnet sich, in dem wir den\nNamen und die Ressourcengruppe ausw\u00e4hlen. Wichtig ist dabei, dass\nwir darauf achten dass Logic Analytics ausgeschaltet sind. \n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"314\" height=\"631\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp1.png\" alt=\"\" class=\"wp-image-88\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp1.png 314w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp1-149x300.png 149w\" sizes=\"(max-width: 314px) 100vw, 314px\" \/><\/figure>\n\n\n\n<p>Wenn\nwir nun auf Erstellen klicken \u00f6ffnet sich die Logic App und wir\nbekommen zugriff auf den Logic Designer. In diesem k\u00f6nnen wir der\nApp Funktionalit\u00e4t zukommen lassen. Zun\u00e4chst m\u00fcssen wir einen\nTrigger ausw\u00e4hlen. Da unsere Nachricht \u00fcber einen Service Bus Queue\nankommt w\u00e4hlen wir <br>Service\nBus \u2013 When message is received\nin queue (auto-complete) als\nTrigger benutzen. \n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"589\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp2-1024x589.png\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp2-1024x589.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp2-300x173.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp2-768x442.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp2.png 1072w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>\nF\u00fcr\ndiesen Trigger m\u00fcssen wir ein paar Sachen einstellen. Wir geben\nunserer Verbindung einen Namen, w\u00e4hlen die gew\u00fcnschte Queue aus und\nw\u00e4hlen <strong>RootManageSharedAccessKey<\/strong>\naus. Dann klicken wir auf erstellen und schon haben wir den Trigger\nunserer Funktion.<\/p>\n\n\n\n<p> \u00dcber das <strong>+<\/strong> an dem Pfeil nach unten k\u00f6nnen wir nun weitere Funktionalit\u00e4ten hinzu f\u00fcgen. Da wir die Temperaturdaten im Falle einer Kritischen Temperatur\u00fcberschreitung per Mail versenden wollen stehen uns einige Optionen zur Verf\u00fcgung. Wir k\u00f6nnten einen Mail aus outlook versenden (wenn wir Office360 haben) oder wir nutzen Google Mail zum versenden der Daten.<br>Ich habe mich f\u00fcr Google Mail entschieden. Dann suchen wir jetzt den Block Send Email von Gmail aus, und f\u00fcllen die ben\u00f6tigten Felder aus. Wir m\u00fcssen uns zun\u00e4chst mit einem Gmail Account anmelden, der sp\u00e4ter zum versenden genutzt wird. Dann k\u00f6nnen wir einen Empf\u00e4nger w\u00e4hlen und Felder hinzuf\u00fcgen. <br>Wir wollen die Felder Body und Subject nutzen, da wir so der Mail einen Betreff geben k\u00f6nnen und unsere Daten im Body der Mail versenden.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"564\" src=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp3-1024x564.png\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp3-1024x564.png 1024w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp3-300x165.png 300w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp3-768x423.png 768w, https:\/\/azure.teamprojects.de\/wp-content\/uploads\/2019\/03\/logicApp3.png 1103w\" sizes=\"(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Wir\nschreiben etwas in den Body und erweitern dies dann um den\nDynamischen Inhalt Content. So wird der Inhalt der Nachricht zu\nunserer Mail hinzu gef\u00fcgt.<\/p>\n\n\n\n<h2 id=\"Code\"><span class=\"ez-toc-section\" id=\"Der_Code\"><\/span>Der Code<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p> Der Code liegt bereits fertig vor. <a href=\"https:\/\/ufile.io\/yw4xm\">Hier Downloaden.<\/a>  Die .py Datei muss mit in den Ordner, in den die IoT Hub Bibliothek gespeichert wurde. Hier kann man ihn nun einfach \u00f6ffnen und muss nur noch eine Sache \u00e4ndern, und schon kann es losgehen.  <\/p>\n\n\n\n<p>Die Variable CONNSTR muss an ihr eigenes Device angepasst werden indem der Connection String eben dieses aus dem IoT Hub ausgelesen wird und in <strong>\u201e\u201c<\/strong> hinter dem <strong>=<\/strong> eingef\u00fcgt wird. Sobald dies ihr eigener Connection String ist, kann das Programm gestartet werden und das Pi sendet regelm\u00e4\u00dfig die aktuelle Temperatur an Azure. Wenn sie auch die Logic App bereits erstellt haben sollten sie bei \u00dcberschreitungen einer kritischen Temperatur per Mail informiert werden.<\/p>\n\n\n\n<h2><span class=\"ez-toc-section\" id=\"Vertiefte_Tutorials\"><\/span>Vertiefte Tutorials<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a href=\"https:\/\/azure.teamprojects.de\/?page_id=26\">Tutorial 1: C2D Nachrichten empfangen<\/a><br><a href=\"https:\/\/azure.teamprojects.de\/?page_id=137\">Tutorial 2: Temperatur Sensor und D2C Nachrichten<\/a><br><a href=\"https:\/\/azure.teamprojects.de\/?page_id=181\">Tutorial 3: Daten versenden per Mail<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Table of Contents EinleitungVoraussetzungenVorbereitungRaspberry Pi Betriebssystem installierenRaspberry Pi aktualisierenTemperatursensor an das Raspberry Pi anschlie\u00dfenErste SchritteDie iot-hub Bibliothek installierenAnlegen des Ger\u00e4ts in IoTHubEine Service Bus Queue erzeugenDas Message-RoutingErstellen einer Logic AppDer CodeVertiefte Tutorials Einleitung In diesem Tutorial geht es darum, einen Raspberry Pi 3 mit dem Clouddienst Microsoft Azure zu verbinden. In diesem schnell Tutorial werden &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/azure.teamprojects.de\/?page_id=26\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eRaspberry Pi Schnellstart Anleitung\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":100,"featured_media":0,"parent":581,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=\/wp\/v2\/pages\/26"}],"collection":[{"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=\/wp\/v2\/users\/100"}],"replies":[{"embeddable":true,"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=26"}],"version-history":[{"count":19,"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=\/wp\/v2\/pages\/26\/revisions"}],"predecessor-version":[{"id":213,"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=\/wp\/v2\/pages\/26\/revisions\/213"}],"up":[{"embeddable":true,"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=\/wp\/v2\/pages\/581"}],"wp:attachment":[{"href":"https:\/\/azure.teamprojects.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}