สารบัญ:
- ขั้นตอนที่ 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos
- ขั้นตอนที่ 2: เซ็นเซอร์ Digitais - Publicação
- ขั้นตอนที่ 3: Codigo Para Acionamento Sirene
- ขั้นตอนที่ 4: Codigo Twitter - โพสต์
- ขั้นตอนที่ 5: Centro De Comando
- ขั้นตอนที่ 6: Codigo Twitter - Monitoração
- ขั้นตอนที่ 7: Estrutura AWS
วีดีโอ: Centro De Comando Emergencias - Erupção De Vulcão E Terremotos: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
โครงการ 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 () Ainda no cenário de colaboração prevemos integração com o Twitter และ aplicativos com สนับสนุน mqtt สำหรับการแจ้งเตือนในการแจ้งเตือน
Diante a possibilidade de Diversos meios de entrada na solução, caberá um centro de Operações avaliar se a informação esta correta evitando assim falsos-positivos dos dispositivos automatizado e สมัครรับข่าวสารปลอม Tal tomada de decisão éที่สำคัญ diante ao pânico que um alarme falso pode gerar.
Como แก้ปัญหาการเตือนผู้ชาย estamos พิจารณาถึงสภาพแวดล้อมทาง SMS, การแจ้งเตือนของลูกค้า mqtt, อีเมล, ไซรีนและทวิตเตอร์
โปรเจ็กต์ต่อกับ com uso de recursos da AWS รวม IOT CORE, EC2 e SNS
เซนเซอร์ DragonBord 410c
ลูกค้า android mqtt
Sendo todo desenvolvido em python
รถยนต์:
Diego Fernandes dos Santos – [email protected]
Gabriel Piovani Moreira dos Santos – [email protected]
กุสตาโว เวนันซิโอ ลุซ – [email protected]
Paulo Henrique Almeida Santos – [email protected]
ขั้นตอนที่ 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 การกำหนดค่าสำหรับ que assim que detectarem uma Variação fora do padrão pré estabelecido enviarem um alerta através do protocoldozan mqt even sinali.
Este alerta começa a contagem regressiva que pode ser suspensa ou acelerada pelooperador
O contador para o alerta começa contagem regressiva em 60 seguntos, e todo novo alerta detectado decresce หรือ contador em 20 segundos.
โปรแกรม rodando dentro da dragon borad 410c
#!/usr/bin/python3import spidev จาก libsoc นำเข้า gpio จากเวลานำเข้าสลีป
# นำเข้า lib สำหรับ 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
#ใช้พอร์ตADC1 channel_select1=[0x01, 0x80, 0x00]
#Para ใช้พอร์ต ADC2 ใช้ 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): พิมพ์ (msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
def on_publish(mqttc, obj, mid): print("รหัสข้อความ: " + str(กลาง) + "\n") ผ่าน
# Criamos o ลูกค้าและ 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(นายหน้า_ที่อยู่)
ถ้า _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) 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 พิมพ์("อุณหภูมิ: %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") พิมพ์ ("Alarmado temperatura") adc_value_old=adc_value sleep(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 พิมพ์ (" 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 sleep(3)
ขั้นตอนที่ 2: เซ็นเซอร์ Digitais - Publicação
código para publicação dos sensores ดิจิทัล
ระบบปฏิบัติการดิจิทัล 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
จาก libsoc_zero. GPIO นำเข้า Button จาก libsoc_zero. GPIO นำเข้า Tilt จากเวลานำเข้า sleep นำเข้า paho.mqtt.client เป็น mqtt import sys
def on_connect(mqttc, obj, flags, rc): print("Conectado" + str(rc))
def on_message(mqttc, obj, msg): พิมพ์ (msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
def on_publish(mqttc, obj, mid): # print("รหัสข้อความ: " + str(กลาง) + "\n") ผ่าน
def detectaTilt(): count = 0 sleep_count = 0 while True: try:til.wait_for_tilt(1) ยกเว้น: sleep_count += 1 อื่น ๆ: 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 ลูกค้าและ setamos suas configuracoes mqttc = mqtt. Client()
mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish
หัวข้อ = "group3"
# Conexao com localhost, uma vez que testamos fora do labredes. mqttc.connect("34.230.74.201", 1883)
เอียง = เอียง ('GPIO-A')
btn = ปุ่ม ('GPIO-C')
ในขณะที่ 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")
ขั้นตอนที่ 3: Codigo Para Acionamento Sirene
Codigo para subscrição para acionamento da SIRENE, programa rodando dentro da dragon board 410c กระดานดำ
# นำเข้า lib สำหรับ comunicacao com MOSQUITTOนำเข้า paho.mqtt.client เป็น 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โบรกเกอร์")
# กำหนด 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() อื่น: print("Sierene apagada") led.off()
# IP ทำโบรกเกอร์ Broker_address = "34.230.74.201"
# Cria o ลูกค้าย่อย = mqtt. Client("grupo3")
sub.connect(นายหน้า_ที่อยู่)
sub.on_message = on_message sub.on_connect = on_connect
# เพิ่มหัวข้อไม่มี sub.subscribe("SIRENE", qos=0)
# วนซ้ำสำหรับ escuta sub.loop_forever()
ขั้นตอนที่ 4: Codigo Twitter - โพสต์
Código para publicação ทวิตเตอร์ assim que acionado o alarme
código rodando na maquina virtual da AWS EC2
#!/usr/bin/env python #--------------------------------------- ------------------------------- # twitter-post-status # - โพสต์ข้อความสถานะไปที่ไทม์ไลน์ของคุณ #--- -------------------------------------------------- ------------------ นำเข้า paho.mqtt.subscribe as Subscribe
เวลานำเข้า
จากการนำเข้าทวิตเตอร์ *
#---------------------------------------------------------------- ---------------------- #สถานะใหม่ของพวกเราควรเป็นอย่างไร? #---------------------------------------------------------------- ---------------------- new_status = "#Terremoto จัดซื้อ uma zona segura - teste"
#---------------------------------------------------------------- ---------------------- # โหลดข้อมูลรับรอง API ของเรา #---------------------- -------------------------------------------------- นำเข้า sys sys.path.append(".") นำเข้าการกำหนดค่า
#---------------------------------------------------------------- ---------------------- # สร้างวัตถุ twitter API #---------------------- -------------------------------------------------- ทวิตเตอร์ = Twitter(auth = OAuth('senha removida)) ทวิตเตอร์
#---------------------------------------------------------------- ---------------------- # โพสต์สถานะใหม่ # twitter API เอกสาร: https://dev.twitter.com/rest/reference/post/statu… #---------------------------------------------------------------- ----------------------
ขณะที่ 1: m = subscribe.simple("twitteralarme", hostname="172.31.83.191", Retained=False) if m.topic=="twitteralarme" and str(m.payload.decode("utf-8")) =="on": results = twitter.statuses.update(status = (new_status)+str(time.time())) # print("สถานะที่อัปเดต: %s" % new_status)
ขั้นตอนที่ 5: Centro De Comando
semper que acionado um dispositivo manual ou detectado um alerta manual do usuário é acionada uma contagem regressiva สำหรับสภาพแวดล้อมของผู้ชาย ตัวดำเนินการ pode cancelar o envio ou acionar o envio imediato do alerta
สำหรับใช้งานบนแดชบอร์ดและใช้งานบน Android สำหรับโทรศัพท์สำหรับคอมพิวเตอร์และระบบปฏิบัติการ
código rodando na maquina virtual da AWS EC2
นำเข้า paho.mqtt.client เป็น pahoimport paho.mqtt.subscribe เป็นการสมัคร นำเข้า paho.mqtt.publish เป็น เผยแพร่ นำเข้า 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") publish.single("sensor2", "OFF", qos=1, hostname="172.31.83.191")
connflag = เท็จ
def on_connect(client, userdata, flags, rc): global connflag connflag = True print(connflag) print("การเชื่อมต่อส่งคืนผลลัพธ์: " + str(rc))
def on_message(client, userdata, msg): # print("teste") print(msg.topic+" "+str(msg.payload))
def on_log(ไคลเอนต์, ข้อมูลผู้ใช้, ระดับ, 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_TLSv1_), keepalive=60) mqttc.loop_start()
ในขณะที่ 1: hora=time.time() sleep(.1) publish.single("LEDTERREMOTO", "on", qos=1, hostname="172.31.83.191")
# ถ้า connflag ==True: # mqttc.publish("message", json.dumps({'message':"TERREMOTO"}), qos=1) if gatilho==1: publish.single("TEMPO", str (round(hora_disparo-hora, 0)), qos=1, hostname="172.31.83.191") publish.single("LEDTERREMOTO", "on", qos=1, hostname="172.31.83.191") else: เผยแพร่.single("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("message", json.dumps("TERREMOTO - จัดหา UMA ZONA SEGURA"), qos=1)
# print("teste SNS") # publish.single("LED", "on", hostname="172.31.83.191") publish.single("SIRENE", "on", qos=1, hostname="172.31. 83.191") publish.single("TEMPO", "TERREMOTO", qos=1, hostname="172.31.83.191") publish.single("ACIONADO", "OFF", qos=1, hostname="172.31.83.191") publish.single("twitteralarme", "on", qos=1, hostname="172.31.83.191") publish.single("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos=1, hostname="172.31".83.191") gatilho=0 sleep(5) m = subscribe.simple(topics, hostname="172.31.83.191", Retained=False) if m.topic=="ACIONADO" และ str(m.payload.decode(" utf-8"))=="OFF": gatilho=0 print("cancelado") if m.topic=="medico" and str(m.payload.decode("utf-8"))=="on ": if connflag == True: mqttc.publish("medico", json.dumps("MEDIOS - EMERGENCIA TERREMOTO"), qos=1) if m.topic=="bombeiro" and str(m.payload.decode() "utf-8"))=="on": if connflag == True: mqttc.publish("bombeiro", json.dumps("BOMBEIRO - EMERGENCIA TERREMOTO"), qos=1) if m.topic==" รถพยาบาล" และ 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" and str(m.payload.decode("utf-8"))=="on": publish.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 อื่นๆ: print("Acionado") publish.single("ACIONADO", 1, qos=1, hostname="172.31.83.191") gatilho=1 hora_disparo=time.time()+60
ขั้นตอนที่ 6: Codigo Twitter - Monitoração
código monitoração do twitter, pesquisa post ที่ regiao de sorocaba
código rodando na maquina virtual da AWS EC2
NS
จากการนำเข้าทวิตเตอร์ *import config import paho.mqtt.publish as publish
จากเวลานำเข้าการนอนหลับ
twitter = Twitter (auth = OAuth (config.access_key, config.access_secret, config.consumer_key, config.consumer_secret))
ละติจูด = -23.546211 ลองจิจูด = -46.637840 alcance = 50 ผลลัพธ์ = 1
publish.single("twitter_alarme", "ON", hostname="34.230.74.201")
result_count = 0 last_id = ไม่มีแฟล็ก = 0
สำหรับฉันอยู่ในช่วง (60): #-------------------------------------- ------------------------------ # ทำการค้นหาตามละติจูดและลองจิจูด # เอกสาร API ของ twitter: 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
สำหรับผลลัพธ์ในแบบสอบถาม["สถานะ"]:
#---------------------------------------------------------------- ---------------------- # ประมวลผลผลลัพธ์เฉพาะเมื่อมีตำแหน่งทางภูมิศาสตร์ #----------------- -------------------------------------------------- ---- if result["geo"]: result_count += 1 last_id = result["id"] sleep(1) if result_count == resultados: flag += 1 publish.single("twitter_alarme", "ON", hostname="34.230.74.201") publish.single("twitter", "TERREMOTO - DETECTADO", hostname="34.230.74.201") แตก
ขั้นตอนที่ 7: Estrutura AWS
ใช้ uma maquina เสมือน rodando ubuntu กับ esttrutura AWS EC2
ใช้ AWS IOT CORE สำหรับบริการ MQTT บนการกำหนดค่าตามข้อกำหนดหรือคำแนะนำ
หัวข้อการใช้งาน AWS SNS que eram acionados pelo AWS IOT CORE
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
Comando Por Voz - DragonBoard410c: 5 ขั้นตอน
Comando Por Voz - DragonBoard410c: Este guia ir´ การติดตั้ง การกำหนดค่า o โปรแกรม Julius junto com o Coruja, que são การกำหนดค่า um โปรแกรมการทบทวน voz e o modelo acústico em Português.A vantagem da utilizaço;
Centro De Cómputo Para Niños Con Raspberry Pi: 7 ขั้นตอน
Centro De Cómputo Para Niños Con Raspberry Pi: พร้อมใช้งานสำหรับ Raspberry Pi y para ello necesitaremos: Raspberry Pi 2 อะแดปเตอร์สีแดง a micro USB Tarjeta micro SD (ขนาด 8 gb) สายเคเบิล HDMI Cargador หนู Teclado para คอมพิวเตอร์ En caso de contar con un Kit de inicio