Obsah:
- Krok 1: Hardwarové využití
- Krok 2: Montagem Do Hardware
- Krok 3: Firmware Atmega328
- Krok 4: Programação Em Python
- Krok 5: Konfigurace webové služby
Video: Automatizované webové služby využívající Python: 5 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Nejčastěji pracujeme na tom, abychom sledovali více než jednu planetu, sledujeme její relativní relativní vlhkost, atmosférickou teplotu, teplotu do UV záření, ultrafialové záření a kondicionování planety (seca/molhada). Alguns deses dados são obtidos localmente, enquanto outros withão obtidos por meio de um Web Service conectado à uma estação meteorológica (No caso, estamos utilizando a da Faculdade de Engenharia de Sorocaba). Všechny dostupné a aktualizované webové aplikace ThingSpeak.
Krok 1: Hardwarové využití
Využití pro konstrukci a konstrukci projektu:
1x Qualcomm Dragonboard 410c
1x Mezipatro Grove Seeed Sensor
1x senzor viděný ve vodě
1x IMU 10OF Grove Sensor v1.0
1x Sunlight Grove Sensor v1.0
1x USB myš
1x Teclado USB
1x monitor
1x Cabo HDMI
1x Adaptador HDMI-VGA
Meteorologická meteorologická zařízení
Krok 2: Montagem Do Hardware
Chcete -li připojit mezizanový senzor na dragonboard, proveďte přední a přední propojení a odešlete:
1: Conexão direta entre o sensor Groove Sunlight v1.0.
2: +5V konektory o Vcc do IMU-10DOF.
3: +5V a Gn konektory aos pinos korespondující s Vodním senzorem.
4: GND IMU-10DOF.
5: SDA/SCL připojení odpovídající IMU-10.
6: Pino Sig do Vodní senzor conectado ao pino 2.
Krok 3: Firmware Atmega328
Através da Sensors Mezzanine, and possível acessar um microcontrolador Atmega328, or mesmo utilizado em plataformas Arduíno, and programá-lo diretamente, use an IDE Arduíno instalada on DragonBoard. Velké množství mezzanine a DragonBoard může obsahovat všechny potřebné periferie a programové vybavení a firmware bez mikroprocesoru.
O firmwaru se můžete dozvědět více jako o senzorech, které jsou k dispozici, a proto komunikují a komunikují, a tak získávají více dat, oscaminha prostřednictvím sériových portů a DragonBoard.
*Potřebné a dostupné biblioteky nepoužívají žádný firmware. V každém případě se jedná o následující:
imu-10DOF
Senzor slunečního světla
Využití firmwaru k podpoře připojení k systému:
Krok 4: Programação Em Python
Para o programa criado, foram needários os seguintes dovoz: '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 primo passo é gravar em uma variável o endereço de onde serão obtidos os dados da Estação Meteorológica (no caso estamos gravando na variável 'url'). Em seguida, inicializamos duas variáveis ('i' e 'j'), využití '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 #Prosím do programu
Zadejte no 'while (1)', inicializujte a variável 'jsonurl' como 'None'. Mohou mít více adres URL JSON, například další inicializovat, aniž by došlo k 'while', což znamená, že se resetuje a obnoví se opakování smyčky. Další informace o adrese URL můžete použít a použít 'urllib2.urlopen (url)', podblížit více než jeden čas 'timeout = X', odeslat X uma kvantidade em segundos limite para o URL ser aberto. Vyberte jednu z možností, jak zkrátit URL do časového limitu, nebo si zrealizovat jednu z předních nabídek. Caso não consiga abrir a URL no tempo 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' a hlavní funkce 'comJSON'. Iremos explicar some a '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 pokud jsonurl není None: print 'Dados atualizados' comJSON (jsonurl) #Se conseguiu abrir o URL, mostra todos os dados kromě: if jsonurl is 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 'čas.spánek (1)
Na primární linii da comço 'comJSON', receive todos os dados da URL já abertos numa variável 'dados'. Esta irá přijímač um objeto com duas Arrays, das quais iremos someente usar uma ('ReturnDataSet'). Realizuje a operuje, inicializuje nebo sériově zpracovává 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 eses dados na tela. Příjem dat do Arduíno, přijímání a osvojování různých senzorů, jednoduché snímání snímačů, jako je například „dados“(například ukázka '[' 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 přijímejte různé varianty do Arduíno #Recebe do drdos do Arduíno ardAgua = int (ard.readline (). rstrip ()) ardTemp = float (ard.readline (). rstrip ()) ardPres = int (ard.readline ().rstrip ()) ardUV = float (ard.readline (). rstrip ())
vytisknout "\ n Arduino"
if ardAgua == 1: print 'Molhado' else: print 'Seco' print 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#Estacao
tisk '\ nJSON' tisk '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']
tisk 'Data:', data
tisk 'Velocidade do Vento:', vel_vento, 'm/s' tisk 'Umidade do ar:', umidade, '%'
#Převést
vel_vento = decimal. Decimal (vel_vento.rstrip ()) umidade = decimal. Decimal (umidade.rstrip ())
O co největší pasáž a životní styl můžete přidat coletados. Para isso, precisamos colocar a ID do canal, a Chave de Escrita e o Host em variáveis, além de configurar o useUnsecuredTCP, useUnsecuredWebsockets e useSSLWebsockets (usamos True, False, False). Criamos mais uma variá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) '. Jedná se o hlavní princip smyčky.
#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código dado pelo ThingSpeak mqttHost = "mqtt.thingspeak.com" #configurações de comunicaçãsse "tcp" tPort = 1883 tTLS = None if useUnsecuredWebsockets: tTransport = "websockets" tPort = 80 tTLS = None if useSSLWebsockets: import ssl tTransport = "websockets" tTLS = {'ca_certs': "/etc/ssl/certs/ certifikáty.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 (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) tisk 'Dados enviados' kromě: tisk 'Erro ao enviar dados'
Krok 5: Konfigurace webové služby
Para enviar os dados tryidos ao Web Service, utilizamos a plataforma ThingSpeak. Para tal, entramos no site thingspeak.com e criamos uma conta. Přihlaste se a přihlaste se k hlavnímu menu, klikněte na něj -> Canais -> Meus Canais e então clicamos no botão "Novo Canal". 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. Žádné caso, využití 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 a a 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"
E também com a Chave de Escrita:
apiKey = "Insira a Chave de Escrita"
Além da conexão com o canal criado, também são needárias outras configurações no código em Python app.py:
useUnsecuredTCP = True
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com", pokud useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = None if useUnsecuredWebsockets: tTransport = "websockets tSort = 80 webové zásuvky "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" kanály/" + ID kanálu +"/publikovat/" + apiKey
Para que a aplicação web realmente receba, por exemplo, o valor Temperatura no campo 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 (data) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade)
Další informace o možnostech použití kanálu v Pythonu, o jeho provedení nebo o provedení webové služby. No ThingSpeak, které mohou být realizovány na monitoru através de gráficos.
Doporučuje:
Automatizované rozvržení modelové železnice se dvěma vlaky (V2.0) - Na základě Arduina: 15 kroků (s obrázky)
Automatizované rozvržení modelové železnice se dvěma vlaky (V2.0) | Arduino Based: Automatizace rozvržení modelové železnice pomocí mikrokontrolérů Arduino je skvělý způsob, jak spojit mikrokontroléry, programování a modelové železnice do jednoho koníčku. Existuje řada projektů, které umožňují autonomní provoz vlaku na modelové železnici
Automatizované předpětí TV: 6 kroků (s obrázky)
Automatizované předpětí TV: Ahoj všichni, v tomto Instructable vyrobíme předpínací světlo TV, které se automaticky změní, když je tma. Toto předpínací světlo je jednoduché zařízení, které lze přidat k jakémukoli televizoru za účelem osvětlení stěny za televizorem. Toto osvětlení snižuje
Svatební fotostánek Arduino - 3D tištěné díly, automatizované a s nízkým rozpočtem: 22 kroků (s obrázky)
Svatební fotostánek Arduino - 3D tištěné díly, automatizovaný a s nízkým rozpočtem: Nedávno jsem byl pozván na svatbu bratra mého partnera a oni se mě předtím zeptali, zda bychom jim mohli postavit fotobudku, protože jejich pronájem stojí příliš mnoho. Na to jsme přišli a po několika komplimentech jsem se rozhodl z toho udělat instruktážní
Výběr krokového motoru a ovladače pro projekt automatizované stínovací obrazovky Arduino: 12 kroků (s obrázky)
Výběr krokového motoru a ovladače pro projekt automatizované stínovací obrazovky Arduino: V tomto Instructable projdu kroky, které jsem provedl pro výběr krokového motoru a ovladače pro prototyp projektu automatizované stínící obrazovky. Stínicí obrazovky jsou populární a levné ručně zalomené modely Coolaroo a chtěl jsem vyměnit t
Automatizované kuřecí dveře: 5 kroků (s obrázky)
Automatizované dveře kuřecí mísy: Automatické dveře v kuřecí mísy jsou řešením nočních predátorů, jako jsou mývalové, vačice a divoké kočky! Typické automatické dveře však stojí více než 200 $ na Amazonu (automatické kuřecí dveře) a jsou neúměrně drahé pro mnoho malých