Sadržaj:
- Korak 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- Korak 2: Sensores Digitais - Publicação
- Korak 3: Codigo Para Acionamento Sirene
- Korak 4: Codigo Twitter - objava
- Korak 5: Centro De Comando
- Korak 6: Codigo Twitter - Monitoração
- Korak 7: Estrutura AWS
Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Projektovani akademički parametri za centralni centar za saradnju i através na Internetu za otkrivanje prirodnih desastresa, ili na poslu za otkrivanje osjetljivosti i osjetljivosti IOT -a na temperaturu, osvjetljenje, oscilacija (nagib) i bota. Ainda no centário de colaboração prepremos integração com na Twitter -u i aplikacijama com suporte mqtt para actionamento do alertta.
Diante a diverzible de diversos meios de entrada on solução, caberá um centro de de operações avaliar are a informação esta correta evitando assim falsos-pozitivos des dispozitivos automatized e avaliar a fabilede de fakenews. Tal tomada de Decisionão é ključna diante ao pânico que um alarme falso pode gerar.
Kao rješenje za upozorenje o upozorenju, potrebno je uzeti u obzir slanje SMS -a, upozorenja klijenata, e -poštu, sirenu i twitter.
O projektu možete upotrijebiti povratne informacije o AWS -u uključujući IOT CORE, EC2 i SNS
Senzori za DragonBord 410c
klijenti android mqtt
Ovo je desenvolvido em python
Autores:
Diego Fernandes dos Santos - [email protected]
Gabriel Piovani Moreira dos Santos - [email protected]
Gustavo Venancio Luz - [email protected]
Paulo Henrique Almeida Santos - [email protected]
Korak 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
Abaixo o codigo de publicação dos sensores analógicos, os senzori de temperature i luminosidade estão konfiguracije za que assim que detectarem uma varijacije za do padrão pré estabelecido enviarem um upozorenja através do protokol mqtt sinalizando um evento.
Ovo je upozorenje za kontakt i regresiju za podešavanje suspenzije ili acelerada pelo operador.
O contador para ili alerta começa contagem regressiva em 60 seguntos, e todo novo alerta detectado decresce o contador em 20 segundos.
program rodando dentro da dragon borad 410c
#!/usr/bin/python3import spidev iz libsoc -a uvoz gpio -a iz vremenskog uvoza u stanje mirovanja
# Uvoz lib para comunicacao com MOSQUITTO uvoz paho.mqtt.client kao 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 usar a porta ADC2 use o seguinte vetor de configuraÃÆ'§ÃÆ' £ o channel_select2 = [0x01, 0xA0, 0x00]
def on_connect (mqttc, obj, zastave, rc): print ("rc:" + str (rc))
def na_poruku (mqttc, obj, msg): print (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): print ("ID poruke:" + str (mid) + "\ n") pass
# Criamos o klijentu i setamos konfiguraciji 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 (brokerska_adresa)
if _name _ == '_ main_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)
sa gpio.request_gpios ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0 dok je contador <50: gpio_cs.set_high () sleep (0,00001) gpio_cs.set_low () rx = spi.xfer (channel_select1) gpio (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 ispis ("Temperatura: % f / n" % adc_value) pub.publish ("temperatura", str (adc_value)) # test para acionar contador do alarmme, teste ultima leitura + 5%
ako je adc_value_old == 0: adc_value_old = adc_value ako je adc_value> (adc_value_old*1.05): pub.publish ("ALARME", "ON") ispis ("Alarmado temperatura") adc_value_old = adc_value spavanje (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 print ("Luminosidade: % f / n" % adc_value2) pub.publish ("luminosidade", str (adc_value2))
# test para acionar contador do alarmme, testte ultima leitura + 50%
ako je adc_value2_old == 0: adc_value2_old = adc_value2 ako je adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_va2
Korak 2: Sensores Digitais - Publicação
código para publicação dos sensores digitais
Os sensores digitais 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
from libsoc_zero. GPIO import Buttonfrom libsoc_zero. GPIO import Tilt from time import sleep sleep import paho.mqtt.client kao mqtt import sys
def on_connect (mqttc, obj, zastave, rc): print ("Conectado" + str (rc))
def na_poruku (mqttc, obj, msg): print (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))
def on_publish (mqttc, obj, mid): # print ("ID poruke:" + str (sredina) + "\ n") prolaz
def detectaTilt (): count = 0 sleep_count = 0 while True: try: tilt.wait_for_tilt (1) osim: sleep_count += 1 else: 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 client e setamos suas konfiguracija 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)
tilt = Tilt ('GPIO-A')
btn = Dugme ('GPIO-C')
dok je 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 ")
Korak 3: Codigo Para Acionamento Sirene
Codigo para subscrição para acionamento da SIRENE, program rodando dentro da dragon board 410c
# Importa lib para comunicacao com MOSQUITTOimport paho.mqtt.client as mqtt
sa libsoc_zero. GPIO LED za uvoz iz vremena uvoza sleep sleep led = LED ('GPIO-E') #led.off ()
# Definirajte o que fazer ao conectar def on_connect (klijent, obj, zastave, rc): print ("ConexÃÆ' £ o estabelecida com broker")
# Definirajte 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 za posrednika broker_address = "34.230.74.201"
# Cria o cliente sub = mqtt. Client ("grupo3")
sub.connect (brokerska_adresa)
sub.on_message = on_message sub.on_connect = on_connect
# Increve nema topico sub.subscribe ("SIRENE", qos = 0)
# Loop para escuta sub.loop_forever ()
Korak 4: Codigo Twitter - objava
Código para publicação do twitter assim que acionado or alarme.
código rodando na virtualnom maquina da AWS EC2
#!/usr/bin/env python #---------------------------------------- ------------------------------- # twitter-post-status #-objavljuje statusnu poruku na vašoj vremenskoj liniji # --- -------------------------------------------------- ------------------ import paho.mqtt.subscribe as subscribe
vreme uvoza
sa uvoza na Twitteru *
#------------------------------------------------- ---------------------- # koji bi trebao biti naš novi status? #------------------------------------------------- ---------------------- new_status = "#Terremoto Nabavite uma zona segura-teste"
#------------------------------------------------- ---------------------- # učitajte naše API vjerodajnice # ---------------------- ------------------------------------------------- uvoz sys sys.path.append (".") Konfiguracija uvoza
#------------------------------------------------- ---------------------- # kreiraj twitter API objekt # ---------------------- ------------------------------------------------- twitter = Twitter (auth = OAuth ('senha removida))
#------------------------------------------------- ---------------------- # objavite novi status # twitter API dokumenti: https://dev.twitter.com/rest/reference/post/statu… #------------------------------------------------- ----------------------
dok je 1: m = subscribe.simple ("twitteralarme", hostname = "172.31.83.191", retained = False) ako je m.topic == "twitteralarme" i str (m.payload.decode ("utf-8")) == "on": results = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("ažuriran status: % s" % new_status)
Korak 5: Centro De Comando
semper que acionado um dispositivo manual or detectado um alertta manual do usuário é acionada uma contagem regressiva para envio de mensagem. O operateru možete otkazati ili aktivirati aktivaciju ili obavijest o upozorenju.
Za korištenje dasboard -a sa android -a na telefonu za kompjuter s operacijskim centrom za upravljanje.
código rodando na virtualnom maquina AWS EC2
uvoz paho.mqtt.client kao pahoimport paho.mqtt.subscribe as subscribe uvoz paho.mqtt.publish kao objavljivanje import json vrijeme uvoza uvoz šest uvoz ssl iz vremena uvoza sleep
teme = ['#']
gatilho = 0 hora_disparo = 0 published.single ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") published.single ("sensor1", "OFF", qos = 1, hostname = "172.31.83.191 ") published.single (" senzor2 "," OFF ", qos = 1, ime hosta =" 172.31.83.191 ")
connflag = Netačno
def on_connect (client, userdata, flags, rc): global connflag connflag = True print (connflag) print ("Veza je vratila rezultat:" + str (rc))
def on_message (client, userdata, msg): # print ("teste") print (msg.topic+""+str (msg.payload))
def on_log (client, userdata, 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_TLSv1con, cip, keepalive = 60) mqttc.loop_start ()
dok 1: hora = time.time () sleep (.1) published.single ("LEDTERREMOTO", "uključeno", qos = 1, ime hosta = "172.31.83.191")
# if connflag == Tačno: # mqttc.publish ("poruka", json.dumps ({'poruka': "TERREMOTO"}), qos = 1) ako je gatilho == 1: published.single ("TEMPO", str (okruglo (hora_disparo-hora, 0)), qos = 1, hostname = "172.31.83.191") published.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") else: objavi.single ("TEMPO", "99", qos = 1, hostname = "172.31.83.191") # print ("") if (hora> hora_disparo) i (gatilho == 1): # print ("TERREMOTO") # print (connflag) if connflag == Tačno: # mqttc.publish ("poruka", json.dumps ({'poruka': "TERREMOTO"}), qos = 1) # mqttc.publish ("poruka", "TERREMOTO ", qos = 1) mqttc.publish (" poruka ", json.dumps (" TERREMOTO - NABAVA UMA ZONA SEGURA "), qos = 1)
# print ("teste SNS") # published.single ("LED", "uključeno", ime hosta = "172.31.83.191") published.single ("SIRENE", "uključeno", qos = 1, ime hosta = "172.31. 83.191 ") published.single (" TEMPO "," TERREMOTO ", qos = 1, ime hosta =" 172.31.83.191 ") published.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 spavanje (5) m = subscribe.simple (teme, ime hosta =" 172.31.83.191 ", zadržano = Netačno) ako je m.topic ==" ACIONADO "i str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print (" cancellado ") ako je m.topic ==" medico "i str (m.payload.decode (" utf-8 ")) ==" uključeno ": if connflag == Tačno: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) if m.topic ==" bombeiro "i str (m.payload.decode ("utf -8")) == "on": if connflag == Tačno: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) if m.topic == " ambulancia "i 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" i 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 else: print ("Acionado") published.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60
Korak 6: Codigo Twitter - Monitoração
código monitoringração do twitter, pesquisa post na regiao de sorocaba
código rodando na virtualnom maquina AWS EC2
n
from twitter import *import config import paho.mqtt.publish as published
od vremena uvoza sleep
twitter = Twitter (auth = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))
zemljopisna širina = -23,546211 dužina = -46,637840 alkansa = 50 rezultata = 1
published.single ("twitter_alarme", "ON", hostname = "34.230.74.201")
result_count = 0 last_id = Nema zastavice = 0
za i u rasponu (60): #----------------------------------------- ------------------------------ # izvršite pretraživanje na osnovu zemljopisne širine i dužine # twitter API dokumenti: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- pokušajte: query = twitter.search.tweets (q = "#Terremoto", geocode = " %f, %f, %dkm" %(geografska širina, dužina, alkansa), max_id = last_id) ispis ("leu")
osim: print ("erro acesso twitter") break
za rezultat u upitu ["statusi"]:
#------------------------------------------------- ---------------------- # obrađuje rezultat samo ako ima geolokaciju # ----------------- -------------------------------------------------- ---- ako je rezultat ["geo"]: rezultat_broj += 1 zadnji_id = rezultat ["id"] spavanje (1) ako je rezultat_broj == rezultat: zastava += 1 objavite.single ("twitter_alarme", "ON", hostname = "34.230.74.201") published.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") break
Korak 7: Estrutura AWS
Upotreba uma maquina virtualnog rodanda ubuntu na strukturi AWS EC2
Koristite AWS IOT CORE za servise MQTT -a i konfigurišite ih kao prilagođene tipovima za menjanje poruka
Koristite topics za AWS SNS que eram acionados pelo AWS IOT CORE
Preporučuje se:
Dizajn igre brzim pokretom u 5 koraka: 5 koraka
Dizajn igre u Flick -u u 5 koraka: Flick je zaista jednostavan način da napravite igru, posebno nešto poput zagonetke, vizuelnog romana ili avanturističke igre
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: 3 koraka
Prepoznavanje lica na Raspberry Pi 4B u 3 koraka: U ovom uputstvu ćemo izvršiti otkrivanje lica na Raspberry Pi 4 sa Shunya O/S koristeći biblioteku Shunyaface. Shunyaface je biblioteka za prepoznavanje/otkrivanje lica. Cilj projekta je postići najbržu brzinu otkrivanja i prepoznavanja sa
Comando Por Voz - DragonBoard410c: 5 koraka
Comando Por Voz - DragonBoard410c: Este guia ir á ensinar instalar e konfigurator programa Julius junto com o Coruja, que s ã o respectivamente um programa de reconhecimento de voz e o modelo ac ú stico em Portugues ê s
Centro De Cómputo Para Niños Con Raspberry Pi: 7 koraka
Centro De Cómputo Para Niños Con Raspberry Pi: Ovo nije servo upravljački program koji podržava Raspberry Pi i parametre za koje je potrebno: Raspberry Pi 2 Adapter za crveni i mikro USB Tarjeta mikro SD (8 GB) Kabel HDMI Cargador Rat ó n Teclado para computadoraEn caso de contar con un Kit de inicio
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima