Запуск умного дома - Финал проекта: 6 шагов
Запуск умного дома - Финал проекта: 6 шагов
Anonim
Запуск умного дома - Финал проекта
Запуск умного дома - Финал проекта

Настоящий проект является окончательной частью проекта, посвященного использованию Интернета вещей в умном доме

Если проект завершен, он является частью окончательного предложения IoT, использующего интеллектуальный дом, который состоит из сенсоров и элементов, соединенных с DrangonBoard + Linker Mezzanine, а также в качестве приложения для использования в качестве ионного informações / dados das "coisas" serão salvados na cloud da AWS. Para uma primeira iteração com a DragonBoard e IoT como um todo, decidiu-se fazer um sistema de acendimento automático de luzes, com um sensor de luminosidade, uma chave liga / desliga para ativar um aparelho de ar-condicionado de ar-condicion -setada e um sensor deximidade 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.

Шаг 1: Materias Necessários

Materias Necessários
Materias Necessários
Materias Necessários
Materias Necessários
  1. Поместите DragonBoard.
  2. 96Boards Linker Mezzanine
  3. Сенсор люминозидада (LDR), который является компаньоном Linker Mezzanine.
  4. Датчик температуры компаньона Linker Mezzanine.
  5. Botão touch que acompanha a Linker Mezzanine.
  6. Relé acompanha a Linker Mezzanine, utlizado para ligar o systema de A / C.
  7. Светодиодная компоновка Linker Mezzanine, которая представляет собой иллюминатор сервера.
  8. Instalação das bibliotecas citadas no passo 5.

Шаг 2: Сенсоры, 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. Мезонин линкера:

Слева необходимо построить мезонин на драконьей доске. Для получения дополнительной информации, справочная ссылка

2. Датчик люминосидады (LDR)

Датчик является частью мезонина Linker Mezzanine и подключен к входу ADC1. Технические детали:

3. Датчик температуры

Датчик является частью мезонина Linker Mezzanine и работает с подключенным ADC2. Технические детали:

4. Botão Touch

Датчик является частью Kit da Linker Mezzanine и работает с подключением к входу D1. Este botão irá ligar / desligar o sistema como um todo. O acesso a este botão é somente local. Техническая информация: https://linksprite.com/wiki/index.php5? Title = Touch_…

5. Реле

Он должен быть частью Kit da Linker Mezzanine и deverá ser conectado na entrada D2. Ele será utiizado para ligar / desligar o sistema de A / C. Para detalhes técnicos:

6. Светодиод

Светодиодный индикатор является частью комплекта Linker Mezzanine и установки, подключенной к входу D4. O LED представляет собой систему иллюминаторов ума каса, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Для подключения установлен резистор 10 кОм в серии, чтобы он существовал для уменьшения и использования системы, которая используется в предыдущих проверенных испытаниях, в качестве аналоговых портов. Технические детали:

7. Магнитный датчик

Этот датчик является частью вашего мезонина Linker. Ele será usado em uma janela ou no portão de uma garagem para informar se a janela / garagem está aberta ou fechada. О датчике он соединен с формой на 2 человека (на фото, сделанном шаг за шагом), о датчике, который предназначен для его использования, является приблизительным, чтобы сенсор был изменен или установлен на датчике. Датчик не используется для текущего проекта N / A (normalmente aberto). Quando o ima não está próximo do sensor, o sensor reportará estado aberto. Quando o imã estiver próximo do sensor, o estado reportado será fechado.

Шаг 3: Aplicativo Para Controle Remoto

Aplicativo Para Controle Remoto
Aplicativo Para Controle Remoto

Применимо для использования в Ionic Framework, https://ionicframework.com/. Для этого необходимо загрузить и установить последнюю версию.

O aplicativo irá se comunicar (ler e atualizar os dados) com a cloud da AWS (AWS IoT- https://aws.amazon.com/iot/), que posteriormente será acessada pela placa dragonboard para atualização dos status dos sensores e atuadores.

- Sistema de Iluminação mostra o estado do sitema de iluminação, ligado ou desligado. Quando o nível de luminosidade baixar do valor configurado, как luzes se acenderão automaticamente. Quando atensidade de luz aumentar além do valor Definido, как luzes se apagarão.

- O botão A / C acionará o relé, que por sua vez acionará o sistema de A / C da casa. Também é Possível Definir o valor desejado da temperatura. Assim que a temperatura da casa estiver maior do que a temperatura de acionamento, o A / C será ligado e permanecerá ligado até a temperatura abaixar em 2 graus da tempreatura Definida. Por excemplo, iremos считает temperatura é de 23 graus. Quando a temperatura interior chegar a 24 graus, o A / C será ligado e permanecerá ligado até a temperatura chegar a 20 graus, desligando então. Depois o ciclo se Repetirá.

- Garagem informará a atual posição da garagem, se aberta ou fechada.

- Temperatura apenas informativa e mostra a temperatura do interior da casa.

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

Переходите к другому архиву home.html и home.ts через приложение для общения в облаке AWS и настраивайте приложение.

Шаг 4. Криандо Ума "coisa" на AWS IoT

Криандо Ума
Криандо Ума

Для настройки IoT на AWS, после перехода к следующему этапу:

1) Создайте проект без AWS IoT по ссылке:

2) Нажмите «Создать вещь» и «Создать одну вещь». Назначьте проект и нажмите кнопку Next.

3) Na tela seguinte, нажмите em «Создать вещь без сертификата». В этом учебном пособии нет сертификатов, которые используются для практических заданий, и не используются рекомендуемые для использования сертификаты IoT.

4) Nesse momento, sua "coisa" já estará criada. Нажмите, чтобы не нажимать кнопку «Coisa», чтобы использовать его в качестве опций. Несса телепрограмма может быть использована для поиска и устранения неисправностей. Нет código em Python que será apresentado em breve, foram utlizados alguns destes tópicos. Здесь можно использовать «тень», чтобы получить информацию об отражении драконьей доски в облаке AWS.

Шаг 5: Программируйте Em Python

Как следует из библиотеки, необходимой для выполнения программы:

import spidevimport time import logging import json import argparse

из libsoc import gpio

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

Segue abaixo código Complete do programa:

import spidevimport time import logging import json import argparse

из libsoc import gpio

from time import 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') # Аналоговый порт

КНОПКА = GPIO.gpio_id ('GPIO_A') RELE = GPIO.gpio_id ('GPIO_C') LED = GPIO.gpio_id ('GPIO_G')

контакты = ((GPIO_CS, 'выход'), (КНОПКА, 'in'), (RELE, 'out'), (LED, 'out'),)

def setdevices (deltaMessagePython):

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

##### AC

если Rele_Status == 1: gpio.digital_write (RELE, GPIO. HIGH)

если Rele_Status == 0:

gpio.digital_write (RELE, GPIO. LOW)

##### Sistema de Iluminacao

если Led_Status == 1: gpio.digital_write (LED, GPIO. HIGH), если 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 - Температура 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 - Яркость gpio.digital_write (GPIO_CS, GPIO. HIGH) adcoutldr = (r [1] << 8) & 0b1100000000 adcoutldr = adcoutldr | (r [2] & 0xff) adcoutldr = str (adcoutldr) now = datetime.utcnow () now_str = now.strftime ('% Y-% m-% dT% H:% M:% SZ') temperatura = "{:.2f} ". Format (adc_temp) payload_temp = '{" состояние ": {" желаемое ": {" Luminosidade ":' + adcoutldr + '," Temperatura ":' + temperatura + '}}}' myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", payload_temp, 0) вернуть r

def desliga ():

gpio.digital_write (RELE, GPIO. LOW) gpio.digital_write (светодиод, GPIO. LOW)

def run (gpio):

system_status = 1

в то время как True:

time.sleep (2) button_value = gpio.digital_read (BUTTON) print ("----") time.sleep (0.25) if button_value == 1: if system_status == 0: system_status = 1 else: system_status = 0 desliga () если system_status == 1: value = readadc (gpio) print "SYSTEM_STATUS% d"% system_status time.sleep (3)

класс shadowCallbackContainer:

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

# Пользовательский обратный вызов Shadow

def customShadowCallback_Delta (self, payload, responseStatus, token): print ("Получено дельта-сообщение:") ### скрипт обновления полезной нагрузки payloadDict = json.loads (payload) deltaMessage = json.dumps (payloadDict ["состояние"]) печать "DELTA MESSAGE% s"% deltaMessage ### Запрос на обновление сообщаемого состояния newPayload = '{"state": {"report":' + 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

####### Определение вещи

# Подключение на основе сертификата AWS IoT

myMQTTClient = AWSIoTMQTTClient ("DBpyAWS1116") myMQTTClient.configureEndpoint ("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / linaro, "/ home / linaro / shared / AWS /" SUA CHAVE "-private.pem.key", "/ home / linaro / shared / AWS /" SEU CERTIFICADO "-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (- 1) # Бесконечный офлайн Публикация очереди myMQTTClient.configureDrainingFrequency (2) # Слив: 2 Гц myMQTTClient.configureConnectDisconnectTimeout (10) # 10 секунд myMQTTClient.configureMQTTOperationTimeoutTimeout (5) # 5 sec #connectlient. MyMQTTClient () coisajsb "," связанный ", 0)

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

####### Определение тени

# Init AWSIoTMQTTShadowClient

myAWSIoTMQTTShadowClient = Нет myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient ("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint ("SEU END-POINT.us-west-2.amazonaws.com" / 8883 / root-2.amazonaws.com (/ AWSIoClient / root) myAWSDOWNWINDOWS / 8883 / root) myAWSiCAD / 8883 / / CA.crt "," / home / linaro / shared / AWS / "SUA CHAVE" -private.pem.key "," / home / linaro / shared / AWS / "SEU CERTIFICADO-certificate.pem.crt")

# AWSIoTMQTTShadowClient configurationmyAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime (1, 32, 20) myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout (10) # 10 sec myAWSIoTMQTTShadowClient.configureMout 5 sec

# Подключиться к AWS IoT

myAWSIoTMQTTShadowClient.connect ()

# Создать deviceShadow с постоянной подпиской

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

# Слушаем дельты

deviceShadowHandler.shadowRegisterDeltaCallback (shadowCallbackContainer_Bot.customShadowCallback_Delta)

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

myMQTTClient.publish ("$ aws / things / DBpyAWS1116 / shadow / update", '{"state": {"желаемый": {"SystemStatus": 1, "SisIlumi": 0, "AC": 0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}} ', 0)

если _name_ == "_main_":

с GPIO (контакты) как gpio: run (gpio)

Шаг 6: Finalização

Finalização
Finalização

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

Для возможного устранения неполадок рекомендуется использовать функцию MQTT Client TEST для AWS, и она может быть проверена в качестве средств передачи данных в среде Dragonboard, которая используется в облаке AWS: https://us-west-2.console.aws.amazon.com / iotv2 / hom…