{"id":1081,"date":"2019-07-05T21:22:03","date_gmt":"2019-07-05T21:22:03","guid":{"rendered":"https:\/\/2019.iot-embedded.de\/?p=1081"},"modified":"2021-05-14T10:08:11","modified_gmt":"2021-05-14T08:08:11","slug":"backend-smarttransport","status":"publish","type":"post","link":"http:\/\/www.iot-embedded.de\/iot-2019\/smart-transport\/backend-smarttransport\/","title":{"rendered":"Backend SmartTransport"},"content":{"rendered":"\n<p>Nachdem das Backend erfolgreich umgesetzt, getestet und implementiert wurde, m\u00f6chten wir ein paar Informationen \u00fcber dieses Teilen.\u00a0<br><\/p>\n\n\n\n<p>Das Backend f\u00fcr das SmartTransport Projekt wird mit einer ASP.NET Core Web-API umgesetzt. Insgesamt l\u00e4sst sich dieses in vier Komponenten aufteilen.&nbsp;<br><\/p>\n\n\n\n<ol><li>MQTT-Client<\/li><\/ol>\n\n\n\n<p>Die vom Raspberry Pi an den MQTT-Broker gesendeten Daten werden im Backend \u00fcber einen MQTT-Client abonniert und von diesem erfasst. Die Funktionalit\u00e4t des Clients wird \u00fcber das NuGet Package M2MqttDotnetCore erm\u00f6glicht.&nbsp;<br><\/p>\n\n\n\n<ol><li>Datenbank&nbsp;<\/li><\/ol>\n\n\n\n<p>Die Datenbank wurde mit dem Entity Framework Core und SQLite erstellt. Die Datenbank besteht aus verschiedenen Tabellen. Neben den beiden Tabellen f\u00fcr die \u00fcbertragenen Werte des IoT-Ger\u00e4tes, einmal f\u00fcr die einzelnen Sensoren sowie f\u00fcr die GPS-Daten, sind weitere Tabellen zur Verwaltung des Portals und den Ger\u00e4ten vorhanden. Insgesamt besteht die Datenbank aus 7 Tabellen.&nbsp;&nbsp;<br><\/p>\n\n\n\n<ol><li>REST Web-API<\/li><\/ol>\n\n\n\n<p>Auf die verschiedenen Tabellen der Daten und zus\u00e4tzlichen Funktionen kann \u00fcber die Web-API zugegriffen werden. Daf\u00fcr wurde f\u00fcr jede Tabelle ein eigener API-Controller erstellt.&nbsp;<\/p>\n\n\n\n<p>Die Funktionen der Web-API k\u00f6nnen \u00fcber das Tool Postman getestet werden. \u00dcber dieses k\u00f6nnen verschiedene Anfragen an die API gestellt werden. Im nachfolgenden Screenshot ist eine HTTP Get Anfrage an den Customer-Controller zu sehen. Die Anfrage liefert einen Kunden anhand dessen Id.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/QlojeorvODfrYDyg9Ck91FMQXMR9NfceToQ6EahF596Q-EHYYfSDSUrEj6yxA6t_beMiQfkGdqCUJgAT0tFdm5_KKYjqGPCxoO26NVLjgVi3RhpVWdwlEZN5RVQWinD5dhbT3h76\" alt=\"\" \/><\/figure>\n\n\n\n<ol><li>SignalR Echtzeit\u00fcbertragung<\/li><\/ol>\n\n\n\n<p>Bei einer aktiven Internetverbindung sollen die \u00fcbertragenen Daten der Ger\u00e4te sofort beim Eintreffen ins Backend an das Frontend gepusht werden. Hierf\u00fcr setzen wird SignalR ein. Dar\u00fcber k\u00f6nnen wir mit geringem Aufwand im Backend und Frontend die Daten \u00fcbertragen. Im Backend wird, wie im nachfolgenden Screenshot zu sehen, \u00fcber dem SignalR Hub die Nachricht an alle Clients versendet.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/2QQLxjQXffesDo7wIolseTpPHKl3xOg1ghSmJwjKmFQEAFDsWu5sGYQjjvMoQKDcJtVEmZqkzCdGQAQlIYWA7lRRVMWLDmT1V0qLwMuY3jAh1X8kfaRd-sMYRYnoSdd6lTVehP_4\" alt=\"\" \/><\/figure>\n\n\n\n<p>Im Frontend kommen die Daten folgenderweise an und k\u00f6nnen \u00fcber den SignalR Javascript Client verwendet werden. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/dnG4zARPWZDaksghWmJEqNdn5bhRmD7urKTt4IgQe0M3XhTX2LQ_h7NBrGcfOqqhc6yI37ASAVGq8RJqwLXOxlkGUAipn3f22aPgXkyo1u9yJiYkJJX6M8yf0OAnheoWaAqiqIob\" alt=\"\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem das Backend erfolgreich umgesetzt, getestet und implementiert wurde, m\u00f6chten wir ein paar Informationen \u00fcber dieses Teilen.\u00a0 Das Backend f\u00fcr das SmartTransport Projekt wird mit einer ASP.NET Core Web-API umgesetzt. Insgesamt l\u00e4sst sich dieses in vier Komponenten aufteilen.&nbsp; MQTT-Client Die<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[9],"tags":[],"_links":{"self":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts\/1081"}],"collection":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/comments?post=1081"}],"version-history":[{"count":1,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts\/1081\/revisions"}],"predecessor-version":[{"id":1183,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/posts\/1081\/revisions\/1183"}],"wp:attachment":[{"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/media?parent=1081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/categories?post=1081"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2019\/wp-json\/wp\/v2\/tags?post=1081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}