Använda RPi, Azure och Cortana att automatisera ditt hem! (6 / 15 steg)
Steg 6: Konfigurera din Raspberry Pi 2: Coding The Initial Setup
Okej! Dags att faktiskt komma ner och smutsiga med lite kod! Koden för detta är faktiskt ganska enkelt och det är bara ca 50 kodrader. Som sagt, ska vi försöka och gå igenom den långsamt så du kan få en bättre begreppsmässig förståelse av hur det fungerar. Om du bara vill "Ta och gå" så att säga, bifogas hela filen för dem som så önskar.
Importera bibliotek
Vi har en hel del bibliotek vi behöver importera för alla dessa rörliga delar att arbeta. Kom ihåg att vi också styr stiften, vi kommer att behöva importera GPIO funktioner också. Totalt, upp i din import-programsatser ska se ut som följande:
importera RPi.GPIO som GPIO #For kontrollera stift < br > import threading #To köra asynkrona
importera sys
importera Välj
från azure.servicebus import *
importera os
De 3 KUF som är uppenbarligen den GPIO, Threading och Azure biblioteken. Den mittersta, threading, kan tyckas lite konstigt i början. I huvudsak behöver vi det för att se till att vi aktivt "lyssnar" på den server-prenumerationen. För att göra detta effektivt, kör vi som "lyssnar" på en separat tråd.
Skapa konstant variabler
Ja, detta kan verka lite trivialt, men det hjälper också mycket med att förstå sambandet mellan Azure och Python. Koden är ganska rakt framåt:
# Se till att du anger följande:
AZURE_SERVICEBUS_NAMESPACE = "CustomNamespace"
AZURE_SERVICEBUS_SHARED_KEY_NAME = "RootManageSharedAccessKey"
AZURE_SERVICEBUS_ACCESS_KEY_VALUE = '< INSERT_YOUR_ACCESS_KEY_HERE >'
GPIO_BCM_PIN = 11 #The Pin din LED kontrolleras av
Namnområdet' och "GPIO" variabler bör vara ganska uppenbart, men mitten två kan orsaka viss förvirring. Detta är huvudsakligen din speciella "login nyckel" som ger åtkomst till din azurblå Service Bus. För nu, oroa dig inte om det (vi får reda på var du kan få denna nyckel i nästa steg!).
Ställ in lamporna på Start
När vi startar vårt program, vi vill ge våra lampor (eller i vårt fall ledde vår lilla) ett särskilt tillstånd. I detta fall, vi kommer att sätta den till "OFF"
# setup GPIO för LED
GPIO.setmode (GPIO. BCM)
GPIO.setup (GPIO_BCM_PIN, GPIO. OUT)
# Först stänga av lampan
GPIO.output (GPIO_BCM_PIN, 0)
Start inkommande meddelanden tråd
Här är där vi börjar att arbeta i magi. Vi kommer att skapa en tråd och har det rikta en ny funktion (som vi ännu inte skapats) kallas process_messages. Denna funktion skapar vi i nästa steg. För nu, låt oss skapa och starta tråden.
# starta en tråd som lyssnar efter inkommande meddelanden
t = threading. Thread(Target=process_messages) #will skapa "process_messages" nästa steg
t.daemon=True;
t.start()
Vänta sanering
Vi kommer sedan "vänta" för någon raw_input från våra användare. I huvudsak sluta inte detta program om någon träffar en nyckel. Slutligen kommer vi släppa någon GPIO resurser för att säkerställa en säker utträde ur vårt program.
# vänta tills användaren skriver något
char = raw_input ("tryck enter för att avsluta programmet")
# släpp GPIO resurser
GPIO.cleanup()
Resumé
Så vad gör denna kod? Tja, inte mycket. I själva verket i inte ens kompilera just nu (vi saknar som process_messages fungerar!). Men vi har ställt upp strukturen för hur våra IoT kommer enheten att fungera. Vi kommer att ställa ljuset till "OFF", sedan lyssna för något kommando från tjänsten bussen på en separat tråd. Nästa steg kommer att visa oss hur man gör.