สารบัญ:

Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 ขั้นตอน
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 ขั้นตอน

วีดีโอ: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 ขั้นตอน

วีดีโอ: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 ขั้นตอน
วีดีโอ: Full Movie | 惡魔教官竟然是曾經用生命保護我的人 💗 Chinese Television Dramas 2024, พฤศจิกายน
Anonim
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos

โครงการ acadêmico para atender cenário de colaboração através da internet para divulgação de desastres naturais, onde será possível a detecção dos acontecimentos através de sensores IOT de temperatura, luminosidade, oscilação () Ainda no cenário de colaboração prevemos integração com o Twitter และ aplicativos com สนับสนุน mqtt สำหรับการแจ้งเตือนในการแจ้งเตือน

Diante a possibilidade de Diversos meios de entrada na solução, caberá um centro de Operações avaliar se a informação esta correta evitando assim falsos-positivos dos dispositivos automatizado e สมัครรับข่าวสารปลอม Tal tomada de decisão éที่สำคัญ diante ao pânico que um alarme falso pode gerar.

Como แก้ปัญหาการเตือนผู้ชาย estamos พิจารณาถึงสภาพแวดล้อมทาง SMS, การแจ้งเตือนของลูกค้า mqtt, อีเมล, ไซรีนและทวิตเตอร์

โปรเจ็กต์ต่อกับ com uso de recursos da AWS รวม IOT CORE, EC2 e SNS

เซนเซอร์ DragonBord 410c

ลูกค้า android mqtt

Sendo todo desenvolvido em python

รถยนต์:

Diego Fernandes dos Santos – [email protected]

Gabriel Piovani Moreira dos Santos – [email protected]

กุสตาโว เวนันซิโอ ลุซ – [email protected]

Paulo Henrique Almeida Santos – [email protected]

ขั้นตอนที่ 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos

Dragonbord 410c - Publicação Dos Sensores - ระบบอนาล็อก
Dragonbord 410c - Publicação Dos Sensores - ระบบอนาล็อก

Abaixo o codigo de publicação dos sensores analógicos, os sensores de temperatura e luminosidade estão การกำหนดค่าสำหรับ que assim que detectarem uma Variação fora do padrão pré estabelecido enviarem um alerta através do protocoldozan mqt even sinali.

Este alerta começa a contagem regressiva que pode ser suspensa ou acelerada pelooperador

O contador para o alerta começa contagem regressiva em 60 seguntos, e todo novo alerta detectado decresce หรือ contador em 20 segundos.

โปรแกรม rodando dentro da dragon borad 410c

#!/usr/bin/python3import spidev จาก libsoc นำเข้า gpio จากเวลานำเข้าสลีป

# นำเข้า lib สำหรับ comunicacao com MOSQUITTO นำเข้า paho.mqtt.client เป็น mqtt

spi = spidev. SpiDev() spi.open(0, 0) spi.max_speed_hz=10000 spi.mode = 0b00 spi.bits_per_word = 8

#ใช้พอร์ตADC1 channel_select1=[0x01, 0x80, 0x00]

#Para ใช้พอร์ต ADC2 ใช้ o seguinte vetor de configuração channel_select2=[0x01, 0xA0, 0x00]

def on_connect(mqttc, obj, flags, rc): print("rc:" + str(rc))

def on_message(mqttc, obj, msg): พิมพ์ (msg.topic + " " + str(msg.qos) + " " + str(msg.payload))

def on_publish(mqttc, obj, mid): print("รหัสข้อความ: " + str(กลาง) + "\n") ผ่าน

# Criamos o ลูกค้าและ 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(นายหน้า_ที่อยู่)

ถ้า _name_=='_main_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)

ด้วย gpio.request_gpios([gpio_cs]): contador=0 adc_value_old=0 adc_value2_old=0 ในขณะที่ contador < 50: gpio_cs.set_high() sleep(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 พิมพ์("อุณหภูมิ: %f\n" % adc_value) pub.publish("temperatura", str(adc_value)) # teste para acionar contador do alarme, teste ultima leitura + 5%

ถ้า adc_value_old==0: adc_value_old=adc_value ถ้า adc_value > (adc_value_old*1.05): pub.publish("ALARME", "ON") พิมพ์ ("Alarmado temperatura") adc_value_old=adc_value sleep(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 (rx[2] & 0xff) adc_value2 = adc_value2 /10 พิมพ์ (" Luminosidade: %f\n" % adc_value2) pub.publish("luminosidade", str(adc_value2))

# teste para acionar contador do alarme, teste ultima leitura + 50%

ถ้า adc_value2_old==0: adc_value2_old=adc_value2 ถ้า adc_value2 > (adc_value2_old*1.5): pub.publish("ALARME", "ON") พิมพ์ ("Alarmado Luminosidade") adc_value2_old=adc_value2 sleep(3)

ขั้นตอนที่ 2: เซ็นเซอร์ Digitais - Publicação

เซ็นเซอร์ Digitais - Publicação
เซ็นเซอร์ Digitais - Publicação

código para publicação dos sensores ดิจิทัล

ระบบปฏิบัติการดิจิทัล 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 ou botão de pânico pressionado a contagem regressiva é iniciada. ตรวจฉี่

programa rodando dentro da dragon borad 410c

จาก libsoc_zero. GPIO นำเข้า Button จาก libsoc_zero. GPIO นำเข้า Tilt จากเวลานำเข้า sleep นำเข้า paho.mqtt.client เป็น mqtt import sys

def on_connect(mqttc, obj, flags, rc): print("Conectado" + str(rc))

def on_message(mqttc, obj, msg): พิมพ์ (msg.topic + " " + str(msg.qos) + " " + str(msg.payload))

def on_publish(mqttc, obj, mid): # print("รหัสข้อความ: " + str(กลาง) + "\n") ผ่าน

def detectaTilt(): count = 0 sleep_count = 0 while True: try:til.wait_for_tilt(1) ยกเว้น: sleep_count += 1 อื่น ๆ: count += 1 sleep_count += 1 if sleep_count > 999: break

print("count:", count) if count>200: pub = mqttc.publish("TERREMOTO", "ON") pub = mqttc.publish("SISMOGRAFO", str(count)) # Criamos o ลูกค้าและ setamos suas configuracoes mqttc = mqtt. Client()

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

หัวข้อ = "group3"

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

เอียง = เอียง ('GPIO-A')

btn = ปุ่ม ('GPIO-C')

ในขณะที่ True: sleep(0.25) detectaTilt() if btn.is_pressed(): pub = mqttc.publish("PANICO", "ON") print("Botao ON") sleep(1) pub = mqttc.publish("PANICO ", "OFF") # else: # pub = mqttc.publish("PANICO", "OFF") # print("Botao OFF")

ขั้นตอนที่ 3: Codigo Para Acionamento Sirene

Codigo Para Acionamento Sirene
Codigo Para Acionamento Sirene

Codigo para subscrição para acionamento da SIRENE, programa rodando dentro da dragon board 410c กระดานดำ

# นำเข้า lib สำหรับ comunicacao com MOSQUITTOนำเข้า paho.mqtt.client เป็น mqtt

จาก libsoc_zero. GPIO นำเข้า LED จากเวลานำเข้าสลีป led = LED('GPIO-E') #led.off()

# กำหนด o que fazer ao conectar def on_connect(client, obj, flags, rc): print("ConexÃÃ'£o estabelecida comโบรกเกอร์")

# กำหนด o que fazer ao receber uma mensagem def on_message(client, obj, message): print("LED" + str(message.payload.decode("utf-8"))) if str(message.payload.decode("utf-8")) == "on": print("Sirene ligada") led.on() อื่น: print("Sierene apagada") led.off()

# IP ทำโบรกเกอร์ Broker_address = "34.230.74.201"

# Cria o ลูกค้าย่อย = mqtt. Client("grupo3")

sub.connect(นายหน้า_ที่อยู่)

sub.on_message = on_message sub.on_connect = on_connect

# เพิ่มหัวข้อไม่มี sub.subscribe("SIRENE", qos=0)

# วนซ้ำสำหรับ escuta sub.loop_forever()

ขั้นตอนที่ 4: Codigo Twitter - โพสต์

Codigo Twitter - โพสต์
Codigo Twitter - โพสต์
Codigo Twitter - โพสต์
Codigo Twitter - โพสต์

Código para publicação ทวิตเตอร์ assim que acionado o alarme

código rodando na maquina virtual da AWS EC2

#!/usr/bin/env python #--------------------------------------- ------------------------------- # twitter-post-status # - โพสต์ข้อความสถานะไปที่ไทม์ไลน์ของคุณ #--- -------------------------------------------------- ------------------ นำเข้า paho.mqtt.subscribe as Subscribe

เวลานำเข้า

จากการนำเข้าทวิตเตอร์ *

#---------------------------------------------------------------- ---------------------- #สถานะใหม่ของพวกเราควรเป็นอย่างไร? #---------------------------------------------------------------- ---------------------- new_status = "#Terremoto จัดซื้อ uma zona segura - teste"

#---------------------------------------------------------------- ---------------------- # โหลดข้อมูลรับรอง API ของเรา #---------------------- -------------------------------------------------- นำเข้า sys sys.path.append(".") นำเข้าการกำหนดค่า

#---------------------------------------------------------------- ---------------------- # สร้างวัตถุ twitter API #---------------------- -------------------------------------------------- ทวิตเตอร์ = Twitter(auth = OAuth('senha removida)) ทวิตเตอร์

#---------------------------------------------------------------- ---------------------- # โพสต์สถานะใหม่ # twitter API เอกสาร: https://dev.twitter.com/rest/reference/post/statu… #---------------------------------------------------------------- ----------------------

ขณะที่ 1: m = subscribe.simple("twitteralarme", hostname="172.31.83.191", Retained=False) if m.topic=="twitteralarme" and str(m.payload.decode("utf-8")) =="on": results = twitter.statuses.update(status = (new_status)+str(time.time())) # print("สถานะที่อัปเดต: %s" % new_status)

ขั้นตอนที่ 5: Centro De Comando

เซ็นโทร เดอ โกมันโด
เซ็นโทร เดอ โกมันโด

semper que acionado um dispositivo manual ou detectado um alerta manual do usuário é acionada uma contagem regressiva สำหรับสภาพแวดล้อมของผู้ชาย ตัวดำเนินการ pode cancelar o envio ou acionar o envio imediato do alerta

สำหรับใช้งานบนแดชบอร์ดและใช้งานบน Android สำหรับโทรศัพท์สำหรับคอมพิวเตอร์และระบบปฏิบัติการ

código rodando na maquina virtual da AWS EC2

นำเข้า paho.mqtt.client เป็น pahoimport paho.mqtt.subscribe เป็นการสมัคร นำเข้า paho.mqtt.publish เป็น เผยแพร่ นำเข้า json เวลานำเข้า นำเข้าหก นำเข้า ssl จากเวลา นำเข้าโหมดสลีป

หัวข้อ = ['#']

gatilho=0 hora_disparo=0 publish.single("ACIONADO", "OFF", qos=1, hostname="172.31.83.191") publish.single("sensor1", "OFF", qos=1, hostname="172.31".83.191") publish.single("sensor2", "OFF", qos=1, hostname="172.31.83.191")

connflag = เท็จ

def on_connect(client, userdata, flags, rc): global connflag connflag = True print(connflag) print("การเชื่อมต่อส่งคืนผลลัพธ์: " + str(rc))

def on_message(client, userdata, msg): # print("teste") print(msg.topic+" "+str(msg.payload))

def on_log(ไคลเอนต์, ข้อมูลผู้ใช้, ระดับ, 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_), keepalive=60) mqttc.loop_start()

ในขณะที่ 1: hora=time.time() sleep(.1) publish.single("LEDTERREMOTO", "on", qos=1, hostname="172.31.83.191")

# ถ้า connflag ==True: # mqttc.publish("message", json.dumps({'message':"TERREMOTO"}), qos=1) if gatilho==1: publish.single("TEMPO", str (round(hora_disparo-hora, 0)), qos=1, hostname="172.31.83.191") publish.single("LEDTERREMOTO", "on", qos=1, hostname="172.31.83.191") else: เผยแพร่.single("TEMPO", "99", qos=1, hostname="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("message", json.dumps("TERREMOTO - จัดหา UMA ZONA SEGURA"), qos=1)

# print("teste SNS") # publish.single("LED", "on", hostname="172.31.83.191") publish.single("SIRENE", "on", qos=1, hostname="172.31. 83.191") publish.single("TEMPO", "TERREMOTO", qos=1, hostname="172.31.83.191") publish.single("ACIONADO", "OFF", qos=1, hostname="172.31.83.191") publish.single("twitteralarme", "on", qos=1, hostname="172.31.83.191") publish.single("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos=1, hostname="172.31".83.191") gatilho=0 sleep(5) m = subscribe.simple(topics, hostname="172.31.83.191", Retained=False) if m.topic=="ACIONADO" และ str(m.payload.decode(" utf-8"))=="OFF": gatilho=0 print("cancelado") if m.topic=="medico" and str(m.payload.decode("utf-8"))=="on ": if connflag == True: mqttc.publish("medico", json.dumps("MEDIOS - EMERGENCIA TERREMOTO"), qos=1) if m.topic=="bombeiro" and str(m.payload.decode() "utf-8"))=="on": if connflag == True: mqttc.publish("bombeiro", json.dumps("BOMBEIRO - EMERGENCIA TERREMOTO"), qos=1) if m.topic==" รถพยาบาล" และ str(m.payloa d.decode("utf-8"))=="on": if connflag == True: mqttc.publish("ambulancia", json.dumps("AMBULANCIA - EMERGENCIA TERREMOTO"), qos=1) if m. topic=="urgente" and str(m.payload.decode("utf-8"))=="on": publish.single("ACIONADO", 1, qos=1, hostname="172.31.83.191") gatilho=1 hora_disparo=time.time()+5 if str(m.payload.decode("utf-8"))=="ON": if gatilho==1: print("acelerado 20") hora_disparo=hora_disparo -20 อื่นๆ: print("Acionado") publish.single("ACIONADO", 1, qos=1, hostname="172.31.83.191") gatilho=1 hora_disparo=time.time()+60

ขั้นตอนที่ 6: Codigo Twitter - Monitoração

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

código monitoração do twitter, pesquisa post ที่ regiao de sorocaba

código rodando na maquina virtual da AWS EC2

NS

จากการนำเข้าทวิตเตอร์ *import config import paho.mqtt.publish as publish

จากเวลานำเข้าการนอนหลับ

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

ละติจูด = -23.546211 ลองจิจูด = -46.637840 alcance = 50 ผลลัพธ์ = 1

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

result_count = 0 last_id = ไม่มีแฟล็ก = 0

สำหรับฉันอยู่ในช่วง (60): #-------------------------------------- ------------------------------ # ทำการค้นหาตามละติจูดและลองจิจูด # เอกสาร API ของ twitter: https://dev. twitter.com/rest/reference/get/search… #--------------------------------------------- ---------------------------------- ลอง: query = twitter.search.tweets(q = "#Terremoto", geocode = "%f, %f, %dkm" % (ละติจูด, ลองจิจูด, alcance), max_id = last_id) พิมพ์ ("leu")

ยกเว้น: print("erro acesso twitter") break

สำหรับผลลัพธ์ในแบบสอบถาม["สถานะ"]:

#---------------------------------------------------------------- ---------------------- # ประมวลผลผลลัพธ์เฉพาะเมื่อมีตำแหน่งทางภูมิศาสตร์ #----------------- -------------------------------------------------- ---- if result["geo"]: result_count += 1 last_id = result["id"] sleep(1) if result_count == resultados: flag += 1 publish.single("twitter_alarme", "ON", hostname="34.230.74.201") publish.single("twitter", "TERREMOTO - DETECTADO", hostname="34.230.74.201") แตก

ขั้นตอนที่ 7: Estrutura AWS

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

ใช้ uma maquina เสมือน rodando ubuntu กับ esttrutura AWS EC2

ใช้ AWS IOT CORE สำหรับบริการ MQTT บนการกำหนดค่าตามข้อกำหนดหรือคำแนะนำ

หัวข้อการใช้งาน AWS SNS que eram acionados pelo AWS IOT CORE

แนะนำ: