Använda RPi, Azure och Cortana att automatisera ditt hem! (7 / 15 steg)
Steg 7: Installera din Raspberry Pi 3: kodning prenumeration
Detta steg kretsar helt kring den process_messages funktion som vi talade om i föregående steg. Vi kommer använda Python Azure SDK att aktivt lyssna på meddelanden från azurblå abonnemang och uppdateras också våra LED.
Initiera objektet Service buss
Första saker först, vi kommer att skapa "process_messages()" funktionen och sedan buss serviceobjektet.
def process_messages(): # initiera tjänsten bussen
service_bus = ServiceBusService (service_namespace = AZURE_SERVICEBUS_NAMESPACE, shared_access_key_name = AZURE_SERVICEBUS_SHARED_KEY_NAME,
shared_access_key_value = AZURE_SERVICEBUS_ACCESS_KEY_VALUE
)
Ganska enkelt, eller hur? Observera att vi använt våra namnområde, nyckelnamn och nyckel värde för att ansluta till tjänsten bussen. Detta är de viktigaste sakerna du behöver för att faktiskt logga in och interagera med din service buss. Vi kommer att ta reda på hur du lägger till namn och värde i slutet av det här steget.
Få ämne och prenumeration
Ganska enkelt. Vi kommer att få våra "LightTopic" ämne och "LightSubscription" prenumeration ". Detta sätt vår Service buss vet vem att interagera med.
service_bus.get_topic("lighttopic")
service_bus.get_subscription("lighttopic","lightsubscription")
Looping och logik
Nu kommer intressanta. Vi kommer att göra en grundläggande "Medan sanna" loop (en oändlig loop) att aktivt lyssna efter vårt abonnemang.
samtidigt sant:
MSG = service_bus.receive_subscription_message ('lighttopic', 'lightsubscription', peek_lock = False)
om msg.body inte är ingen:
Print(MSG.Body)
om msg.custom_properties["led"]==1:
skriva ut ("vrida på LED")
GPIO.output (GPIO_BCM_PIN, 1)
annat:
skriva ut ("stänga av lampan")
GPIO.output (GPIO_BCM_PIN, 0)
Du kan se att vi har några felsökning uttalanden här (genom att skriva meddelandetexten till konsolen, tillsammans med LED kommandon). Du är fri att ta bort dem om du så önskar.
Denna kod är ganska rakt framåt. Vår "msg" objekt får oavsett meddelande kom från abonnemang, och då vi tittar på custom_properties av den. Om det finns ett objekt "ledde" som är lika med 1, aktivera vi den LED. Annars kan stänga vi av. När vi börjar programmet Cortana och mycket mer med den publicerande sidan av saker, får vi se exakt hur vi interagerar med denna "ledde" anpassad egenskap.
Söka efter och infoga din Azure nyckel
Ja, jag vet, jag är en retas. Det var första jag började med och nu jag slutar med den. Processen är ganska rakt framåt:
- Gå till instrumentpanelen "CustomNameSpace" i Azure Management Portal
- Klicka på "Konfigurera"
- Du kommer att se se ett avsnitt märkt shared access nyckel generera
- Den "politik" är din nyckelnamn
- Den PRIMÄRNYCKELN är din nyckel värde
- Sätt in dessa två saker i din kod i sina respektive fläckar
- Se figur 1. för hjälp
Kör din kod!
Och nu är du klar att köra! Allt bör sammanställa och arbeta. Om inte, var noga med att kolla in den bifogade kodexemplen för att se om du missat delar.
Som sagt, göra det egentligen inte mycket. Det stämmer eftersom det endast lyssnar nu, men vi skickar inte något! Det är bara sitter där och gärna lyssnar på en tom moln. Nästa, vi ska dyka in Cortana och Windows Phone att publicera ett meddelande i molnet så att våra Pi faktiskt har ett budskap att höra!