Përmbajtje:

Shërbimi Web i Irrigações Automatizadas Com Utilizando Python: 5 hapa (me fotografi)
Shërbimi Web i Irrigações Automatizadas Com Utilizando Python: 5 hapa (me fotografi)

Video: Shërbimi Web i Irrigações Automatizadas Com Utilizando Python: 5 hapa (me fotografi)

Video: Shërbimi Web i Irrigações Automatizadas Com Utilizando Python: 5 hapa (me fotografi)
Video: #SHORTS. Servicios de OFICINA VIRTUAL en Ingeniería Hidráulica y Riego 2024, Dhjetor
Anonim
Përdorni Automatizadas Com Web Web Service duke përdorur Python
Përdorni Automatizadas Com Web Web Service duke përdorur Python

Neste projeto iremos desenvolver um sistemi de monitoramento para plantações, që janë të lidhura me umidade relativa do ar, pressão atmosférica, temperatura do ar, incidencia UV, velocidade do vento e condição da planta (seca/molhada). Alguns desses dados são obtidos localmente, mund të gjenden jashtë faqes sonë të shërbimit të internetit të lidhura dhe të kryera nga meteorológica (Jo rastësisht, vlerësimet e përdorimit të një Faculdade de Engenharia de Sorocaba). Após adquiridos, os dados serão disponibilizados em uma aplicação web baseada em ThingSpeak.

Hapi 1: Përdorimi i harduerit

Përdorimi i harduerit
Përdorimi i harduerit

Përdorimi për një ndërtim të destinimit të projektit:

1x Qualcomm Dragonboard 410c

1x Mezzanine Sensor i Parë Grove

Sensor 1x me ujë

1x IMU 10OF Grove Sensor v1.0

1x Sensor i Diellit Grove v1.0

1 x USB me miun

1 x Teclado USB

1x Monitor

1x Cabo HDMI

1x Adaptador HDMI-VGA

Acesso à dados da estação meteorológica FYTYRAT

Hapi 2: Montagem Do Hardware

Montagem Do Hardware
Montagem Do Hardware

Após conectar a placa Sensor Mezzanine à dragonboard, ekzekutoni një ligação de acordo com o esquemático anterior, sendo:

1: Klikoni për të hyrë në sensorin Groove Sunlight v1.0.

2: +5V i lidhur me Vcc në IMU-10DOF.

3: +5V e Gnd conectados aos pinosrespondentes do sensor Uji.

4: GND IMU-10DOF.

5: SDA/SCL lidhet me korrespondencën e pino në IMU-10.

6: Pino Sig do Sensori i ujit i lidhur me pino 2.

Hapi 3: Firmware Atmega328

Através da Sensors Mezzanine, mund të keni qasje në mikrokontrolluesin Atmega328, ose të përdorni pajisjet tona në platformat, duke përdorur programin tuaj, duke përdorur një IDE Arduíno instalim në DragonBoard. Mund të rishikoni një Mezzanine dhe a DragonBoard që mund të bëni për të bërë sisteme të nevojshme për një programim dhe gravação për firmware pa mikrokontrollues.

Nga firmware embarcado është përgjegjës për të kuptuar si leituras sensores, gjerenciao protokollet e komunikimit dhe operimit të mesmeve, dhe apos një ujë të dosjeve, duke përdorur serial porta për DragonBoard.

*Shkruani në mënyrë të domosdoshme një përfshirje biblioteke të përdorimit pa firmware. Elas podem ser encontradas em:

imu-10DOF

Sensori i dritës së diellit

Përdorimi i firmware -it në kodin encontrado aqui ou aqui:

Hapi 4: Programação Em Python

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

Për programin e krimit, për nevojat e importit të seguintes: 'urllib2', 'json', 'koha', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal . Foram definidos duas funções ('comJSON' e 'semJSON') që është e qartë për të vonuar.

import urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () import serial #para o Arduino import paho.mqtt.publish as published #para publicar import psutil #para configurar o url import decimal #para converter

O Primeiro passo é gravar em uma variável ose endereço de onde serão obtidos os dados da Estação Meteorológica (nuk ka nevojë për gravando na variável 'url'). Për më tepër, inicializamos duas variáveis ('i' e 'j'), përdorin 'i' para pegar os dados mais atuais do Array që iremos të marrim nëpërmjet JSON (si dhe të dhënat më të fundit të Array será a 49, inicializamos 'i' como 49) e 'j' para contar quantas vezes o código já rodou.

url = "https://www.fieldclimate.com/api/CIDIStationData/GetLast?user_name=facens&user_passw=clima&station_name=002035C0" #Përcakto URL -në

i = 49 #Para pegar os dados mais atuais da estação

j = 0 #Passo do programa

Entrando jo 'ndërsa (1)', inicializamos a variável 'jsonurl' como 'Asnjë'. Mund të ndryshoni një URL JSON, që ju lejon të përdorni një 'ndërsa', duke përdorur një rivendosje të shpejtë të një përsëritjeje të lakut. Për sa i përket përdorimit të URL -së ose përdorimit të një 'urllib2.urlopen (url)', zgjidhni një argumentim 'timeout = X', dërgoni një sasi të caktuar të emrit në adresën e URL -së për të. Se o programa conseguir abrir a URL dentro do tempo do timeout, ose programi është një realizim i një funksioni 'comJSON' mencionada anteriormente. Në rast se nuk mund të shkurtoni një URL pa kohë, kuptojeni atë duke përdorur 'semJSON'. Ambos as 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). Komo 'semJSON' është një derivadë e 'comJSON'. Iremos shpalos një somente a 'comJSON'

ndërsa (1): jsonurl = Asnjë #Inicializa a varivavel como Asnjë print 'Passo:', j print 'Atualizando dados' provoni: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos nëse jsonurl nuk është Asnjë: printoni 'Dados atualizados' comJSON (jsonurl) #Se conseguiu abrir o URL, mostra todos os dados përveç: nëse jsonurl nuk është Asnjë: print 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) kaloni j += 1 print '---------------------------------- ------------------------------------------------------ ---------------------------------------------- / n 'koha.gjumë (1)

Në radhë të parë do të përdorim 'comJSON', do të marrim fjalë për fjalë nga URL -ja për të përdorur një numër të ndryshëm 'dados'. Ju mund të përdorni një grup të caktuar Arrays, das quais iremos somente usar uma ('ReturnDataSet'). Realizada esta operação, iremos então inicializar o Serial do Arduíno e ler as linhas (lexo ((lexo) ()) ose o Arduíno está imprimindo e jogando as Strings convertidas dentro de variáveis e, então, mostrando esses dados na tela. Recebidos os dados do Arduíno, receberemos os dados da estação, Simplesmente acessando os sensores específicos dentro do objeto 'dados' (por exemplo '[' ReturnDataSet '] [' sens_aver_6_5] ') e então mostramos estes nov Me

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 ().strip ()) ardUV = noton (ard.readline (). rstrip ())

print "\ nArduino"

nëse ardAgua == 1: print 'Molhado' tjetër: print 'Seco' print 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '

#Estacao

print '\ nJSON' print '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']

printoni 'Të dhënat:', të dhëna

print 'Velocidade do Vento:', vel_vento, 'm/s' print 'Umidade do ar:', umidade, '%'

#Konverto

vel_vento = dhjetore. dhjetore (vel_vento.rstrip ()) umidade = dhjetore. dhjetore (umidade.rstrip ())

O próximo passo é enviar todos esses dados coletados. Për më tepër, mund të zgjidhni një kanal identifikimi, një Chave de Escrita e o Host em variáveis, të gjitha konfigurimet e përdorimit të pasigurta të përdorimit, të përdorura të pasigurta në uebfaqe dhe të përdorimit të SSLWebsockets (usamos True, False, False). Criamos mais uma variável que irá gardar o 'caminho' para o canal, e uma outra para guardar, em String, o que será enviado para o servidor (com todas as variáveis convertidas) dhe então publicitar os dados no servidor usando 'published. të vetme (tema, ngarkesa = tPayload, emri i hostit = mqttHost, port = tPort, tls = tTLS, transport = tTransport) '. Një funcão então acaba e retorna para o loop principal.

#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código dado pelo ThingSpeak mqttHost = "mqtt.thingspeak.com" #konfigurimet "tcp" tPort = 1883 tTLS = Asnjë nëse përdoretUsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = Asnjë nëse përdoretSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'cert_certs'://etc/ssl/"/etc/ss certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 temë =" kanale/" + channelID +"/publikoj/" + apiKey #Cria variavel com o 'caminho' para o canal tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (të dhëna) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade) #Organiza todas as variaveis em uma String para ser enviado print 'Enviando dados' try: published.single (tema, ngarkesa = tPagesa, emri i hostit = mqttHost, port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) print 'Dados enviados' përveç: print 'Erro ao enviar dados'

Hapi 5: Konfiguro Shërbimin Ueb

Konfiguro Shërbimi Ueb
Konfiguro Shërbimi Ueb

Për të siguruar një shërbim në internet, përdorni një platformë ThingSpeak. Për më tepër, hyni në asnjë faqe thingspeak.com dhe criamos uma conta. Aplikoni një regjistrim dhe hyrje në kontakte, nëse nuk drejtoheni në menunë -> Canais -> Meus Canais dhe entico clicamos pa botoo "Kanali i Novos". Ao clicar, escolhemos o nome do Canal, escrevemos uma descrição para ele, e então decidimos quantos dos 8 campos possíveis utilizaríamos. Asnjë rast, përdorimi 7.

Ao criar um canal, é gerado um ID do Canal, uma Chave de Escrita e uma Chave de Leitura. O ID do Canal se encontra abaixo do nome do canal e a Chave de Escrita na aba "Chaves". Para se të pyes Python për t'u informuar për informacionin e nevojshëm para kanalit, është e nevojshme të konfiguroni ID-në e kanalit:

channelID = "Insira o ID do Canal aqui"

Também com a Chave de Escrita:

apiKey = "Insira a Chave de Escrita"

Të gjitha lidhjet me krizën e kanalit, të gjitha nevojat për konfigurimin e jashtëm të konfigurimeve pa kodin Python në aplikacionin tonë. Py:

useUnsecuredTCP = E vërtetë

useUnsecuredWebsockets = FalseuseSSLWebsockets = I rremë mqttHost = "mqtt.thingspeak.com" nëse përdoretUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = Asnjë nëse useUnsecuredWebsockets: tTransportSockSport = t " websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 temë =" kanale/" + channelID +"/publikoj/" + apiKey

Për një aplikim real real të pranimit, për shembull, për një vlerë të Temperaturës no campo 2 (për escolhemos për një temperaturë), është e nevojshme të tregoni në "fushën2 ="+ndryshimin_temperatura, pa ndryshuar një mënyrë:

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

Konsideroni të drejtën tuaj për të bërë Canal à programação em Python, duke ekzekutuar programin tuaj ose duke përdorur shërbimet e internetit në Web Service. No ThingSpeak, është e mundur të realizohet të bëni një monitorim të através de gráficos.

Recommended: