Obsah:

Automatizované webové služby používajú Python: 5 krokov (s obrázkami)
Automatizované webové služby používajú Python: 5 krokov (s obrázkami)

Video: Automatizované webové služby používajú Python: 5 krokov (s obrázkami)

Video: Automatizované webové služby používajú Python: 5 krokov (s obrázkami)
Video: How to Do SDXL Training For FREE with Kohya LoRA - Kaggle - NO GPU Required - Pwns Google Colab 2024, Júl
Anonim
Automatizuje používanie webovej služby a používa Python
Automatizuje používanie webovej služby a používa Python

Najbližšie projekty môžu mať za následok zoslabenie systému monitorovania, sledovanie a porovnávanie relatívnej vlhkosti vzduchu, atmosférickej teploty, teploty do ultrafialového žiarenia, ultrafialového žiarenia a klimatizácie (plánovanie). Rôzne druhy miest a miest, ktoré sú k dispozícii, sú k dispozícii na webovej stránke. Webová služba je pripojená k meteorologickej meteorológii (neexistuje, používa sa a používa sa). K dispozícii sú všetky dostupné produkty, ktoré sú k dispozícii, a taktiež webová aplikácia ThingSpeak.

Krok 1: Hardvérové využitie

Hardvérové využitie
Hardvérové využitie

Použitie a konštrukcia stavebného projektu:

1x Qualcomm Dragonboard 410c

1x medziposchodie senzora videného v háji

1x snímač videný vo vode

1x Grove senzor IMU 10OF v1.0

1x Senzor slnečného svitu Grove v1.0

1x myš USB

1x Teclado USB

1x monitor

1x Cabo HDMI

1x Adaptador HDMI-VGA

Prístup k meteorológom FACENS

Krok 2: Montagem Do Hardware

Hardware Montagem Do
Hardware Montagem Do

Pripojte medziposchodie senzora k dragonboardu a vykonajte prednú stranu, ktorá odosiela:

1: Kónický snímač senzora Groove Sunlight v1.0.

2: +5 V pripojenie, Vcc do IMU-10DOF.

3: +5V Pripojenie k senzoru vody.

4: GND IMU-10DOF.

5: SDA/SCL prepojenie a korešpondencia s IMU-10.

6: Pripojenie snímača vody Pino Sig do a pino 2.

Krok 3: Firmvér Atmega328

Através da Sensors Mezzanine, and possível acessar um microcontrolador Atmega328, o mesmo use and emplate of Arduíno, and programá-lo diretamente, use an IDE Arduíno instalada on DragonBoard. Väčšie množstvo medziposchodí a serverov DragonBoard obsahuje množstvo programových doplnkov a programových doplnkov, ktoré neobsahujú mikroprocesor.

O firmvéri a o odpovedi môžete hovoriť ako o najlepších snímačoch, ako aj o bežných protokolov komunikácií a operácií, ako aj o sériových prenosoch cez sériu DragonBoard.

*Potrebné a zahrnuté bibliotekáre nepoužívajú žiadny firmvér. V tomto prípade existujú nasledujúce rady:

imu-10DOF

Senzor slnečného svetla

Využitie firmvéru podporovaného softvérom pre akvizíciu alebo akvizíciu:

Krok 4: Programujte Python

Program v Pythone
Program v Pythone

Para o programa criado, foram necessaryários os seguintes importes: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'. Foram definidos duas funções ('comJSON' e 'semJSON') que serão explicadas mais tarde.

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

O hlavnom pasu a gravar em em varaável o endereço de onde serão obtidos os dados da Estação Meteorológica (no caso estamos gravando na variável 'url'). Vykonajte niekoľko inicializácií ("i" e "j"), použite "i" para pegar os dados mais atuais do Array que iremos receber via JSON (como a posição mais recente da 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" #Define o URL da eestação

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

j = 0 #Súvisiace programy

Zadajte nie 'while (1)', inicializujte a zadajte 'jsonurl' como 'None'. Viac variácií môže obsahovať URL JSON, napríklad ďalšie inicializácie, ktoré nevytvárajú „while“, ale môžu tiež resetovať elastické tódy, ktoré môžu opakovať slučku. Viac informácií nájdete na adrese URL, ktorá obsahuje a môže obsahovať 'urllib2.urlopen (url)', prípadne pridať ďalšie časové pásmo 'timeout = X', odoslať X množstvo množstva URL adresy URL alebo URL adresy. Vyberte jeden z nasledujúcich spôsobov, ako skrátiť URL časový limit, alebo si naplánovať prvú a prvú voľbu programu. Caso não Consiga abrir a URL no temp estipulado, realiza-se a função 'semJSON'. Ambos as funções são muito parecidas, tendo como differentença os dados da estação ('comJSON' irá mostrar e enviar os dados da eestação, enquanto 'semJSON' não). Como 'semJSON' é derivuje sa z 'comJSON'. Iremos vysvetľuje niečo ako „COMJSON“

while (1): jsonurl = None #Inicializa a varivavel como None print 'Passo:', j print 'Atualizando dados' try: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no maxima 5 segundos Ak jsonurl nie je None: print 'Dados atualizados' comJSON (jsonurl) #Sse conseguiu abrir o URL, mostra todos os dados okrem: if jsonurl is None: print 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, väčšina údajov, ktoré sú k dispozícii (do Arduina), prejde j += 1 tlač '---------------------------------- ---------------------------------------------------------- -------------------------------------------- / n 'čas.spánok (1)

Na hlavnom riadku funkcie „comJSON“získate všetky údaje o adrese URL já abertos numa variável „dados“. Všetky prijímače môžu obsahovať dve sady polí, pretože niektoré z nich sa často používajú („ReturnDataSet“). Realizácia a operácia prvého spustenia seriálu Sériová verzia Arduínového súboru (čiara čítania ()) obsahuje viac informácií o vašom Arduínovom štýle, ako o strunách, ktoré prevádzajú rôzne zubné kazety. Príjem dát do Arduíno, príjem údajov z viacerých aplikácií, ako napríklad jednoduché snímanie snímačov rôznych typov (vrátane príkladov) ['ReturnDataSet'] ['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) # inicializujte a premenujte množstvo prijatých 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 = float (ard.readline (). rstrip ())

vytlačiť „\ nArduino“

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

#Estacao

vytlačiť '\ nJSON' vytlačiť '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']

vytlačiť 'Údaje:', údaje

vytlačiť 'Velocidade do Vento:', vel_vento, 'm/s' vytlačiť 'Umidade do ar:', umidade, '%'

#Konvertovať

vel_vento = decimal. Decimal (vel_vento.rstrip ()) umidade = decimal. Decimal (umidade.rstrip ())

O čo najviac pascí a životných podmienok má čoletados. Niektoré z nasledujúcich možností sú ID kanál, Chave de Escrita e o Host em variáveis, além de configurar o useUnsecuredTCP, useUnsecuredWebsockets e useSSLWebsockets (usamos True, False, False). Criamos mais varaável que irá guardar 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) e então tentar publicar os dados no servidor usando 'publish. single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) '. Ide o hlavnú funkciu slučky.

#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código dado pelo ThingSpeak mqttHost = "mqtt.thingspeak.com" #configurações de comunicaçãoseWeb "tcp" tPort = 1883 tTLS = Žiadne, ak useUnsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = Žiadne, ak useSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'ca_certs': "/etc/ssl/certs/ certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" channels/" + channelID +"/publish/" + apiKey #Cria variavel com o 'caminho' para o canal tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (údaje) + "& 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) vytlačiť 'Dados enviados' okrem: vytlačiť 'Erro ao enviar dados'

Krok 5: Konfigurácia webovej služby

Konfigurácia webovej služby
Konfigurácia webovej služby

Časť, ako sú dostupné ďalšie webové služby, používa a podporuje ThingSpeak. Para tal, entramos no site thingspeak.com and criamos uma conta. Prihláste sa a prihláste sa, kliknite na hlavnú ponuku -> Canais -> Meus Canais a vyberte si z "nového kanála". Ao clicar, escolhemos o nome do Canal, escrevemos uma descrição para ele, e então decisionimos quantos dos 8 campos possises is utilizaríamos. Žiadne prípad, použitie 7.

Ao criar um canal, é gerado um ID do Canal, uma Chave de Escrita e uma Chave de Leitura. ID ID kanála sa bude skladať z kanála a bude mať Chave de Escrita na aba "Chaves". Para que o código Python envie as informações obtidas para o canal é, needário configurá-lo ao ID do Canal:

channelID = "Insira o ID do Canal aqui"

Pozrite sa na Chave de Escrita:

apiKey = "Insira a Chave de Escrita"

Všetky typy kanálov, ktorých konfigurácia nie je potrebná pre konfiguráciu Pythonu:.

useUnsecuredTCP = True

useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com", ak useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = Žiadne, ak useUnsecuredWebsockets: tTransport = "websocketsTSport = tSort = 80 webové zásuvky "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" kanály/" + channelID +"/publikovať/" + apiKey

Niektoré z nasledujúcich webových aplikácií, ktoré môžu obsahovať jednu z najaktuálnejších teplôt temperovaných 2 (Campo que escolhemos para ser a Temperatura), é needario indicar o "field2 ="+variável_temperatura, como no código a seguir:

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

Ďalšie informácie o kanáloch a programoch v Pythone, ktoré sú k dispozícii pre všetky typy webových služieb a webové služby. No ThingSpeak, ktoré môžu byť realizované na základe monitorovania aktivít spoločnosti.

Odporúča: