Inhaltsverzeichnis:
- Schritt 1: Materias Necessários
- Schritt 2: Sensoren, Atuadores E Conexões
- Schritt 3: Aplicativo Para Controle Remoto
- Schritt 4: Criando Uma "coisa" Na AWS IoT
- Schritt 5: Programa Em Python
- Schritt 6: Finalisierung
Video: Starten eines Smart Home - Projecto Final - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Projeto apresentado é parte do projeto final do curso de IoT aplicado a Smart Home
O projeto mostrado a seguir é parte do projeto final a ser apresentado no curso de IoT aplicada a Smart Home, que consiste de sensores and atuadores conectados na DrangonBoard + Linker Mezzanine, um aplicativo desenvolvido com o ionic (a ser incluidoe as.breve) informações/dados das "coisas" serão salvados in Cloud von AWS. Para uma primeira iteração com a DragonBoard e IoT como um todo, decidiu-se fazer um sistema de acendimento de luzes, com um sensor de luminosidade, uma chave liga/desliga para ativar um aparelho de ar-condicionado um acordo pre coma de acordo -setada e um sensor de proximidade que será instalado no portão de uma garagem, com a intenção de informar ao proprietário da casa se or portão encontra-se aberto ou fechado.
Schritt 1: Materias Necessários
- Platzieren Sie DragonBoard.
- 96Boards Linker Mezzanine
- Lichtsensor (LDR) que acompanha a Linker Mezzanine.
- Temperatursensor mit einem Linker Mezzanine.
- Botão touch que acompanha a Linker Mezzanine.
- Relé acompanha a Linker Mezzanine, utlizado para ligar oder systema de A/C.
- LED acompanha a Linker Mezzanine, que darstellend eine Beleuchtung und eine Serivade.
- Instalação das bibliotecas citadas no passo 5.
Schritt 2: Sensoren, Atuadores E Conexões
1. Linker-Mezzanine:
Será necessário conectar a placa Mezzanine na Dragonboard. Para-Detalhes, Consultar-Link
2. Sensorluminosidade (LDR)
O sensor é parte do Kit da Linker Mezzanine und deverá ser conectado na entrada ADC1. Technische Details:
3. Temperatursensor
O sensor é parte do Kit da Linker Mezzanine und deverá ser conectado na entrada ADC2. Technische Details:
4. Botão-Touch
O sensor é parte do Kit da Linker Mezzanine und deverá ser conectado na entrada D1. Este botão irá ligar/desligar oder sistema como um todo. O acesso a este botão é somente local. Technische Details:
5. Relé
O relé é parte do Kit da Linker Mezzanine und deverá ser conectado na entrada D2. Ele será utiizado para ligar/desligar o sistema de A/C. Para detalhes técnicos:
6. LED
O LED ist ein Teil des Kits von Linker Mezzanine und einer Verbindung mit dem Eingang D4. O LED-Vertretung oder LED-Beleuchtung von uma casa, seja algum cômodo interno da casa ou externo, como a iluminação de um jardim. Ein zusätzlicher Widerstand von 10 kOhm in einem Sério-Com oder Já-Existe-Para-Diminuir-Corrente-Utilizada-Pelo-Sistema, Já-Que-em-Experiências-Anteriores verificou-se conflitos com as portas analógicas. Technische Details:
7. Magnetischer Sensor
Este sensor foi comprado a parte e não faz parte do Kit da Linker Mezzanine. Ele será usado em uma janela oder no portão de uma garagem para informar se a janela/garagem está aberta ou fechada. O sensor é um conjunto formado von 2 pequenas peças (ver foto do Step acima), o sensor proprimamente dito e um pequeno "imã", que ao aproximar-se do sensor irá alterar o estado do sensor. O sensor utlizado neste projeto foi um N/A (normalmente aberto). Quando o imã 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.
Schritt 3: Aplicativo Para Controle Remoto
O aplicativo foi desenvolvido com o Ionic Framework, https://ionicframework.com/. Será notário fazer o herunterladen und installieren Sie die letzte Version.
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 dos dos sensores e atuadores.
- Sistema de Iluminação Mostra oder estado do Sitesma de Iluminação, Ligado oder Desligado. Quando o nível de luminosidade baixar do valor configurado, as luzes se acenderão automaticamente. Quando a intensidade de luz aumentar além do valor definido, as luzes se apagarão.
- O botão A/C acionará oder relé, que por sua vez acionará oder sistema de A/C da casa. Também é possível definir o valor desejado da temperatura. Assim que a temperature da casa estiver maior do que a temperature de acionamento, o A/C será ligado e permanecerá ligado até a temperature abaixar em 2 graus da tempreatura definida. Por exemplo, iremos que a temperature é de 23 graus. Quando a temperatura interior chegar a 24 graus, o A/C será ligado e ligado permanecerá ligado até a temperature a chegar a 20 graus, desligando então. Depois o ciclo se repetirá.
- Garagem informará a atual posição da garagem, se aberta ou fechada.
- Temperatur é apenas informativa e mostra a temperature do interior da casa.
- Luminosidade é apesas informativa e mostra o valor da luminosidade atual.
Segue em anexo arquivos home.html und home.ts contendos os códigos para comunicação com a Cloud AWS e atualização do app.
Schritt 4: Criando Uma "coisa" Na AWS IoT
Para fazer o setup do IoT na AWS, os seguintes passos deverão ser seguidos:
1) Criar um projeto no AWS IoT atravé do link:
2) Clique "Erstelle eine Sache" und "Erstelle eine einzelne Sache". Dê o nome do projeto and clique em Next.
3) Na tela seguinte, Clique em "Erstelle eine Sache ohne Zertifikat". Nesse-Tutorial ist nicht erforderlich, um Zertifikate von Práticas-Quests zu verwenden, und nicht zu empfehlen, fazer oder uso de IoT-Sem-Zertifikate zu verwenden.
4) Nesse momento, sua "coisa" já estará criada. Clique no botão da "coisa" que foi criado para abrir a tela com als opções. Nessa tela podemos ver os topicsMQTT que podem ser usados para fazer a atualização dos dados a Serem enviados para a Could, assim como é uma ótima ferramenta para Troubleshooting. Kein código em Python que será apresentado em breve, foram utlizados alguns destes topicos. Es bietet sich als "Schatten" an, wenn es um eine Information geht, die auf einem Dragonboard-Refletida in AWS Cloud steht.
Schritt 5: Programa Em Python
Als seguintes bibliotecas serão necessárias para a execução do programa:
import spidevimport time import logging import json import argparse
aus libsoc importieren 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 completo do programa:
import spidevimport time import logging import json import argparse
aus libsoc importieren 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') #Analoger Port
BUTTON = GPIO.gpio_id('GPIO_A') RELE = GPIO.gpio_id('GPIO_C') LED = GPIO.gpio_id('GPIO_G')
Pins = ((GPIO_CS, 'out'), (TASTE, 'ein'), (RELE, 'aus'), (LED, 'aus'),)
def setdevices(deltaMessagePython):
System_Status = deltaMessagePython['SystemStatus'] Rele_Status = deltaMessagePython['AC'] Led_Status = deltaMessagePython['SisIlumi']
##### AC
if Rele_Status == 1: gpio.digital_write(RELE, GPIO. HIGH)
if Rele_Status == 0:
gpio.digital_write(RELE, GPIO. LOW)
##### Sistema de Iluminacao
if Led_Status == 1: gpio.digital_write(LED, GPIO. HIGH) if 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 - Temperatur 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 - Helligkeit 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 = '{"state":{"desired": {"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
während Wahr:
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 () if system_status == 1: value = readadc(gpio) print "SYSTEM_STATUS %d" %system_status time.sleep(3)
Klasse shadowCallbackContainer:
def _init_(self, deviceShadowInstance): self.deviceShadowInstance = deviceShadowInstance
# Benutzerdefinierter Schatten-Rückruf
def customShadowCallback_Delta(self, payload, responseStatus, token): print("Eine Delta-Nachricht erhalten:") ### Payload-Update-Skript payloadDict = json.loads(payload) deltaMessage = json.dumps(payloadDict["state"]) print "DELTA MESSAGE %s" %deltaMessage ### Anfrage zum Aktualisieren des gemeldeten Zustands newPayload = '{"state":{"reported":' + 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
####### Dingdefinition
# AWS IoT-Zertifikat basierende Verbindung
myMQTTClient = AWSIoTMQTTClient("DBpyAWS1116") myMQTTClient.configureEndpoint("a28rqf8gnpw7g.iot.us-west-2.amazonaws.com", 8883) myMQTTClient.configureCredentials("/home/linaro/shared/AWcrt/root-CA., "/home/linaro/shared/AWS/"SUA CHAVE"-private.pem.key", "/home/linaro/shared/AWS/"SEU CERTIFICADO"-certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing(- 1) # Unendlich offline Publish Queuing myMQTTClient.configureDrainingFrequency(2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout(10) # 10 sec myMQTTClient.configureMQTTOperationTimeout(5) # 5 sec #connect and publish myMQTTClient.connect() myMQTTClient.publish(" coisajsb", "verbunden", 0)
########################
####### Schattendefinition
# AWSIoTMQTTShadowClient initiieren
myAWSIoTMQTTShadowClient = Keine myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient("DBpyAWS1116") myAWSIoTMQTTShadowClient.configureEndpoint("SEU END-POINT.us-west-2.amazonaws.com", 8883) myAWSIoTMQTTShadowClient/Configure/Shadowshare 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.configureMQTTOperationTimeout(5) # 5 sec
# Verbinden mit AWS IoT
myAWSIoTMQTTShadowClient.connect()
# Erstellen Sie ein deviceShadow mit dauerhaftem Abonnement
deviceShadowHandler = myAWSIoTMQTTShadowClient.createShadowHandlerWithName("DBpyAWS1116", True) shadowCallbackContainer_Bot = shadowCallbackContainer(deviceShadowHandler)
# Auf Deltas hören
deviceShadowHandler.shadowRegisterDeltaCallback(shadowCallbackContainer_Bot.customShadowCallback_Delta)
#########################
myMQTTClient.publish("$aws/things/DBpyAWS1116/shadow/update", '{"state":{"desired": {"SystemStatus":1, "SisIlumi":0, "AC":0, "Garagem": "Fechada", "Temperatura": 25, "Luminosidade": 123}}}', 0)
if _name_ == "_main_":
mit GPIO(Pins) als gpio: run(gpio)
Schritt 6: Finalisierung
Apos ter Concluido os Anteriores, Deve-Se Inicializar o Sistema Executando o Código Fornecido no Passo 5 e Inicializar o App através do Ionic, Usando oder Comando Ionic dienen.
Für eine mögliche Fehlerbehebung, empfehlen Sie die Verwendung eines MQTT-Client-Tests für AWS, sowie eine mögliche Überprüfung als Benutzer, die das Dragonboard und die Aktualisierung der AWS-Cloud-Formate verwenden:
Empfohlen:
So starten Sie Ihren Computer jeden Tag oder zu jeder Zeit automatisch – wikiHow
So starten Sie Ihren Computer automatisch jeden Tag oder wann immer: In dieser Anleitung erfahren Sie, wie Sie Ihren Computer jeden Tag zu einer bestimmten Zeit automatisch starten lassen. Dies ist auch meine erste Anleitung
So starten Sie einen Gaming-Live-Stream: 9 Schritte
So starten Sie einen Gaming-Live-Stream: Diese Anleitung zeigt Ihnen, wie Sie einen Stream mit der Open Broadcaster Software oder OBS einrichten Um Ihren Live-Stream mit OBS zu starten, benötigen Sie die folgenden Dinge Ein Computer, der Ihr Spiel ausführen kann und die Streaming-Software
So starten Sie ein ERSTES Robotik-Team – wikiHow
So starten Sie ein FIRST Robotics-Team: Wenn wir nicht gerade basteln oder Makerspaces für Bibliotheken entwerfen, arbeiten wir mit FIRST-Teams zusammen. Begeisterte Fans und Unterstützer, wir arbeiten seit fast 10 Jahren mit FIRST zusammen, von der Bereitstellung von Snacks im FIRST LEGO League-Team unseres Sohnes, als er
So starten Sie Ihr eigenes Graffiti-Forschungslabor: 6 Schritte (mit Bildern)
So starten Sie Ihr eigenes Graffiti-Forschungslabor: Es ist einfach, Ihr eigenes gefälschtes Labor zu gründen, aber wir werden versuchen, es in diesen sechs pompösen Schritten schwierig erscheinen zu lassen
So starten Sie eine Home-Website/einen Server – wikiHow
So starten Sie eine Home-Website/einen Server: Ich habe dies über das Wochenende gemacht, weil mir langweilig wurde, also viel Spaß