Satura rādītājs:

Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 soļi
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 soļi

Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 soļi

Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 soļi
Video: Filme Super Erupçao dublado HD 2024, Novembris
Anonim
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos

Projeto acadêmico para atender cenário de colaboração através da internet para divulgação de desastres naturais, onde 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 comportation mqtt para acionamento do alerta.

Diante a Iespējamie de diversos meios de entrada na solução, Caberá um centro de de operações avaliar se a informationção esta koreta evitando assim falsos-positivos dos dispositivos automatizado e avaliar a possibleilidade de factenews. Tal tomada de decisão é essential diante ao pânico que um alarme falso pode gerar.

Como solução de alerta de mensagem estamos apsvērumi vai lietošanas noteikumi SMS, alerta através de cliente mqtt, e -pasts, sirēna un twitter.

AWS, izmantojot IOT CORE, EC2 un SNS, atkārtotas izmantošanas kontūras

Sensores da DragonBord 410c

clientes android mqtt

Sendo todo desenvolvido em python

Autores:

Diego Fernandes dos Santos - [email protected]

Gabriels Piovani Moreira dos Santos - [email protected]

Gustavo Venancio Luz - [email protected]

Paulo Henrique Almeida Santos - [email protected]

1. darbība: 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 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 segments, and todo novo alerta detectado decresce o contador em 20 segundos.

programma rodando dentro da dragon borad 410c

#!/usr/bin/python3import spidev no libsoc importēt gpio no laika importēšanas miega

# Importa lib para comunicacao com MOSQUITTO importēt paho.mqtt.client kā 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 izmantojiet portu ADC2, izmantojiet konfigurāciju, lai konfigurētu kanālu_select2 = [0x01, 0xA0, 0x00]

def on_connect (mqttc, obj, karogi, 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 ("Ziņojuma ID:" + str (vidū) + "\ n") caurlaide

# 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

pub = mqtt. Client ("grupo3")

# Conexao com localhost, uma vez que testamos fora do labredes. broker_address = "34.230.74.201"

pub.connect (broker_address)

ja _name _ == '_ main_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)

ar gpio.request_gpios ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0, savukārt contador <50: gpio_cs.set_high () miega (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] un 0xff) adc_value = ((((adc_value * 5)) / 1024) - 0,5) * 100 drukāt ("Temperatūra: % f / n" % adc_value) pub.publish ("temperatūra", str (adc_value)) # teste para acionar contador do alarme, 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 miega režīms (1)

gpio_cs.set_high () miegs (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] un 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%

ja adc_value2_old == 0: adc_value2_old = adc_value2 ja adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_value2 miega

2. darbība: Sensores Digitais - Publicação

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

código para publicação dos sensores digitalis

Os sensores digitalis 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 vai botāniskais preses spiediens un infekcijas regresīva un iniciada.

programma rodando dentro da dragon borad 410c

no libsoc_zero. GPIO importēšanas poga no libsoc_zero. GPIO importēšana Noliekt no laika importēšanas miega importēšana paho.mqtt.client kā mqtt importēšanas sistēma

def on_connect (mqttc, obj, karogi, 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 ("Ziņojuma ID:" + str (vidū) + "\ n") pass

def detectaTilt (): count = 0 sleep_count = 0, kamēr True: try: tilt.wait_for_tilt (1), izņemot: sleep_count += 1 else: count += 1 sleep_count += 1, ja sleep_count> 999: break

print ("count:", count), ja skaits> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (skaits)) # 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

topic = "grupo3"

# Conexao com localhost, uma vez que testamos fora do labredes. mqttc.connect ("34.230.74.201", 1883)

noliekt = noliekt ('GPIO-A')

btn = Poga ('GPIO-C')

kamēr True: miega režīms (0,25) detectaTilt (), ja btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") drukāt ("Botao ON") miega režīms (1) pub = mqttc.publish ("PANICO "," OFF ") # else: # pub = mqttc.publish (" PANICO "," OFF ") # print (" Botao OFF ")

3. solis: Codigo Para Acionamento Sirene

Codigo Para Acionamento Sirene
Codigo Para Acionamento Sirene

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

# Importa lib para comunicacao com MOSQUITTOimport paho.mqtt.client as mqtt

no libsoc_zero. GPIO importa gaismas diode no laika importēšanas miega led = LED ('GPIO-E') #led.off ()

# Define o que fazer ao conectar def on_connect (klients, obj, karodziņi, rc): print ("ConexÃÆ'à £ £ estabelecida com broker")

# Define o que fazer ao receber uma mensagem def on_message (client, obj, message): print ("LED" + str (message.payload.decode ("utf-8")))) ja str (message.payload.decode ("utf-8")) == "on": print ("Sirene ligada") led.on () else: print ("Sierene apagada") led.off ()

# IP do broker 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

# Nepaaugstiniet tēmu, lai abonētu ("SIRENE", qos = 0)

# Loop para escuta sub.loop_forever ()

4. solis: Codigo Twitter - ziņa

Codigo Twitter - ziņa
Codigo Twitter - ziņa
Codigo Twitter - ziņa
Codigo Twitter - ziņa

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

virtuālais kods AWS EC2

#!/usr/bin/env python #---------------------------------------- ------------------------------- # twitter-post-status #-ievieto statusa ziņojumu savā laika skalā # --- -------------------------------------------------- ------------------ importēt paho.mqtt.subscribe as subscribe

importa laiks

no twitter importa *

#------------------------------------------------- ---------------------- # kādam vajadzētu būt mūsu jaunajam statusam? #------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"

#------------------------------------------------- ---------------------- # ielādējiet mūsu API akreditācijas datus # ---------------------- ------------------------------------------------ importēt sys sys.path.append (".") importēšanas konfigurācija

#------------------------------------------------- ---------------------- # izveidot twitter API objektu # ---------------------- ------------------------------------------------ twitter = Twitter (auth = OAuth ('senha removeida))

#------------------------------------------------- ---------------------- # ievietojiet jaunu statusu # twitter API dokumenti: https://dev.twitter.com/rest/reference/post/statu… #------------------------------------------------- ----------------------

kamēr 1: m = abonēt.vienkāršs ("twitteralarme", saimniekdatora nosaukums = "172.31.83.191", saglabāts = nepatiess), ja m.topic == "twitteralarme" un str (m.payload.decode ("utf-8")) == "ieslēgts": rezultāti = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("atjaunināts statuss: % s" % new_status)

5. solis: Centro De Comando

Centro De Comando
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. Operatoru podu atcelšana vai envio vai acionar o envio imediato do alerta.

Lai izmantotu datora dēli, izmantojiet Android tālruni, lai uzzinātu par operētājsistēmas centru.

virtuālais kods AWS EC2

importēt paho.mqtt.client kā pahoimport paho.mqtt.abonēt kā abonēt importēt paho.mqtt.publicēt kā publicēt importēt json importa laiku importēt sešus importēt ssl no laika importēšanas miega

tēmas = ['#']

gatilho = 0 hora_disparo = 0 public.single ("ACIONADO", "OFF", qos = 1, resursdatora nosaukums = "172.31.83.191") public.single ("sensors1", "IZSLĒGTS", qos = 1, saimniekdatora nosaukums = "172.31.83.191 ") publicēt.single (" sensors2 "," IZSLĒGTS ", qos = 1, saimniekdatora nosaukums =" 172.31.83.191 ")

connflag = Nepareizi

def on_connect (klients, lietotāja dati, karodziņi, rc): global connflag connflag = True print (connflag) print ("Savienojuma atgrieztais rezultāts:" + str (rc))

def on_message (klients, lietotāja dati, ziņojums): # print ("teste") print (msg.topic+""+str (msg.payload))

def on_log (klients, lietotāja dati, līmenis, 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-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, šifrēšanas avoti), keepalive = 60) mqttc.loop_start ()

kamēr 1: hora = laiks.laiks () miegs (.1) public.single ("LEDTERREMOTO", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31.83.191")

# if connflag == True: # mqttc.publish ("message", json.dumps ({'message': "TERREMOTO"}), qos = 1) if gatilho == 1: publis.single ("TEMPO", str. (apaļš (hora_disparo-hora, 0)), qos = 1, resursdatora nosaukums = "172.31.83.191") publicēt.single ("LEDTERREMOTO", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31.83.191") cits: publicēt.single ("TEMPO", "99", qos = 1, resursdatora nosaukums = "172.31.83.191") # print ("") if (hora> hora_disparo) and (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 (" ziņojums ", json.dumps (" TERREMOTO - PROCURE UMA ZONA SEGURA "), qos = 1)

# print ("teste SNS") # public.single ("LED", "ieslēgts", saimniekdatora nosaukums = "172.31.83.191") public.single ("SIRENE", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31. 83.191 ") publicēt.single (" TEMPO "," TERREMOTO ", qos = 1, resursdatora nosaukums =" 172.31.83.191 ") publiskot.single (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ") public.single ("twitteralarme", "ieslēgts", qos = 1, saimniekdatora nosaukums = "172.31.83.191") public.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, resursdatora nosaukums = "172.31.83.191 ") gatilho = 0 miega (5) m = abonēt.vienkāršs (tēmas, saimniekdatora nosaukums =" 172.31.83.191 ", saglabāts = nepatiess), ja m.topic ==" ACIONADO "un str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print ("ancelado"), ja m.topic == "medico" un str (m.payload.decode ("utf-8")) == "on ": if connflag == True: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) ja m.topic ==" bombeiro "un str (m.payload.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) ja m.topic == " ambulancia "un str (m.payloa d.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO"), qos = 1) ja m. topic == "urgente" un str (m.payload.decode ("utf-8")) == "on": public.single ("ACIONADO", 1, qos = 1, resursdatora nosaukums = "172.31.83.191") gatilho = 1 hora_disparo = laiks.laiks ()+5, ja str (m.payload.decode ("utf-8")) == "ON": ja gatilho == 1: print ("acelerado 20") hora_disparo = hora_disparo -20 cits: print ("Acionado") publiskot.single ("ACIONADO", 1, qos = 1, resursdatora nosaukums = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60

6. solis: Codigo Twitter - Monitoração

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

código monitoração do twitter, pesquisa post na regiao de sorocaba

virtuālais kods AWS EC2

n

no twitter importēt *importēt konfigurāciju importēt paho.mqtt.publish kā publicēt

no laika importēt miegu

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

platums = -23,546211 garums = -46,637840 alcance = 50 resultados = 1

public.single ("twitter_alarme", "ON", resursdatora nosaukums = "34.230.74.201")

result_count = 0 last_id = Nav karoga = 0

i diapazonā (60): #----------------------------------------- ------------------------------ # veiciet meklēšanu, pamatojoties uz platumu un garumu # twitter API dokumenti: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- mēģiniet: query = twitter.search.tweets (q = "#Terremoto", ģeokods = " %f, %f, %dkm" %(platums, garums, alcance), max_id = last_id) print ("leu")

izņemot: drukāt ("erro acesso twitter") pārtraukums

rezultātam vaicājumā ["statuses"]:

#------------------------------------------------- ---------------------- # apstrādājiet rezultātu tikai tad, ja tam ir ģeogrāfiska atrašanās vieta # ----------------- -------------------------------------------------- ---- if result ["geo"]: result_count += 1 last_id = result ["id"] miega (1) if result_count == resultados: flag += 1 publiskot.single ("twitter_alarme", "ON", resursdatora nosaukums = "34.230.74.201") publicēt.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") pārtraukums

7. darbība: Estrutura AWS

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

Izmantojiet maquina virtuālo rodando ubuntu un estrutura AWS EC2

Utilizamos a AWS IOT CORE para vai serviss de MQTT on one configuraramos as aõões conforme o tipo de mensagem

Lietotāju tēmas, kas saistītas ar AWS SNS que eram acionados pelo AWS IOT CORE

Ieteicams: