- Hvad er Microsoft Azure IoT Hub?
- Oprettelse af en Azure IoT Hub
- Komponenter, der kræves for at opbygge vores testkredsløb til Azure IoT med Raspberry Pi
- Azure IoT med Raspberry Pi - Hardwareskema
- Programmering af Raspberry Pi til offentliggørelse af data på Azure IoT Hub
- Publicer data på Azure IoT Hub - Testing
Azure IoT Hub, cloud computing-tjenesten fra Microsoft, giver udviklere mulighed for at oprette forbindelse, overvåge og administrere milliarder af IoT-enheder på en enkelt platform. Det bruges allerede i forskellige IoT-applikationer som hjemmeautomatiseringssystemer, sikkerhed, overvågning og overvågningssystemer. For at demonstrere funktionerne i Azure IoT-hub skal vi bygge et lille kredsløb med Raspberry Pi, en DHT11 temperatur og fugtighedssensor for at behandle sensordataene med den. Endelig vil vi offentliggøre sensordata til Azure IoT-serveren ved hjælp af MQTT-protokollen. I denne vejledning lærer vi, hvordan man opsætter og konfigurerer en Azure-server og sender data ved hjælp af en Raspberry Pi.
Hvad er Microsoft Azure IoT Hub?
Azure IoT Hub er en samling af administrerede tjenester, der kan forbinde, overvåge og kontrollere IoT-enheder. Det inkluderer også sikker kommunikation til enheder med datavisualisering og analyse, der hjælper enhedsproducenterne med at opbygge, implementere og administrere IoT-applikationer ved hjælp af Azure cloud. Azure IoT Hub's Device-to-Cd-telemeterdata giver os besked om tilstanden for de tilsluttede IoT-enheder, og Cloud-to-Device-meddelelser giver os mulighed for at sende kommandoer og meddelelser til de tilsluttede enheder. Et eksempel kan være som ved hjælp af et smart hjemmeautomatiseringssystem kan vi indsamle forskellige sensordata og sende dem til Azure IoT Hub for at visualisere, gemme og administrere dem. Vi kan også styre outputenhederne fra Azure IoT Hub-grænsefladen.
Central hub til tovejskommunikation til IoT-applikation og enheder understøtter både enhed-cloud- og cloud-enhedskommunikation, det understøtter også flere messaging-mønstre såsom en enhed til cloud-telemetri, filupload fra enheder og anmodnings-svarmetoder og endelig vi kan bruge godkendelsesmetoden pr. enhed, der gør det muligt for hver enhed at oprette forbindelse sikkert til IoT Hub. Nu, som du har forstået det grundlæggende i Azure IoT Hub, lad os gå videre til opsætning af systemet.
Oprettelse af en Azure IoT Hub
Vi er klar til at udføre alle de nødvendige opsætninger, der kræves til opsætning af Microsoft Azure- tjenester, men inden det skal du sørge for at have en Microsoft-konto. Hvis du ikke har det, kan du bare tilmelde dig. Gå derefter til Azure-portalen ved hjælp af portal.azure.com og log ind.
Når du er logget ind, skal du gå til Azure-hjemmesiden, vælge knappen Opret en ressource og derefter søge efter IoT Hub i feltet Søg på markedspladsen. Vælg IoT Hub fra søgeresultaterne, og vælg derefter Opret. Billederne nedenfor giver dig en bedre idé om processen.
Udfyld nødvendige detaljer for at oprette en IoT Hub.
I afsnittet Abonnement skal du vælge abonnementet for at bruge det til din hub. I vores tilfælde vælger vi en prøvekonto, og vi har valgt " Gratis prøveperiode" .
Dernæst i Resource Group afsnit, skal du vælge din ressourcegruppe . Hvis du ikke har en, skal du oprette en ny ved at klikke på Opret ny og indtaste navnet på ressourcen.
I Region- sektionen kan du bruge rullemenuen til at vælge din foretrukne region.
I tingenes internet Hub Navn afsnit, skal du e nter et navn til din hub. Dette skal være unikt. Al den nødvendige kommunikation sker med dette navn.
Under fanen "Størrelse og skala" skal du vælge " Gratis niveau " og klikke på Næste. Klik derefter på “Review + Create”. Det tager et par minutter at oprette IoT Hub. Klik på navnet på den IoT Hub, du oprettede. Noter værtsnavnet fra vinduet som vist på billedet nedenfor. Klik derefter på delte adgangspolitikker i Indstillinger. Politikker for delt adgang er fremhævet i billedet nedenfor. Klik på iothubowner- indstillingen under Politik. Noter den primære nøgle og forbindelsesstreng-primærnøglen til fremtidige referencer. Klik nu på IoT-enheder for at registrere en ny enhed under IoT Hub . I ruden Device Explorer skal du klikke på Tilføj for at tilføje en enhed til hubben.
Udfyld følgende oplysninger på fanen Nye enheder.
- Enheds-id: Indtast id for enheden. Enheds-id'er skal være unikke.
- Godkendelsestype: Vælg en symmetrisk nøgle.
- Generer automatisk taster: Marker dette afkrydsningsfelt.
- Tilslut enhed til IoT Hub: Klik på Aktiver.
Når enheden er oprettet, kan du finde din nyoprettede enhed i afsnittet Device Explorer. Klik på enhedens navn. Det viser detaljerne på enheden. Noter den primære nøgle og forbindelsesstrengens primære nøgle på enheden. Dette er vigtigt, da vi har brug for det til kommunikation.
Når dette er gjort, kan vi gå videre til hardware-siden af tingene.
Komponenter, der kræves for at opbygge vores testkredsløb til Azure IoT med Raspberry Pi
Da hardwaredelen af dette kredsløb er meget enkel, er komponentkravet også meget simpelt. En liste over nødvendige komponenter vises nedenfor.
- Raspberry Pi 3B (Vi kan også bruge andre Pi-modeller)
- Micro SD-kort-16 GB
- DHT11-sensor
- Micro USB 5V, 2,4A strømforsyning
Azure IoT med Raspberry Pi - Hardwareskema
Det komplette kredsløbsdiagram til Azure IoT med Raspberry Pi- projektet er vist nedenfor, det blev bygget ved hjælp af fritzing. Følg kredsløbsdiagrammet og tilslutningerne for at oprette kredsløbet selv.
Ovenstående kredsløb sender temperatur- og fugtighedsdata til Microsoft IoT Hub. I dette kredsløb har vi brugt en DHT11- sensor til at indsamle temperatur- og fugtighedsdata, og vi bruger en Raspberry Pi 3B som en databehandlingsenhed. DHT11-sensoren har tre ben. VCC- og GND-stifterne bruges til at give 5V DC-forsyning til sensoren, og dataudgangsstiften på DHT11 er forbundet til GPIO4 i Raspberry Pi. Hvis du vil lære at interface DHT11 temperatur- og fugtighedssensor med Raspberry Pi, kan du tjekke vores tidligere artikel om emnet. Vi har også brugt denne sensor til at bygge IoT Raspberry Pi Weather Station.
Programmering af Raspberry Pi til offentliggørelse af data på Azure IoT Hub
Før vi starter kodningen til dette projekt, skal vi oprette en Azure cloud shell (CLI) i Azure-portalen. Dette vil være nyttigt på mange måder. For det skal du klikke på Azure cloud shell-knappen i portalen som vist nedenfor. Klik derefter på Opret lagringsmulighed markeret med rødt.
Når det er gjort, kan du åbne CLI, og køre følgende kommandoer for at installere Azure add-on' s, som vil blive brugt til at vise sensordata.
az-udvidelse tilføj - navn azure-cli-iot-ext
Når det er gjort, skal vi installere afhængigheder af Raspberry Pi for at kommunikere med DHT11-sensoren og for at gøre kommunikationsprocessen let for Azure IoT-tjenester. For at åbne en Raspberry Pi Terminal for at installere de afhængige pakker, der bruges i projektet.
Først skal vi downloade DHT-biblioteket til Raspberry Pi, derefter udpakke det fra rodmappen og køre følgende kommando for at installere det.
sudo python setup.py installation
Efter vellykket installation skal du køre følgende kommandoer for at installere alle de afhængige pakker på Azure IoT Hub.
sudo pip3 installere azure-iot-enhed sudo pip3 installere azure-iot-hub sudo pip3 installere azure-iothub-service-klient sudo pip3 installere azure-iothub-device-client
Når vi har afsluttet installationen af alle forudsætninger, er det tid til at skrive koden i Python. For at gøre det skal du først importere alle bibliotekerne:
import tilfældig import Adafruit_DHT importtid fra azure.iot.device import IoTHubDeviceClient, Message
I dette projekt bruger vi pin 4 i Raspberry Pi til at behandle data fra DHT11-data, så det skal erklæres som vist.
sensor = Adafruit_DHT.DHT11 pin = 4
Dernæst definerer vi forbindelsestrengen for koden. Udskift det med din enheds-primære forbindelsesstreng, som vi gemte tidligere.
CONNECTION_STRING = "HostName = sensordata.azure-devices.net; DeviceId = ZZZZZ; SharedAccessKey = ZZZZZZZZZZZZZZZZZ"
Dernæst opretter vi et array, der vil blive brugt til at sende dataene til Azure IoT Hub. Det kan gøres som vist nedenfor.
MSG_SND = '{{"temperatur": {temperatur}, "fugtighed": {fugtighed}}}'
Dernæst har vi defineret en while-loop. I while-loop behandles både fugtigheds- og temperaturdata ved hjælp af funktionen Adafruit_DHT.read_retry . Desuden definerer vi to specielle variabler og tildeler outputdataene til disse variabler.
while True: fugtighed, temperatur = Adafruit_DHT.read_retry (sensor, pin)
Dernæst skrives en funktion til at forbinde IoT Hub ved hjælp af de forbindelsesparametre, som vi tidligere har defineret.
def iothub_client_init (): client = IoTHubDeviceClient.create_from_connection_string (CONNECTION_STRING) retur klient
Endelig sendes både temperatur- og fugtighedsdataene i næste trin til Azure Hub ved hjælp af formatet som vist i koden nedenfor. Vi brugte også en prøve-fangst-metode til at identificere, om der er nogen fejl i koden.
def iothub_client_telemetry_sample_run (): prøv: klient = iothub_client_init () print ("Sender data til IoT Hub, tryk på Ctrl-C for at afslutte") mens True: msg_txt_formatted = MSG_SND.format (temperatur = temperatur, fugtighed = fugtighed) besked = Besked (msg_txt_formatted) print ("Afsender besked: {}". format (besked)) client.send_message (besked) print ("Message is sent") time.sleep (3)
Publicer data på Azure IoT Hub - Testing
Efter at have skrevet koden, skal du kompilere den og kontrollere, om der er fejl. Hvis kodeblokken er kompileret med succes, skal du køre koden. I terminalvinduet skal du se beskeden, der siger "Meddelelse blev sendt". Skærmbilledet af vinduet er vist nedenfor:
For at se dataene i Azure IoT Hub skal du gå til portalen og klikke på CLI-terminalen og køre følgende kommandoer, der erstatter dine legitimationsoplysninger i den.
az iot hub monitor-events --hub-name XYZ --device-id XYZ
Bemærk:
Udskift XYZ med dit Hub-navn og enheds-id.
Efter at have kørt ovenstående kommando, skal du få dataene som vist nedenfor på skærmen. Dette er de samme data, der blev sendt fra Raspberry Pi.
Dette markerer slutningen af denne vejledning, jeg håber, du kunne lide artiklen og lærte noget nyt. Hvis du har spørgsmål vedrørende artiklen, kan du lade dem være i kommentarfeltet nedenfor. Eller du kan bruge vores elektronikforum til at få et hurtigere og bedre svar.