Სარჩევი:

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 ნაბიჯი
ვიდეო: FINAL FANTASY 16 თამაშის აღწერა, ნაწილი 6 (4K 60FPS PS5) სრული თამაში - კომენტარის გარეშე 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 ტემპერატურის, სინათლის, oscilação (. Tilte) e botã. ეს არის არაინტენსიური კოლაბორაციული გადაცემა, რომელიც მოიცავს ტვიტერს და აპლიკაციებს, რომლებიც მხარს უჭერენ სიფხიზლეს.

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

გააგზავნეთ გაფრთხილების მენსტრუაცია იმის გათვალისწინებით, თუ როგორ გამოიყენოთ SMS შეტყობინებები, გააგზავნეთ მომხმარებლის კლიენტები, ელ.ფოსტა, ტვიტერი და ტვიტერი.

AWS მოიცავს IOT CORE, EC2 და SNS

Sensores da DragonBord 410c

კლიენტები 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 detectm uma variação for fora do padrão pré estabelecido enviarem um alerta através do Protoko mqtt sinalizandand.

ეს არის სიგნალი, რომლითაც ხდება regressiva contagem regressiva que pode ser suspensa ou acelerada pelo operador.

O contador para o alerta começa contagem regressiva em 60 სხვაგან, და ძალიან ახალი სიგნალი deteca decresce o contador em 20 სეგუნდო.

programa rodando dentro da dragon borad 410c

#!/usr/bin/python3 იმპორტი spidev საწყისი libsoc იმპორტი gpio დროიდან იმპორტი ძილის

# იმპორტის წიგნი კომუნიკკაოსთვის 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 გამოიყენე ან აირჩიე კონფიგურაცია

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 ("Message Id:" + str (mid) + "\ n") pass

# Criamos o client e setamos suas configuracoes mqttc = mqtt. კლიენტი ()

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

pub = mqtt. Client ("grupo3")

# დაათვალიერეთ localhost, თქვენ უნდა შეამოწმოთ ლაბორატორიები. broker_address = "34.230.74.201"

pub.connect (broker_address)

თუ _ სახელი _ == '_ მთავარი_': 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 ბეჭდვა ("ტემპერატურა: % 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") 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 ბეჭდვა ("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") 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 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

libsoc_zero. GPIO იმპორტის ღილაკი libsoc_zero. GPIO იმპორტი Tilt დროიდან იმპორტი ძილის იმპორტი paho.mqtt.client როგორც mqtt იმპორტი 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 ("Message Id:" + str (mid) + "\ n") pass

def deteaTilt (): count = 0 sleep_count = 0 while True: try: tilt.wait_for_tilt (1) გარდა: sleep_count += 1 სხვა: count += 1 sleep_count += 1 თუ sleep_count> 999: შესვენება

print ("count:", count) if count> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (count)) # Criamos o client and setamos suas კონფიგურაცია mqttc = mqtt. კლიენტი ()

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

თემა = "grupo3"

# დაათვალიერეთ localhost, თქვენ უნდა შეამოწმოთ ლაბორატორიები. mqttc.connect ("34.230.74.201", 1883)

დახრა = დახრა ('GPIO-A')

btn = ღილაკი ('GPIO-C')

ხოლო True: ძილი (0.25) deteaTilt () თუ 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

# იმპორტი Libra 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 (კლიენტი, obj, flags, rc): print ("ConexÃÆ' £ o estabelecida com broker")

# განსაზღვრეთ, თუ რა არის მიმღები uma მენეჯერი def on_message (კლიენტი, obj, შეტყობინება): 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.on_message = on_message sub.on_connect = on_connect

# არ გაზარდო თემა ქვე. გამოწერა ("SIRENE", qos = 0)

# Loop para escuta sub.loop_forever ()

ნაბიჯი 4: Codigo Twitter - გამოქვეყნება

Codigo Twitter - პოსტი
Codigo Twitter - პოსტი
Codigo Twitter - პოსტი
Codigo Twitter - პოსტი

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

ვირტუალური როდანდო ვირტუალური და AWS EC2

#!/usr/bin/env პითონი #-------------------------------------------- ---------------------------------- # twitter-post-status #-აქვეყნებს სტატუსის შეტყობინებას თქვენს ვადებს # --- ------------------------------------------------------ ------------------ იმპორტი paho.mqtt. გამოიწერე გამოწერა

იმპორტის დრო

ტვიტერის იმპორტიდან *

#----------------------------------------------------- ---------------------- # როგორი უნდა იყოს ჩვენი ახალი სტატუსი? #----------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"

#----------------------------------------------------- ---------------------- # ჩატვირთეთ ჩვენი API სერთიფიკატები # ---------------------- ---------------------------------------------------- იმპორტი sys sys.path.append (".") იმპორტი კონფიგურაცია

#----------------------------------------------------- ---------------------- # შექმნა twitter API ობიექტი # ---------------------- ---------------------------------------------------- ტვიტერი = Twitter (auth = OAuth ('senha removeida))

#----------------------------------------------------- ---------------------- # განათავსეთ ახალი სტატუსი # twitter API დოკუმენტები: https://dev.twitter.com/rest/reference/post/statu… #----------------------------------------------------- ----------------------

ხოლო 1: m = subscribe.simple ("twitteralarme", hostname = "172.31.83.191", შენარჩუნებულია = ყალბი) თუ m.topic == "twitteralarme" და str (m.payload.decode ("utf-8")) == "ჩართული": results = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("განახლებული სტატუსი: % s" % new_status)

ნაბიჯი 5: ცენტრო დე კომანდო

ცენტრო დე კომანდო
ცენტრო დე კომანდო

გაეცანით, თუ როგორ უნდა განვმარტოთ სახელმძღვანელო ან გამოვაჩინოთ ჩვენი გაფრთხილება სახელმძღვანელო, თუ ჩვენ გამოვიყენებთ ჩვენს კონტაქტს რეგრესიას გარემოს დაცვისთვის. O operador pode cancerlar o envio ou acionar o envio imediato do alerta.

ჩვენ შეგვიძლია გამოვიყენოთ დაფის გამოყენება ანდროიდისთვის და შევასრულო ტელეფონი, რათა შევასრულო ოპერაციის ცენტრის კომანდო.

ვირტუალური როდანდო ვირტუალური და AWS EC2

იმპორტი paho.mqtt.client როგორც pahoimport paho.mqtt. გამოწერა გამოიწერე გამოწერა იმპორტი paho.mqtt. გამოქვეყნება გამოქვეყნების იმპორტის json იმპორტის დრო იმპორტის ექვს იმპორტის ssl დროიდან იმპორტის ძილი

თემები = ['#']

gatilho = 0 hora_disparo = 0 გამოქვეყნება. ერთი ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") published.single ("sensor1", "OFF", qos = 1, hostname = "172.31.83.191 ") published.single (" sensor2 "," OFF ", qos = 1, hostname =" 172.31.83.191 ")

connflag = ყალბი

def on_connect (კლიენტი, მომხმარებლის მონაცემები, დროშები, rc): გლობალური კონფიგურაცია connflag = ჭეშმარიტი ბეჭდვა (კონფლაგი) ბეჭდვა ("კავშირის დაბრუნებული შედეგი:" + სტრიქონი (rc))

def on_message (client, userdata, msg): # print ("teste") print (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), awct = s, qt, Keepalive = 60) mqttc.loop_start ()

ხოლო 1: hora = დრო. დრო () ძილი (.1) გამოქვეყნება. ერთი ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191")

# if connflag == მართალია: # mqttc.publish ("შეტყობინება", json.dumps ({'შეტყობინება ":" TERREMOTO "}), qos = 1) თუ gatilho == 1: გამოქვეყნება. ერთი (" TEMPO ", ქ. (რაუნდი (hora_disparo-hora, 0)), qos = 1, hostname = "172.31.83.191") published.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") სხვა: გამოქვეყნება.ერთი ("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 (" შეტყობინება ", 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 ") publik.single (" ACIONADO "," OFF ", qos = 1, hostname =" 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 ძილი (5) m = გამოწერა. მარტივი (თემები, მასპინძლის სახელი =" 172.31.83.191 ", შენახული = მცდარი) თუ m.topic ==" ACIONADO "და str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 ბეჭდვა (" cancellado ") თუ m.topic ==" medico "და 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 == მართალია: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) თუ m.topic == " სასწრაფო დახმარების მანქანა "და მ. პაილოა d.decode ("utf -8")) == "on": if connflag == True: mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGENCIA TERREMOTO"), qos = 1) თუ მ. თემა == "urgente" and str (m.payload.decode ("utf-8")) == "on": published.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 სხვა: ბეჭდვა ("Acionado") published.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = დრო. დრო ()+60

ნაბიჯი 6: Codigo Twitter - Monitoração

Codigo Twitter - მონიტორინგი
Codigo Twitter - მონიტორინგი

twitter მონიტორინგის გაკეთება twitter– ზე, პოსკვისას პოსტების გაგზავნა ჩვენს რეგიონში

ვირტუალური კოდი და ვირტუალური მოწყობილობა AWS EC2

n

twitter იმპორტიდან *იმპორტი კონფიგურაცია იმპორტი paho.mqtt. გამოქვეყნება გამოაქვეყნე

დროიდან იმპორტი ძილის

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

გრძედი = -23.546211 გრძედი = -46.637840 ალკანსი = 50 შედეგი = 1

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

result_count = 0 last_id = არცერთი დროშა = 0

მე დიაპაზონში (60): #--------------------------------------------- ------------------------------ # განახორციელეთ ძებნა გრძედის და გრძედის საფუძველზე # twitter API დოკუმენტები: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- ცადე: query = twitter.search.tweets (q = "#Terremoto", გეოკოდი = " %f, %f, %dkm" %(გრძედი, გრძედი, ალკანსი), max_id = last_id) ბეჭდვა ("leu")

გარდა: ბეჭდვის ("erro acesso twitter") შესვენება

მოთხოვნის

#----------------------------------------------------- ---------------------- # შედეგის დამუშავება მხოლოდ იმ შემთხვევაში თუ მას აქვს გეოლოკაცია # ----------------- ------------------------------------------------------ ---- თუ შედეგი ["geo"]: result_count += 1 last_id = შედეგი ["id"] ძილი (1) if result_count == resultados: flag += 1 გამოქვეყნება. ერთი ("twitter_alarme", "ON", hostname = "34.230.74.201") publik.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") შესვენება

ნაბიჯი 7: Estrutura AWS

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

გამოიყენეთ ვირტუალური რონანდო უბუნტუ და ესტრუტურა AWS EC2

გამოიყენეთ AWS IOT CORE მომსახურების MQTT კონფიგურაციისთვის, როგორც მენეჯმენტის ტიპების შესაბამისად

გამოიყენეთ თემები AWS SNS– ისთვის AWS IOT CORE

გირჩევთ: