Sisukord:
- Samm: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- 2. samm: Sensores Digitais - Publicação
- 3. samm: Codigo Para Acionamento Sirene
- 4. samm: Codigo Twitter - postitus
- Samm: Centro De Comando
- 6. samm: Codigo Twitter - Monitoração
- Samm: Estrutura AWS
Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Projeto acadêmico para atender cenário de colaboração através da internet para divulgação de desastres naturais, on será possível and detecção dos acontecimentos através de sensores IOT de temperatura, luminosidade, oscilação (tilte) e botão de pânico Ainda no cenário de colaboração prevemos integração com o Twitter and aplicativos com suporte mqtt para acionamento do alerta.
Kui teil on võimalik lahendada mitmekülgne lahendus, siis on võimalik, et see on avalikult kättesaadav ja teave on korrektne, kui see on falsos-positivos dos dispositivos automaatne ja avalik. Tal tomada de decisão é oluline diante ao pânico que um alarme falso pode gerar.
Como solução de alerta de mensagem estamos kaalub või kasutab envio de SMS, alerta através de cliente mqtt, email, sirene e twitter.
AWS, sealhulgas IOT CORE, EC2 ja SNS, korduskontuuri kasutamine
Sensores da DragonBord 410c
klientide android mqtt
Saada tõepoolest desenvolvido em python
Autores:
Diego Fernandes dos Santos - [email protected]
Gabriel Piovani Moreira dos Santos - [email protected]
Gustavo Venancio Luz - [email protected]
Paulo Henrique Almeida Santos - [email protected]
Samm: Dragonbord 410c - Publicação Dos Sensores - Analogicos
Abaixo või codigo de publicação dos sensores analógicos, os sensores de temperatura and luminosidade estão configurados para que assim que detectarem uma variação fora do padrão pré estabelecido enviarem um alerta através do protocolo mqtt sinalizando um evento.
Este alerta começa a contagem regressiva que pode ser suspensa ou acelerada pelo operador.
O contador para o alerta começa contagem regressiva em 60 segment, and todo novo alerta detectado decresce o contador em 20 segundos.
programm rodando dentro da dragon borad 410c
#!/usr/bin/python3import spidev from libsoc import gpio from time import sleep
# Importa lib para comunicacao com MOSQUITTO impordi paho.mqtt.client kui mqtt
spi = spidev. SpiDev () spi.open (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8
#Usando a porta ADC1 channel_select1 = [0x01, 0x80, 0x00]
#Para kasuta porta ADC2 -d või kasuta segu konfiguratsioonis channel_select2 = [0x01, 0xA0, 0x00]
def on_connect (mqttc, obj, lipud, rc): print ("rc:" + str (rc))
def on_message (mqttc, obj, msg): print (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): print ("Sõnumi ID:" + str (keskel) + "\ n") pass
# Criamos o klient ja setamos suas configuracoes mqttc = mqtt. Client ()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish
pub = mqtt. Client ("grupo3")
# Conexao com localhost, uma vez que testamos fora do labredes. broker_address = "34.230.74.201"
pub.connect (broker_address)
kui _nimi _ == '_ main_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)
koos gpio.request_gpios ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0, samas kui contador <50: gpio_cs.set_high () uni (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select1) gpio) contador = contador + 1 adc_value = (rx [1] << 8) & 0b1100000000 adc_value = adc_value | (rx [2] & 0xff) adc_value = ((((adc_value * 5) / 1024) - 0,5) * 100 print ("Temperatuur: % f / n" % adc_value) pub.publish ("temperatuur", str (adc_value)) # teste para acionar contador do alarm, teste ultima leitura + 5%
if adc_value_old == 0: adc_value_old = adc_value if adc_value> (adc_value_old*1.05): pub.publish ("ALARME", "ON") print ("Alarmado temperatura") adc_value_old = adc_value sleep (1)
gpio_cs.set_high () uni (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select2) gpio_cs.set_high () contador = contador + 1 adc_value2 = (rx [1] << 8) & 0b1100000000 adc_value2 = adc_value2 = adc (rx [2] & 0xff) adc_value2 = adc_value2 /10 print ("Luminosidade: % f / n" % adc_value2) pub.publish ("luminosidade", str (adc_value2))
# teste para acionar contador do alarm, teste ultima leitura + 50%
if adc_value2_old == 0: adc_value2_old = adc_value2 if adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_value2 uni
2. samm: Sensores Digitais - Publicação
código para publicação dos sensores digitais
Os sensores digitais neste projeto foram o tilte que detecta os tremores e o botão para simular o uso de um botão de pânico.
quando detectado uma anomalia or botão de pânico pressionado a contagem regressiva é iniciada.
programm rodando dentro da dragon borad 410c
from libsoc_zero. GPIO import Button from libsoc_zero. GPIO import Tilt from time import uni import paho.mqtt.client as mqtt import sys
def on_connect (mqttc, obj, lipud, rc): print ("Conectado" + str (rc))
def on_message (mqttc, obj, msg): print (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): # print ("Sõnumi ID:" + str (keskel) + "\ n") pass
def detectaTilt (): count = 0 sleep_count = 0 samas True: try: tilt.wait_for_tilt (1) välja arvatud: sleep_count += 1 else: count += 1 sleep_count += 1 if sleep_count> 999: break
print ("count:", count), kui arv> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (count)) # Criamos o client e setamos suas configuracoes mqttc = mqtt. Client ()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish
teema = "grupo3"
# Conexao com localhost, uma vez que testamos fora do do labredes. mqttc.connect ("34.230.74.201", 1883)
kallutamine = kallutamine ('GPIO-A')
btn = Nupp ('GPIO-C')
samas tõsi: uni (0,25) detaTilt () kui btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") print ("Botao ON") uni (1) pub = mqttc.publish ("PANICO "," OFF ") # else: # pub = mqttc.publish (" PANICO "," OFF ") # print (" Botao OFF ")
3. samm: Codigo Para Acionamento Sirene
SIRENE aktsioonivahendi kood, draakoniplaadi programm 410c
# Import import lib para comunicacao com MOSQUITTOimport paho.mqtt.client as mqtt
alates libsoc_zero. GPIO impordi LED ajast importimise unerežiimi LED = LED ('GPIO-E') #led.off ()
# Defineeri o que fazer ao conectar def on_connect (klient, obj, lipud, rc): print ("ConexÃÆ'à £ £ estabelecida com broker")
# Määrake o que fazer ao vastuvõtja uma mensagem def on_message (klient, obj, sõnum): print ("LED" + str (message.payload.decode ("utf-8"))) if str (message.payload.decode ("utf-8")) == "on": print ("Sirene ligada") led.on () else: print ("Sierene apagada") led.off ()
# IP -vahendaja broker_address = "34.230.74.201"
# Cria o cliente sub = mqtt. Client ("grupo3")
sub.connect (broker_address)
sub.on_message = on_message sub.on_connect = on_connect
# Suurendage teema puudumist alam tellimiseks ("SIRENE", qos = 0)
# Loop para escuta sub.loop_forever ()
4. samm: Codigo Twitter - postitus
Código para publicação do twitter assim que acionado o alarmme.
virtuaalne kood AWS EC2 virtuaalseks
#!/usr/bin/env python #---------------------------------------- ------------------------------- # twitter-post-status #-postitab olekusõnumi teie ajajoonele # --- -------------------------------------------------- ------------------ import paho.mqtt.subscribe as subscribe
impordi aeg
Twitteri impordist *
#------------------------------------------------- ---------------------- # milline peaks olema meie uus staatus? #------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"
#------------------------------------------------- ---------------------- # laadige meie API mandaat # ---------------------- ------------------------------------------------ import sys sys.path.append (".") impordi konfiguratsioon
#------------------------------------------------- ---------------------- # loo twitter API objekt # ---------------------- ------------------------------------------------ twitter = Twitter (auth = OAuth ('senha removeida))
#------------------------------------------------- ---------------------- # postitage uus olek # twitter API dokumendid: https://dev.twitter.com/rest/reference/post/statu… #------------------------------------------------- ----------------------
samas kui 1: m = tellida.lihtne ("twitteralarme", hostname = "172.31.83.191", säilitatud = vale), kui m.topic == "twitteralarme" ja str (m.payload.decode ("utf-8")) == "on": tulemused = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("uuendatud olek: % s" % new_status)
Samm: Centro De Comando
semper que acionado um dispositivo manual or detectado um alerta manual do usuário é acionada uma contagem regressiva para envio de mensagem. O operaator pode tühistaja o envio ou acionar o envio imediato do alerta.
Kui kasutate tahvelarvutit, kasutage androidi telefoni, et luua kommertskeskus.
virtuaalne kood AWS EC2 virtuaalseks
import paho.mqtt.client kui pahoimport paho.mqtt.subscribe as subscribe import paho.mqtt.publish as avaldamine import json import aeg import kuus import ssl ajast importimise unerežiimist
teemad = ['#']
gatilho = 0 hora_disparo = 0 publis.single ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") publis.single ("sensor1", "OFF", qos = 1, hostname = "172.31.83.191 ") publis.single (" sensor2 "," OFF ", qos = 1, hostname =" 172.31.83.191 ")
connflag = Vale
def on_connect (klient, kasutajaandmed, lipud, rc): global connflag connflag = True print (connflag) print ("Ühenduse tagastatud tulemus:" + str (rc))
def on_message (klient, kasutajaandmed, sõnum): # print ("teste") print (msg.topic+""+str (msg.payload))
def on_log (klient, kasutajaandmed, tase, buf): print (msg.topic+""+str (msg.payload))
mqttc = paho. Client ("Maakler_MSG") mqttc.on_connect = on_connect mqttc.on_message = on_message
awshost = "data.iot.us-east-1.amazonaws.com" awsport = 8883 clientId = "a2rczvc6ni8105" thingName = "Ufscar2018" caPath = "aws-iot-rootCA.crt" certPath = "9e85dfd42a-certificate.pem. crt "keyPath =" 9e85dfd42a-private.pem.key "mqttc.tls_set (caPath, certfile = certPath, keyfile = keyPath, cert_reqs = ssl. CERT_REQUIRED, tls_version = ssl. PROTOCOL_TLSv1_2, šifrimisühendused), keepalive = 60) mqttc.loop_start ()
samas kui 1: hora = time.time () uni (.1) publis.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191")
# if connflag == True: # mqttc.publish ("message", json.dumps ({'message': "TERREMOTO"}), qos = 1) if gatilho == 1: publis.single ("TEMPO", str (ümmargune (hora_disparo-hora, 0)), qos = 1, hostname = "172.31.83.191") publis.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") else: avaldamine.single ("TEMPO", "99", qos = 1, hostname = "172.31.83.191") # print ("") if (hora> hora_disparo) ja (gatilho == 1): # print ("TERREMOTO") # print (connflag) if connflag == True: # mqttc.publish ("message", json.dumps ({'message': "TERREMOTO"}), qos = 1) # mqttc.publish ("message", "TERREMOTO" ", qos = 1) mqttc.publish (" sõnum ", json.dumps (" TERREMOTO - PROCURE UMA ZONA SEGURA "), qos = 1)
# print ("teste SNS") # publis.single ("LED", "on", hostname = "172.31.83.191") publis.single ("SIRENE", "on", qos = 1, hostname = "172.31. 83.191 ") publis.single (" TEMPO "," TERREMOTO ", qos = 1, hostinimi =" 172.31.83.191 ") publis.single (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ") publis.single ("twitteralarme", "on", qos = 1, hostname = "172.31.83.191") publis.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, hostname = "172.31.83.191 ") gatilho = 0 uni (5) m = tellimine.lihtne (teemad, hostinimi =" 172.31.83.191 ", säilitatud = vale), kui m.topic ==" ACIONADO "ja str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print (" tühistamine "), kui m.topic ==" medico "ja str (m.payload.decode (" utf-8 ")) ==" on ": if connflag == True: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) if m.topic ==" bombeiro "ja str (m.payload.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) kui m.topic == " ambulancia "ja str (m.payloa d.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO"), qos = 1) kui m. topic == "urgente" ja str (m.payload.decode ("utf-8")) == "on": publis.single ("ACIONADO", 1, qos = 1, hosti nimi = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+5 if str (m.payload.decode ("utf-8")) == "ON": kui gatilho == 1: print ("acelerado 20") hora_disparo = hora_disparo -20 muu: print ("Acionado") publis.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60
6. samm: Codigo Twitter - Monitoração
código monitoração teha twitter, pesquisa post na regiao de sorocaba
virtuaalne kood AWS EC2 virtuaalseks
n
alates twitter import *import konfiguratsiooni import paho.mqtt.publish as avaldada
ajast importige uni
twitter = Twitter (auth = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))
laiuskraad = -23,546211 pikkuskraad = -46,637840 alcance = 50 resultados = 1
public.single ("twitter_alarme", "ON", hostname = "34.230.74.201")
result_count = 0 last_id = Puudub lipp = 0
i jaoks vahemikus (60): #----------------------------------------- ------------------------------ # tehke otsing laius- ja pikkuskraadi alusel # twitter API dokumendid: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- proovige: query = twitter.search.tweets (q = "#Terremoto", geokood = " %f, %f, %dkm" %(laius-, pikkus-, alcance), max_id = last_id) print ("leu")
välja arvatud: print ("erro acesso twitter") paus
päringu tulemuse ["olekud"] jaoks:
#------------------------------------------------- ---------------------- # töödelge tulemust ainult siis, kui sellel on geograafiline asukoht # ----------------- -------------------------------------------------- ---- kui tulemus ["geo"]: result_count += 1 last_id = result ["id"] sleep (1) if result_count == resultados: flag += 1 publis.single ("twitter_alarme", "ON", hostname = "34.230.74.201") publis.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") break
Samm: Estrutura AWS
Kasutage virtuaalseid maquina virtuaalseid seadmeid AWS EC2
Kasutusvõimalused ja AWS IOT CORE parameetrite või MQTT teenuste konfiguratsiooni jaoks
Kasutusalade teemad AWS SNS -i jaoks, AWS IOT CORE
Soovitan:
Comando Por Voz - DragonBoard410c: 5 sammu
Comando Por Voz - DragonBoard410c: Este guia ir á Sisestage installeerija ja seadistaja või programm Julius junto com o Coruja, que s ã o respectivamente um program de reconhecimento de voz e o modelo ac ú stico em Portugu ê s. Vantagem da utiliza ç ã o do Ju
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Centro De Cómputo Para Niños Con Raspberry Pi: 7 sammu
Centro De Cómputo Para Niños Con Raspberry Pi: Estos ser á n los primeros pasos de la Raspberry Pi y para ello necesitaremos: Raspberry Pi 2 Adapter de red a micro USB Tarjeta micro SD (de 8 GB) Cable HDMI Cargador Rat ó n Teclado para computadoraEn caso de contar con un Kit de inicio