Sadržaj:

Pokretanje pametne kuće - Projeto Konačno: 6 koraka
Pokretanje pametne kuće - Projeto Konačno: 6 koraka

Video: Pokretanje pametne kuće - Projeto Konačno: 6 koraka

Video: Pokretanje pametne kuće - Projeto Konačno: 6 koraka
Video: Ретроградная Венера 23 июля - 4 сентября 2023 2024, Novembar
Anonim
Pokretanje pametne kuće - Projeto Final
Pokretanje pametne kuće - Projeto Final

Projekat je predstavljen kao dio konačnog projekta koji koristi IoT aplikaciju Smart Home

O projektu mostrado a seguir é parte do projekto final i serprepresondo bez kursa IoT aplikacije Smart Home, koja se sastoji od senzora i atuadores povezanih na DrangonBoard + Linker Mezzanine, um primjenjiva desenvolvido com ionic (a ser incluido em breve) kao informacije/podaci o "coisas" servisima u oblaku u AWS -u. Para umara primera iteração com DragonBoard e IoT como um todo, decidiu-se fazer u sistemu de acendimento automático de luzes, com um senzor de luminosidade, uma chave liga/desliga para ativar um aparelho de ar-condicionado de acordo com temperatura temperature pre -setada i um senzor de proximidade que será instalado no portão de uma garagem, com a intenção de informar ao proprietário da casa se o portão encontra-se aberto ou fechado.

Korak 1: Materijali neophodni

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Postavite DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Senzor luminozidade (LDR) prati i poveznicu u međuspratu.
  4. Senzor za temperaturu prati Linker Mezanin.
  5. Botão touch que acompanha a Linker Mezzanine.
  6. Dodatna oprema i poveznica u polukatu, potpuni paralelni sistem o A/C sistemu.
  7. LED dioda uključuje Linker Mezzanine, koji predstavlja i osvjetljenje i ativaciju servera.
  8. Instalação das bibliotecas citadas no passo 5.

Korak 2: Senzori, Atuadores E Conexões

Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões
Sensores, Atuadores E Conexões

1. Mezanin povezivača:

Será neophodário conectar a placa Mezzanine na dragonboard. Za detaljnije informacije, konsultantska veza

2. Senzor luminosidade (LDR)

O senzoru i paru do kompleta za Linker Mezzanine i deverá servisno povezivanje na ulazu ADC1. Za detaljnije informacije:

3. Senzor temperature

O senzoru i dijelu koji se nalazi u kompletu za Linker Mezzanine povežite servo priključak na ulazni ADC2. Za detaljnije informacije:

4. Botão dodir

Senzor i dio koji se nalazi u kompletu za Linker Mezzanine su povezani sa ulazom D1. Ovo je bolja informacija/deskriptor o sistemu u kojem možete raditi. O acesso a este botão é somente local. Za detaljnije informacije: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Relé

O relé é parte do Kit da Linker Mezzanine i deverá ser konektado na entrada D2. Ele será utiizado para ligar/desligar a system of A/C. Para detalje técnicos:

6. LED

O LED diodi i kompletu za Linker Mezzanine i povezivanje servera na ulaz D4. O LED predstavnicima sistema za osvjetljavanje u uma casa, koji su algum komodo interno da casa ili vanjski, kao i iluminação de um jardim. Da biste dodali otpornik od 10 k ohma, emitirajte ga ako postojite kako biste smanjili i ispravno iskoristili pelo sistema, a zatim ste iskusili anteriore koji su provjerili povjerljivost kao portove analitike. Za detaljnije informacije:

7. Sensor de contato magnético

Ovaj senzor je kompatibilan sa dijelovima Kit Kit za Linker Mezanin. Ele será usado em uma janela ou no portão de uma garagem para informar se a janela/garagem está aberta ou fechada. O senzoru je potrebno sastaviti 2 pequena peças (ver foto do Step acima), o senzoru koji se nalazi na ekranu i mora biti "imã", ao aproximar-se do senzora mijenja ili mijenja senzor. O senzor ne isporučuje projektovane foje N/A (normalno). Mora se osjetiti pristranost senzora ili izvještaja senzora. Morate sve što trebate učiniti sa senzorom, ili izvješće o stanju sercha fechado.

Korak 3: Aplikacija Para Controle Remoto

Aplikacija Para Controle Remoto
Aplikacija Para Controle Remoto

O aplikaciji za desenvolvido com o Ionic Framework, https://ionicframework.com/. Será neophodário fazer ili preuzmite i instalirajte krajnju verziju.

Da biste primijenili aplikaciju (ler e atualizar os dados) u oblaku u AWS (AWS IoT- https://aws.amazon.com/iot/), que posteriormente será acessada pela placa dragonboard para atualização dos status dos senzori i atuadores.

- Sistema de Iluminação mostra o estado do sitesma de iluminação, ligado ili desligado. Quando o nível de luminosidade baixar do valor configuration, as luzes se acenderão automaticamente. Quando an intenidade de luz aumentar além do valor definido, as luzes se apagarão.

- O aktivaciji ili otklanjanju klime u sistemu klimatizacije u sistemu za klimatizaciju. Também é possível definitivno valor smanjuje temperaturu. Odredite temperaturu da se, pa čak i više, postigne temperatura dejstva, o A/C servirano i trajno ligdo na temperaturi abaixar em 2 stepena do definisane tempreature. Na primer, iremos mora uzeti u obzir temperaturu od 23 grasa. Ako temperatura u unutrašnjosti bude 24 stepena, klima uređaj mora biti konstantan, a temperatura će se povećati na 20 stepeni, ali nije potrebno. Depois o ciklo se ponavlja.

- Garažna informacija i stvarna pozicija garaže, koja se nalazi u blizini.

- Temperatura je informativna i najviša temperatura u unutrašnjosti kuće.

- Luminosidade é apesas informativa e mostra o valor da luminosidade atual.

Odredite anexo os arquivos home.html i home.ts kontendos os kodigosa za komunikaciju u oblaku AWS i atualização do aplikacije.

Korak 4: Criando Uma "koisa" na AWS IoT

Criando Uma
Criando Uma

Kako biste podesili IoT na AWS -u, osigurate prolaz do servera:

1) Nema projektora za AWS IoT vezu na adresi:

2) Klikni "kreiraj stvar" e então, "Kreiraj jednu stvar". Dê o nome do projeto e clique em Next.

3) Na tela seguinte, kliknite na "Napravi stvar bez certifikata". Nesse tutorial ne koristi iremos koji koristi certifikate za provjeru korisničkih zahtjeva, ne preporučujemo vam da preporučite upotrebu IoT sem certifikata.

4) Nesse momento, sua "coisa" já estará criada. Clique no botão da "coisa" que foi criado para abrir a tela com as opções. Nessa tela podemos ver os tópicosMQTT que podem ser usados para fazer atualização dos dados a serem enviados para a Could, assim como é uma ótima ferramenta za rješavanje problema. No código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Naše tambem postavke su postavljene kao "sjena", pa vam je potrebno dati informacije o tome šta je to na dragonboard refleksiji u AWS Cloud -u.

Korak 5: Programa Em Python

Kako seguintes bibliotecas serão needárias para a execução do programa:

import spidevimport time import logging import json import argparse

iz libsoc import gpio

from time import sleep sleep from datetime import date, datetime from gpio_96boards import GPIO from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient from AWSIoTPythonSDK. MQTTLib

U nastavku pročitajte kompletan program:

import spidevimport time import logging import json import argparse

iz libsoc import gpio

from time import sleep sleep from datetime import date, datetime from gpio_96boards import GPIO from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTClient from AWSIoTPythonSDK. MQTTLib import AWSIoTMQTTShadowClient

GPIO_CS = GPIO.gpio_id ('GPIO_CS') #Analog Port

BUTTON = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')

pinovi = ((GPIO_CS, 'out'), (BUTTON, 'in'), (RELE, 'out'), (LED, 'out'),)

def setdevices (deltaMessagePython):

System_Status = deltaMessagePython ['SystemStatus'] Rele_Status = deltaMessagePython ['AC'] Led_Status = deltaMessagePython ['SisIlumi']

##### AC

ako je Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)

ako je Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

ako je Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH) ako je Led_Status == 0: gpio.digital_write (LED, GPIO. LOW)

def readadc (gpio):

gpio.digital_write (GPIO_CS, GPIO. HIGH)

time.sleep (0,0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0xA0, 0x00])#ADC2 - Temperatura gpio.digital_write (GPIO_CS, GPIO. HIGH) adcout = (r [1] << 8) & 0b1100000000 adcout = adcout | (r [2] & 0xff) adc_temp = (adcout *5.0/1023-0.5) *100

gpio.digital_write (GPIO_CS, GPIO. HIGH)

time.sleep (0.0002) gpio.digital_write (GPIO_CS, GPIO. LOW) r = spi.xfer2 ([0x01, 0x80, 0x00])#ADC1 - Svjetlost gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) sada = datetime.utcnow () now_str = now.strftime ('%Y-%m-%dT%H:%M:%SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" stanje ": {" željeno ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", payload_temp, 0) return r

def desliga ():

gpio.digital_write (RELE, GPIO. LOW) gpio.digital_write (LED, GPIO. LOW)

def run (gpio):

system_status = 1

dok je True:

time.sleep (2) button_value = gpio.digital_read (BUTTON) ispis ("----") time.sleep (0.25) if button_value == 1: if system_status == 0: system_status = 1 else: system_status = 0 desliga () if system_status == 1: value = readadc (gpio) ispišite "SYSTEM_STATUS %d" %system_status time.sleep (3)

klasa shadowCallbackContainer:

def _init _ (self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance

# Prilagođeni povratni poziv u sjeni

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Primljena delta poruka:") ### skripta ažuriranja korisnog opterećenja payloadDict = json.loads (korisni teret) deltaMessage = json.dumps (payloadDict ["stanje"]) ispis "DELTA MESSAGE %s" %deltaMessage ### Zahtjev za ažuriranje prijavljenog stanja newPayload = '{"stanje": {"prijavljeno":' + deltaMessage + '}}' deltaMessagePython = json.loads (deltaMessage) setdevices (deltaMessagePython)

spi = spidev. SpiDev ()

spi.open (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8

####### Definicija stvari

# Veza zasnovana na AWS IoT certifikatu

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentiS ("/home/, "/home/linaro/shared/AWS/" SUA CHAVE "-private.pem.key", "/home/linaro/shared/AWS/" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Beskonačno van mreže Objavite u redu čekanja myMQTTClient.configureDrainingFrequency (2) # Ispuštanje: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout.myQ (QQ) (5Q) coisajsb "," povezano ", 0)

########################

####### Definicija sjene

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Nema myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient.configureCredentials ("/ home / Linaro / shared / AWS / root- CA.crt ","/home/linaro/shared/AWS/"SUA CHAVE" -private.pem.key ","/home/linaro/shared/AWS/"SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient konfiguracijamyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) #IQMonTiConTiMonTiConTimTonMonTimTonMonTonTimeout

# Povežite se na AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Napravite sjenu uređaja s trajnom pretplatom

deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName ("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer (deviceShadowHandler)

# Slušajte na deltama

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

#########################

myMQTTClient.publish ("$ aws/things/DBpyAWS1116/shadow/update", '{"stanje": {"željeno": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)

if _name_ == "_main_":

sa GPIO (pinovi) kao gpio: run (gpio)

Korak 6: Finalização

Finalização
Finalização

Após ter compleido os passos anteriores, deve-se inicializar o sistemu executando o codigo fornecido no passo 5 e inicializar o app através do Ionic, usando o comando Ionic serve.

Za rješavanje problema, preporučujemo da koristite funkcionalni TEST MQTT klijenta do AWS-a, ako je potrebno provjeriti da li je potrebno poslati obavijesti na dragonboard ili poslati ispravku u AWS Cloud:

Preporučuje se: