Përmbajtje:

Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 hapa
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 hapa

Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 hapa

Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 hapa
Video: VULCÕES: PODER E DEVASTAÇÃO - DOCUMENTÁRIO COMPLETO EM HD 2024, Korrik
Anonim
Centro De Comando Emergjencia - Erupção De Vulcão E Terremotos
Centro De Comando Emergjencia - Erupção De Vulcão E Terremotos

Projekto acadêmico para atender cenário de colaboração através për internet për ndarjen e desastres natyrais, në mënyrë që të mund të gjeni një zbulim të acontecimentos através de sensores IOT de temperatura, luminosidade, oscilação (tilte)o) e boto. Ainda no cenário de colaboração prevemos integração com në Twitter dhe aplikacionet që suportojnë mqtt para acionamento do alerta.

Diante një mundësi të ndryshme për të hyrë në zgjidhjen e problemit, në qendrën e operimit të avaliarit mund të zbulohet se është e mundur të vëzhgoni një gënjeshtër të gabuar dhe pozitiv të dozave të disponueshme të automatizimit dhe avaliarit të mundshëm të fakeews. Tal tomada de decisão é crucial di crucial crucial o o o o o o o

Zgjidhni zgjidhjen e alarmit për menagjimin e vlerësimit të përdorimit të ambjenteve të SMS, njoftimin e klientëve të klientëve, email, sirene dhe twitter.

Ju mund të përdorni të dhënat e AWS që përfshijnë IOT CORE, EC2 e SNS

Sensores da DragonBord 410c

klientët android mqtt

Sendo todo desenvolvido em python

Autore:

Diego Fernandes dos Santos - [email protected]

Gabriel Piovani Moreira dos Santos - [email protected]

Gustavo Venancio Luz - [email protected]

Paulo Henrique Almeida Santos - [email protected]

Hapi 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos

Dragonbord 410c - Publicação Dos Sensores - Analogicos
Dragonbord 410c - Publicação Dos Sensores - Analogicos

Abaixo o codigo de publicação dos sensores analógicos, os sensores de temperatura e luminosidade estão configurados para que assim que detearem uma variação fora do padrão pré estabelecido enviarem um alerta através do protocolo mqtum sinalizand

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 seguntos, dhe todo novo alerta deteado decresce o contador em 20 segundos.

programa rodando dentro da dragon borad 410c

#!/usr/bin/python3import spidev nga libsoc import gpio nga koha import gjumi

# Importo lib para komunicacao com MOSQUITTO import paho.mqtt.klient si mqtt

spi = spidev. SpiDev () spi.hapur (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 përdor një porta ADC2 përdorni ose zgjidhni veturën e konfigurimitçàchannel o channel_select2 = [0x01, 0xA0, 0x00]

def on_connect (mqttc, obj, flamuj, 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 ("Id i mesazhit:" + str (mes) + "\ n")

# Criamos ose klient dhe setamos suas configuracoes mqttc = mqtt. Klienti ()

mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish

pub = mqtt. Client ("grupo3")

# Conexao com localhost, ju duhet të testoni për labredes. broker_adresa = "34.230.74.201"

pub.connect (broker_adresa)

nëse _name _ == '_ kryesore_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)

me gpio.request_gpios ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0 ndërsa contador <50: gpio_cs.set_high () sleep (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select1) gp) 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 ("Temperatura: % f / n" % adc_value) pub.publish ("temperatura", str (adc_value)) # teste para acionar contador do alarme, teste ultima leitura + 5%

nëse adc_value_old == 0: adc_value_old = adc_value nëse adc_value> (adc_value_old*1.05): pub.publish ("ALARME", "ON") print ("Alarmado temperatura") adc_value_old = adc_value fle (1)

gpio_cs.set_high () sleep (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_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 alarme, teste ultima leitura + 50%

nëse adc_value2_old == 0: adc_value2_old = adc_value2 nëse adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_value2 fle (3)

Hapi 2: Sensores Digitais - Publicação

Sensores Digitais - Publicação
Sensores Digitais - Publicação

código para publicação dos sensores digitais

Os sensores digitais neste projeto foram o tilte que detea os tremores e o botão para simular o uso de um botão de pânico.

quando detector uma anomalia ou botão de pânico pressionado a contagem regressiva é iniciada.

programa rodando dentro da dragon borad 410c

nga libsoc_zero. GPIO Butoni i importit nga libsoc_zero. GPIO import Tilt from time import import import paho.mqtt.klient si mqtt import sys

def on_connect (mqttc, obj, flamuj, 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 ("Id i mesazhit:" + str (në mes) + "\ n")

def deteaTilt (): count = 0 sleep_count = 0 while True: try: tilt.wait_for_tilt (1) përveç: sleep_count += 1 tjetër: count += 1 count_count + +1 nëse sleep_count> 999: pushim

printoni ("numëroni:", numëroni) nëse numëroni> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (count)) # Criamos ose klient dhe setamos suas konfiguron mqttc = mqtt. Klienti ()

mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish

tema = "grupo3"

# Conexao com localhost, ju duhet të testoni për labredes. mqttc.connect ("34.230.74.201", 1883)

anim = Pjerrësia ('GPIO-A')

btn = Butoni ('GPIO-C')

ndërsa True: fle (0.25) detectTilt () nëse btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") print ("Botao ON") fle (1) pub = mqttc.publish ("PANICO "," OFF ") # else: # pub = mqttc.publish (" PANICO "," OFF ") # print (" Botao OFF ")

Hapi 3: Codigo Para Acionamento Sirene

Codigo Para Acionamento Sirene
Codigo Para Acionamento Sirene

Codigo para subscrição para acionamento da SIRENE, programi rodando dentro da dragon board 410c

# Importa lib para comunicacao com MOSQUITTOimport paho.mqtt.klient si mqtt

nga libsoc_zero. GPIO import LED nga koha e importit gjumi led = LED ('GPIO-E') #led.off ()

# Define o que fazer ao conectar def on_connect (klient, obj, flamuj, rc): print ("Conex࣠o estabelecida com broker")

# Përkufizo o fazën ose marrjen e menaxherit për mesazhin në mesazh (klient, obj, mesazh): print ("LED" + str (message.payload.decode ("utf-8"))) if str (message.payload.decode ("utf-8")) == "on": print ("Sirene ligada") led.on () tjetër: print ("Sierene apagada") led.off ()

# IP do broker broker_address = "34.230.74.201"

# Cria ose klienti nën = mqtt. Client ("grupo3")

nën.lidhje (adresa e ndërmjetësit)

sub.on_message = on_message sub.on_connect = on_connect

# Mos rris asnjë temë nën. Abonohu ("SIRENE", qos = 0)

# Loop para escuta sub.loop_forever ()

Hapi 4: Codigo Twitter - Postoni

Codigo Twitter - Posto
Codigo Twitter - Posto
Codigo Twitter - Posto
Codigo Twitter - Posto

Código para publicação do twitter assim que acionado o alarme.

kodi aktual është përdorur në sistemin virtual AWS EC2

#!/usr/bin/env python #-------------------------------------------- ---------------------------------- # twitter-post-status #-poston një mesazh statusi në afatin tuaj kohor # --- ------------------------------------------------------ ------------------ import paho.mqtt.subscribe as subscribe

koha e importit

nga importi i twitter *

#----------------------------------------------------- ---------------------- # cili duhet të jetë statusi ynë i ri? #----------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"

#----------------------------------------------------- ---------------------- # ngarkoni kredencialet tona API # ---------------------- ----------------------------------------------------- import sys sys.path.append (".") importo konfigurimin

#----------------------------------------------------- ---------------------- # krijo twitter API object # ---------------------- ------------------------------------------------- Cicëroj = Twitter (auth = OAuth ('senha removeida))

#----------------------------------------------------- ---------------------- # postoni një status të ri # twitter API docs: https://dev.twitter.com/rest/reference/post/statu… #----------------------------------------------------- ----------------------

ndërsa 1: m = subscribe.simple ("twitteralarme", hostname = "172.31.83.191", ruhet = False) nëse m.topic == "twitteralarme" dhe str (m.payload.decode ("utf-8")) == "on": results = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("statusi i përditësuar: % s" % new_status)

Hapi 5: Centro De Comando

Centro De Comando
Centro De Comando

sempre que acionado ose disponueshmëria e manualit ose zbulimi i tij dhe manuali i paralajmërimit të përdorimit të një acionade uma të infektimit të regresivës për mjedisin e menagjerimit. O operador pode cancellar o envio ou acionar o envio imediato do alerta.

Për të përdorur dasboard përdorimin e android dhe telefonin tuaj për të krijuar një mesazh të operimit në qendër të komandës.

kodi aktual është përdorur nga AWS EC2

import paho.mqtt.klient si pahoimport paho.mqtt.subscribe as subscribe import paho.mqtt.publikoj si publikoj import json kohë import import import gjashtë import ssl nga koha import gjumë

temat = ['#']

gatilho = 0 hora_disparo = 0 publikoj.single ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") publiko.single ("sensor1", "OFF", qos = 1, hostname = "172.31.83.191 ") boto.single (" sensor2 "," OFF ", qos = 1, hostname =" 172.31.83.191 ")

connflag = E pavërtetë

def on_connect (klienti, të dhënat e përdoruesit, flamujt, rc): global connflag connflag = Printimi i vërtetë i printimit (connflag) ("Rezultati i kthyer i lidhjes:" + str (rc))

def on_message (klienti, të dhënat e përdoruesit, msg): # print ("teste") print (msg.topic+""+str (msg.payload))

def on_log (klienti, të dhënat e përdoruesit, niveli, buf): print (msg.topic+""+str (msg.payload))

mqttc = paho. Client ("Broker_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-certifikatë.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, awsct_tcs, tcSc,_tlSv1, awa_tlSv1, awa_tLSv1, awa_tlSv1, awa_tlSv1 (aw), Keepalive = 60) mqttc.loop_start ()

ndërsa 1: hora = koha.kohë () gjumi (.1) publikoj.teke ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191")

# if connflag == E vërtetë: # mqttc.publish ("mesazh", json.dumps ({'message': "TERREMOTO"}), qos = 1) nëse gatilho == 1: publiko.single ("TEMPO", rr. (e rrumbullakët (hora_disparo-hora, 0)), qos = 1, emri i hostit = "172.31.83.191") boto.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") tjetër: publiko. e vetme ("TEMPO", "99", qos = 1, hostname = "172.31.83.191") # print ("") nëse (hora> hora_disparo) dhe (gatilho == 1): # print ("TERREMOTO") # print (connflag) nëse connflag == E vërtetë: # mqttc.publish ("mesazh", json.dumps ({'message': "TERREMOTO"}), qos = 1) # mqttc.publish ("mesazh", "TERREMOTO ", qos = 1) mqttc.publish (" mesazh ", json.dumps (" TERREMOTO - PROKURO UMA ZONA SEGURA "), qos = 1)

# print ("teste SNS") # published.single ("LED", "on", hostname = "172.31.83.191") published.single ("SIRENE", "on", qos = 1, hostname = "172.31. 83.191 ") published.single (" TEMPO "," TERREMOTO ", qos = 1, emri i hostit =" 172.31.83.191 ") published.ingle (" ACIONADO "," OFF ", qos = 1, emri i hostit =" 172.31.83.191 ") published.single ("twitteralarme", "on", qos = 1, hostname = "172.31.83.191") published.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, hostname = "172.31.83.191 ") gatilho = 0 gjumë (5) m = subscribe.simple (temat, emri i hostit =" 172.31.83.191 ", ruhet = False) nëse m.topic ==" ACIONADO "dhe str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print (" cancellado ") nëse m.topic ==" medico "dhe str (m.payload.decode (" utf-8 ")) ==" on ": if connflag == E vërtetë: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) nëse m.topic ==" bombeiro "dhe str (m.payload.decode ("utf -8")) == "on": nëse connflag == E vërtetë: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) nëse m.topic == " ambulancia "dhe rr (m. Payloa d.decode ("utf -8")) == "on": if connflag == E vërtetë: mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGJENCIA TERREMOTO"), qos = 1) nëse m. tema == "urgjente" dhe str (m.payload.decode ("utf-8")) == "on": published.single ("ACIONADO", 1, qos = 1, emri i hostit = "172.31.83.191") gatilho = 1 hora_disparo = koha.kohë ()+5 nëse str (m.payload.decode ("utf-8")) == "ON": nëse gatilho == 1: print ("acelerado 20") hora_disparo = hora_disparo -20 të tjera: print ("Acionado") published.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = kohë. Kohë ()+60

Hapi 6: Codigo Twitter - Monitoração

Codigo Twitter - Monitoração
Codigo Twitter - Monitoração

código monitoração për twitter, pesquisa postoni në rajonin e sorocaba

kodi aktual është përdorur nga AWS EC2

n

nga importi i twitter *import config import paho.mqtt.publikoni si publikoj

nga koha import gjumi

twitter = Twitter (auth = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))

gjerësi gjeografike = -23.546211 gjatësi gjeografike = -46.637840 alcance = 50 rezultate = 1

boto.single ("twitter_alarme", "ON", hostname = "34.230.74.201")

result_count = 0 last_id = Asnjë flamur = 0

për i në rang (60): #-------------------------------------------- ------------------------------ # kryeni një kërkim bazuar në gjerësinë dhe gjatësinë gjeografike # twitter API docs: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- provoni: query = twitter.search.tweets (q = "#Terremoto", gjeokodi = " %f, %f, %dkm" %(gjerësi, gjatësi, alcance), max_id = last_id) print ("leu")

përveç: print ("erro acesso twitter") pushim

për rezultat në pyetjen ["statuset"]:

#----------------------------------------------------- ---------------------- # përpunoni një rezultat vetëm nëse ka një gjeolokacion # ----------------- ------------------------------------------------------ ---- nëse rezultati ["gjeo"]: result_count += 1 last_id = rezultati ["id"] fle (1) nëse result_count == resultados: flamuri += 1 publiko.single ("twitter_alarme", "ON", emri i hostit = "34.230.74.201") boto.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") pushim

Hapi 7: Estrutura AWS

Estrutura AWS
Estrutura AWS
Estrutura AWS
Estrutura AWS
Estrutura AWS
Estrutura AWS

Shfrytëzoni uma maquina virtual rodando ubuntu dhe estrutura AWS EC2

Përdorni një AWS IOT CORE për shërbimet e MQTT në konfigurimin e mëparshëm si më parë në përputhje me tiparet e menaxherit

Përdorni tema për AWS SNS që dëshironi të përdorni AWS IOT CORE

Recommended: