Mündəricat:

Centro De Comando Yeniləşənlər - Erupção De Vulcão E Terremotos: 7 addım
Centro De Comando Yeniləşənlər - Erupção De Vulcão E Terremotos: 7 addım

Video: Centro De Comando Yeniləşənlər - Erupção De Vulcão E Terremotos: 7 addım

Video: Centro De Comando Yeniləşənlər - Erupção De Vulcão E Terremotos: 7 addım
Video: Fire and Ruin | Exandria Unlimited: Calamity | Episode 4 2024, Noyabr
Anonim
Centro De Comando Yeniləşənlər - Erupção De Vulcão E Terremotos
Centro De Comando Yeniləşənlər - Erupção De Vulcão E Terremotos

İstifadəçi məlumatlarını internetdən əldə etmək üçün istifadə edilə bilər, bu da IOT -un temperatura, luminosidade, oscilânãoo de desenstres de desastres naturais, internet üzərindən istifadə edilə bilər. Əlaqə üçün heç bir əlaqə qurulmamışdır.

Mümkün qədər çox məlumat əldə etmək mümkün deyilsə, bu məlumatların avtomatik olaraq avtomatik olaraq avtomatik olaraq yerləşdirilməsi də mümkündür. Bu, çox vacib bir məsələdir.

SMS -lər, müştəri məlumatları, e -poçt, sirr və e -poçt mesajları ilə əlaqə saxlaya bilərsiniz.

AWS daxil olmaqla IOT CORE, EC2 və SNS daxil olmaqla, bir layihə hazırlayacaqsınız.

DragonBord 410c sensorlar

Android mqtt müştəriləri

Python ilə əlaqəli tapşırıqlar

Avtomobil:

Diego Fernandes dos Santos - [email protected]

Gabriel Piovani Moreira dos Santos - [email protected]

Gustavo Venancio Luz - [email protected]

Paulo Henrique Almeida Santos - [email protected]

Addım 1: Dragonbord 410c - Publicação Dos Sensores - Analogicos

Dragonbord 410c - Dos Sensores Publicaçoları - Analogicos
Dragonbord 410c - Dos Sensores Publicaçoları - Analogicos

Ümumi məlumatların təhlili ilə əlaqədar olaraq, temperaturun və temperaturun ölçülməsi üçün lazım olan bütün məlumatların müəyyən edilməsi, məlumatların qəbulu və qurulması ilə əlaqədardır.

Əməliyyatlar bir neçə gündən sonra dayandırıla bilər.

Bu proqramlar 60 -a qədər geri qayıtdıqdan sonra, 20 -dən çoxunu aşkar etmək üçün yeni proqramlar açılır.

dragon borad 410c üçün rodando proqramı

#!/usr/bin/python3import spidev from libsoc import gpio idxalı yuxudan.

# MOSQUITTO paho.mqtt.client -i mqtt kimi idxal edin

spi = spidev. SpiDev () spi.open (0, 0) spi.max_speed_hz = 10000 spi.mode = 0b00 spi.bits_per_word = 8

#ADC1 portunu istifadə edin channel_select1 = [0x01, 0x80, 0x00]

#ADC2 portunu istifadə etmək üçün kanal_select2 konfiqurasiyasından istifadə edin = [0x01, 0xA0, 0x00]

def on_connect (mqttc, obj, bayraqlar, rc): çap ("rc:" + str (rc))

def on_message (mqttc, obj, msg): çap (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))

def on_publish (mqttc, obj, mid): print ("Mesaj Id:" + str (mid) + "\ n") keç

# Criamos və ya müştəri konfiqurasiya etmək üçün mqttc = mqtt. Client ()

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

pub = mqtt. Client ("qrupo3")

# Conexao com localhost, bu zaman testlər ən yaxşı şəkildə aparılır. broker_address = "34.230.74.201"

pub.connect (broker_adress)

_ adı _ == '_ ana_' olarsa: gpio_cs = gpio. GPIO (18, gpio. DIRECTION_OUTPUT)

gpio.request_gpios ([gpio_cs]) ilə: 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_selcs._g)) 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 çap ("Temperatura: % f / n" % adc_value) pub.publish ("temperatura", str (adc_value)) # həyəcan siqnalı, son test + 5%

əgər adc_value_old == 0: adc_value_old = adc_value əgər adc_value> (adc_value_old*1.05): pub.publish ("ALARME", "ON") çap ("Alarmado temperatura") adc_value_old = adc_value yuxu (1)

gpio_cs.set_high () yuxu (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 çap ("Luminosidade: % f / n" % adc_value2) pub.publish ("luminosidade", str (adc_value2))

# həyəcan siqnalı, son test + 50%

əgər adc_value2_old == 0: adc_value2_old = adc_value2 əgər adc_value2> (adc_value2_old*1.5): pub.publish ("ALARME", "ON") yazdır ("Alarmado Luminosidade") adc_value2_old = adc_value2 yuxu (3)

Addım 2: Sensores Digitais - Publicação

Sensores Digitais - Publicação
Sensores Digitais - Publicação

código para publicação dos senses digits

Səs -küy sarsıldıqda və ya simulyasiya edildikdə, bu sistemin bütün funksiyalarını müəyyən edə bilərsiniz.

bir anomaliya və ya bir anormallıq aşkar edildikdə, geriyə və ya geri qayıtmaq lazımdır.

dragon borad 410c üçün rodando proqramı

libsoc_zero. GPIO idxal düyməsindən libsoc_zero. GPIO idxalı Mqtt idxal sys olaraq paho.mqtt.client idxalı yuxudan idxal zamandan yatır

def on_connect (mqttc, obj, bayraqlar, rc): çap ("Conectado" + str (rc))

def on_message (mqttc, obj, msg): çap (msg.topic + "" + str (msg.qos) + "" + str (msg.payload))

def on_publish (mqttc, obj, mid): # print ("Mesaj Id:" + str (mid) + "\ n") keç

def detectaTilt (): count = 0 sleep_count = 0 True isə: cəhd edin: tilt.wait_for_tilt (1) istisna olmaqla: sleep_count += 1 başqa: count += 1 sleep_count += 1 if sleep_count> 999: break

print ("say:", say) əgər say> 200: pub = mqttc.publish ("TERREMOTO", "ON") pub = mqttc.publish ("SISMOGRAFO", str (count)) # Müştəri və ya müştərilərə müraciət edin configuracoes mqttc = mqtt. Client ()

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

mövzu = "qrupo3"

# Conexao com localhost, bu zaman testlər ən yaxşı şəkildə aparılır. mqttc.connect ("34.230.74.201", 1883)

əymək = əymək ('GPIO-A')

btn = Düymə ('GPIO-C')

while True: sleep (0.25) detectaTilt () if btn.is_pressed (): pub = mqttc.publish ("PANICO", "ON") print ("Botao ON") yuxu (1) pub = mqttc.publish ("PANICO) "," OFF ") # başqa: # pub = mqttc.publish (" PANICO "," OFF ") # çap (" Botao OFF ")

Addım 3: Codigo Para Acionamento Sirene

Codigo Para Acionamento Sirene
Codigo Para Acionamento Sirene

SIRENE üçün əsas proqramlar, dragon board 410c üçün proqram təminatı.

# MOSQUITTOimport paho.mqtt.client olaraq mqtt olaraq # comunicacao ilə əlaqə qurun

libsoc_zero. GPIO idxal LED-dən vaxt idxalı yuxu led = LED ('GPIO-E') #led.off ()

# On_connect (müştəri, obj, bayraqlar, rc) ilə əlaqəli məlumatları təyin edin: çap edin ("ConexÃƒÆ £ £ təsis etmək üçün broker")

# On_message (müştəri, obj, mesaj) defa bir alıcı təyin edin: çap edin ("LED" + str (message.payload.decode ("utf-8"))) əgər str (message.payload.decode ("utf-8"))) == "on": print ("Sirene ligada") led.on () else: print ("Sierene apagada") led.off ()

# IP broker broker_address = "34.230.74.201"

# Müştəri sub = mqtt. Client ("qrupo3")

sub.connect (broker_adress)

sub.on_message = on_message sub.on_connect = on_connect

# Sub.subbone olmaq üçün heç bir mövzu artırmayın ("SIRENE", qos = 0)

# Loop para escuta sub.loop_forever ()

Addım 4: Codigo Twitter - Göndər

Codigo Twitter - Yazı
Codigo Twitter - Yazı
Codigo Twitter - Yazı
Codigo Twitter - Yazı

Təcili olaraq həyəcan siqnalını twitter -də paylaşın.

AWS EC2 -də virtual idarəetmə sistemləri

#!/usr/bin/env python #---------------------------------------- ------------------------------- # twitter-post-status #-zaman çizelgenize bir status mesajı göndərir # --- -------------------------------------------------- ------------------ import paho.mqtt.subunə olaraq abunə olun

idxal vaxtı

twitter idxalından *

#------------------------------------------------- ---------------------- # yeni statusumuz nə olmalıdır? #------------------------------------------------- ---------------------- new_status = "#Terremoto Procure proqram təminatı-test"

#------------------------------------------------- ---------------------- # API etimadnaməmizi yükləyin # ---------------------- ------------------------------------------------ idxal sys sys.path.append (".") idxal konfiqurasiyası

#------------------------------------------------- ---------------------- # twitter API obyekti yaradın # ---------------------- ------------------------------------------------ twitter = Twitter (auth = OAuth ('senha removida))

#------------------------------------------------- ---------------------- # yeni bir status göndər # twitter API sənədləri: https://dev.twitter.com/rest/reference/post/statu… #------------------------------------------------- ----------------------

1: m = abunə olun.sadə ("twitteralarme", hostname = "172.31.83.191", saxlanılan = Yanlış) əgər m.topic == "twitteralarme" və str (m.payload.decode ("utf-8")) == "açıq": nəticələr = twitter.statuses.update (status = (new_status)+str (time.time ())) # print ("updated status: % s" % new_status)

Addım 5: Centro De Comando

Centro De Comando
Centro De Comando

təlimatlar və ya təlimatlar istifadəçilər üçün ən çox məlumat əldə etmək üçün əlinizdən gələni edin. Əməliyyat sistemini yoxlayın və ya işinizi yoxlayın.

İstifadəçilərin bütün işləri Android -də, telefonda və ya mərkəzi telefonda edilə bilər.

AWS EC2 -də virtual idarəetmə sistemləri

paho.mqtt.client pahoimport paho.mqtt.subone olaraq abunə ol idxal paho.mqtt.pub olaraq nəşr et idxal json idxal vaxt idxal et idxal yuxudan altı idxal ssl

mövzular = ['#']

gatilho = 0 hora_disparo = 0 nəşr.single ("ACIONADO", "OFF", qos = 1, hostname = "172.31.83.191") publish.single ("sensor1", "OFF", qos = 1, hostname = "172.31).83.191 ") dərc edin.single (" sensor2 "," OFF ", qos = 1, hostname =" 172.31.83.191 ")

connflag = Yanlış

def on_connect (müştəri, istifadəçi məlumatları, bayraqlar, rc): qlobal connflag connflag = Əsl çap (connflag) çapı ("Bağlantı nəticə verdi:" + str (rc))

def on_message (müştəri, istifadəçi məlumatları, msg): # çap ("teste") çap (msg.topic+""+str (msg.payload))

def on_log (müştəri, istifadəçi məlumatları, səviyyə, buf): çap (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_TLSvcone, mttt), keepalive = 60) mqttc.loop_start ()

while 1: hora = time.time () yuxu (.1) dərc.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191")

# if connflag == Doğru: # mqttc.publish ("mesaj", json.dumps ({'mesaj': "TERREMOTO"}), qos = 1) əgər gatilho == 1: publish.single ("TEMPO", str (yuvarlaq (hora_disparo-hora, 0)), qos = 1, hostname = "172.31.83.191") publish.single ("LEDTERREMOTO", "on", qos = 1, hostname = "172.31.83.191") başqa: dərc edin.single ("TEMPO", "99", qos = 1, hostname = "172.31.83.191") # print ("") if (hora> hora_disparo) və (gatilho == 1): # print ("TERREMOTO") # print (connflag) if connflag == Doğru: # mqttc.publish ("mesaj", json.dumps ({'mesaj': "TERREMOTO"}), qos = 1) # mqttc.publish ("mesaj", "TERREMOTO") ", qos = 1) mqttc.publish (" mesaj ", json.dumps (" TERREMOTO - UMA ZONA SEGURA PROCURE "), 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 ") dərc et.single (" ACIONADO "," OFF ", qos = 1, hostname =" 172.31.83.191 ")) publish.single ("twitteralarme", "on", qos = 1, hostname = "172.31.83.191") dərc et.single ("twitter", "TERREMOTO - PROCURE UMA ZONA SEGURA", qos = 1, hostname = "172.31).83.191 ") gatilho = 0 yuxu (5) m = abunə olun. Sadə (mövzular, ana adı =" 172.31.83.191 ", saxlanılan = Yanlış), əgər m.topic ==" ACIONADO "və str (m.payload.decode (" utf-8 ")) ==" OFF ": gatilho = 0 print (" ləğv ") əgər m.topic ==" medico "və str (m.payload.decode (" utf-8 ")) ==" on ": əgər connflag == Doğru: mqttc.publish (" medico ", json.dumps (" MEDICOS - EMERGENCIA TERREMOTO "), qos = 1) if m.topic ==" bombeiro "və str (m.payload.decode ("utf -8"))) == "on": əgər connflag == Doğru: mqttc.publish ("bombeiro", json.dumps ("BOMBEIRO - EMERGENCIA TERREMOTO"), qos = 1) əgər m.topic == " təcili yardım "və str (m.payloa d.decode ("utf -8")) == "on": əgər connflag == Doğru: mqttc.publish ("ambulansiya", json.dumps ("AMBULANSİYA - EMERGENCIA TERREMOTO"), qos = 1) əgər m. mövzu == "təcili" və str (m.payload.decode ("utf-8")) == "on": publish.single ("ACIONADO", 1, qos = 1, ana adı = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+5 əgər str (m.payload.decode ("utf-8")) == "ON": gatilho == 1 olarsa: print ("acelerado 20") hora_disparo = hora_disparo -20 başqa: print ("Acionado") publish.single ("ACIONADO", 1, qos = 1, hostname = "172.31.83.191") gatilho = 1 hora_disparo = time.time ()+60

Addım 6: Codigo Twitter - Monitoração

Codigo Twitter - Monitorinq
Codigo Twitter - Monitorinq

twitter və ya sorocabada yazılan mesajları izləyin

AWS EC2 -də virtual idarəetmə sistemləri

n

twitter idxalından *idxal konfiqurasiya idxalı paho.mqtt.publish olaraq yayımlayın

vaxtdan idxal yuxu

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

Enlem = -23.546211 Boylam = -46.637840 alcance = 50 nəticəados = 1

publish.single ("twitter_alarme", "ON", ana bilgisayar adı = "34.230.74.201")

result_count = 0 last_id = Bayraq yoxdur = 0

i üçündür (60): #----------------------------------------- ------------------------------ # Enlem və Boylam əsasında bir axtarış aparın # twitter API sənədləri: https:// dev. twitter.com/rest/reference/get/search… #------------------------------------- ---------------------------------- cəhd edin: sorğu = twitter.search.tweets (q = "#Terremoto"), coğrafi kod = " %f, %f, %dkm" %(enlem, boylam, alcance), max_id = last_id) çap ("leu")

istisna olmaqla: çap ("erro acesso twitter") fasilə

sorğu ilə nəticələnmək üçün ["statuslar"]:

#------------------------------------------------- ---------------------- # nəticəni yalnız coğrafi mövqeyə malik olduqda emal edin # ----------------- -------------------------------------------------- ---- əgər nəticə ["coğrafi"]: nəticə_sayı += 1 son_id = nəticə ["id"] yuxu (1) əgər nəticə_sayı == nəticə nəticələri: bayraq += 1 nəşr.single ("twitter_alarme", "ON", hostname = "34.230.74.201") publish.single ("twitter", "TERREMOTO - DETECTADO", ana adı = "34.230.74.201") fasilə

Addım 7: Estrutura AWS

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

AWS EC2 ilə virtual şəbəkə qurmaq üçün istifadə edin

AWS IOT CORE istifadə edərək MQTT -ni konfiqurasiya etmək üçün bu məlumatları istifadə edin.

AWS SNS ilə əlaqədar mövzular AWS IOT CORE ilə əlaqədardır

Tövsiyə: