ዝርዝር ሁኔታ:

ሴንትሮ ዴ ኮማንዶ ኤመርጀንሲስ - ኤሩçኦ ዴ ቮልካኦ ኢ ቴሬሞቶስ 7 ደረጃዎች
ሴንትሮ ዴ ኮማንዶ ኤመርጀንሲስ - ኤሩçኦ ዴ ቮልካኦ ኢ ቴሬሞቶስ 7 ደረጃዎች

ቪዲዮ: ሴንትሮ ዴ ኮማንዶ ኤመርጀንሲስ - ኤሩçኦ ዴ ቮልካኦ ኢ ቴሬሞቶስ 7 ደረጃዎች

ቪዲዮ: ሴንትሮ ዴ ኮማንዶ ኤመርጀንሲስ - ኤሩçኦ ዴ ቮልካኦ ኢ ቴሬሞቶስ 7 ደረጃዎች
ቪዲዮ: 🇸🇻 ላ ዩኒየን ፣ ኤል ሳልቫዶር እጅግ በጣም ቆንጆ ነው! ለምን ማንም ሰው ስለዚህ ቦታ በጭራሽ አይናገርም ?? 2024, ህዳር
Anonim
ሴንትሮ ደ ኮማንዶ ኤመርጀንሲስ - ኤሩçኦ ዴ ulልካኦ ኢ ቴሬሞቶስ
ሴንትሮ ደ ኮማንዶ ኤመርጀንሲስ - ኤሩçኦ ዴ ulልካኦ ኢ ቴሬሞቶስ

Projeto 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 (tilte) e botã. 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 centro de de operações avaliar se a informação esta correta evitando assim falsos-positivos dos dispositivos automatizado e avaliar a possibilidade de fakenews. Tal tomada de decisão é ወሳኝ diante ao pânico que um alarme falso pode gerar.

ኮሞ solução de alerta de mensagem estamos considerrando o uso do envio de SMS, alerta através de cliente mqtt, email, sirene e twitter.

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

Sensores da DragonBord 410c

ደንበኞች android mqtt

Sendo todo desenvolvido em python

መኪናዎች

ዲዬጎ ፈርናንዴዝ ዶስ ሳንቶስ - [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 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 para o alerta começa contagem regressiva em 60 seguntos, e todo novo alerta detectado decresce o contador em 20 segundos.

programa rodando dentro da dragon borad 410c

#!/usr/bin/python3import spidev ከ libsoc አስመጪ ጂፒኦ ከጊዜ ወደ ጊዜ እንቅልፍ

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

#ፓራ በረንዳ ADC2 ይጠቀሙ o seguinte vetor de configuraç࣠o channel_select2 = [0x01, 0xA0, 0x00]

def on_connect (mqttc ፣ obj ፣ ባንዲራዎች ፣ አርሲ): ማተም ("rc:" + str (rc))

def on_message (mqttc, obj, msg): አትም (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))

def on_publish (mqttc, obj, mid): ማተም ("የመልዕክት መታወቂያ" + str (አጋማሽ) + "\ n") ማለፍ

# Criamos o ደንበኛ እና setamos suas configuracoes mqttc = mqtt. Client ()

mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = ላይ_አታተም

መጠጥ ቤት = mqtt. Client ("grupo3")

# Conexao com localhost ፣ uma vez que testamos fora do labredes። ደላላ_አድራሻ = "34.230.74.201"

pub.connect (የደላላ_አድራሻ)

_ ስም _ == '_ 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 () እንቅልፍ (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 ህትመት ("Temperatura: % f / n" % adc_value) pub. ያትሙ ("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 እንቅልፍ (1)

gpio_cs.set_high () እንቅልፍ (0.00001) gpio_cs.set_low () rx = spi.xfer (channel_select2) gpio_cs. (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 እንቅልፍ

ደረጃ 2 ሴንሰርስ ዲጂታስ - Publicação

ሴንሰርስ ዲጂታስ - Publicação
ሴንሰርስ ዲጂታስ - Publicação

código para publicação dos 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 deteado uma anomalia ou botão de pânico pressionado a contagem regressiva é iniciada.

programa rodando dentro da dragon borad 410c

ከ libsoc_zero. GPIO ማስመጣት አዝራር ከ libsoc_zero. GPIO ማስመጣት ከጊዜ ወደ ጊዜ አስመጣ የእንቅልፍ ማስመጣት paho.mqtt.client እንደ mqtt import sys

def on_connect (mqttc ፣ obj ፣ ባንዲራዎች ፣ አርሲ): ማተም ("Conectado" + str (rc))

def on_message (mqttc, obj, msg): አትም (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))

def on_publish (mqttc, obj, mid): # ህትመት ("የመልዕክት መታወቂያ" + str (አጋማሽ) + "\ n") ማለፍ

def deteaTilt (): count = 0 sleep_count = 0 ሳለ እውነት ፦ ይሞክሩ ፦ tilt.wait_for_tilt (1) ካልሆነ በስተቀር የእንቅልፍ_ቁጥር += 1 ሌላ ፦ ቆጠራ += 1 የእንቅልፍ_ቁጥር += 1 የእንቅልፍ_ቁጥር> 999 ከሆነ እረፍት

ህትመት ("ቆጠራ:", ቆጠራ) ከተቆጠረ> 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 = ላይ_አታተም

ርዕስ = "grupo3"

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

ያጋደለ = ያጋደለ ('GPIO-A')

btn = አዝራር ('GPIO-C')

እውነት እያለ እንቅልፍ (0.25) deteaTilt () btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") ህትመት ("Botao ON") እንቅልፍ (1) pub = mqttc.publish ("PANICO") "፣" ጠፍቷል ") # ሌላ ፦ # 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 ('GPIO-E') #led.off ()

# ግንኙነትን (ደንበኛ ፣ obj ፣ ባንዲራዎች ፣ አርሲ) ላይ ያብራሩ / ያትሙ (“Conex࣠o estabelecida com ደላላ”)

# መልዕክቱን (ደንበኛ ፣ obj ፣ መልእክት): ሕትመት ("LED" + str (message.payload.decode ("utf-8")))) str ከሆነ (message.payload.decode ("utf-8")) == "ላይ": ህትመት ("Sirene ligada") led.on () ሌላ: ህትመት ("Sierene apagada") led.off ()

# አይፒ ለደላላ ደላላ_አድራሻ = "34.230.74.201"

# Cria o cliente sub = mqtt. Client ("grupo3")

ንዑስ ግንኙነት (ደላላ_አድራሻ)

sub.on_message = on_message sub.on_connect = on_connect

# ምንም የቶፒኮ ንዑስ አይጨምር። በደንበኝነት ይመዝገቡ ("SIRENE" ፣ qos = 0)

# Loop para escuta sub.loop_forever ()

ደረጃ 4: ኮዲጎ ትዊተር - ልጥፍ

ኮዲጎ ትዊተር - ልጥፍ
ኮዲጎ ትዊተር - ልጥፍ
ኮዲጎ ትዊተር - ልጥፍ
ኮዲጎ ትዊተር - ልጥፍ

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

código rodando na maquina ምናባዊ ዳ AWS EC2

#!/usr/bin/env python #---------------------------------------- ------------------------------- # ትዊተር-ልጥፍ-ሁኔታ #-ለጊዜ መስመርዎ የሁኔታ መልእክት ይለጥፋል # --- -------------------------------------------------- ------------------ አስመጣ paho.mqtt.subscribe በማድረግ ደንበኝነት ይመዝገቡ

የማስመጣት ጊዜ

ከትዊተር ማስመጣት *

#------------------------------------------------- ---------------------- # አዲሱ አቋማችን ምን መሆን አለበት? #------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"

#------------------------------------------------- ---------------------- # የኤፒአይ ማስረጃዎቻችንን ይጫኑ # ---------------------- ------------------------------------------------- ማስመጣት sys sys.path.append (".") የማስመጣት ውቅር

#------------------------------------------------- ---------------------- # የትዊተር ኤፒአይ ነገር ይፍጠሩ # ---------------------- ------------------------------------------------- ትዊተር = ትዊተር (auth = OAuth ('senha removida))

#------------------------------------------------- ---------------------- # አዲስ ሁኔታ # የትዊተር ኤፒአይ ሰነዶችን ይለጥፉ 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")) ከሆነ == "በርቷል": ውጤቶች = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("updated status: % s" % new_status)

ደረጃ 5 ሴንትሮ ዴ ኮማንዶ

ሴንትሮ ደ ኮማንዶ
ሴንትሮ ደ ኮማንዶ

semper que acionado um dispositivo manual ou detectado um alerta manual do usuário é acionada uma contagem regressiva para envio de mensagem. ኦ ኦፔራዶር ነቀርሳ ነካ ወይም ኦቪዮ ኦው አኒዮር ኦ envio imediato do alerta።

Para uso do dasboard utilizamos um android do telefone para compor a mesa de operação do centro de comando.

código rodando na maquina ምናባዊ ዳ AWS EC2

ማስመጣት paho.mqtt.client እንደ pahoimport paho.mqtt.subscribe በማድረግ ደንበኝነት ይመዝገቡ paho.mqtt.pub ስናተም ያትሙ አስመጪ 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 ") ማተም. ነጠላ (" sensor2 "," OFF ", qos = 1, የአስተናጋጅ ስም =" 172.31.83.191 ")

connflag = ሐሰት

def on_connect (ደንበኛ ፣ የተጠቃሚ መረጃ ፣ ባንዲራዎች ፣ አር.ሲ.) - ዓለም አቀፋዊ connflag connflag = እውነተኛ ህትመት (connflag) ህትመት (“የግንኙነት ውጤት ተመለሰ” + str (rc))

def on_message (ደንበኛ ፣ የተጠቃሚ መረጃ ፣ msg) - # ህትመት ("teste") ህትመት (msg.topic+""+str (msg.payload))

def on_log (ደንበኛ ፣ የተጠቃሚ ውሂብ ፣ ደረጃ ፣ buf) ፦ ማተም (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, cipshot), keepalive = 60) mqttc.loop_start ()

1: ሆራ = ጊዜ። ጊዜ () እንቅልፍ (.1) ማተም (ነጠላ)

# ከሆነ connflag == እውነት ፦ # mqttc.publish ("መልዕክት" ፣ json.dumps ({'message': "TERREMOTO"}) ፣ qos = 1) gatilho == 1: publish.single ("TEMPO", str (ዙር (hora_disparo-hora ፣ 0)) ፣ qos = 1 ፣ የአስተናጋጅ ስም = “172.31.83.191”) print.single (“LEDTERREMOTO” ፣ “on” ፣ qos = 1 ፣ የአስተናጋጅ ስም =”172.31.83.191”) ሌላ ፦ ያትሙ.ብቻ ("TEMPO", "99", qos = 1, የአስተናጋጅ ስም = "172.31.83.191") # ህትመት ("") ከሆነ (ሆራ> ሆራ_ዲስፓሮ) እና (gatilho == 1): # ህትመት ("TERREMOTO") # ህትመት (ኮኔፍላግ) connflag == እውነት ከሆነ # mqttc.publish ("መልዕክት" ፣ json.dumps ({'መልእክት' ፦ "TERREMOTO"}) ፣ qos = 1) # mqttc.publish ("መልዕክት" ፣ "TERREMOTO "፣ qos = 1) mqttc.publish (" መልዕክት "፣ json.dumps (" TERREMOTO - PROCURE UMA ZONA SEGURA "), qos = 1)

# ህትመት ("teste SNS") # print.single ("LED", "on", hostname = "172.31.83.191") publish.single ("SIRENE", "on", qos = 1, hostname = "172.31. 83.191 ") print.single (" TEMPO "," TERREMOTO ", qos = 1, hostname =" 172.31.83.191 ") publish.single (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ")) print.single ("twitteralarme", "on", qos = 1, hostname = "172.31.83.191") publish.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, hostname = "172.31 M. utf-8 ")) ==" ጠፍቷል ": gatilho = 0 ህትመት (" ካንካላዶ ") m.topic ==" medico "እና str (m.payload.decode (" utf-8 ")) ==" በርቷል ": connflag == እውነት ከሆነ mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) m.topic ==" bombeiro "እና str (m.payload.decode ("utf -8")) == "ላይ": connflag == እውነት ከሆነ mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) m.topic == " አምቡላንስሲያ”እና str (m.payloa d.decode ("utf -8")) == "on": connflag == እውነት ከሆነ mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO"), qos = 1) m. ርዕስ == "አስቸኳይ" እና str (m.payload.decode ("utf-8")) == "ላይ": publish.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+5 str ከሆነ (m.payload.decode ("utf-8")) == "በርቷል": gatilho == 1: ማተም ("acelerado 20") hora_disparo = hora_disparo -20 ሌላ: ህትመት ("አቺዮናዶ") ማተም። ነጠላ ("ACIONADO" ፣ 1 ፣ qos = 1 ፣ የአስተናጋጅ ስም = "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 na regiao de sorocaba

código rodando na maquina ምናባዊ ዳ AWS EC2

n

ከትዊተር ማስመጣት *የማስመጣት ውቅረት አስመጣ paho.mqtt.p እንደ ህትመት ያትሙ

ከጊዜ ወደ ጊዜ እንቅልፍ ያስመጣሉ

ትዊተር = ትዊተር (auth = OAuth (config.access_key ፣ config.access_secret ፣ config.consumer_key ፣ config.consumer_secret))

ኬክሮስ = -23.546211 ኬንትሮስ = -46.637840 alcance = 50 resultados = 1

publish.single ("twitter_alarme", "ON", የአስተናጋጅ ስም = "34.230.74.201")

result_count = 0 last_id = ምንም ባንዲራ = 0

በክልል (60) ውስጥ- #----------------------------------------- ------------------------------ # በኬክሮስ እና ኬንትሮስ ላይ በመመርኮዝ ፍለጋን ያካሂዱ # twitter ኤፒአይ ሰነዶች https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- ይሞክሩ: መጠይቅ = twitter.search.tweets (q = "#Tereremoto") ፣ ጂኦኮድ = " %ረ ፣ %ረ ፣ %dkm" %(ኬክሮስ ፣ ኬንትሮስ ፣ አልካንስ) ፣ max_id = last_id) ህትመት ("leu")

በስተቀር: ማተም ("erro acesso twitter") እረፍት

ለጥያቄ ውጤት [“ሁኔታ”]

#------------------------------------------------- ---------------------- # የጂኦግራፊያዊ አቀማመጥ ካለው ውጤቱን ብቻ ያስኬዳል ----------------- -------------------------------------------------- ---- ውጤት ከሆነ ["ጂኦ"]: result_count += 1 last_id = ውጤት ["መታወቂያ"] እንቅልፍ (1) ከሆነ result_count == resultados: flag += 1 publish.single ("twitter_alarme", "ON", የአስተናጋጅ ስም = "34.230.74.201") publish.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 ምናባዊ rodando ubuntu እና estrutura AWS EC2

Utilizamos a AWS IOT CORE para o serviço de MQTT onde configuramos as aes conforme o tipo de mensagem

Utilizmos ርዕሶች AWS SNS que eram acionados pelo AWS IOT CORE ን ያደርጋሉ

የሚመከር: