Përmbajtje:
- Hapi 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- Hapi 2: Sensores Digitais - Publicação
- Hapi 3: Codigo Para Acionamento Sirene
- Hapi 4: Codigo Twitter - Postoni
- Hapi 5: Centro De Comando
- Hapi 6: Codigo Twitter - Monitoração
- Hapi 7: Estrutura AWS
Video: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:19
Projekto acadêmico para atender cenário de colaboração através për internet për ndarjen e desastres natyrais, në mënyrë që të mund të gjeni një zbulim të acontecimentos através de sensores IOT de temperatura, luminosidade, oscilação (tilte)o) e boto. Ainda no cenário de colaboração prevemos integração com në Twitter dhe aplikacionet që suportojnë mqtt para acionamento do alerta.
Diante një mundësi të ndryshme për të hyrë në zgjidhjen e problemit, në qendrën e operimit të avaliarit mund të zbulohet se është e mundur të vëzhgoni një gënjeshtër të gabuar dhe pozitiv të dozave të disponueshme të automatizimit dhe avaliarit të mundshëm të fakeews. Tal tomada de decisão é crucial di crucial crucial o o o o o o o
Zgjidhni zgjidhjen e alarmit për menagjimin e vlerësimit të përdorimit të ambjenteve të SMS, njoftimin e klientëve të klientëve, email, sirene dhe twitter.
Ju mund të përdorni të dhënat e AWS që përfshijnë IOT CORE, EC2 e SNS
Sensores da DragonBord 410c
klientët android mqtt
Sendo todo desenvolvido em python
Autore:
Diego Fernandes dos Santos - [email protected]
Gabriel Piovani Moreira dos Santos - [email protected]
Gustavo Venancio Luz - [email protected]
Paulo Henrique Almeida Santos - [email protected]
Hapi 1: 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 protocolo 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 seguntos, dhe todo novo alerta deteado decresce o contador em 20 segundos.
programa rodando dentro da dragon borad 410c
#!/usr/bin/python3import spidev nga libsoc import gpio nga koha import gjumi
# Importo lib para komunicacao com MOSQUITTO import paho.mqtt.klient si mqtt
spi = spidev. SpiDev () spi.hapur (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 përdor një porta ADC2 përdorni ose zgjidhni veturën e konfigurimitçàchannel o channel_select2 = [0x01, 0xA0, 0x00]
def on_connect (mqttc, obj, flamuj, 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 ("Id i mesazhit:" + str (mes) + "\ n")
# Criamos ose klient dhe setamos suas configuracoes mqttc = mqtt. Klienti ()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish
pub = mqtt. Client ("grupo3")
# Conexao com localhost, ju duhet të testoni për labredes. broker_adresa = "34.230.74.201"
pub.connect (broker_adresa)
nëse _name _ == '_ kryesore_': gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)
me gpio.request_gpios ([gpio_cs]): contador = 0 adc_value_old = 0 adc_value2_old = 0 ndërsa 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 print ("Temperatura: % f / n" % adc_value) pub.publish ("temperatura", str (adc_value)) # teste para acionar contador do alarme, teste ultima leitura + 5%
nëse adc_value_old == 0: adc_value_old = adc_value nëse adc_value> (adc_value_old*1.05): pub.publish ("ALARME", "ON") print ("Alarmado temperatura") adc_value_old = adc_value fle (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 = adc_value2 = adc_value2 = adc (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%
nëse adc_value2_old == 0: adc_value2_old = adc_value2 nëse adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") print ("Alarmado Luminosidade") adc_value2_old = adc_value2 fle (3)
Hapi 2: 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
nga libsoc_zero. GPIO Butoni i importit nga libsoc_zero. GPIO import Tilt from time import import import paho.mqtt.klient si mqtt import sys
def on_connect (mqttc, obj, flamuj, 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 ("Id i mesazhit:" + str (në mes) + "\ n")
def deteaTilt (): count = 0 sleep_count = 0 while True: try: tilt.wait_for_tilt (1) përveç: sleep_count += 1 tjetër: count += 1 count_count + +1 nëse sleep_count> 999: pushim
printoni ("numëroni:", numëroni) nëse numëroni> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (count)) # Criamos ose klient dhe setamos suas konfiguron mqttc = mqtt. Klienti ()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish
tema = "grupo3"
# Conexao com localhost, ju duhet të testoni për labredes. mqttc.connect ("34.230.74.201", 1883)
anim = Pjerrësia ('GPIO-A')
btn = Butoni ('GPIO-C')
ndërsa True: fle (0.25) detectTilt () nëse btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") print ("Botao ON") fle (1) pub = mqttc.publish ("PANICO "," OFF ") # else: # pub = mqttc.publish (" PANICO "," OFF ") # print (" Botao OFF ")
Hapi 3: Codigo Para Acionamento Sirene
Codigo para subscrição para acionamento da SIRENE, programi rodando dentro da dragon board 410c
# Importa lib para comunicacao com MOSQUITTOimport paho.mqtt.klient si mqtt
nga libsoc_zero. GPIO import LED nga koha e importit gjumi led = LED ('GPIO-E') #led.off ()
# Define o que fazer ao conectar def on_connect (klient, obj, flamuj, rc): print ("Conex࣠o estabelecida com broker")
# Përkufizo o fazën ose marrjen e menaxherit për mesazhin në mesazh (klient, obj, mesazh): print ("LED" + str (message.payload.decode ("utf-8"))) if str (message.payload.decode ("utf-8")) == "on": print ("Sirene ligada") led.on () tjetër: print ("Sierene apagada") led.off ()
# IP do broker broker_address = "34.230.74.201"
# Cria ose klienti nën = mqtt. Client ("grupo3")
nën.lidhje (adresa e ndërmjetësit)
sub.on_message = on_message sub.on_connect = on_connect
# Mos rris asnjë temë nën. Abonohu ("SIRENE", qos = 0)
# Loop para escuta sub.loop_forever ()
Hapi 4: Codigo Twitter - Postoni
Código para publicação do twitter assim que acionado o alarme.
kodi aktual është përdorur në sistemin virtual AWS EC2
#!/usr/bin/env python #-------------------------------------------- ---------------------------------- # twitter-post-status #-poston një mesazh statusi në afatin tuaj kohor # --- ------------------------------------------------------ ------------------ import paho.mqtt.subscribe as subscribe
koha e importit
nga importi i twitter *
#----------------------------------------------------- ---------------------- # cili duhet të jetë statusi ynë i ri? #----------------------------------------------------- ---------------------- new_status = "#Terremoto Procure uma zona segura-teste"
#----------------------------------------------------- ---------------------- # ngarkoni kredencialet tona API # ---------------------- ----------------------------------------------------- import sys sys.path.append (".") importo konfigurimin
#----------------------------------------------------- ---------------------- # krijo twitter API object # ---------------------- ------------------------------------------------- Cicëroj = Twitter (auth = OAuth ('senha removeida))
#----------------------------------------------------- ---------------------- # postoni një status të ri # twitter API docs: https://dev.twitter.com/rest/reference/post/statu… #----------------------------------------------------- ----------------------
ndërsa 1: m = subscribe.simple ("twitteralarme", hostname = "172.31.83.191", ruhet = False) nëse m.topic == "twitteralarme" dhe str (m.payload.decode ("utf-8")) == "on": results = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("statusi i përditësuar: % s" % new_status)
Hapi 5: Centro De Comando
sempre que acionado ose disponueshmëria e manualit ose zbulimi i tij dhe manuali i paralajmërimit të përdorimit të një acionade uma të infektimit të regresivës për mjedisin e menagjerimit. O operador pode cancellar o envio ou acionar o envio imediato do alerta.
Për të përdorur dasboard përdorimin e android dhe telefonin tuaj për të krijuar një mesazh të operimit në qendër të komandës.
kodi aktual është përdorur nga AWS EC2
import paho.mqtt.klient si pahoimport paho.mqtt.subscribe as subscribe import paho.mqtt.publikoj si publikoj import json kohë import import import gjashtë import ssl nga koha import gjumë
temat = ['#']
gatilho = 0 hora_disparo = 0 publikoj.single ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") publiko.single ("sensor1", "OFF", qos = 1, hostname = "172.31.83.191 ") boto.single (" sensor2 "," OFF ", qos = 1, hostname =" 172.31.83.191 ")
connflag = E pavërtetë
def on_connect (klienti, të dhënat e përdoruesit, flamujt, rc): global connflag connflag = Printimi i vërtetë i printimit (connflag) ("Rezultati i kthyer i lidhjes:" + str (rc))
def on_message (klienti, të dhënat e përdoruesit, msg): # print ("teste") print (msg.topic+""+str (msg.payload))
def on_log (klienti, të dhënat e përdoruesit, niveli, 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-certifikatë.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, awsct_tcs, tcSc,_tlSv1, awa_tlSv1, awa_tLSv1, awa_tlSv1, awa_tlSv1 (aw), Keepalive = 60) mqttc.loop_start ()
ndërsa 1: hora = koha.kohë () gjumi (.1) publikoj.teke ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191")
# if connflag == E vërtetë: # mqttc.publish ("mesazh", json.dumps ({'message': "TERREMOTO"}), qos = 1) nëse gatilho == 1: publiko.single ("TEMPO", rr. (e rrumbullakët (hora_disparo-hora, 0)), qos = 1, emri i hostit = "172.31.83.191") boto.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") tjetër: publiko. e vetme ("TEMPO", "99", qos = 1, hostname = "172.31.83.191") # print ("") nëse (hora> hora_disparo) dhe (gatilho == 1): # print ("TERREMOTO") # print (connflag) nëse connflag == E vërtetë: # mqttc.publish ("mesazh", json.dumps ({'message': "TERREMOTO"}), qos = 1) # mqttc.publish ("mesazh", "TERREMOTO ", qos = 1) mqttc.publish (" mesazh ", json.dumps (" TERREMOTO - PROKURO 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 ") published.single (" TEMPO "," TERREMOTO ", qos = 1, emri i hostit =" 172.31.83.191 ") published.ingle (" ACIONADO "," OFF ", qos = 1, emri i hostit =" 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 gjumë (5) m = subscribe.simple (temat, emri i hostit =" 172.31.83.191 ", ruhet = False) nëse m.topic ==" ACIONADO "dhe str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print (" cancellado ") nëse m.topic ==" medico "dhe str (m.payload.decode (" utf-8 ")) ==" on ": if connflag == E vërtetë: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) nëse m.topic ==" bombeiro "dhe str (m.payload.decode ("utf -8")) == "on": nëse connflag == E vërtetë: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) nëse m.topic == " ambulancia "dhe rr (m. Payloa d.decode ("utf -8")) == "on": if connflag == E vërtetë: mqttc.publish ("ambulancia", json.dumps ("AMBULANCIA - EMERGJENCIA TERREMOTO"), qos = 1) nëse m. tema == "urgjente" dhe str (m.payload.decode ("utf-8")) == "on": published.single ("ACIONADO", 1, qos = 1, emri i hostit = "172.31.83.191") gatilho = 1 hora_disparo = koha.kohë ()+5 nëse str (m.payload.decode ("utf-8")) == "ON": nëse gatilho == 1: print ("acelerado 20") hora_disparo = hora_disparo -20 të tjera: print ("Acionado") published.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = kohë. Kohë ()+60
Hapi 6: Codigo Twitter - Monitoração
código monitoração për twitter, pesquisa postoni në rajonin e sorocaba
kodi aktual është përdorur nga AWS EC2
n
nga importi i twitter *import config import paho.mqtt.publikoni si publikoj
nga koha import gjumi
twitter = Twitter (auth = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))
gjerësi gjeografike = -23.546211 gjatësi gjeografike = -46.637840 alcance = 50 rezultate = 1
boto.single ("twitter_alarme", "ON", hostname = "34.230.74.201")
result_count = 0 last_id = Asnjë flamur = 0
për i në rang (60): #-------------------------------------------- ------------------------------ # kryeni një kërkim bazuar në gjerësinë dhe gjatësinë gjeografike # twitter API docs: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- provoni: query = twitter.search.tweets (q = "#Terremoto", gjeokodi = " %f, %f, %dkm" %(gjerësi, gjatësi, alcance), max_id = last_id) print ("leu")
përveç: print ("erro acesso twitter") pushim
për rezultat në pyetjen ["statuset"]:
#----------------------------------------------------- ---------------------- # përpunoni një rezultat vetëm nëse ka një gjeolokacion # ----------------- ------------------------------------------------------ ---- nëse rezultati ["gjeo"]: result_count += 1 last_id = rezultati ["id"] fle (1) nëse result_count == resultados: flamuri += 1 publiko.single ("twitter_alarme", "ON", emri i hostit = "34.230.74.201") boto.single ("twitter", "TERREMOTO - DETECTADO", hostname = "34.230.74.201") pushim
Hapi 7: Estrutura AWS
Shfrytëzoni uma maquina virtual rodando ubuntu dhe estrutura AWS EC2
Përdorni një AWS IOT CORE për shërbimet e MQTT në konfigurimin e mëparshëm si më parë në përputhje me tiparet e menaxherit
Përdorni tema për AWS SNS që dëshironi të përdorni AWS IOT CORE
Recommended:
Si të bëni 4G LTE Antenë të BiQuade të Dyfishtë Hapa të Lehtë: 3 Hapa
Si të bëni 4G LTE Antenë BiQuade të Dyfishtë Hapa të Lehtë: Shumicën e kohës me të cilën jam përballur, nuk kam forcë të mirë të sinjalit në punët e mia të përditshme. Kështu që. Kërkoj dhe provoj lloje të ndryshme antenash por nuk funksionoj. Pas humbjes së kohës gjeta një antenë që shpresoj ta bëj dhe ta provoj, sepse është parimi i ndërtimit jo
Dizajni i lojës në lëvizje në 5 hapa: 5 hapa
Dizajni i lojës në Flick në 5 hapa: Flick është një mënyrë vërtet e thjeshtë për të bërë një lojë, veçanërisht diçka si një enigmë, roman vizual ose lojë aventure
Comando Por Voz - DragonBoard410c: 5 hapa
Comando Por Voz - DragonBoard410c: Este guia ir á siguroni një konfigurim instalar ose program të Julius ju mund të shkoni në Coruja, në mënyrë që të respektoni programin tuaj të rikuperimit të një modeli të stilit em Portugalisht ê s. Një vantagem da utiliza ç ã o do Ju
Centro De Cómputo Para Niños Con Raspberry Pi: 7 hapa
Centro De Cómputo Para Niños Con Raspberry Pi: Estos ser á n los primeros pasos për Raspberry Pi dhe për të gjitha opsionet e tjera: Raspberry Pi 2 Përshtatës me një mikro USB Tarjeta micro SD (me 8 gb) Cable HDMI Cargador Rat ó n Teclado para computadoraEn caso de contar con un Kit de inicio
Qëndrim për laptopë me 3 hapa dhe 3 hapa (me syze leximi dhe tabaka me stilolaps): 5 hapa
Qëndrim për laptopë me hapa 3 & 3 hapa (me syze leximi dhe tabaka për stilolapsa): Kjo $ 3 & Qëndrimi i laptopit me 3 hapa mund të bëhet brenda 5 minutave. It'sshtë shumë e fortë, me peshë të lehtë dhe mund të paloset për ta marrë kudo që të shkoni