Mündəricat:

Irrigações Automatizadas Com Web Service Utilizando Python: 5 Addım (Şəkillərlə)
Irrigações Automatizadas Com Web Service Utilizando Python: 5 Addım (Şəkillərlə)

Video: Irrigações Automatizadas Com Web Service Utilizando Python: 5 Addım (Şəkillərlə)

Video: Irrigações Automatizadas Com Web Service Utilizando Python: 5 Addım (Şəkillərlə)
Video: Become A Master Of SDXL Training With Kohya SS LoRAs - Combine Power Of Automatic1111 & SDXL LoRAs 2024, Noyabr
Anonim
Python üçün Avtomatik Xidmətlər Veb Xidməti
Python üçün Avtomatik Xidmətlər Veb Xidməti

Planlaşdırılan sistemlərin monitorinqi sistemin, sistemin, atmosferin, temperaturun, ultrabənövşəyi şüaların, hava və hava şəraitinin qorunması ilə əlaqədardır. Alguns desses atos são obtidos localmente, enquanto outros são obtidos by the web service may meta de um Web Service conectado à uma estacão meteorológica (No caso, estamos utilizando in a Faculdade de Engenharia de Sorocaba). Əlavə olaraq, ThingSpeak -in əsas veb saytlarıdır.

Addım 1: Hardware Utilizado

Avadanlıq Utilizado
Avadanlıq Utilizado

Layihə qurmaq üçün istifadə edin:

1 ədəd Qualcomm Dragonboard 410c

1x Grove Görən Sensor Mezzanine

1x Su Görən Sensor

1x IMU 10OF Grove Sensor v1.0

1x Günəş işığı Grove Sensoru v1.0

1x Siçan USB

1x Teclado USB

1x Monitor

1x Cabo HDMI

1x Adaptador HDMI-VGA

FACENS meteoroloji coğrafiyası ilə əlaqədardır

Addım 2: Montagem Hardware edin

Montagem Hardware
Montagem Hardware

Əjdaha taxtasında Sensor Mezzanine ilə əlaqə qurun, ön hissəni idarə edin:

1: Groove Günəş işığı v1.0 sensoru.

2: +VV və ya IMU-10DOF ilə 5V əlaqə.

3: +5V və Su sensoru müxbirləri bir -biri ilə əlaqə qururlar.

4: GND IMU-10DOF.

5: SDU/SCL, IMU-10 ilə əlaqə qurur.

6: Pino Sig do Su sensoru conectado ao pino 2.

Addım 3: Firmware Atmega328

Mövsüm Sensorları, Atmega328 mikroprosessorlarını və ya əməliyyat sistemlərini istifadə edərək, bu proqramlar və proqramlar, bir IDE Arduino quraşdırmaq üçün DragonBoard istifadə edə bilərsiniz. Əməliyyat sistemi, DragonBoard və ya mikrokontrolör üçün proqram təminatı və proqram təminatı üçün lazım olan hər şeyi birləşdirə bilər.

Sensor sensorlar, əməliyyat protokolları və əməliyyat sistemləri ilə əlaqəli, DragonBoard üçün bir sıra proqramlar hazırladıqdan sonra cavablandırın.

*Proqram təminatı olmadan bibliotecas daxil olmaq üçün proqram təminatı tələb olunur. Əlavə məlumatları təqdim edirik:

imu-10DOF

Günəş işığı sensoru

Proqram təminatını istifadə edin:

Addım 4: Proqram Em Python

Python proqramı
Python proqramı

Proqramlar idxal edildikdə, bunlar idxal olunur: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'. Funksiyaların müəyyən edilməsi ('comJSON' və 'semJSON') başa düşüləndir.

import urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () serial serial #para o Arduino idxal paho.mqtt.dövr olaraq nəşr et #para publicar idxal psutil #para configurar o url idxal decimal #para çeviricisi

Başlanğıc məlumatları, həm də Estação Meteorológica ilə əlaqəli (və ya 'url' versiyası yoxdur) xidmətlər göstərir. Müxtəlif məlumatların ('i' e 'j') və ya JSON vasitəsi ilə bir sıra məlumatların istifadəsinə icazə verilir (bu, 49 -cu il tarixində və ya sonda). 49) e -j 'pul və ya digər vasitələrlə.

url = "https://www.fieldclimate.com/api/CIDIStationData/GetLast?user_name=facens&user_passw=clima&station_name=002035C0" #URL də estação

i = 49 #İstifadəçilərin fikirlərini öyrənə bilərsiniz

j = 0 #Proqram hazırlayın

Xeyr 'while (1)' yazın, 'heç bir şey yoxdur' yazın. Hər hansı bir URL JSON ilə əlaqələndirildikdə, "heç bir zaman" yoxlanılmalı, bu müddət ərzində yenidən qurulmalı və ya sıfırlanmalıdır. Bir URL istifadə edərək, 'urllib2.urlopen (url)' və ya 'zaman aşımı = X' mövzularında daha çox məlumat əldə edə bilərsiniz. Proqramı bir URL ilə vaxt itkisinə və ya "comJSON" funksiyasını yerinə yetirdiyiniz vaxta qədər təxirə salmağa çalışın. İstənilən vaxt URL-də heç bir sürət yoxdursa, "semJSON" funksiyasını yerinə yetirin. Funksiyaların bir hissəsi olaraq, bir tərəfdən də digər tərəfdən fərqli olaraq, ("comJSON" və ya digər tərəfdən də "dostJSON 'não"). 'SemJSON' və ya 'comJSON' funksiyalarının mənası. İremos "comJSON" sözünü açıqladı

while (1): jsonurl = None #Inicializa a varivavel como Yox çap et 'Passo:', j print 'Atualizando dados' cəhd edin: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos jsonurl yoxdursa: print 'Dados atualizados' comJSON (jsonurl) #Se conseguiu abrir o URL, ustra todos os dados except: jsonurl None: print 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) pass j += 1 print '---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'vaxt.yuxu (1)

Başlanğıcda 'comJSON', URL -lərin son versiyaları 'dados' ilə əlaqədardır. Alıcılar bir sıra məlumatları əldə edə bilsələr də, 'ReturnDataSet' istifadə edə bilərsiniz. Əməliyyat sistemləri, rəsmi məlumat və ya proqramlar, Arduino və ya Arxa liner kimi oxunur (oxu xətti ()) və ya Strings kimi müxtəlif simvollar, mətnlər və mətnlər dəyişdirilə bilər. Recebidos os atos do Arduíno, reseptoremos os dados da estação, simplesmente acessando os sensors Específicosos sensors específicos dentos do objeto 'dados' (məs. Exemplo '[' ReturnDataSet '] [' sens_aver_6_5] ') e -poçt xəbərləri ilə tanış olun.

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) # Arduíno ilə əlaqəli hər hansı bir məlumat əldə etmək üçün #Recebe os dados do Arduíno ardAgua = int (ard.readline (). rstrip ()) ardTemp = float (ard.readline (). rstrip ()) ardPres = int (ard.readline) ().rstrip ()) ardUV = float (ard.readline (). rstrip ())

"\ nArduino" yazdırın

if ardAgua == 1: print 'Molhado' else: print 'Seco' print 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '

#Estacao

çap '\ nJSON' çap 'URL:', jsonurl #Recebe os dados da estação data = dados ['ReturnDataSet'] ['f_date'] vel_vento = dados ['ReturnDataSet'] ['sens_aver_6_5'] umidade = dados ['ReturnDataSet'] ['sens_aver_19_507']

"Data:", məlumatları çap edin

'Velocidade do Vento:', vel_vento, 'm/s' yazdır 'Umidade do ar:', ümidade, '%' yazdır

#Çevirin

vel_vento = decimal. Ondalık (vel_vento.rstrip ()) umidade = decimal. Ondalık (umidade.rstrip ())

Əlavə etmək üçün ən çox bəyəndiyiniz şeylər babas koletadosdur. Əlavə olaraq, bir kanalın kimliyi müəyyən edilir, bir Ev sahibi və ya bir Ev sahibi tərəfindən təyin edilir, UseUnsecuredTCP, UseUnsecuredWebsockets və UseSSLWebsockets (True, False, False) istifadə olunur. Cariamos mais uma variável que irá guardar o 'caminho' para o channel, e uma outra para guardar, em String, or que enviado para o servidor (com todas as variáveis convertidas) və ya heç bir xidmət təqdim etməmək üçün yayımlayın. tək (mövzu, yük = tPayload, ana bilgisayar adı = mqttHost, port = tPort, tls = tTLS, nəqliyyat = tTransport) '. Əməliyyat müdiri üçün əsas vəzifə.

#Envia channelID = grupo apiKey = "1PK9ELK0L4AH8CVP" # Saxlayın dado kaynağı ThingSpeak mqttHost = "mqtt.thingspeak.com" o "344243" #Canal criado para # configurações de Comunicação useUnsecuredTCP = True useUnsecuredWebsockets = False useSSLWebsockets = False useUnsecuredTCP əgər: tTransport = "tcp" tPort = 1883 tTLS = useUnsecuredWebsockets olmadıqda: tTransport = "websockets" tPort = 80 tTLS = UseSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'ca_certs':///// sertifikatlar.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 mövzu =" kanallar/" + kanalID +"/dərc etmək/" + apiKey #Cria variavel com o 'caminho' kanal o kanal tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (data) + "& field6 =" + str ", port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) print 'Dados enviados' istisna olmaqla: print 'Erro ao enviar dados'

Addım 5: Veb Xidmətini Konfiqurasiya edin

Configurando O Veb Xidməti
Configurando O Veb Xidməti

Veb Xidməti və ya ThingSpeak -dən istifadə etmək üçün ən yaxşı məlumatları əldə edin. Əlavə olaraq, heç bir şey yoxdur sitespeak.com və s. Menyuya daxil olmaq üçün heç bir məhdudiyyət yoxdur -> Canais -> Mənə heç bir şey "Novo Canal" üçün heç bir icazə verilmədi. Başqa sözlə, Kanalda heç bir məlumat yoxdur, bu proqramlar 8 və ya daha çox istifadə edilə bilər. Caso yoxdur, utilizamos 7.

Kanal və ya Kanalın kimliyi, Chave de Escrita və Chave de Leitura kanalları. Kanalın kimliyini və ya "Chaves" adlı bir kanalın adını çəkə bilərsiniz. Python, Kanal məlumatlarını öyrənmək üçün, Kanalın kimliyini və ya konfiqurasiyasını öyrənmək üçün istifadə olunur:

channelID = "Kanalın şəxsiyyət vəsiqəsi"

Chave de Escrita ilə əlaqə qurun:

apiKey = "Insire a Chave de Escrita"

Python app.py ilə heç bir əlaqəsi yoxdursa, konfiqurasiya etmək lazım deyil.

useUnsecuredTCP = Doğrudur

useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com" if useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = None if useUnsecuredWebsockets: tTransTortSportSifariş verilsin mi? " websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-sertifikatlar.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 mövzu =" kanallar/" + kanalID +"/yayım/" + apiKey

İstifadəçilərə verilən məlumata görə, heç bir cəsarətlə Temperatura 2 (bir temperaturun olmaması üçün), "sahə2 ="+dəyişkən_temperatura, heç bir şərtlə:

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

Python və ya Canal proqramlarından istifadə etməklə Veb Xidməti ilə əlaqəli proqramlar hazırlanır. ThingSpeak yoxdur, bu proqramın monitorinqi də mümkün olacaq.

Tövsiyə: