فهرست مطالب:

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 مرحله
تصویری: Part 6 - Lord Jim Audiobook by Joseph Conrad (Chs 37-45) 2024, نوامبر
Anonim
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos
Centro De Comando Emergencias - Erupção De Vulcão E Terremotos

برنامه های کاربردی برای ارائه خدمات اینترنت و اینترنت به منظور دستیابی به طبیعت ، در صورت استفاده از روشهای تشخیصی ، تنظیمات حرارتی IOT de temperatura ، luminosidade ، oscilação (tilteo) و boto. Ainda no cenário de colaboração prevemos integração com o Twitter و aplicativos com suporte mqtt para acionamento do alerta.

Diante a possibilidade de diversos meios de entrada na solução، caberá um centre de de operações avaliar in a informação esta correta evitando assim falsos-positivos dos dispositivos automatisado و avaliar a possibilidade de fakenews. Tal tomada de decisão é important diante ao pânico que um alarme falso pode gerar.

راه حل هشدارهای مربوط به برنامه های کاربردی برای استفاده از پیامک ، هشدارهای مربوط به مشتریان ، ایمیل ، و توییتر.

O projeto contou com uso de recursos da AWS incluindo IOT CORE، EC2 e SNS

Sensores da DragonBord 410c

clientes android mqtt

Sendo todo desenvolvido em پایتون

خودکارها:

دیه گو فرناندس دوس سانتوس - [email protected]

گابریل پیووانی موریرا دوس سانتوس - [email protected]

گوستاوو ونانسیو لوز - [email protected]

پائولو هنریک آلمیدا سانتوس - [email protected]

مرحله 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 Protoko 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 نفر دیگر ، و بیش از حد جدید alerta detector decresce o contador em 20 segundos.

programa rodando dentro da dragon borad 410c

#!/usr/bin/python3 import spidev from libsoc import gpio from time import sleep

# Importa lib para 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

#Usando a porta ADC1 channel_select1 = [0x01، 0x80، 0x00]

#Para usa a porta ADC2 use 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): print (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))

def on_publish (mqttc، obj، mid): print ("شناسه پیام:" + خیابان (وسط) + "\ n") پاس

# 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)

if _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) 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 چاپ ("Temperatura:٪ f / n"٪ adc_value) pub.publish ("temperatura"، 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 sleep (1)

gpio_cs.set_high () خواب (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 = | (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٪

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 خواب (3)

مرحله 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 و o botão برای شبیه سازی یا استفاده از um botão de pânico است.

quando deteado uma anomalia یا botão de pânico pressionado a contagem regressiva é iniciada.

programa rodando dentro da dragon borad 410c

از libsoc_zero. GPIO دکمه واردات از libsoc_zero. GPIO واردات Tilt from time import sleep import paho.mqtt.client به عنوان mqtt import sys

def on_connect (mqttc، obj، flags، 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 ("شناسه پیام:" + خیابان (وسط) + "\ n") پاس

def deteaTilt (): count = 0 sleep_count = 0 while True: try: tilt.wait_for_tilt (1) به جز: sleep_count += 1 else: count += 1 sleep_count += 1 در صورتی که sleep_count> 999: break

print ("count:"، count) if count> 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

topic = "grupo3"

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

شیب = شیب ('GPIO-A')

btn = دکمه ('GPIO-C')

while True: sleep (0.25) deteaTilt () 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

# Importa lib para comunicacao com MOSQUITTOimport paho.mqtt.client as 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 broker")

# تعریف 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 () 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

# هیچ موضوعی را افزایش ندهید. مشترک شوید ("SIRENE" ، qos = 0)

# حلقه برای escuta sub.loop_forever ()

مرحله 4: Codigo Twitter - ارسال کنید

توییتر Codigo - ارسال کنید
توییتر Codigo - ارسال کنید
توییتر Codigo - ارسال کنید
توییتر Codigo - ارسال کنید

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

código rodando na maquina virtual da AWS EC2

#!/usr/bin/env پایتون #-------------------------------------------- ---------------------------------- # twitter-post-status #-یک پیام وضعیت به جدول زمانی شما ارسال می کند # --- ------------------------------------------------------ ------------------ واردات paho.mqtt. مشترک شدن به عنوان مشترک

زمان واردات

از واردات توییتر *

#----------------------------------------------------- ---------------------- # وضعیت جدید ما چگونه باید باشد؟ #----------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"

#----------------------------------------------------- ---------------------- # بارگذاری اعتبار API ما # ---------------------- ------------------------------------------------- وارد كردن sys sys.path.append (".") پیکربندی را وارد کنید

#----------------------------------------------------- ---------------------- # ایجاد شی API توییتر # ---------------------- ------------------------------------------------- توییتر = توییتر (auth = OAuth ('senha removeida))

#----------------------------------------------------- ---------------------- # ارسال وضعیت جدید # اسناد API توییتر: https://dev.twitter.com/rest/reference/post/statu… #----------------------------------------------------- ----------------------

در حالی که 1: m = subscribe.simple ("twitteralarme" ، نام میزبان = "172.31.83.191" ، حفظ شده = اشتباه) اگر m.topic == "twitteralarme" و str (m.payload.decode ("utf-8")) == "روشن": results = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("status updated:٪ s"٪ new_status)

مرحله 5: Centro De Comando

سنترو د کوماندو
سنترو د کوماندو

semper que acionado um dispitivo manual یا deteado um alerta manual do usuário é acionada uma contagem regressiva para envio de mensagem. O operador pode cancerlar o envio ou acionar یا envio imediato do alerta.

برای استفاده از dasboard استفاده از دستگاه های اندروید و تلفن خود را برای کارکردن یک پیام عملیات در مرکز فرمان استفاده کنید.

código rodando na maquina virtual da AWS EC2

وارد کردن paho.mqtt.client به عنوان pahoimport paho.mqtt. مشترک شدن در اشتراک وارد کردن paho.mqtt.publish به عنوان نشر واردات json زمان وارد کردن زمان وارد کردن شش واردات ssl از زمان وارد کردن خواب

موضوعات = ['#']

gatilho = 0 hora_disparo = 0 publik.single ("ACIONADO" ، "OFF" ، qos = 1 ، hostname = "172.31.83.191") published.single ("sensor1" ، "OFF" ، qos = 1 ، نام میزبان = "172.31.83.191 ") publik.single (" sensor2 "،" OFF "، qos = 1 ، نام میزبان =" 172.31.83.191 ")

connflag = غلط

def on_connect (کلاینت ، داده های کاربر ، پرچم ها ، rc): global connflag connflag = چاپ واقعی (connflag) چاپ ("نتیجه بازگشتی اتصال:" + str (rc))

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

def on_log (client، datad User، level، 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_TLSvt) ، Keepalive = 60) mqttc.loop_start ()

در حالی که 1: hora = time.time () sleep (.1) published.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: published.single ("TEMPO" ، str).single ("TEMPO" ، "99" ، qos = 1 ، hostname = "172.31.83.191") # print ("") if (hora> hora_disparo) و (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 - PROCURE 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 ") publik.single (" TEMPO "،" TERREMOTO "، qos = 1 ، hostname =" 172.31.83.191 ") published.ingle (" ACIONADO "،" OFF "، qos = 1 ، نام میزبان =" 172.31.83.191 ") publik.single ("twitteralarme" ، "on" ، qos = 1 ، hostname = "172.31.83.191") publik.single ("توییتر" ، "TERREMOTO - PROCURE UMA ZONA SEGURA" ، qos = 1 ، نام میزبان = "172.31.83.191 ") gatilho = 0 خواب (5) m = subscribe.simple (موضوعات ، نام میزبان =" 172.31.83.191 "، حفظ شده = غلط) اگر m.topic ==" ACIONADO "و خیابان (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print (" cancellado ") if m.topic ==" medico "and str (m.payload.decode (" utf-8 ")) ==" on ": if connflag == درست: mqttc.publish (" medico "، json.dumps (" MEDICOS - EMERGENCIA TERREMOTO ") ، qos = 1) اگر m.topic ==" bombeiro "و str (m.payload.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("bombeiro"، json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO") ، qos = 1) اگر m.topic == " آمبولانس "و خیابان (m. payloa d.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("ambulancia"، json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO") ، qos = 1) اگر m. topic == "urgente" and str (m.payload.decode ("utf-8")) == "on": published.single ("ACIONADO" ، 1 ، qos = 1 ، نام میزبان = "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") published.single ("ACIONADO" ، 1 ، qos = 1 ، hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60

مرحله 6: توییتر Codigo - Monitoração

توییتر Codigo - Monitoração
توییتر Codigo - Monitoração

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

código rodando na maquina virtual da AWS EC2

n

از واردات توییتر *import config import paho.mqtt.publish as published

از زمان وارد کردن خواب

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

عرض جغرافیایی = -23.546211 طول جغرافیایی = -46.637840 alcance = 50 resultados = 1

publik.single ("twitter_alarme" ، "ON" ، hostname = "34.230.74.201")

result_count = 0 last_id = هیچ پرچم = 0

برای من در محدوده (60): #----------------------------------------- ------------------------------ # جستجو بر اساس عرض و عرض جغرافیایی انجام دهید # twitter API docs: 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

برای نتیجه در پرس و جو ["statuses"]:

#----------------------------------------------------- ---------------------- # تنها در صورتی پردازش نتیجه می شود که موقعیت جغرافیایی داشته باشد # ----------------- ------------------------------------------------------ ---- if result ["geo"]: result_count += 1 last_id = result ["id"] sleep (1) if result_count == resultados: flag += 1 published.single ("twitter_alarme" ، "ON" ، نام میزبان = "34.230.74.201") publik.single ("توییتر" ، "TERREMOTO - DETECTADO" ، نام میزبان = "34.230.74.201") وقفه

مرحله 7: Estrutura AWS

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

Utilizamos uma maquina virtual rodando ubuntu na estrutura AWS EC2

از AWS IOT CORE برای تنظیمات MQTT onde configuramos به عنوان مطابقت با راهنمای منشا استفاده کنید

Utilizmos topicos do AWS SNS que eram acionados pelo AWS IOT CORE

توصیه شده: