विषयसूची:

Irrigações Automatizadas Com वेब सेवा Utilizando Python: 5 चरण (चित्रों के साथ)
Irrigações Automatizadas Com वेब सेवा Utilizando Python: 5 चरण (चित्रों के साथ)

वीडियो: Irrigações Automatizadas Com वेब सेवा Utilizando Python: 5 चरण (चित्रों के साथ)

वीडियो: Irrigações Automatizadas Com वेब सेवा Utilizando Python: 5 चरण (चित्रों के साथ)
वीडियो: Learning with Google 2021 2024, जुलाई
Anonim
इरिगाकास ऑटोमेटीज़ादास कॉम वेब सेवा यूटिलिज़ंडो पायथन
इरिगाकास ऑटोमेटीज़ादास कॉम वेब सेवा यूटिलिज़ंडो पायथन

नेस्ट प्रॉजेटो इरेमोस डिसेंवोल्वर उम सिस्टेमा डे मॉनिटरामेंटो पैरा प्लांटाकोस, क्यू इरा ओबर डेडोस डी उमिडेड रिलेटिवा डू आर, प्रेसो एटमोस्फेरिका, टेम्पेरेटुरा डू आर, इंसिडेंसिया यूवी, वेलोसिडेड डो वेंटो ई कॉन्डिका/दा प्लांटा (सेक)। Alguns desses dados são obtidos localmente, enquanto outros são obtidos por meio de um web service conectado uma estação meteorologica (No caso, estamos utilizando a da Faculdade de Engenharia de Sorocaba)। एपोस एडक्विरिडोस, ओएस डैडोस सेराओ डिस्पोनिबिलिज़ैडोस एम उमा एप्लिकाकाओ वेब बेसाडा एम थिंगस्पीक।

चरण 1: हार्डवेयर उपयोगिता

हार्डवेयर उपयोगिता
हार्डवेयर उपयोगिता

निर्माण कार्य के लिए उपयोग करें:

1x क्वालकॉम ड्रैगनबोर्ड 410c

1x ग्रोव सीड सेंसर मेजेनाइन

1x जल बीज सेंसर

1x IMU 10OF ग्रोव सेंसर v1.0

1x सनलाइट ग्रोव सेंसर v1.0

1x माउस यूएसबी

1x टेक्लाडो यूएसबी

1x मॉनिटर

1x काबो एचडीएमआई

1x एडेप्टर एचडीएमआई-वीजीए

एसेसो डैडोस दा एस्टाकाओ मेटोरोलोगिका फेसेन्स

चरण 2: मोंटाजम डू हार्डवेयर

मोंटाजम डू हार्डवेयर
मोंटाजम डू हार्डवेयर

एपोस कनेक्टर ए प्लेका सेंसर मेजेनाइन ड्रैगनबोर्ड, एक लिगाकाओ डी एकॉर्डो कॉम ओ एस्क्वेमेटिको पूर्वकाल, भेजें:

1: Conexão direta entre o sensor Groove Sunlight v1.0.

2: +5V conectado ao Vcc do IMU-10DOF।

3: +5V और Gnd conectados aos pinos संवाददाता वाटर सेंसर करते हैं।

4: GND IMU-10DOF।

5: एसडीए/एससीएल कनेक्टेडो एओ पिनो कॉरेस्पोंडेंट डू आईएमयू-10।

6: पिनो सिग डू वाटर सेंसर कनेक्टेडो एओ पिनो 2.

चरण 3: फर्मवेयर Atmega328

सेंसर्स मेजेनाइन, और माइक्रोकंट्रोलर एटमेगा328 के लिए आवश्यक है, या मैसमो यूटिलाइजैडो एम प्लैटाफॉर्मस अर्डुइनो, और प्रोग्राम-लो डाइरेटामेंट, उपयोग और आईडीई अर्डुइनो इंस्टालाडा और ड्रैगनबोर्ड का उपयोग करें। वेले रिसाल्टर क्यू ए मेजेनाइन ई ए ड्रैगनबोर्ड एम कॉन्जेन्टो पॉस्यूम टूडू ओएस पेरिफेरिकोस आवश्यक पैरा ए प्रोग्रामाओ ई ग्रेवाकाओ डू फर्मवेयर नो माइक्रोकंट्रोलर।

ओ फर्मवेयर एम्बार्काडो é रिस्पॉन्सवेल पोर रियलिज़र के रूप में लीटुरस डॉस सेंसर्स, जेरेन्सियनडो ओएस प्रोटोकॉलोस डी कॉम्यूनिकाकाओ ई ओपेरा डॉस मेस्मोस, ई एपोस ए एक्क्विसियो डॉस डैडोस, ओएस एन्कैमिन्हा पोर्टा सीरियल पैरा ए ड्रैगनबोर्ड के माध्यम से।

*पोड सेर नेसेसरियो ए इनक्लूसाओ दास बिब्लियोटेकस यूटिलिजैडस नो फर्मवेयर। इलास पोडेम सेर एनकॉन्ट्राडास एम:

आईमु -10 डीओएफ

सनलाइट सेंसर

ओ फर्मवेयर यूटिलाइज़्डो पॉड सेर एनकॉन्ट्राडो एक्वी या एक्वी:

चरण 4: Programação Em Python

Programação Em Python
Programação Em Python

पैरा ओ प्रोग्रामा क्रिआडो, फोरम necessários os seguintes आयात: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'दशमलव'। फ़ोरम डेफिनिडोस डुआस फ़नकेज़ ('कॉमजसन' और 'सेमजसन') क्यू सेरो एक्सप्लिकैडस माईस टार्डे।

आयात urllib2, json #para pegar os da estacaoimport time #para o time.sleep() आयात सीरियल #para o Arduino import paho.mqtt.publish as publish #para publicar import psutil #para configurar o url import दशमलव #para कनवर्टर

ओ प्राइमिरो पासो ए ग्रेवर एम उमा वेरिआवेल ओ एंडेरेको डी ओन्डे सेराओ ओब्टिडोस ओएस डैडोस दा एस्टाकाओ मेटेरोलोगिका (कोई कैसो एस्टामोस ग्रेवांडो और वेरिअवेल 'यूआरएल' नहीं)। एम सेगुइडा, इनिसिएलिज़ामोस डुआस वेरिएविस ('आई' ई 'जे'), यूटिलिज़ैंडो 'आई' पैरा पेगर ओएस डैडोस माईस एटुआइस डो ऐरे क्यू इरेमोस रिसेबर वाया जेएसओएन (कॉमो ए पॉसिकाओ माईस रीसेंट दा एरे सेरा ए 49, इनिसियलिजामोस 'आई' कॉमो 49) ई 'जे' पैरा कंटार क्वांटस वेजेस या कोडिगो जा रोडो।

url = "https://www.fieldclimate.com/api/CIDIStationData/GetLast?user_name=facens&user_passw=clima&station_name=002035C0" # इस यूआरएल को परिभाषित करें

मैं = ४९ #पैरा पेगर ओएस डैडोस माईस अतुआइस दा इस्टाकाओ

जे = 0 #पासो प्रोग्राम करते हैं

एंट्रेंडो नो 'जबकि (1)', इनिशियलाइज़्मोस ए वेरिअवेल 'jsonurl' कॉमो 'कोई नहीं'। एस्टा वेरिएबल इरा अबरी ए यूआरएल जेएसओएन, पोर्टेंटो एओ इनिसियलिजर्मोस एला नो इनिसियो डू 'जबकि', एस्टामोस एंटाओ रिसेटांडो एला टोडा वेज़ क्यू रिपेटिरमोस ओ लूप। ओ प्रॉक्सिमो पासो अब्रीर ओ यूआरएल हमें एक função 'urllib2.urlopen(url)', podendo também adicionar umargo 'timeout=X', sendo X uma quantidade em segundos Limite para o URL ser aberto। से ओ प्रोग्राम एक बार फिर से एक यूआरएल डेंट्रो डू टेम्पो डू टाइमआउट, या प्रोग्राम इरा रियलिज़र ए função 'comJSON' मेन्सियोनाडा पूर्वकाल। Caso não consiga abrir a URL no tempo estipulado, realiza-se a função 'semJSON'। अंबोस के रूप में funções são muito parecidas, tendo como diferença os dados da estação ('comJSON' irá mostrar e enviar os dados da estação, enquanto 'semJSON' não)। कोमो 'semJSON' और uma função derivada de 'comJSON'। Iremos एक 'comJSON' को स्पष्ट करता है

जबकि(1): jsonurl = कोई नहीं #Inicializa a varivavel como कोई नहीं प्रिंट 'पासो:', j प्रिंट 'Atualizando dados' कोशिश करें: jsonurl = urllib2.urlopen(url, timeout = 5) #tenta abrir या url em no máximo 5 segundos अगर jsonurl कोई नहीं है: प्रिंट 'Dados atualizados' comJSON(jsonurl) #Se conseguiu abrir o URL, mostra todos os dados सिवाय: if jsonurl कोई नहीं है: प्रिंट 'Erro ao atualizar dados' semJSON() #Se não abriu o URL, मोस्ट्रा ओएस डैडोस ओबटिडोस लोकलमेंट (डू अरुडिनो) पास जे + = 1 प्रिंट '-------------------------------------- -------------------------------------------------- ------------------------------------------\n' समय.नींद (1)

ना प्राइमिरा लिन्हा दा função 'comJSON', रिसेबेमोस टोडोस ओएस डैडोस दा यूआरएल और एबर्टोस नुमा वेरिएवल 'डैडोस'। एस्टा इरा रिसेबर um objeto com duas Arrays, das quais iremos somente usar uma ('रिटर्नडेटासेट')। Realizada इस्टा ओपेरा, iremos então inicializar o Serial do Arduíno e ler as linhas (readline()) que o Arduíno está imprimindo e jogando as Strings Convertidas dentro de variáveis e, então, mostrando esses dados na tela। रेसेबिडोस ओएस डैडोस डो अर्डुइनो, रिसेबेरेमोस ओएस डैडोस डा एस्टाकाओ, सिंपलसेमेंट एसेसैंडो ओएस सेंसर्स एस्पेसिफिकोस डेंट्रो डो ओब्जेटो 'डैडोस' (उदाहरण के लिए '['रिटर्नडेटासेट'] ['sens_aver_6_5]' सबसे अधिक.

def comJSON(jsonurl): #envia todos os dados dados = json.loads(jsonurl.read()) #carrega os dados JSON da página já aberta #Arduino ard = serial. Serial('/dev/tty96B0', 115200) # inicializa a Variavel que receberá os dados do Arduíno #Recebe os dados do Arduíno ardAgua = int(ard.readline().rstrip()) ardTemp = float(ard.readline().rstrip()) ardPres = int(ard.readline) ()। rstrip ()) ardUV = फ्लोट (ard.readline ()। rstrip ())

प्रिंट "\nअरुडिनो"

अगर ardAgua == 1: प्रिंट 'मोल्हाडो' अन्य: प्रिंट 'Seco' प्रिंट 'Temperatura:', ardTemp, '*C' प्रिंट 'Pressao:', ardPres, 'Pa' प्रिंट 'अल्ट्रा-वायलेट:', ardUV, ' एलएक्स'

#एस्टाकाओ

प्रिंट '\nJSON' प्रिंट 'यूआरएल:', jsonurl #Recebe os dados da estação data = dados['ReturnDataSet']['f_date'] vel_vento = dados['ReturnDataSet']['sens_aver_6_5'] umidade = डैडोस ['रिटर्नडेटासेट'] ['sens_aver_19_507']

प्रिंट 'डेटा:', डेटा

प्रिंट 'वेलोसिडेड डू वेंटो:', वेल_वेंटो, 'एम/एस' प्रिंट 'उमिदादे दो आर:', उमीदेड, '%'

#रूपांतरित

vel_vento = दशमलव। दशमलव (vel_vento.rstrip ()) umidade = दशमलव। दशमलव (umidade.rstrip ())

ओ प्रॉक्सिमो पासो एन एनवियर टूडोस निबंध डैडोस कोलेटैडोस। पैरा इसो, प्रिसीसामोस कॉलोकार ए आईडी डू कैनाल, ए चेव डे एस्क्रिटा ई ओ होस्ट एम वेरिएविस, एलेम डी कॉन्फिगरर या यूजअनसिक्योर्डटीसीपी, यूजअनसिक्योर्डवेबसोकेट्स और यूजएसएसएलवेबसॉकेट्स (यूसामोस ट्रू, फाल्स, फाल्स)। क्रीमोस माईस उमा वेरिअवेल क्यू इरा गार्डर ओ 'कैमिन्हो' पैरा ओ कैनाल, ए उमा आउटरा पैरा गार्डर, एम स्ट्रिंग, ओ क्यू सेरा एनविआडो पैरा ओ सर्विडोर (कॉम टोडास ए वेरिएविस कन्वर्टिडास) और एंटो टेंटर पब्लिकर ओएस डैडोस नो 'सर्विडर यूएसंडो। सिंगल (विषय, पेलोड = tPayload, होस्टनाम = mqttHost, पोर्ट = tPort, tls = tTLS, परिवहन = tTransport)'। लूप प्रिंसिपल के लिए एक मजेदार तरीका है।

#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código डेडो पेलो थिंगस्पीक mqttHost = "mqtt.thingspeak.com" #configurações de comunicação उपयोग FTCportes de comunicação उपयोग FTCport = UnsecuredTCP का उपयोग करें। "tcp" tPort = १८८३ tTLS = कोई नहीं यदि उपयोग किया जाता हैअसुरक्षित वेबसोकेट: tTransport = "websockets" tPort = 80 tTLS = कोई नहीं यदि SSLWebsockets का उपयोग करें: आयात ssl tTransport = "websockets" tTLS = {'ca_certs':"/etc/csl/certs Certificates.crt", 'tls_version':ssl. PROTOCOL_TLSv1} tPort = 443 विषय = "चैनल/" + channelID + "/ पब्लिश/" + apiKey #Cria Variavel com o 'caminho' para o canal tPayload = "field1=" + str(ardAgua) + "&field2=" + str(ardTemp) + "&field3=" + str(ardPres) + "&field4=" + str(ardUV) + "&field5=" + str(data) + "&field6=" + str(vel_vento) + "&field7=" + str(umidade) #Organiza todas as Variaveis em uma String para ser enviado print 'Enviando dados' try: publish.single(topic, payload=tPayload, hostname=mqttHost, port=tPort, tls=tTLS, Transport=tTransport) #Envia os dados time.sleep(0.5) प्रिंट 'Dados enviados' को छोड़कर: प्रिंट 'Erro ao enviar dados'

चरण 5: Configurando O वेब सेवा

Configurando ओ वेब सेवा
Configurando ओ वेब सेवा

वेब सेवा के लिए उपयोग करें, एक प्लेटफॉर्मा थिंगस्पीक का उपयोग करें। पैरा ताल, कोई साइट नहीं चीज़ें बातें.com और क्रीमोस उमा कोंटा। एपोस ए क्रिआकाओ ई लॉगइन और कॉन्टा, नोस डिरिगिमोस एओ कैबेकल्हो डे मेन्यू -> कैनैस -> मीस कैनैस ई एंटरो क्लिकमोस नो बोटाओ "नोवो कैनाल"। एओ क्लिकर, एस्कोलहेमोस ओ नोम डू कैनाल, एस्क्रेवेमोस उमा डिस्क्रिकाओ पैरा एली, ई एंताओ डेसीडिमोस क्वांटोस डॉस 8 कैम्पोस पॉसिविस यूटिलिजेरियामोस। नो कासो, यूटिलिजामोस 7.

एओ क्रिअर उम कैनाल, और गेराडो उम आईडी डो कैनाल, उमा चावे डे एस्क्रिटा ए उमा चावे डे लीतुरा। ओ आईडी डू कैनाल से एनकॉन्ट्रा अबाइक्सो डो नोम डू कैनाल ई ए चावे डे एस्क्रिटा ना अबा "चेव्स"। पैरा क्यू ओ कोडिगो पायथन एनवी के रूप में जानकारी के रूप में पता चलता है कि नहर पर क्या है, आवश्यक कॉन्फ़िगरेशन-लो एओ आईडी डो कैनाल:

channelID = "इंसिरा ओ आईडी डो कैनाल एक्वी"

ई टैम्बेम कॉम और चावे डी एस्क्रिटा:

apiKey = "इंसिरा ए चावे डे एस्क्रिटा"

सभी कोनेक्सो कॉम ओ कैनाल क्रिआडो, टैम्बेम साओ नीसेरियास आउटरास कॉन्फिगुरास नो कोडिगो एम पायथन app.py:

असुरक्षित टीसीपी का उपयोग करें = सही

यूजअनसिक्योर्डवेबसोकेट्स = फाल्सयूजएसएसएलवेबसोकेट्स = फाल्स एमक्यूटीहोस्ट = "mqtt.thingspeak.com" अगर यूज अनसिक्योर्डटीसीपी: tTransport = "tcp" tPort = 1883 tTLS = कोई नहीं अगर यूज अनसिक्योर्डवेबसोकेट्स: tTransport = "slttsttststts आयात करें: sltWebsockets आयात करें: slttstts tsttstts आयात करें। websockets" tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt", 'tls_version':ssl. PROTOCOL_TLSv1} tPort = 443 विषय = "चैनल/" + channelID + "/publish/" + एपीआई कुंजी

पैरा क्यू ए एप्लिकेसा वेब रियलमेंट रिसेबा, उदाहरण के लिए, ओ वेलोर टेम्पराटुरा नो कैंपो 2 (कैंपो क्यू एस्कोलहेमोस पैरा सेर ए टेम्परेटुरा), और आवश्यक संकेतक ओ "फ़ील्ड 2 =" + वेरिअवेल_टेम्पराटुरा, कोमो नो कोडिगो ए सेगुइर:

tPayload = "field1=" + str(ardAgua) + "&field2=" + str(ardTemp) + "&field3=" + str(ardPres) + "&field4=" + str(ardUV) + "&field5=" + str(data) + "&field6=" + str(vel_vento) + "&field7=" + str(umidade)

टेंडो विनकुलाडो टोडोस ऑस डैडोस डो कैनाल प्रोग्रामाकाओ एम पायथन, बसा एक्ज़ीक्यूटर ओ कोडिगो क्यू टोडोस ओएस डैडोस एस्कोल्हिडोस साओ एनविआडोस एओ वेब सर्विस। No ThingSpeak, é possível realizar todo o Monitoramento através de gráficos.

सिफारिश की: