Você está na página 1de 144

Python• -• download de dados de Xively

O processo de dados de download de Xively inclui solicitando a Valor atual


parâmetro para o canal especificado. No próximo exercício, iremos desenvolver um código de referência que
será utilizada no próximo exercício download. Nesse exercício, iremos desenvolver uma aplicação web
avançada para recuperar dados de um canal Xively específico. Como estamos usando funções baseadas no
protocolo REST para se comunicar com Xively, Xively não vai simplesmente notificá Neste ponto, é importante
notar que teremos que periodicamente dados de solicitação de Xively. No entanto, Xively fornece um método
alternativo chamada gatilhos para superar este problema, o que é explicado mais adiante nesta seção.

O método básico para a recuperação de dados a partir de Xively

Assim como os exercícios de upload, os exercícios de download também exigem um código semelhante
ao instanciar o XivelyAPIClient () e api.feeds.get () métodos. Como estamos recuperando os dados, em vez de
enviá feed.datastreams.get () método e evitar o feed.datastreams.create () método. O processo de download requer
o canal já estar presente e esta é a principal razão pela qual só temos de usar o

obter() método:

experimentar:

datastream = feed.datastreams.get ( "Random"), exceto httpError como e:

imprimir "httpError ({0}): {1}". formato (e.errno, e.strerror) print "Pedido de canal não existe"

Uma vez o datastream objecto é inicializado, o valor mais recente disponível a partir do canal pode ser obtido
usando o datastream.current_value método:

latestValue = datastream.current_value

Para ativar o código completo para realizar este exercício, abra o downloadXivelyBasic.py
código e alterar os valores para o ID de ração e chave de API para o mais adequado. Neste exercício,
estamos trabalhando com a Aleatória canalizar que criou no exercício upload. Antes de executar este código
Python, você precisa executar o
uploadXivelyBasic.py arquivo que irá fornecer continuamente dados aleatórios para o Aleatória
canal. Agora, você pode executar o downloadXivelyBasic.py arquivo que irá buscar o valor atual do Aleatória canalizar
periodicamente (com um atraso especificado pela dormir()
função). Como você pode ver na imagem seguinte, nós estamos começando um novo valor para o
Aleatória canalizar a cada 10 segundos:
Recuperação de dados a partir da interface web web.py

Este é um exercício avançado onde vamos transferir dados para um canal Xively depois buscar dados de
outro canal Xively, e processá Como sabem, o pino analógico no qual o sensor HIH Neste exercício, que
vai desenvolver uma aplicação web de modo que o utilizador pode introduzir manualmente o valor de
temperatura e que vai usar este para calcular humidade relativa a partir dos dados do sensor em bruto.

Antes de começar com os detalhes do código, vamos ' s primeiro a céu aberto uploadWebpyXively.py
arquivo, alterar os parâmetros apropriados e executar o arquivo. Agora, em um navegador da Web, abra
o http: // localhost: 8080 localização. Você será capaz de ver após a aplicação web, pedindo Enquanto isso,
fazer o upload do
XivelyLibAdvance.ino esboçar à placa Arduino depois de fazer as alterações apropriadas. Com este programa, Arduino vai
iniciar o envio de valores de movimento e umidade brutos para o
MotionRaw e HumidityRaw canais. Na aplicação web que está sendo executado, enviar o formulário com o valor da
temperatura costume e você será capaz de ver a aplicação web carregar a umidade relativa atual em unidades
percentuais. Internamente, quando você enviou o formulário, a aplicação web recuperado o valor da umidade
matéria HumidityRaw
canal, executada a umidade relativa (dados, temperatura) função, adicionou o valor de humidade calculado para um
novo canal de chamada Umidade, e, em seguida, exibido esse valor na aplicação web.
Se você abrir a página plataforma Xively em um navegador web, você será capaz de ver um recém Umidade canalizar
com o valor actual da humidade relativa. Você pode enviar vários valores para a temperatura na aplicação web
para ver os resultados refletiu sobre o gráfico da Umidade canal, como mostrada na imagem seguinte. Embora
este exercício demonstra um único caso de uso, esta aplicação web pode ser estendido em várias maneiras de
criar aplicações complexas.

Triggers• -• notificações personalizadas de Xively

A plataforma Xively implanta principalmente serviços baseados no protocolo de repouso, que doesn ' t tem uma
disposição para publicar automaticamente os dados quando é atualizado com um novo valor. Para superar esta
limitação, Xively implementa o conceito de gatilhos, que fornecem funcionalidade adicional além da simples publicação
de dados quando ele é alterado.
Com isso, você pode basicamente criar um gatilho para qualquer canal para realizar a POSTAR
operação no local especificado quando as condições que estão definidas para esse gatilho se satisfeito por os dados
recebidos. Por exemplo, você pode definir um gatilho na Umidade canalizar para lhe enviar uma notificação quando o valor de
mudanças de umidade, ou seja, aumenta acima ou diminuir abaixo de um determinado limiar. Você pode criar um gatilho em
sua conta plataforma Xively apenas clicando sobre o Adicionar Gatilho botão, como mostrado na imagem seguinte:

Ao criar um gatilho, você pode especificar o canal que deseja monitorar e a condição para desencadear uma
notificação sobre o especificado HTTP POSTAR URL. Como mostrado na imagem seguinte, preencha as
informações para Channel, Condição, e HTTP POST URL antes de salvar o gatilho. A principal desvantagem
dessa abordagem é que Xively requer um URL real para enviar a POSTAR notificação. Se o seu computador
atual doesn ' t ter um endereço IP estático ou um endereço DNS, o won gatilho ' t ser capaz de enviar
Sua própria plataforma de nuvem para a Internet das coisas
Na seção anterior, nós trabalhamos com uma plataforma de Internet das coisas comercial que também fornece acesso restrito, livre para

funcionalidades básicas. Nós também aprendemos várias maneiras de se comunicar com Xively que é baseado no protocolo REST. Para

quaisquer pequenos projetos ou protótipos, Xively e outras plataformas da Internet das coisas semelhantes fornecer uma solução

suficiente e, portanto, são recomendados por nós. No entanto, o serviço gratuito limitado fornecido pelo Xively não pode satisfazer todas

as suas necessidades para desenvolver um produto Internet das coisas full A seguir estão alguns casos em que você pode desejar

configurar ou desenvolver a sua própria plataforma de Internet das coisas:

Desenvolva a sua própria plataforma de Internet das coisas comercial

Desenvolver recursos personalizados que são exclusivos para o seu produto

Adicionar mais funcionalidades de controlo e protocolos de comunicação ao mesmo tempo, proteger os seus dados

Requerem uma solução barata para projectos em larga escala

Esta seção irá guiá O objetivo da seção é fazer você familiarizado com os requisitos eo processo de
criação de uma plataforma Internet das coisas. Para desenvolver um grande escala, diversificada e
plataforma rica em recursos tais como Xively, você vai precisar de uma quantidade significativa de
conhecimento e experiência nos domínios da nuvem e computação distribuída. Infelizmente, nuvem e
computação distribuída estão fora do escopo deste livro e vamos ficar com a implementação das
características básicas.

Para desenvolver uma plataforma de nuvem que é acessível através da Internet, você pelo menos vai exigir uma unidade
computacional com ligação à Internet e um IP estático ou o endereço DNS. Hoje, a maioria dos consumidores orientada para o Internet
Service Providers (ISPs) não fornecem IPs estáticos com o seu serviço de Internet, o que torna difícil para hospedar um servidor
em casa. No entanto, várias empresas como Amazon, Google e Microsoft, oferecem serviços gratuitos ou de baixo custo A
computação em nuvem, o que torna mais fácil para hospedar sua nuvem em suas plataformas. Estes serviços são altamente
escaláveis ​e eles estão equipados com uma grande quantidade de recursos para satisfazer a maioria das exigências dos
consumidores. Na seção seguinte, você estará criando sua instância de computação primeira nuvem no Amazon Web Services
(AWS).

Mais adiante neste capítulo, vamos instalar e configurar as ferramentas de software apropriadas, como Python, mosquitto corretor, e

assim por diante, para utilizar esta instância do Amazon como uma plataforma de Internet das coisas nuvem.

Nota

A principal razão por trás do desenvolvimento ou configurar uma plataforma de nuvem pessoal é ter acesso ao seu hardware da
Internet das coisas através da Internet. Devido à falta de um endereço IP estático para a sua rede doméstica, você pode não ser
capaz de acessar você protótipos ou projetos de um local remoto. A plataforma de nuvem pode ser usado como o facto unidade de
computação de para seus projetos baseados em rede.
Familiarize-se com a plataforma Amazon AWS
AWS é uma coleção de vários serviços em nuvem oferecidos pela Amazon, que juntos formam uma plataforma de
computação em nuvem. Um dos originais ea maioria dos serviços populares oferecidos pela AWS é a sua Elastic
Computer Cloud (EC2) serviço. O serviço EC2 permite que um usuário criar instâncias de uma máquina virtual com
diferentes combinações de poder de computação e sistemas operacionais de sua grande infra Também é realmente fácil
de alterar as propriedades computacionais dessas instâncias virtuais a qualquer momento, tornando Quando você está
tentando criar a sua própria plataforma de Internet das coisas usando EC2, esse recurso escalabilidade ajuda Se você não
estiver familiarizado com o conceito de computação em nuvem ou AWS como um determinado produto, você pode
aprender mais sobre eles a partir de http://aws.amazon.com . A plataforma EC2 cloud é diferente de Xively, pois
proporciona instâncias de nuvem de uso geral, máquinas virtuais, com poder de computação e de armazenamento que
pode ser convertido em qualquer plataforma específica de recurso instalando e configurando o software específico da
plataforma. É importante notar que você realmente não tem que ser um especialista em computação em nuvem para
avançar ainda mais neste capítulo. As próximas seções fornecem um guia intuitivo para executar tarefas básicas, como a
criação de uma conta, criar e configurar suas máquinas virtuais, e instalação de ferramentas de software para criar
plataformas da Internet das coisas.

A criação de uma conta no AWS

Amazon fornece um ano de acesso gratuito à instância básica da nuvem - máquina virtual baseada. Este exemplo inclui 750
horas de tempo de utilização livre por mês e esta é maior do que o número de horas em qualquer mês, tornando desse modo
libertar de todo o mês. A capacidade de armazenamento de dados e a largura de banda dos AWS conta são suficientes para
projectos básicos IdC ou Arudino. Para criar uma conta gratuita por um ano na Amazon ' plataforma AWS nuvem s, execute
os seguintes passos:

1. Abra http://aws.amazon.com e clique no botão que lhe pede para tentar AWS para
livre ou algum outro texto similar.
2. Esta acção irá levá Entrar ou Criar uma conta AWS página como exibido
na imagem seguinte. Digite o endereço de e Eu sou um novo Usuário. opção e clique no Entre
usando nosso servidor seguro botão. Se você já tem uma conta AWS e você sabe como criar
uma conta no Amazon AWS, você pode usar essas credenciais e pular para a próxima seção:
Nota

Amazon permite apenas um exemplo livre para cada conta. Se você é um usuário AWS existente e sua
instância livre já está ocupado com outro aplicativo, você pode usar a mesma instância para acomodar o
corretor MQTT ou comprar outra instância.

3. Na página seguinte, você será solicitado a digitar seu nome, endereço de e Preencha as
informações para continuar com o processo de inscrição:
4. Você será solicitado a digitar suas informações de cartão de crédito durante o processo de inscrição. No entanto, você ganhou '
t ser cobrado para utilizar os serviços incluídos na conta gratuita. Seu cartão de crédito só será utilizado se você exceder
quaisquer limitações ou compra de serviços adicionais.

5. A próxima etapa inclui a verificação da sua conta usando seu número de telefone. Siga as instruções que
são exibidas na imagem seguinte para concluir o processo de verificação de identidade:

6. Depois de ter verificado sua identidade, você será redirecionado para a página que lista os disponíveis planos Amazon
AWS. Selecione o plano adequado que você deseja assinar e continuar. Se você não tiver certeza, você pode
selecionar o Básico (Free) Plano de Opção, que recomendamos para o nosso propósito. o Console de Gerenciamento
da Amazônia página permitirá que você selecione outros planos, se você quiser atualizar o atual.

7. Inicie o console de gerenciamento Amazon.

Como você tem uma conta na Amazon AWS agora, vamos ' s criar sua instância virtual nele.

Criando uma instância virtual do serviço AWS EC2

A fim de criar uma instância virtual na Amazon ' plataforma EC2 s, primeiro log no AWS usando suas credenciais e
abrir o console de gerenciamento. Em seguida, clique no EC2 guia e executar o seguinte instruções passo a passo:

1. No Console EC2 página, vá para Criar instância e clique no lançamento Instância


botão. Isto irá abrir um assistente para criar uma instância que irá guiá
2. Na primeira página do assistente, você será solicitado a selecionar um sistema operacional para a
instância virtual. selecionar Ubuntu Servidor 14.04 LTS conforme exibido na imagem seguinte, que é
elegível para o nível gratuito. Para evitar quaisquer encargos para a utilização de uma instância
avançada, certifique

3. Na próxima janela, você será solicitado com uma lista de opções que têm diferentes configurações
de capacidade computacional. De Propósito geral família, selecione o t2.micro tipo, que é elegível
para o nível gratuito. As capacidades computacionais fornecidas pelo t2.micro níveis são
suficientes para os exercícios que vamos realizar no livro e para a maioria dos projetos de DIY.
Certifique

4. Depois de ter selecionado a camada especificada, clique no Comente e Lançamento botão para
avaliar a configuração final do exemplo.
5. Reveja a configuração e certifique Agora você pode clicar no Lançamento botão para prosseguir.

6. Isto irá abrir uma janela pop


7. Como mostrado na figura anterior, seleccionar Criar um novo par de chaves desde o primeiro
drop-down menu, proporcionando um nome para o par de chaves. Clique no Baixar par de chaves botão para
baixar a chave. A chave baixado terá o nome que você forneceu na opção anterior com o. pem extensão. Se você
já tem uma chave existente, você pode selecionar as opções apropriadas a partir do primeiro menu drop Você
vai precisar desta chave cada vez que você quiser fazer login para esta instância. Salve essa chave em um lugar
seguro.

8. Mais uma vez, clique no Instâncias de lançamento botão para finalmente iniciar a instância. Seu
instância virtual é lançado na AWS e agora ele está em execução no EC2.
9. Agora, clique no Ver Instância botão que o levará de volta para o console EC2
janela. Você será capaz de ver o seu recém t2.micro instância na lista.
10. Para saber mais detalhes sobre sua instância virtual, selecione Assim que você selecionar o seu exemplo,
você será capaz de ver informações adicionais na guia inferior. Esta informação inclui o DNS público, DNS
privado, endereço IP público, e assim por diante.
11. Salve essas informações, como você vai precisar dele para fazer login em sua instância.

Agora, você criou com sucesso e se transformou em uma instância de nuvem virtual usando Amazon AWS. No entanto,
neste caso, está em execução no Amazon EC2 e você terá que autenticar remotamente para essa instância para acessar
seus recursos.

Entrar em sua instância virtual


Na realidade, sua instância virtual é um computador virtual em uma nuvem com recursos de computação que são semelhantes ao
seu computador regular. Agora você precisa fazer login para a instância virtual em execução para acessar arquivos, executar scripts
e instalar pacotes adicionais. Para estabelecer uma autenticação segura e procedimento de acesso, você precisa usar o Secure
Shell (SSH)
protocolo e há várias maneiras de usar o SSH do seu computador. Se você estiver usando Mac OS X ou Ubuntu,
um programa cliente SSH já existe dentro do seu sistema operacional. Para o Windows, você pode baixar o
cliente PuTTY SSH a partir de http://www.putty.org/ . A partir da janela da gestão EC2, recuperar o endereço IP
público do seu exemplo. Para usar o cliente SSH padrão no ambiente Linux ou Mac, abra o terminal e navegue
até a pasta onde você salvou o arquivo de chave com o. pem extensão. Na janela de terminal, execute o seguinte
comando para tornar a sua chave de acesso:

$ Chmod 400 test.pem

Depois de ter alterado a permissão para o seu arquivo de chave, execute o seguinte comando para fazer login para a
instância virtual. No comando, você terá que substituir < key-name> com o nome de sua chave e arquivo < público com o IP
público que você recuperou do console de gerenciamento:

$ Ssh• - i <key - name> .pem• ubuntu @ <público - IP>

Depois de executar este comando, você será solicitado para continuar com o processo de conexão se você
estiver autenticando a instância pela primeira vez. No prompt, write
sim e pressione Entrar continuar. Em autenticação bem No caso de você estiver usando o sistema
operacional Windows e não tem certeza sobre o status do seu cliente SSH, selecione a instância na
janela do EC2 e clique no Conectar botão
na barra de navegação superior, que é exibido na imagem seguinte:

Esta acção irá abrir uma janela pop Este tutorial também está ligado ao guia autenticação passo
Criação de uma plataforma Internet das coisas na instância EC2
Como você configurou com êxito uma instância Amazon EC2, você tem um computador virtual que está sendo executado na nuvem e

tem um endereço IP estático para permitir o acesso remoto. No entanto, neste caso, não pode ser classificado como uma plataforma de

Internet das coisas, uma vez que só contém um sistema operacional simples (Ubuntu Linux no nosso caso) e não tem o necessário

pacotes e configurações de software.

Há duas maneiras distintas de criação de uma plataforma Internet das coisas nuvem costume em sua instância virtual:

Criação de uma plataforma open source Internet das coisas tais como ThingSpeak Separadamente instalar e

configurar as ferramentas de software necessárias Mantenha os seguintes pontos em mente quando a criação de uma

plataforma Internet das coisas open source:

ThingSpeak é uma das plataformas da Internet das coisas de código aberto que fornece suporte arquivos para criar e
hospedar seu próprio réplica da plataforma ThingSpeak.
Configurando esta plataforma em sua instância AWS é bastante simples e você pode obter os arquivos
e diretrizes para instalá
https://github.com/iobridge/ThingSpeak .
Embora esta versão personalizada da plataforma ThingSpeak irá fornecer ferramentas suficientes para começar a
desenvolver aplicações da Internet das coisas, as funcionalidades da plataforma será confinado ao conjunto de recursos
fornecido. Para ter controle total sobre personalização, você pode ter que usar a opção seguinte.

Se você deseja instalar separadamente e configurar as ferramentas de software necessárias, aqui ' o que você precisa se
lembrar:

Esta opção inclui fornecendo ferramentas de software específicos do projeto, tais como Python eo corretor
mosquitto com o Python necessário bibliotecas como web.py e paho_mqtt.
Já trabalhou com exercícios que implementaram aplicações que foram baseados no corretor mosquitto e web.py. Esta versão
do costume plataforma de Internet das coisas em nuvem pode reduzir a complexidade de instalar ferramentas adicionais
plataforma de código aberto e ainda fornecer o apoio necessário para aplicativos de host. O programa Arduino pode comunicar
directamente com esta plataforma personalizado usando protocolos de descanso ou MQTT. Ele também pode se comportar
como a unidade de computação remota para se comunicar com Xively ou outras plataformas de nuvem de terceiros da Internet
das coisas. Na próxima seção, começaremos o processo de implantação da plataforma, instalando o corretor mosquitto e os
pacotes necessários em sua instância virtual. Isto vai ser seguido pela configuração da instância virtual para suportar o
protocolo MQTT. Uma vez que sua plataforma de Internet das coisas nuvem está instalado e funcionando, você pode
simplesmente executar o código mosquitto baseado em Python do último capítulo da instância com menor ou nenhuma
modificação. No futuro, esta plataforma Internet das coisas que contém o corretor mosquitto eo projeto Python pode ser
estendido para acomodar recursos adicionais, protocolos e segurança extra.

Instalar os pacotes necessários no AWS


Usando o protocolo SSH e o par de chaves, log em sua instância virtual. Uma vez que você está no prompt de comando,
a primeira tarefa que você precisa fazer é atualizar todos os pacotes desatualizados em Ubuntu, o sistema operacional
da sua instância virtual. Sucessivamente executar os seguintes comandos:

$ Update sudo apt-get $ sudo


apt-get upgrade

Ubuntu já vem com a última versão do Python. No entanto, você ainda precisará instalar Setuptools para
instalar os pacotes adicionais do Python:

$ Sudo apt-get install python-setuptools

Ubuntu ' s repositório de pacotes também abriga mosquitto e pode ser instalado diretamente usando o seguinte
comando. Com esse comando, vamos instalar o corretor mosquitto, cliente mosquitto, e todas as outras
dependências juntos. Durante a instalação, você será solicitado a confirmar a instalação de pacotes adicionais.
Entrar sim no terminal e prosseguir com a instalação:

$ Sudo apt-get install mosquitto *

Agora que você instalou o corretor mosquitto em sua instância virtual e você pode executá Para
desenvolver Python - aplicações mosquitto base, precisamos da biblioteca Python mosquitto em nosso
exemplo. Deixe ' s instalar a biblioteca usando Setuptools, através dos seguintes comandos:

$ Sudo easy_install pip $ sudo pip instalar


paho_mqtt

No capítulo anterior, foi desenvolvido um aplicativo web baseado em web.py que utiliza a
paho_mqtt biblioteca para suportar o protocolo MQTT. Tal como acontece com o primeiro projeto, vamos implantar o mesmo aplicativo web
na instância virtual baseado em EC2 para demonstrar o seu costume plataforma de Internet das coisas nuvem. Como uma dependência
deste projeto, você precisa primeiro a web.py
biblioteca Python, que você pode instalar usando o seguinte comando:

$ Pip sudo instalar web.py

Agora você tem todos os pacotes de software necessários para executar o aplicativo Internet das coisas. Para tornar a sua aplicação
web acessível através da Internet, é necessário configurar a segurança de vocês instância virtual.

Configurando a segurança da instância virtual

Primeiro, vamos configurar a instância virtual para hospedar de forma segura o corretor mosquitto. Mais tarde, vamos percorrer
os métodos para configurar a segurança básica para prevenir o abuso de seu servidor mosquitto por bots automatizados ou
tentativas de spam.

Para alterar os parâmetros de sua instância virtual, você terá que usar o Grupos de segurança ferramentas do Seguran
de rede seção do seu AWS Management Console
página. Abra o Grupos de segurança seção, como mostrado na imagem seguinte:
Cada instância virtual tem um grupo de segurança padrão que é gerado automaticamente para permitir o
acesso à sua instância através da porta SSH 22. configuração Esta segurança é responsável por
permitindo O corretor mosquitto utiliza o número da porta TCP 1883 para estabelecer a comunicação com os
editores e clientes assinantes. Para permitir o acesso de entrada deste porto mosquitto, você terá que
editar as regras de entrada atual e adicione uma entrada para a porta 1883:

Uma vez que você clicar no Editar botão, o site irá abrir uma janela pop Clique no Adicionar Regra botão
para criar uma regra adicional para acomodar o corretor mosquitto:
Como exibido na imagem seguinte, entra a porta TCP ' s como número 1883 e completar a outras informações
no formulário. Depois de ter preenchido o formulário com os valores dados, salvar as regras e sair da janela:

Agora, com esta configuração, a porta 1883 é acessível por outros dispositivos e permite a comunicação remota com o corretor
mosquitto. Você pode usar o mesmo método para adicionar uma regra para a porta 8080 para permitir o acesso ao Python '
aplicações web s que foram desenvolvidos usando web.py.
No futuro, você pode adicionar portas adicionais para permitir o acesso a vários serviços. Embora seja
muito fácil de alterar as regras de segurança em sua instância virtual, certifique

Testando a plataforma de nuvem

Nesta seção de testes, vamos primeiro executar verificações para o corretor mosquitto do seu computador e, em seguida, configurar

parâmetros de autenticação para o corretor mosquitto. Mais tarde, vamos fazer upload de arquivos e pastas que contêm o código

Python para a nossa instância virtual utilizando o protocolo de transferência de arquivos SSH.

Testando o serviço mosquitto

A primeira coisa que vamos para verificar a nossa plataforma de Internet das coisas é a acessibilidade do corretor
mosquitto. Abra o terminal no seu computador e execute o seguinte comando, depois de substituir < Público com o IP
público ou o endereço DNS público do seu
instância virtual:

$ Mosquitto_pub -h <Pública - IP> -m teste -t 3

Este comando irá publicar o valor da mensagem 3 para o teste tema para o corretor mosquitto que é especificado na
determinado endereço IP; no nosso caso, esta é a instância virtual. Agora, abra uma janela de terminal separado e
execute o seguinte comando para assinar o teste tópico em nosso corretor:

$ Mosquitto_sub -h <Pública - IP> teste -t

Na execução deste comando, você será capaz de ver o último valor que é publicado para este tópico. Use o mosquitto_pub
comando para postar várias mensagens e você pode ver a saída dessas mensagens na outra janela de terminal
que está executando o
mosquitto_sub comando.

Configuração e teste de segurança básica

Como você viu no exemplo anterior, a publicação e comandos que subscrevam utilizado apenas o endereço IP para enviar e
receber dados sem o uso de parâmetros de autenticação. Esta é uma grande brecha de segurança, como qualquer pessoa na
Internet pode enviar dados para o seu corretor mosquitto. Para evitar o acesso não autorizado ao seu corretor, você tem que
estabelecer credenciais de autenticação. Você pode especificar esses parâmetros, seguindo estes passos na ordem indicada:

1. Se você ainda não tiver conectado ao seu exemplo, através de SSH, abra uma janela de terminal e faça login usando
SSH. Uma vez que você está logado, navegue até o diretório mosquitto e criar um novo arquivo chamado passwd utilizando
o seguinte conjunto de comandos. Vamos usar esse arquivo para armazenar os nomes de usuário e senhas:

$ Cd / etc / mosquitto $ sudo


nano passwd

2. No ficheiro, inserir a informação nome de utilizador e palavra Para fins de teste, usaremos as
seguintes credenciais, que podem ser alterados a qualquer momento, uma vez que estão mais
familiarizados com a configuração mosquitto:

senha do usuário

3. Pressione Ctrl + X para salvar e sair o arquivo do editor nano. Quando for solicitado
para confirmar a operação de salvamento, selecione Y e pressione Entrar.

4. Na mesma pasta, abra o arquivo de configuração mosquitto usando thenano editor:

$ Sudo nano mosquitto.conf

5. No arquivo aberto, role para baixo o conteúdo do texto até chegar à seção de segurança. Nesta seção,
encontrar o # allow_anonymous verdade linha do código e substituí
falsa allow_anonymous. Certifique Com esta operação, nós ter desativado o acesso anônimo para o
corretor mosquitto e apenas os clientes com credenciais adequadas pode acessá

6. Depois de realizar as mudanças anteriores, rolar mais abaixo no arquivo, descomente a linha # password_file,
e substituí
password_file / etc / mosquitto / passwd

7. Agora que você configurou os parâmetros de segurança básicas para o seu corretor, você deve
reiniciar o serviço mosquitto para que as alterações tenham efeito. No Ubuntu, mosquitto é
instalado como parte do serviço de fundo e você pode reiniciá

$ Restart mosquitto serviço sudo

8. Para testar essas configurações de autenticação, abra outra janela de terminal no seu computador e execute
o seguinte comando com o endereço IP público do seu exemplo. Se você é capaz de publicar com sucesso
a sua mensagem sem erros, o seu corretor mosquitto agora tem uma configuração de segurança:

$ Mosquitto_pub - Ip> -m teste -t 3

9. Além disso, verifique seu subscritor mosquitto usando o seguinte comando:

$ Mosquitto_sub u - Ip> teste -t

Upload e testar um projeto na instância

Como discutimos nos capítulos anteriores, você sempre pode usar seu computador para fins de
desenvolvimento. Quando estiver pronto para implantação, você pode utilizar esta instância virtual recém
Você pode copiar os arquivos de seu computador local para a instância virtual usando um utilitário chamado
PuTTY ( https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html ) Ou usando o SCP (copy SSH)
de comando.

Agora é hora de fazer o upload dos arquivos de projeto do exercício de codificação final do capítulo anterior, que
implementou o protocolo MQTT usando Python ea biblioteca mosquitto. Como um lembrete, o exercício final está
localizado na pasta denominada Exercício 4 do capítulo anterior ' é repositório de código. Nós estaremos usando o
utilitário SCP para enviar esses arquivos para a instância virtual. Antes de usar este utilitário, vamos ' s primeiro criar
um diretório em sua instância virtual. Faça login na sua instância virtual e vá para o diretório do usuário da instância
virtual usando o seguinte comando:

$ Ssh• - i <key - name> .pem• ubuntu @ <público - ip> $ cd ~

Usando o til caracteres (~) com o CD comando irá alterar o diretório atual para o diretório home, a menos que
você está planejando usar qualquer outro local em sua instância virtual. Neste local, criar um novo diretório
vazio chamado projeto usando seguinte comando:

$ Projeto mkdir

Agora, no computador que você está trabalhando (Mac OS X ou Linux), abrir outra janela de terminal e use o
seguinte comando para copiar o diretório inteiro para a instância remota:

$ Scp -v -i test.pem -r <project - pasta - path>• ubuntu @ <seu - EC2 - estática -


ip>: ​~ / projeto

Depois de ter copiado com êxito os arquivos para este local, você pode voltar para o terminal que está
conectado à sua instância virtual e altere o diretório para projeto:

$ Projeto cd

Antes de executar quaisquer comandos, certifique Você terá que substituir o endereço IP anterior com
o de sua instância virtual. Agora que você fez essas alterações, você pode executar o código Python
contendo o mosquitto Gateway e aplicação web para iniciar o programa. Abra o seu navegador a partir
da http: // <PublicIp>: 8080 local para ver você aplicação em execução web na plataforma Internet das coisas
personalizado. A partir de agora, você deve ser capaz de aceder a esta aplicação a partir de qualquer
local remoto através da Internet.

Gorjeta

Não se esqueça de alterar o endereço IP do corretor mosquitto no esboço Arduino e fazer o upload do esboço para a placa
Arduino novamente. Você pode não ser capaz de obter os dados do sensor se as mudanças de endereços IP apropriados não
são aplicadas.
resumo
No final deste capítulo, e, portanto, o fim da parte contextual do livro, você deve ser capaz de desenvolver a sua própria Internet de

projetos as coisas. Neste capítulo, foi utilizada uma plataforma comercial IoT nuvem para lidar com seus dados do sensor. Nós também

implantou uma instância de nuvem para ferramentas da Internet das coisas anfitrião de código aberto e criamos nossa própria versão da

plataforma de Internet das coisas nuvem personalizado. Certamente, o conteúdo que você aprendeu não é suficiente para desenvolver

escalável e produtos comerciais totalmente empilhados, mas é realmente útil para você começar com eles. Em um grande número de

casos, este material é suficiente para desenvolver projectos de bricolage e protótipos de produtos que acabará por levá Nos próximos

dois capítulos, vamos colocar o material que nós aprendemos a testar e desenvolver dois projetos completos de hardware da Internet

das coisas. Também vão aprender uma metodologia de desenvolvimento de projeto que é específico para produtos da Internet das

coisas baseadas em hardware, que podem ser aplicadas para converter seus protótipos em produtos reais.
Capítulo 10. O projeto final• -• um Lar remoto Sistema
de Monitoramento
Agora é hora de combinar cada tópico que nós aprendemos nos capítulos anteriores em um projeto que combina
Arduino programação, Python desenvolvimento GUI, protocolo de mensagens MQTT, e um aplicativo em nuvem
baseado em Python. Como você já deve ter descoberto a partir do título do capítulo, vamos desenvolver um sistema de
monitorização doméstica remota usando esses componentes.

A primeira seção do capítulo aborda o processo de concepção do projeto, incluindo objetivos, requisitos, arquitetura e UX. Uma
vez que é feito com o processo de design, vamos saltar para o desenvolvimento real do projeto, que é dividido em três fases
distintas. Em seguida, vamos abordar tópicos de solução de problemas comuns que geralmente são enfrentados ao trabalhar
com grandes projetos. Em nossos esforços para desenvolver projetos DIY utilizáveis, os posteriores seção abrange dicas e
recursos para estender o projeto. Como este é um grande projeto bastante em comparação com outros projectos no livro, não
estamos indo para saltar directamente para o processo de desenvolvimento real sem ter qualquer estratégia. Deixe ' s começar
por nós mesmos familiarizado com a metodologia de projeto padrão para projetos de hardware.
A metodologia de projeto para projetos da Internet das coisas
O processo de desenvolvimento de um produto complexo, que firmemente casais dispositivos de hardware
com serviços de software de alto nível requer um nível adicional de planejamento. Para este projeto, que
irá exercer uma abordagem adequada desenvolvimento de produtos para ajudá Este método pode ser
usado para planejar seus próprios projetos e levá O diagrama a seguir descreve um processo de
desenvolvimento de protótipo típico, que sempre começa por definir os principais objetivos que você quer
alcançar com o seu produto:

Depois de ter definido o conjunto de grandes objetivos, você precisa dividi Usando os requisitos do
projeto, é preciso esboçar a arquitetura geral do sistema. O próximo passo inclui o processo de definição
do fluxo de UX que irá ajudá Nesta fase, você será capaz de identificar quaisquer alterações que são
necessárias na arquitetura do sistema e os componentes de hardware e software para iniciar o
desenvolvimento.

Como você ter definido os pontos de interação, agora você precisa para distribuir todo o processo de
desenvolvimento do projeto em vários estágios e delegar as tarefas entre esses estágios. Depois de ter concluído o
desenvolvimento dessas etapas, você terá a interface
estes estágios uns com os outros de acordo com sua arquitetura e depurar os componentes se for necessário. No
final, você terá que testar seu projeto como um sistema completo e problemas solucionar problemas menores. Em
projetos de hardware, é muito difícil de trabalhar em seus circuitos elétricos novamente após a conclusão dos
processos de desenvolvimento complexas, como as mudanças podem ter efeitos recorrentes em todos os outros
componentes. Este processo irá ajudá Agora que você aprendeu sobre a metodologia, vamos ' s começar com o
processo de desenvolvimento real para o nosso sistema de monitorização doméstica remota.
Visão Geral do Projeto
A casa inteligente é um dos subdomínios mais bem definidas e populares da Internet das coisas. A característica mais
importante de qualquer casa inteligente é a sua capacidade para monitorar o ambiente físico. Felizmente, os exercícios
e projetos que nós abordados nos capítulos anteriores incluem componentes e recursos que podem ser usados ​para o
mesmo fim. Neste capítulo, vamos definir um projeto que irá utilizar estes componentes existentes e exercícios de
programação. No projeto intercalar Capítulo 7 , O Projeto Midterm• -• um portátil DIY termostato, criamos um termostato
destacável com a capacidade de medir a temperatura, humidade e luz ambiente. Se quisermos utilizar este projecto a
médio prazo, o projeto mais próximo Internet das coisas que podemos construir em cima do que é o sistema de
monitorização doméstica remota. O projeto terá Arduino como o principal ponto de interação entre o ambiente físico eo
software - serviços baseados. Teremos um programa Python como a camada média, que vai preencher a informação do
sensor proveniente de Arduino com o usuário - enfrentando interface gráfica. Deixe ' s começar por definir as metas que
queremos alcançar e os requisitos do projeto para satisfazer esses objetivos.
Os objetivos do projeto
O Ninho termostato fornece uma idéia do tipo de características que um sistema de monitoramento remoto devidamente
projetado com recursos profissionais devem ter. Atingir esse nível de capacidades do sistema requer um grande esforço de
desenvolvimento a partir de uma grande equipe. Embora seja difícil incluir cada um dos recursos que são suportados por um
sistema comercial em nosso projeto, ainda vamos tentar implementar as características comuns que podem ser incorporadas
por um projeto de protótipo.

O alto nível características que estamos planejando para incorporar neste projecto pode ser descrito pelas seguintes
objetivos.

Observar o ambiente físico e torná


Os requisitos do projeto
Agora que já definiu os principais objetivos, vamos ' s convertê Na conclusão do projeto, o sistema
deve ser capaz de satisfazer os seguintes requisitos:

Deve ser capaz de observar fenómeno físico, tais como a temperatura, a humidade, o movimento, e a luz
ambiente.
Ele deve fornecer o acesso local a informação do sensor e controle sobre atuadores, como uma campainha, um
interruptor de botão, e um LED.
O monitoramento deve ser feito por uma unidade que é desenvolvido utilizando a plataforma de hardware livre,
Arduino.
A unidade de monitorização deve ser limitado a informação do sensor de recolha e comunicá

A unidade de controle não deve incluir de um computador desktop ou laptop. Em vez disso, deve ser feita
destacável usando uma plataforma como um Raspberry Pi. A unidade de controlo deve demonstrar um nível
primitivo de capacidade de percepção da situação, utilizando a informação do sensor recolhido.

A unidade de controlo deve possuir uma interface gráfica para fornecer o sensor ' s observação e o estado
corrente do sistema.
O sistema deve ser acessível através da Internet utilizando nuvem - serviços baseados. O aplicativo da Web que
fornece acesso remoto deve ter a capacidade de exibir o sensor ' s observações através de um navegador web.

O sistema também deve fornecer o controle básico dos atuadores para completar a experiência de acesso
remoto usando o aplicativo web.
Como a unidade de monitoramento pode ser restringida por recursos de computação, o sistema deve usar
protocolos de mensagens orientada a hardware para informações de transferência. Embora existam muitas outras
exigências menores que podem fazer parte do nosso projeto, eles têm sido ignorados neste livro. Se você tem planos
adicionais para o seu sistema de monitorização doméstica remota, este é o tempo que você deve definir estes requisitos
antes de saltar para projetar a arquitetura. Quaisquer futuras alterações aos requisitos podem afetar significativamente a
fase de desenvolvimento e hardware marca e modificação do software difícil. Na última seção do capítulo, temos
estabelecido uma série de recursos adicionais que você pode querer considerar a implementação de seus projetos
futuros.
arquitetura do sistema Designing
Continuando a partir metas do projeto, em primeiro lugar, você precisa traçar uma arquitetura de alto nível do sistema. Este
esboço arquitectónico deve incluir componentes principais que permitem que o sistema para transmitir informações entre os
sensores e os usuários remotos. A figura a seguir mostra um esboço arquitectónico para o nosso projeto:

De acordo com os objetivos, o usuário deve ser capaz de acessar o sistema utilizando a Internet; Isto significa
que precisamos de componentes nuvem na arquitetura. O sistema também precisa monitorar o ambiente físico
usando um recurso - dispositivo constrangido, e isso pode ser executado usando Arduino. A camada do meio,
que liga o serviço de nuvem e o sistema de sensor, pode ser construído usando uma framboesa Pi. No último
projecto, ligado Arduino ea Raspberry Pi usando uma conexão serial, mas queremos afastar ' s rede Ethernet
para fazer a implementável sistema. Assim, o Arduino - unidade de base está conectada à rede usando
Ethernet, enquanto o Raspberry Pi usa Wi - Fi para se conectar à mesma rede.

A fim de colocar para fora a arquitetura geral do sistema, vamos ' s utilizar o esboço que nós projetamos, que pode ser
visto na figura anterior. Como você pode ver na figura a seguir, nós convertemos todo o sistema em três principais
unidades de arquitectura:

estação de monitoramento

de serviços centro de Cloud

Control

Nesta figura, temos os destinatários todos e cada componente importante que vamos utilizar no projeto junto com
sua associação para o outro. Nas seções seguintes, vamos definir estes três unidades principais brevemente. Os
passos abrangentes descrição e implementação para estas unidades são fornecidos mais adiante neste capítulo
nas seções separadas.
A estação de monitorização

Precisamos de uma unidade de recursos limitados e robusto que irá se comunicar com o ambiente físico periodicamente.
Esta unidade de controlo pode ser construída usando Arduino desde programação de baixo nível microcontrolador pode
fornecer fluxo ininterrupto de dados do sensor. O uso do Arduino nesta fase também irá nos ajudar a evitar a interface direta
de sensores básicos de baixo nível com computadores que estão executando em sistemas operacionais complexos. Os
sensores e os actuadores estão ligados ao Arduino usando interfaces digitais, analógicas, PWM, e I2C.

O centro de controle

O centro de controlo comporta É também responsável por transmitir as informações do sensor da estação de
monitoramento para os serviços em nuvem. O centro de controle podem ser desenvolvidos usando o seu
computador normal ou um computador de placa única, como um Raspberry Pi. Vamos utilizar um Raspberry Pi,
uma vez que pode ser facilmente implementado como uma unidade de hardware e também é bastante capaz de
hospedagem programas em Python. Vamos substituir uma tela de computador com uma tela TFT LCD pequeno
para o Raspberry Pi para exibir a GUI.

Os serviços em nuvem

O principal objetivo dos serviços em nuvem é fornecer uma interface baseada na Internet para o centro de controle para que o
usuário possa acessá Antes de hospedar um aplicativo web para executar esta operação, vamos precisar de um relé de dados
intermediário. Este relé dados do sensor funciona como um anfitrião entre a aplicação web baseada em nuvem e centro de
controle. Neste projecto, iremos utilizar Xively como a plataforma para coletar esses dados sensor. O aplicativo da Web pode
ser hospedado em um servidor de Internet; no nosso caso, vamos usar o Amazon AWS devido à nossa familiaridade com ela.
fluxo Defining UX
Agora, embora saibamos que a arquitetura dos olhares gerais do sistema quiser, nós haven ' t definido como o usuário vai
interagir com ele. Este processo de concepção de interação do usuário para o nosso sistema também irá nos ajudar a
descobrir o fluxo de dados entre os principais componentes. Let ' s começar com os componentes que estão operando
localmente em sua casa, isto é, a estação de monitoramento e centro de controle. Como você pode ver na figura a seguir,
temos o nosso primeiro ponto de interação com o usuário no centro de controle. O usuário pode observar as informações ou
agir sobre ele, se o sistema de ' estado s é um alerta. A ação do usuário para descartar os avisos de alerta várias operações a
ter lugar no centro de controle e o monitoramento. Nós recomendamos que você examinar cuidadosamente a figura para
entender melhor o fluxo do sistema.

Da mesma forma, o segundo ponto de interacção do utilizador está localizado na aplicação da web. O aplicativo da
Web exibe as observações e sistema ' s status que calculamos no centro de controle e fornece uma interface para
descartar o alerta. Neste cenário, a ação descartar irá percorrer Xively ao centro de controle, onde as ações
apropriadas para o centro de controle permanecerá o mesmo que no cenário anterior. No entanto, na web
aplicativo, o usuário tem que carregar o navegador cada vez para solicitar os dados, o que estava acontecendo
automaticamente no centro de controle. Dê uma olhada na figura abaixo para entender o fluxo UX para a aplicação
web:
A lista de componentes necessários
Os componentes necessários para o projeto são derivadas utilizando três critérios principais:

Facilidade de disponibilidade

Compatibilidade com a placa Arduino


Familiaridade com os componentes devido à utilização anterior deste livro Esta é a lista dos
componentes que você precisa para começar a trabalhar no projeto. Se você tiver concluído os
exercícios e projetos anteriores, você já deve ter a maioria dos componentes. Se você don ' t quer
desmontar os projetos, você pode obtê Os componentes de hardware para a estação de monitorização
são como se segue:

Componente (primeira fase) Quantidade Ligação

Arduino Uno 1 https://www.sparkfun.com/products/11021

Arduino Ethernet Shield 1 https://www.sparkfun.com/products/9026

placa de ensaio 1 https://www.sparkfun.com/products/9567

sensor de temperatura TMP102 1 https://www.sparkfun.com/products/11931

HIH-4030 sensor de humidade 1 https://www.sparkfun.com/products/9569

Mini fotocélula 1 https://www.sparkfun.com/products/9088

sensor de movimento PIR 1 https://www.sparkfun.com/products/8630

Super-flux LED RGB, anodo comum


1 http://www.adafruit.com/product/314

cigarra 1 http://www.adafruit.com/products/160

Pressionar no interruptor 1 https://www.sparkfun.com/products/97

cabo USB para Arduino (para estágio


1 https://www.sparkfun.com/products/512
de desenvolvimento)

Arduino fonte de alimentação http://www.amazon.com/Arduino-9V-1A-Power- adaptador / dp /


1
(fase de implantação) B00CP1QLSC /

Como
resistores
exigido 220 ohms, um quilo-ohms, e 10 quilo-ohm

Como
fios de ligação
requerido

Os componentes de hardware para o centro de controle são as seguintes:


Componente (primeira fase) Quantidade Ligação

Raspberry Pi 1 https://www.sparkfun.com/products/11546

tela LCD TFT 1 http://www.amazon.com/gp/product/B00GASHVDU/

cartão SD (8 GB) 1 https://www.sparkfun.com/products/12998

http://www.amazon.com/Edimax-EW-7811Un-150Mbps-Raspberry- Apoia / dp /
dongle Wi-Fi 1
B003MTTJOY

http://www.amazon.com/CanaKit-Raspberry-Supply-Adapter- Carregador / dp /
fonte de alimentação Raspberry Pi 1
B00GF9T3I0

Teclado, rato, concentrador USB, e o Como

monitor requried necessária para o desenvolvimento e as fases de depuração


Definindo as fases de desenvolvimento do projeto
De acordo com a arquitetura do sistema, temos três unidades principais que colaborativamente criar o projeto de monitoramento

residencial a distância. O processo global de desenvolvimento de hardware e software também está alinhada com estas três unidades e

pode ser distribuído como se segue:

Monitoramento fase de desenvolvimento estação de

estágio Controle desenvolvimento centro de

desenvolvimento de aplicações Web estágio

O desenvolvimento de software para a fase estação de monitoração inclui o desenvolvimento do código Arduino para
monitorizar sensores e actuadores executar acções de um dos lados, ao passo que a publicação esta informação ao
centro de controlo, por outro lado. A camada do meio da fase de desenvolvimento, isto é, o Raspberry Pi - centro de
controle baseado, anfitriões do corretor mosquitto. Esta fase também contém o programa Python que contém a GUI,
lógica percepção da situação, e sub A última etapa, os serviços em nuvem, inclui dois componentes distintos, relé
dados do sensor e uma aplicação web. Nós estaremos usando a plataforma Xively como retransmitir os nossos dados
do sensor e da aplicação web será desenvolvido em Python na instância Amazon AWS nuvem. Agora, vamos ' s salto
no processo de desenvolvimento real e nossa primeira parada será o Arduino - estação de monitoramento baseado.
Fase 1• -• uma estação de monitoramento usando

Arduino
Como discutimos, as principais tarefas dos sistemas de monitoramento são componentes do sensor de interface e
comunicar a informação gerada por estes sensores para os observadores. Você estará usando Arduino Uno como o
componente microcontrolador central para integrar estes sensores e atuadores. Precisamos também de um meio de
comunicação entre o Arduino Uno e o centro de controle e estaremos utilizando o Arduino Ethernet Shield para esta
finalidade. Let ' s discutir a arquitetura da estação de monitoramento e seus componentes de hardware.
Projetando a estação de monitoramento
Nós unidades baseadas em Arduino e já projetou o escudo Ethernet em vários exercícios Capítulo 8 , Introdução ao
Arduino Networking, e Capítulo 9 , Arduino ea Internet das Coisas. Portanto, assumimos que você está familiarizado
com a interface do protetor de Ethernet com a placa de Arduino. Vamos ligar vários sensores e atuadores com a
placa Arduino, como mostrado no diagrama a seguir. Como você pode ver neste diagrama, os sensores irá fornecer
os dados para a placa Arduino, enquanto os atuadores buscará os dados da placa de Arduino. Apesar de estarmos
coleta automaticamente os dados ambiente para estes sensores, os dados do botão serão recolhidos a partir de
entradas de usuários manuais.

Confira o diagrama a seguir Fritzing para as conexões detalhado na estação de monitoramento. Como
você pode ver em nosso design de hardware, a temperatura do sensor TMP102 está conectado através
da interface I2C, o que significa que vamos precisar das linhas SDA e SCL. Iremos utilizar pinos
analógicos 5 e 6 da placa Arduino para fazer a interface SDA e SCL respectivamente. A humidade (HIH
Enquanto isso, a campainha, o interruptor de botão, eo sensor de movimentos PIR são conectados
através dos pinos de I / O digitais. O LED super Isto significa que é sempre alimentado com os pinos de
ânodo comum e o R, G e B dos pinos são controlados através da utilização dos pinos de PWM.

Certifique
Nota

Você pode aprender mais sobre a interface de LED RGB com Arduino do tutorial em
https://learn.adafruit.com/all-about-leds .

Se você estiver usando uma placa Arduino diferente do Arduino Uno, você terá que ajustar os
números de pinos apropriados no código Arduino. Além disso, certifique

Em termos de ligações do circuito, você pode usar uma placa de ensaio, como mostrado no diagrama anterior, ou se
você está confortável, você pode usar uma placa protótipo PCB e soldar os componentes. Em nossa configuração,
primeiro testados os componentes na placa de ensaio e uma vez que foram testados, nós soldado dos
componentes, como mostrado na figura a seguir. Se você se aventurar para soldar a placa PCB, certifique O
protótipo PCB vai render um desempenho robusto em comparação com a placa de ensaio, mas
também tornará mais difícil para você para depurar e alterar os componentes mais tarde.

Se você está pronto com sua conexão de circuito, conecte o Arduino para o seu computador usando o cabo USB.
Além disso, ligue a blindagem Ethernet para sua casa roteador usando um cabo Ethernet.
O esboço Arduino para a estação de monitorização
Antes de saltar para o palco de codificação, certifique Você pode encontrá Arduino_monitoring_station.ino. Os
implementos de código a lógica necessária para suportar o fluxo UX geral na estação de monitoramento,
que discutimos na seção anterior. Nas seções seguintes, vamos percorrer as principais áreas do
programa para que você possa entender melhor esses trechos de código. Agora, abra este esboço no
Arduino IDE. Você já está familiarizado com a configuração do endereço IP para Arduino. Você também
aprendeu a usar a biblioteca Arduino MQTT PubSubClient no capítulo anterior, o que significa que o seu
Arduino IDE já deve ter o PubSubClient biblioteca instalado nele. No início do código, nós também
declararam poucas constantes, tais como os endereços IP do servidor MQTT e Arduino e os números de
pinos de vários sensores e atuadores.

Nota

Você terá que alterar o endereço IP da estação de monitoramento e centro de controle de acordo com
a configuração da rede. Certifique

Na estrutura do código, temos duas funções Arduino obrigatórias, configuração() e ciclo(). No configuração() função, vamos
configurar os tipos de pinos do Arduino e os canais de assinantes MQTT. Na mesma função, nós também irá anexar
uma interrupção para o pressionar do botão durante a configuração do temporizador para o publishData () função.

A publicação de informações do sensor

o publishData () função lê as entradas de sensor e publica esses dados para o corretor mosquitto que
está localizado no centro de controle. Como você pode ver no seguinte trecho de código, estamos
medindo sensores de valores, um por um e publicá client.publish () método:

vazio publishData () {
Wire.requestFrom (partAddress, 2); byte MSB =
Wire.read (); byte LSB = Wire.read ();

int TemperatureData = ((MSB << 8) | LSB) >> 4;

flutuador Celsius = TemperatureData * 0,0625;


temperatureC = dtostrf (Celsius, 5, 2, message_buff2); client.publish ( "MonitoringStation / temperatura",
temperatureC);

flutuar humidade = getHumidity (Celsius);


humidityC = dtostrf (humidade, 5, 2, message_buff2); client.publish ( "MonitoringStation /
humidade", humidityC);

movimento int = digitalRead (MotionPin); motionC = dtostrf (movimento, 5, 2,


message_buff2); client.publish ( "MonitoringStation / motion", motionC);
luz int = analogRead (LightPin);
lightC = dtostrf (luz, 5, 2, message_buff2); client.publish ( "MonitoringStation / luz",
lightC); }

Se você verificar o configuração() função, você vai notar que temos usado uma biblioteca chamada
SimpleTimer a criação de um cronômetro método para esta função. Esse método executa o
publishData () função periodicamente sem interromper e bloqueando o fluxo actual do ciclo de execução Arduino.
No seguinte trecho de código, o número 300000 representa o tempo de atraso em milissegundos, ou seja, 5
minutos:

timer.setInterval (300000, publishData);

Nota

Você precisará baixar e importar o SimpleTimer biblioteca para compilar e executar o código com sucesso.
Você pode baixar a biblioteca de
https://github.com/infomaniac50/SimpleTimer .

Subscrever às acções do actuador

Você pode ver no configuração() função que estamos inicializar o código, assinando o
MonitoringStation / led e MonitoringStation / buzzer canais. o
client.subscribe () método irá certificar

if (client.connect ( "MonitoringStation")) {
client.subscribe ( "MonitoringStation / led"); client.subscribe ( "MonitoringStation
/ campainha"); }

Programação uma interrupção para lidar com o pressionar de um botão

Temos tido o cuidado da publicação e que subscrevam funções da estação de monitoramento. Agora, teremos de integrar
o interruptor de botão que é controlado por entradas do usuário. Nas rotinas de programação Arduino, corremos um ciclo
periódico para verificar o estado dos pinos. No entanto, isso pode não ser útil se o botão for pressionado, uma vez que
exige uma acção imediata. Esta acção de pressionar o botão é tratado utilizando as interrupções Arduino, como mostrado
na seguinte linha de código:

attachInterrupt (0, ButtonPress, elevando-se);

A linha anterior de código associa uma interrupção no pino 0 (pino digital 2) com o
ButtonPress () função. Esta função define fora das cigarras sempre que o estado da interrupção é alterado. Em outras
palavras, quando o botão é pressionado pelo usuário, a campainha será instantaneamente desligado
independentemente do status atual da campainha:

vazio ButtonPress () {
digitalWrite (ALARME, LOW); Serial.println ( "Set
campainha off"); }
prova
Os atuais comunica código Arduino com o centro de controle para publicar e subscrever os dados, mas nós haven ' t ainda
configurar o corretor mosquitto para lidar com essas solicitações. Você ainda pode ir em frente e fazer o upload do esboço
Arduino a sua estação de monitoramento usando o cabo USB. Isso não vai resultar em quaisquer ações frutíferas da
estação de monitoramento e você só será capaz de usar o Serial.prinln () comando para imprimir várias medições do sensor.
Portanto, vamos desenvolver o centro de controle próximo para que possamos começar a tratar pedidos de comunicação
da estação de monitoramento.
Fase 2• -• um centro de controle usando Python e o
Raspberry Pi
A fim de entregar o status do sistema e outras observações de sensor para o usuário, as necessidades do centro de controle
para executar várias operações que incluem a obtenção de dados brutos do sensor da estação de monitoramento, cálculo do
status do sistema, relatando esses dados para os serviços em nuvem e exibição de observação usando GUI. Enquanto o
centro de controle inclui dois componentes de hardware principais (a tela LCD Raspberry Pi e TFT), ele também é composto
por dois componentes de software principais (o corretor mosquitto e código Python) para lidar com a lógica centro de
controle.

Gorjeta

Estamos usando um Raspberry Pi em vez de um computador normal como nós queremos o centro de controle para ser uma unidade

destacável e portátil que pode ser montado em uma parede.

Você ainda pode usar seu próprio computador para editar e testar o código Python para fins de desenvolvimento, em vez de
usar um Raspberry Pi diretamente. No entanto, recomendamos que você voltar para o Raspberry Pi, uma vez que você
está pronto para implantação.
A arquitetura do centro de controle
O Raspberry Pi é a principal unidade de computação do centro de controle e funciona como o cérebro de
todo o sistema. Desde o Raspberry Pi é usado como um substituto para um computador normal, a
arquitetura do centro de controle pode alternadamente usar um computador em lugar do Raspberry Pi.
Como você pode ver no diagrama a seguir, o centro de controle está ligado à rede doméstica usando Wi O
centro de controlo inclui o corretor mosquitto; este é utilizado como o ponto de comunicação entre a
estação de controlo e o programa Python para o centro de controlo. O programa Python utiliza o Tkinter biblioteca
para GUI ea

paho_mqtt biblioteca para se comunicar com o corretor mosquitto. Ao utilizar essas duas bibliotecas, podemos transmitir
informações do sensor da estação de monitoramento para o usuário. No entanto, vamos precisar de um acordo
separado para estabelecer a comunicação entre o centro de controle e serviços em nuvem. Em nossa arquitetura geral
do sistema, o centro de controle é projetado para se comunicar com o relé de dados intermediário, Xively. O código
Python usa o xively biblioteca para permitir essa comunicação.

Dentro Capítulo 8 , Introdução ao Arduino Networking, já desde que com métodos para instalar o corretor
mosquitto, o Python-mosquitto biblioteca, ea xively
biblioteca. Nós também aprendemos o processo de criação do ecrã TFT LCD com o Raspberry Pi em Capítulo
7 , O Projeto Midterm• -• um portátil DIY termostato. Por favor, referir ' t completou os exercícios ainda.
Supondo que você tenha configurado o corretor mosquitto e as bibliotecas Python necessários, você pode
passar para a
próxima seção, que inclui a programação real Python.
O código Python para o centro de controle
Antes de iniciar a interface dessas bibliotecas no código Python, comece o seu corretor mosquitto primeiro na linha de
comando usando este comando simples:

$ mosquitto

Certifique Esta acção irá certificar O código Python para o projeto atual está localizado na pasta de
código deste capítulo com o nome controlCenter.py. Abrir este arquivo usando seu Python IDE e modificar os
valores dos parâmetros apropriados antes de executá Estes parâmetros incluem o endereço IP do
corretor mosquitto juntamente com o ID de alimentação ea chave API do dispositivo virtual Xively. Você
já deve ter o ID de ração e a chave de API do seu dispositivo virtual Xively do capítulo anterior:

cli.connect ( "10.0.0.18", 1883, 15) FEED_ID = "<feed - id>"


API_KEY = "<api - chave"

Se você estiver usando uma instância local do corretor mosquitto, você pode substituir o endereço IP com 127.0.0.1. Caso
contrário, substitua o 10.0.0.18 endereço com o endereço IP apropriado do computador que está hospedando o corretor
mosquitto. Deixe ' s tentar entender o código agora.

Nota

Às vezes em Mac OS X, você ganhou ' t ser capaz de executar Tkinter tópicos janela e Python em paralelo devido a um
erro desconhecido. Você deve ser capaz de executar o programa com sucesso em ambientes Windows e Linux. Este
programa foi testado com o Raspberry Pi, o que significa que você ganhou ' t encontrar o mesmo erro ao implantar o
centro de controle.

Criando a GUI usando Tkinter


Nos exercícios anteriores, nós sempre utilizado um único segmento Python para executar o programa. Esta prática não
vai nos ajudar a executar várias tarefas em paralelo, tais como a obtenção de observação do sensor da estação de
monitoramento e, simultaneamente, atualizar o GUI com essa informação. Como solução, nós introduzimos
multithreading neste exercício. Como precisamos de dois circuitos separados, um para cada Tkinter e paho-MQTT, vamos ser
executá O segmento principal será executado métodos que estão relacionados com mosquitto e os serviços em
nuvem, enquanto o segundo segmento irá lidar com o Tkinter GUI. No seguinte trecho de código, você pode ver que
temos inicializado a

controlCenterWindow () classe com o threading.thread parâmetro. Portanto, quando nós executamos janela =
controlCenterWindow () no programa principal, ele irá criar outro segmento para esta classe. Basicamente, esta classe
cria a janela do GUI ao preencher rótulos e outros componentes GUI. Os rótulos precisam ser atualizados quando
novas observações de sensor
chegam, são declarados como variáveis ​de classe, e são acessíveis a partir do instante classe. Como você pode ver no
seguinte trecho de código, declaramos os rótulos de temperatura, humidade, luz e movimento como variáveis ​de classe:

classe controlCenterWindow (threading.Thread):


def __init __ (self):
# lona Tkinter
threading.Thread .__ o init __ (self) self.start () def
retorno de chamada (self):

self.top.quit () def execute


(self):
self.top = Tkinter.Tk ()
self.top.protocol ( "WM_DELETE_WINDOW", self.callback) self.top.title ( "Control Center")
self.statusValue = Tkinter.StringVar () self.statusValue.set ( "Normal") self.tempValue =
Tkinter. StringVar () self.tempValue.set ( '

self.humdValue = Tkinter.StringVar () self.humdValue.set ( '

self.lightValue = Tkinter.StringVar () self.lightValue.set ( '

self.motionValue = Tkinter.StringVar () self.motionValue.set ( 'Não')

# Comece subseção código


# Declara componentes Tkinter
# Incluído no exemplo de código do capítulo
# subseção código final

self.top.mainloop ()

O código anterior trecho doesn ' t contêm a parte em que declarou o Tkinter
componentes, como é semelhante ao que codificado no projeto de médio prazo. Se você tem dúvidas sobre questões
relacionadas com o Tkinter, consulte Capítulo 6 , Armazenamento e plotagem Arduino dados, e Capítulo 7 , O Projeto
Midterm• -• um portátil DIY termostato.

Comunicando-se com o corretor mosquitto

No nível do centro de controle, nós subscrever tópicos que são publicadas a partir da estação de monitoramento, ou seja, MonitoringS
/ temperatura, MonitoringStation / humidade, e assim por diante. Se você executou qualquer modificação no código Arduino para
mudar os temas MQTT, você precisa refletir essas alterações nesta secção. Se os temas publicados pela estação de
monitoramento não correspondem os temas no centro de controle ' s código, você não terá nenhuma atualização. Como
você pode ver no código Python, estamos associando o ON_MESSAGE e

on_publish métodos com função muito importante. Sempre que uma mensagem chega do assinante, o cliente irá
chamar as funções associadas ao ON_MESSAGE método. No entanto, todas as mensagens de cada vez é publicado
a partir do código Python, o onPublish ()
função será chamada:

cli = mq.Client ( 'ControlCenter')


cli.on_message = onMessage
cli.on_publish = onPublish

cli.connect ( "10.0.0.18", 1883, 15)

cli.subscribe ( "MonitoringStation / temperatura", 0)


cli.subscribe ( "MonitoringStation / humidade", 0)
cli.subscribe ( "MonitoringStation / motion", 0)
cli.subscribe ( "MonitoringStation / light", 0)
cli.subscribe ( "MonitoringStation / buzzer", 0)
cli.subscribe ( "MonitoringStation / led", 0)

Cálculo do sistema ' é consciência status e situação


O centro de controle é atribuída a tarefa de calcular o status do sistema como um todo. O centro de controle calcula
o status do sistema como Alerta, Cuidado, ou Normal utilizando os valores correntes de temperatura e humidade. Para
calcular o status, o centro de controle executa o calculateStatus () funcionar cada vez que recebe uma atualização para a
temperatura ou a umidade da estação de monitoramento. De acordo com a lógica atual percepção da situação, se a
temperatura é medida acima de 45 graus Celsius ou abaixo de 5 graus Celsius, chamamos o sistema ' s status
como Alerta. Da mesma forma, você pode identificar a gama de valores de temperatura e umidade para Cuidado e Normal status
do seguinte trecho de código:

def calculateStatus ():


if (tempG> 45):
if (humdG> 80):
status = "Alta Temperatura, umidade alta" elif (humdG <20):

status = "Alta Temperatura, umidade baixa" else: estado = "alta

temperatura" setAlert (status)

elif (tempG <5):


if (humdG> 80):
status = "baixa temperatura, alta umidade" elif (humdG <20):

status = "baixa temperatura, baixa umidade" else: status = "baixa

temperatura" setAlert (status) else: if (humdG> 80):

status = "alta umidade" setCaution (status)


elif (humdG <20):

status = "baixa umidade" setCaution

(status) else: status = "Normal"

setNormal (status)

Comunicando-se com Xively

O centro de controle também é necessário para se comunicar com Xively quando recebe uma
mensagem dos temas inscritos. Nós já estão familiarizados com o processo de criação de dispositivos virtuais e
fluxos de dados em Xively. Abra sua conta Xively e criar um dispositivo virtual chamado Centro de Controle. Anote o ID
de ração e chave de API para este dispositivo e substituí Depois de ter estes valores, criar o Temperatura, Humidade, Luz,
Movimento, campainha, e estado canais neste dispositivo virtual. Olhando para o código Python, você pode ver que temos
declarado o fluxo de dados individual para cada tópico e relacionados com o canal Xively apropriado. mostra o
código seguinte fragmento O fluxo de dados para apenas a observação da temperatura, mas o código também
contém uma configuração semelhante para todas as outras observações de sensor:

experimentar:

datastreamTemp = feed.datastreams.get ( "Temperature"), excepto httpError como e:

imprimir "httpError ({0}): {1}". formato (e.errno, e.strerror) datastreamTemp = feed.datastreams.create (


"temperatura", tags = "C") print "Criar novo canal 'temperatura' "

Uma vez que o centro de controle recebe uma mensagem da estação de monitoramento, ele atualiza o fluxo de dados com os
valores mais recentes e empurra essas alterações para Xively. Ao mesmo tempo, nós também irá atualizar a etiqueta
apropriada no Tkinter GUI usando o onMessage () função. Vamos usar o mesmo trecho de código para todos os canais subscritos:

se msg.topic == "MonitoringStation / temperatura":


tempG = flutuador (msg.payload)
window.tempValue.set (tempG)
datastreamTemp.current_value = tempG tentativa:

datastreamTemp.update () excepto
httpError como e:
imprimir "httpError ({0}): {1}". formato (e.errno, e.strerror)

O centro de controle também implementa a função para definir o sistema ' s estado em todo o sistema, uma vez
que é calculada usando a calculateStatus () função. Existem três funções diferentes para executar esta tarefa usando
um método que é semelhante ao que foi descrito no trecho de código anterior. Estas funções incluem setAlert (),
setCaution (), e
setNormal () and•these•are•associated•with• Alerta, Cuidado, e Normal respectivamente. Ao atualizar o sistema ' s status,
essas funções também realizar campainha e ações de DEL por publicar os valores LED e campainha para o
corretor mosquitto:

def setAlert (estado):


window.statusValue.set (status)
datastreamStatus.current_value = "Alerta" tentativa:

datastreamStatus.update () excepto httpError como e:

imprimir "httpError ({0}): {1}". formato (e.errno, e.strerror)


cli.publish ( "MonitoringStation / led", 'vermelho')
cli.publish ( "MonitoringStation / buzzer", 'ON')

Verificar e atualizar a campainha ' status de s

No centro de controle, vamos definir a campainha ' status de s para EM Se o sistema de ' estado s é determinada como
Alerta. Se você olhar para trás, o fluxo UX, você vai notar que nós também queremos incluir um recurso para o
usuário a desligar manualmente a sirene. o checkBuzzerFromXively ()
função mantém o controle do buzzer ' s estado de Xively e se o usuário gira manualmente o buzzer usando o
aplicativo web, essa função define fora a campainha.

Para continuar este processo de forma independente dos tópicos GUI ea situação da consciência, nós será necessário criar
outro segmento para esta função. O temporizador sobre este tópico irá executar automaticamente a função a cada 30
segundos:

def checkBuzzerFromXively ():


experimentar:

datastreamBuzzer = feed.datastreams.get ( "campainha") buzzerValue =


datastreamBuzzer.current_value buzzerValue = str (buzzerValue)

cli.publish ( "MonitoringStation / buzzer", buzzerValue)


exceto httpError como e:
imprimir "httpError ({0}): {1}" print format (e.errno, e.strerror) "canal solicitado não existe"
threading.Timer (30, checkBuzzerFromXively) .start ().

Com esta função executado em um segmento separado a cada 30 segundos, o centro de controle irá verificar o status do
canal Xively e parar o sinal sonoro se o status é definido como FORA. Vamos explicar como o usuário pode atualizar o canal
Xively para a campainha na próxima seção.
Testando o centro de controle com a estação de monitoramento

Assumindo que o seu corretor mosquitto está em execução, execute o controlCenter.py código com os parâmetros alterados.
Em seguida, iniciar o monitoramento. Depois de alguns momentos, você vai ver no terminal que o centro de controle já
começou a receber mensagens dos editores que são inicializados na estação de monitoramento. O intervalo de
atualização para as mensagens do publisher no centro de controle depende do intervalo de publicação configurado na
estação de monitoramento.

Nota

O código Arduino executa o processo de conexão com o corretor mosquitto apenas uma vez depois de ligar. Se você
começar o seu corretor mosquitto depois disso, ele ganhou ' t ser capaz de comunicar com o corretor. Então, você precisa
ter certeza de que você começa o corretor mosquitto antes de ligar a estação de monitoramento.

Se você precisar reiniciar o corretor mosquitto por qualquer motivo, remova e reinicie a estação de monitoramento em

primeiro lugar.

Na execução do programa, você será capaz de ver uma janela GUI pequena, como mostrado na imagem seguinte. Esta
janela apresenta o sensor ' s valores para a temperatura, humidade, luz ambiente, e movimento. Junto com estes valores,
a GUI também exibe o status do sistema, que é Normal neste screenshot. Você também pode observar que cada vez que
o centro de controle recebe atualizações da estação de monitoramento, o sistema ' observações de estado e de sensores
s mudar em tempo real:
Se essa configuração está funcionando corretamente no seu computador, vamos ' s passar para implantar o centro de controle sobre

o Raspberry Pi.
Configurando o centro de controle sobre o Raspberry Pi
O processo de instalação do sistema operacional Raspbian é explicado em Capítulo 7 , O Projeto Midterm•
-• um portátil DIY termostato. Você pode usar o mesmo módulo que você usou no projeto intercalar ou
criar um novo. Depois de ter instalado e configurado Raspbian tela de TFT, ligue o Wi - dongle Fi através
de uma porta USB. Nesta fase, nós presumimos que seu Raspberry Pi está conectado com um monitor,
um teclado e um mouse para executar as mudanças básicas. Embora nós ganhamos ' t recomendá

. 1. Inicie o Raspberry Pi e log em No prompt de comando, execute o seguinte comando para entrar no
modo de desktop visual:

$ startx

2. Uma vez que seus começos desktop gráficos, você será capaz de ver o ícone do Wi-fi
configuração Utilitário. Dê um duplo clique sobre o ícone e abra a WiFi configuração Utilitário.
Procurar redes sem fio e se conectar à rede Wi Quando solicitado, digite a senha de sua rede na
janela de formulário chamado PSK,
e se conectar à sua rede.
3. Agora, o Raspberry Pi está ligado à rede doméstica local e à Internet através dele. Ele ' s tempo para
atualizar os pacotes existentes e instalar os necessários. Para atualizar o Pi Raspberry ' s sistema
existente, execute os seguintes comandos no terminal:

$ Update sudo apt-get $ sudo


apt-get upgrade

4. Uma vez que seu sistema está atualizado com a versão mais recente, ele ' s tempo para instalar o corretor
mosquitto em seu Raspberry Pi. O Raspbian OS tem mosquitto no repositório padrão, mas ele doesn ' t tem a
versão atual que precisamos. Para instalar a última versão do mosquitto, execute os seguintes comandos no
terminal:

$ Onda -O http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key $ sudo apt-key mosquitto-repo.gpg.key


add $ rm mosquitto-repo.gpg.key $ cd / etc / apt / sources.list.d /

$ Sudo onda -O http://repo.mosquitto.org/debian/mosquitto-repo.list $ apt-get update sudo

$ sudo apt-get install mosquitto, mosquitto-clientes

5. Para instalar outras dependências Python, vamos ' s primeiro instalar o pacote Setuptools usando
apt-get:

$ Sudo apt-get install python-setuptools

6. Usando Setuptools, agora podemos instalar todo o Python necessário bibliotecas como
paho_mqtt, xively e web.py:

$ Sudo easy_install pip


$ Pip sudo instalar xively-python web.py paho_mqtt
Agora que já instalou todas as ferramentas de software necessárias que são necessários para executar o nosso centro de controle

sobre o Raspberry Pi, é hora de configurar o Raspberry Pi para que ele possa fornecer o funcionamento ininterrupto para um sistema

crítico, como um sistema de monitoramento residencial a distância:

1. Na configuração atual do Raspberry Pi, a tela do Raspberry Pi vai dormir depois de algum tempo
ea conexão Wi Para evitar este problema e forçar a tela para permanecer ativo, você vai precisar
para realizar as seguintes alterações. Abra o lightdm.conf arquivo usando o seguinte comando:

$ Sudo nano /etc/lightdm/lightdm.conf

2. No arquivo, navegue até o SetDefaults seção e editar a seguinte linha:

xserver - comando - X• - s 0 DPMS

3. Agora que o Raspberry Pi está configurado, é hora de copiar o arquivo de programa do seu computador para o Raspberry Pi.

Você pode usar SCP, massa de vidraceiro, ou apenas um drive USB para transferir o arquivo necessário para o Raspberry

Pi.

Se você instalar e configurar tudo como especificado, o programa deve ser executado sem erros. Você pode executar o
programa Python constantemente em segundo plano usando o seguinte comando:

$ Nohup python controlCenter.py &

A última coisa que queremos configurado no Raspberry Pi é a tela de TFT LCD. Os processos da TFT LCD de
instalação e configuração são descritos em Capítulo 7 , O Projeto Midterm• -• um portátil DIY termostato. Por favor,
siga os passos na ordem dada para configurar a tela. O módulo do centro de controle, juntamente com o
Raspberry Pi ea tela de TFT agora pode ser implantado em qualquer parte de sua casa.
Fase 3• -• uma aplicação web utilizando Xively,
Python, e serviço Amazon cloud
O módulo de serviços de nuvem de todo o sistema permite o acesso remoto a sua estação de monitoramento através da
Internet. A unidade interage com o utilizador por meio de uma aplicação de teia como uma versão estendida do centro de
controle. Com o uso desta aplicação web, o usuário pode observar a informação do sensor da estação de monitoramento eo
sistema de ' status de s calculados pelo centro de controle, enquanto o controle remoto para desligar a campainha. Então, o
que a arquitetura dos serviços em nuvem parece?
Arquitetura dos serviços em nuvem
A arquitectura do módulo de serviços de nuvem, com os seus componentes associados é apresentada no diagrama
seguinte. Na arquitetura de serviços em nuvem, estamos usando Xively como o relé de dados intermediário entre a
aplicação web e o centro de controle. O centro de controlo empurra as observações obtidas a partir da estação de
controlo para os canais de Xively. lojas Xively e relés os dados para a aplicação web que está hospedado na
Amazon AWS. A instância do servidor na Amazon AWS é usado para fazer a aplicação web acessível através da
Internet. A instância do servidor executa o sistema operacional Ubuntu ea aplicação web que é desenvolvido usando
o web.py biblioteca em Python.

Na fase anterior, já cobertas o processo de criação de Xively e os canais para acomodar os dados do sensor. No
código de centro de controle, que também explicou como podemos empurrar as observações atualizadas para os
canais Xively apropriadas. Portanto, nós realmente não têm qualquer fundamento para cobrir a plataforma Xively
nesta fase e podemos passar para a aplicação web.
aplicação web Python hospedado na Amazon AWS
No capítulo anterior, montamos uma instância do Amazon AWS nuvem para hospedar um aplicativo web. Você
pode usar a mesma instância para hospedar o aplicativo web para o sistema de monitoramento residencial a
distância também. No entanto, certifique web.py
biblioteca no seu servidor.

1. Em seu computador, abra o Web_Application pasta e depois a


RemoteMonitoringApplication.py arquivo no seu editor.
2. No código, você será capaz de ver que acabamos de expandir o programa de aplicação web que criamos
em Capítulo 9 , Arduino ea Internet das Coisas. Usamos os modelos baseados em web.py e a OBTER() e POSTAR()
funções para permitir a aplicação web.

3. Na aplicação, que ir buscar informação de cada canal Xively e processá Por exemplo, a fetchTempXively
() função obtém a informação de temperatura Xively. Cada vez que o POSTAR() função é executada, o fetchTe
() função lê o último valor de leitura de temperatura de Xively. Isto também significa que a aplicação
web não preencher e atualizar as informações mais recentes automaticamente e aguarda POSTAR() para
executar as funções apropriadas:

def fetchTempXively ():


experimentar:

datastreamTemp = feed.datastreams.get ( "Temperature"), excepto httpError como e:

imprimir "httpError ({0}): {1}". print format (e.errno, e.strerror) "Pedido de canal não existe" voltar
datastreamTemp.current_value

4. A aplicação web também fornece acesso para controlar a campainha da interface do usuário. O seguinte
trecho de código adiciona o buzzer Off botão com outra Formato
componentes. Quando o formulário é enviado depois de este botão é pressionado, o aplicativo
web executa o setBuzzer () função:

dadosEntrada = web.input ()
se inputData.btn == "buzzerOff":
setBuzzer ( "OFF")

5. A setBuzzer () acesso função do canal Xively, campainha, e envia o valor off


se o buzzer Off botão é pressionado. O doesn aplicativo da web atual " t incluem o
buzzer On botão, mas você pode facilmente implementar essa funcionalidade através da reutilização do código que foi
desenvolvido para o buzzer Off botão. Esta função fornece o código de referência para outros pontos de controle, que
pode ser reutilizado com pequenas modificações:

def setBuzzer (statusTemp):


experimentar:

datastream = feed.datastreams.get ( "campainha"), exceto httpError como e:

imprimir "httpError ({0}): {1}". formato (e.errno, e.strerror)


fluxo de dados = feed.datastreams.create ( "campainha",
Tag = "buzzer")
imprimir "Criar novo canal 'campainha"
datastream.current_value = statusTemp tentar:

datastream.update () excepto
httpError como e:
imprimir "httpError ({0}): {1}". formato (e.errno, e.strerror)

6. No código, você também terá que modificar o ID alimentação Xively ea chave de API e substituí
Depois de ter realizado esta modificação, execute o seguinte comando. Se tudo correr como
planejado, você será capaz de abrir o aplicativo web no seu navegador web.

$ Python RemoteMonitoringApplication.py

Se você estiver executando o código Python em seu computador, você pode abrir

http://127.0.0.1:8080 para acessar o aplicativo. Se você estiver executando o aplicativo no servidor de nuvem, você precisa
digitar o endereço IP ou nome de domínio do seu servidor para acessar o aplicativo web, http: // <AWS - IP - address>: 8080. Se
a aplicação web está sendo executado a partir da nuvem, ele pode ser acessado de qualquer lugar usando a Internet,
que foi um dos requisitos do projeto originais. Com esta última etapa, você concluiu com êxito o desenvolvimento do
sistema de monitoramento residencial a distância que é baseado em Arduino e Python.
Testando o aplicativo web
Quando você abrir o aplicativo web em um navegador, você será capaz de ver uma saída semelhante como
mostrado na imagem seguinte. Como você pode ver, a aplicação web exibe os valores de temperatura, humidade,
luz e movimento. o refrescar botão de busca os dados do sensor de Xively novamente e cargas a aplicação mais
uma vez. o buzzer Off botão define o valor da Xively ' s cigarra canal de FORA, que então são apanhados pelo centro de
controle, e ele desliga o alarme na estação de monitoramento posteriormente:
Testes e solução de problemas
Devido ao número de componentes envolvidos e programação complexa que lhes estão associados, o
projecto global é um sistema complexo de testar e depurar. Antes de saltar para solução de problemas,
certifique A seguir estão algumas soluções para os possíveis problemas que podem ocorrer durante a
execução do projeto:

Solucionar problemas de desempenho do sensor individual:

Se suas medidas de sensores estão longe dos valores esperados, a primeira coisa que você
quer avaliar é a conexão dos pinos do sensor para a placa Arduino. Certifique Verifique se
sua placa Ethernet Shield está devidamente ligado ao Arduino Uno.

Avaliar as conexões da fonte de alimentação 5V e terreno para cada componente.

Evite Xively ' limite atualização s

Xively impõe um limite para o número máximo de transações que você pode realizar em uma quantidade limitada
de tempo. Durante a execução de seu código de centro de controle, se você encontrar um erro por exceder o
limite, espere 5 minutos antes de seu limite de acesso fica levantada.

Aumentar o intervalo entre as atualizações Xively consecutivos ao nível do centro de controle:

threading.Timer (120, checkBuzzerFromXively) .start ()

Reduzir a frequência das mensagens publicadas na estação de monitoramento:

timer.setInterval (600000, publishData);

Você também pode combinar vários canais Xively formatando dados em JSON ou XML.

Trabalhando com a limitação máxima de corrente de Arudino:

O pino de alimentação de + 5V e pino digital de Arduino pode fornecer uma corrente


máxima de 200 mA e 40 mA respectivamente. Ao executar sensores diretamente da placa
Arduino, certifique Certifique Caso contrário, os componentes ganhou ' t ser capaz de obter
energia suficiente para executar e isso vai traduzir

Você pode fornecer alimentação externa para os componentes que requerem grandes quantidades de
corrente e controlar este mecanismo poder através de si Arduino. Você vai precisar de um transistor que está
atuando como um interruptor que pode ser controlado usando os pinos digitais do Arduino. O tutorial em https://learn.ad
mostra um exemplo semelhante para um motor de corrente contínua.
Resolver problemas de rede:

Em alguns cenários, a sua estação de monitoramento ganhou ' t ser capaz de comunicar com o centro de controle
devido a problemas de rede.
Este problema pode ser resolvido usando endereços IP manuais para ambos, Arduino e o
Raspberry Pi. Em nosso projeto, nós usamos um endereço IP manual para o Arduino, mas o
Raspberry Pi está conectado usando a rede Wi Na maioria dos casos, quando você estiver
usando sua rede Wi Você pode resolver isso configurando seu roteador Wi Como o tipo e
modelo do Wi

Trabalhando com questões relacionadas com a campainha:

Às vezes o som da campainha pode ser muito alto ou muito baixo, dependendo do sensor que você está
usando. Você pode usar PWM para configurar a intensidade do sinal sonoro. Em nosso projeto, foi
utilizado o pino digital Arduino 9 para ligar a campainha. Este pino também suporta PWM. Em seu código
Arduino, modifique a linha para refletir as mudanças para o pino PWM. Substitua o digitalWrite (ALARME,
ALTA); linha com analogWrite (ALARME, 127) ;.

Esta rotina irá reduzir a intensidade do sinal sonoro pela metade do nível original. Você também pode
alterar o valor PWM de 0 a 255 e definir a intensidade do som da campainha menor para o maior.
Controlar calibração GUI center:

Dependendo do tamanho da tela TFT LCD que você está usando, você terá que ajustar o
tamanho da janela principal do Tkinter.
Primeiro, execute o código atual em seu Raspberry Pi e se você ver que a janela de GUI não coincide
com a tela, adicione a seguinte linha de código após a inicialização da janela principal:

top.minsize (320,200)

Este código irá resolver o problema com o tamanho de uma tela de 2,8 polegadas TFT LCD. No trecho de código

anterior, 320 e 200 representam os tamanhos de pixel de largura e comprimento, respectivamente. Para outros tamanhos de

tela, altere o tamanho do pixel em conformidade. Teste o LED:

Na configuração de código atual, o LED está ligado apenas quando o sistema muda para Alerta ou Cuidado. Isso
significa que você ganhou ' t ser capaz de testar os LEDs a menos que ocorram estas situações. Para
verificar se eles estão funcionando corretamente, execute o seguinte comando no centro de controle:

$ Mosquitto_pub• - t "MonitoringStation / led"• - m "vermelho"

Este comando irá acender o LED em vermelho. Para desligar o LED, use apenas fora
ao invés de vermelho no código anterior.
Se nada se acende, você deve verificar os fios de ligação dos LEDs. Além disso, verifique se há problemas
relacionados à rede como o mosquitto em si pode não estar funcionando.

Se você ver qualquer cor diferente do vermelho, isso significa que você haven ' t conectado, o LED
corretamente e você precisa trocar a configuração de pinos do seu LED. Se você estiver usando uma
diferente LED que super - RGB fluxo, você deve verificar se a pinagem na folha de dados e reorganizar as
conexões.
Estendendo seu sistema de monitoramento residencial a

distância
Para criar com sucesso produtos comerciais de protótipos projeto de DIY, você vai precisar de uma camada adicional de
recursos em cima de funcionalidades básicas. Esses recursos realmente fazer coisas conveniente para um usuário
quando eles interagem com o sistema. A outra característica distinta é a tangibilidade do sistema, o que torna a produção
e suporte possível em grande escala. Embora haja uma abundância de recursos que você pode implementar,
recomendamos os seguintes melhorias importantes para elevar o nível do projeto atual.
Utilizando múltiplas estações de monitoramento
Neste projeto, nós desenvolvemos uma estação de monitoramento como um protótipo com uma gama de funcionalidades que é
demonstrado por um sistema de monitorização doméstica remota. Um sistema de monitoramento remoto pode ter vários números de
estações de monitoramento para cobrir várias localizações geográficas, tais como salas diferentes dentro de uma casa, ou diferentes
cubículos de escritório. Basicamente, um grande número de estações de monitoramento pode cobrir uma área extensa e proporcionar
uma vigilância eficaz do domínio que você está tentando monitor. Se você deseja estender o projeto atual com um conjunto de
estações de monitoramento, você vai exigir alguma das seguintes modificações:

Cada estação de monitoramento pode ter seu próprio centro de controle ou de um centro de controle centralizado para
todos eles, dependendo dos requisitos da aplicação. Você terá que atualizar o código Python para o centro de controle para
acomodar as alterações. Exemplos dessas mudanças incluem a modificação títulos dos tópicos para MQTT, coordenação
entre essas estações de monitoramento, atualização de modelos de dados para atualizações Xively, e assim por diante.

A conta Xively livre pode não ser capaz de lidar com as grandes quantidades de dados provenientes das estações de
monitoramento. Neste caso, você pode otimizar a taxa de atualização e / ou tamanho da carga ou atualizar sua conta
Xively para cumprir os requisitos. Você também pode recorrer a outros serviços gratuitos, como ThingSpeak, Dweet.io
e Carriots, mas você vai ter que fazer modificações substanciais à estrutura de código existente. Você também pode
atualizar o aplicativo web para lhe fornecer um menu de selecção para as estações de monitoramento ou exibir todos
eles de uma vez. Você também terá que alterar o código para produzir os modelos de dados modificados.
Estendendo as capacidades sensoriais
Em termos de sensores, que são interface única temperatura, humidade, luz ambiente, e sensores de movimento.
No entanto, a atuação é limitada à campainha e LED. Você pode implementar as seguintes alterações para
melhorar as capacidades sensoriais do projeto.

Em um cenário real, um sistema de monitoramento residencial a distância deve ser capaz de interagir com outros sensores

existentes, como o sistema de segurança, câmeras de monitoramento, sensores de geladeira, sensores de porta, e sensores de

garagem em toda a casa.

Você também pode interagir este projecto com outros aparelhos, tais como o ar condicionado,
aquecedor e alarme de segurança, o que pode ajudá Como um teste, estes componentes podem
ser interligados usando um conjunto de relês e interruptores.

Você pode atualizar os sensores de corrente na estação de monitoramento com sensores mais potentes, eficientes e
precisos. No entanto, a estação de monitoramento com os sensores atualizados podem necessitar uma versão mais
poderosa do Arduino com mais pinos de I / O e capacidades de computação.

Você também pode usar diferentes dos utilizados neste projecto na estação de monitoramento de
sensores adicionais. Há grande quantidade de sensores, DIY Arduino apoiados heterogêneos que
você pode comprar fora da prateleira. Exemplos destes sensores incluem o sensor de álcool de gás
(MQ Esses sensores podem ser simplesmente interface com o Arduino como os outros sensores que
nós conectados anteriormente. Para acomodar essas mudanças, você vai ser obrigado a mudar a
lógica centro de controle e algoritmos. Se você está a interface de um componente de terceiros, você
também pode ter de rever a arquitetura do sistema e ajustá

Da mesma forma, você também terá que executar atualizações freqüentes para Xively para o número adicional de
sensores, tornando a versão gratuita inadequada. Para resolver isso, você pode pagar pela versão comercial de uma
conta Xively ou usar um número limitado de pedidos utilizando um formato de arquivo JSON semelhante ao apresentado
no seguinte trecho de código:

{ "Versão": "1.0.0",

"fluxos de dados": [
{ "Id": "exemplo",

"CURRENT_VALUE": "333"}, { "Id":

"chave",

"CURRENT_VALUE": "Valor"}, { "Id": "fluxo

de dados",

"CURRENT_VALUE": "1337"}]}
melhorar UX
Quando projetamos a experiência do usuário para este projeto, nosso objetivo foi demonstrar a utilidade de um projeto
de UX no desenvolvimento do fluxo de software. No projeto UX atual, o centro de controle ea aplicação web tem
controle limitado e recursos para um usuário. A seguir estão algumas mudanças que você precisa implementar para
melhorar a UX do projeto:

Adicionar dicas e convenções de nomeação apropriadas para as várias descrições. Implementar um layout
adequado para diferenciar entre as várias categorias de informação. Adicionar botões para a sirene e o controle de
LED no GUI centro de controle. Na aplicação web, usar uma interface baseada em Ajax JavaScript e atualizar
automaticamente as alterações nos valores do sensor.

Fornecer um mecanismo UI de modo que o usuário pode alterar o intervalo de atualização no


centro de controle ea aplicação web. Uma vez que estas alterações são feitas, propagá
Expandindo recursos baseados em nuvem
Na configuração atual, estamos usando duas etapas para fornecer recursos baseados em nuvem e permitir o monitoramento
remoto. Temos Xively como um retransmissor de dados e Amazon AWS para hospedar o aplicativo web. Se você estiver
trabalhando em um produto de nível comercial e quer reduzir a complexidade da arquitetura, você pode implementar as
seguintes alterações:

Você pode desenvolver seus próprios dados retransmitir em sua instância de nuvem utilizando
ferramentas de código aberto, como ThingSpeak. Seu centro de controle, em seguida, comunicar

Se Xively é a sua plataforma, você também pode usar recursos adicionais, como gráficos em seu telefone inteligente, que

são fornecidos por Xively. Uma vez que seu telefone está emparelhado com Xively, você pode acessar esse recurso

diretamente.

Alternativamente, você pode usar outros serviços em nuvem como o Microsoft Azure e Google App Engine em
vez de Amazon AWS. Você também pode configurar o seu próprio servidor de nuvem, dependendo da sua
familiaridade com a computação em nuvem. Apesar de ter sua própria nuvem lhe dará o controle completo do
servidor, serviços de terceiros, como a Amazon pode ser mais rentável e requerem menos manutenção, em
comparação à auto

Se você está planejando para desenvolver um sistema de grande escala que é baseado na arquitetura atual, você pode

aumentar a capacidade de computação de sua instância de nuvem existente. Você também pode implementar um sistema de

servidor distribuído para acomodar o grande número de sistemas de monitoramento remoto que podem ser acessados ​por

um número ainda maior de usuários.


Melhorar a inteligência para o conhecimento da situação
Neste projeto, nós usamos quatro diferentes sensores para monitorar o ambiente físico - cada sensor obtém entradas do
usuário com dois tipos de actuadores para notificação. Apesar de estarmos usando uma boa quantidade de fontes de
informação, o nosso algoritmo conhecimento da situação se limita a identificar fora - de - faixa de temperatura e valores de
umidade. Você pode implementar alguns recursos avançados para tornar o sistema mais versátil e útil:

Implementar uma lógica diferente para dia e noite cenários, que podem ajudar você a evitar falsos alarmes
injustificados à noite.
Implementar um algoritmo de detecção de intrusão utilizando o sensor de movimento para quando você não está em casa.

Utilizar uma combinação de valores do sensor de luz ambiente com sensores de movimento para identificar o desperdício
de energia. Por exemplo, um cenário em que mais luz é gravado durante a noite, quando os movimentos são
significativamente baixo explica que você pode ter esquecido de desligar as luzes durante a noite.
Criação de um gabinete para os componentes de hardware
Assim como recursos baseados em software, os componentes de hardware também exigem uma grande
reformulação, se você desenvolver um produto de nível comercial. Hoje em dia, 3D impressoras tornaram Você
também pode usar serviços 3D impressão profissional, como Shapeways ( http://www.shapeways.com ), Sculpteo ( http://w
), Ou makexyz ( http://www.makexyz.com ) Para seus gabinetes. Você ainda pode usar um cortador a laser ou
outros meios de tomada de modelo para criar as caixas de hardware. Estas são algumas melhorias de hardware
que você pode implementar:

O sensor e actuadores que são montadas sobre uma placa de protótipo pode ser organizada numa PCB e
permanentemente fixo para estável e robusto operação.
Um gabinete de hardware para a estação de monitoramento pode torná Ao projetar este
recinto, você também deve considerar o posicionamento adequado do sensor de movimento
e do sensor de luz ambiente, juntamente com um botão para torná

A tela LCD Raspberry Pi e TFT, que compõem o hardware centro de controle, também pode ser incluído
em um pacote montável.
Adicionando recursos de tela sensível ao toque para a tela LCD TFT pode ativar controle adicional sobre o
sistema, ampliando os casos de uso UX.
resumo
Neste capítulo, desenvolvemos um protótipo funcional de um sistema de monitorização doméstica remota e também aprendeu o
processo de desenvolvimento de produtos de hardware simultaneamente. No projeto, utilizamos a maioria dos componentes de
hardware e ferramentas de software que usamos ao longo do livro. Começámos por projetar a arquitetura do sistema, para que
pudéssemos coordenar a utilização dessas ferramentas. Mais tarde, nós nos arriscamos as fases de desenvolvimento reais, que
incluem a concepção das unidades de hardware e desenvolvimento de programas para executar essas unidades. No final, nós
fornecemos uma lista de melhorias para tornar este protótipo em um produto comercial real. Você está convidado a utilizar esta
metodologia para desenvolver seus projetos e produtos futuros, como você já tem experiência em trabalhar com este. No último
capítulo, vamos utilizar a mesma metodologia de desenvolvimento do projeto para criar um projeto interessante que utiliza suas
mensagens a partir de um site de rede social, para dar o controle sobre o seu hardware.
Capítulo 11. Tweet
unidades de gestão de energia inteligente ou tiras são parte de alguns dos subdomínios da Internet das coisas mais populares,
casas inteligentes e redes inteligentes. Hoje em dia, as réguas de energia inteligentes estão comercialmente disponíveis e
proporcionar um grande número de recursos, como acesso remoto, uso de energia inteligente e gerenciamento de energia.
Neste projeto, vamos criar um smart power strip DIY que pode ser controlada remotamente usando mensagens de status
postados no Twitter, o popular site de mídia social ( http://www.twitter.com ). Essas mensagens também são conhecidos como tweets.
Basicamente, assim como você pode controlar sensores remotamente usando um navegador da web, você pode controlá Nós '
ve já trabalhou com baixo - sensores de potência no projeto anterior, então vamos ' s trabalho com aparelhos de AC neste
projeto. Iremos implementar os mesmos métodos de desenvolvimento de projetos que nós utilizados no projeto anterior. Este
capítulo evita explicações adicionais sobre o processo e varas só para os detalhes associados com o projeto.
Visão Geral do Projeto
Este projecto requer o desenvolvimento de um filtro de linha inteligente utilizando Arduino e Python, enquanto as entradas de

controlo para as tiras são tweets. Apesar de estarmos permitindo apenas o acesso remoto à régua de energia, há um grande

número de recursos adicionais que podem ser implementadas no futuro para elevar esse projeto DIY para um produto

comercial. As principais metas que queremos alcançar neste projecto são os seguintes:

O usuário deve ser capaz de transformar as portas de alimentação individuais e fora usando os tweets

personalizados

O usuário deve ser capaz de verificar o status das portas de energia usando o Twitter
requisitos do projeto
Aqui estão os requisitos iniciais do projeto, derivados dos objetivos:

O sistema deve ter portas de alimentação AC 110V (ou 220V) em interface com relés. unidade baseada em Arduino um
deve ser capaz de controlar estas relés, em última análise, o controlo do aparelho ligado através das portas de
alimentação.
O sistema deve ser capaz de decodificar os tweets enviados pelo usuário e convertê

O programa baseado em Python que processa os tweets deve, então, publicar estas mensagens para que
Arduino pode concluir essas ações usando os relés. Para resumir, os relés deve ser controlada de forma
quase em tempo real usando os tweets enviados pelo usuário.

O sistema também deve compreender palavras O sistema deve processar um tweet apenas
uma vez e deve ser capaz de se lembrar da última Tweet processado.

Nota

110V contra 220V AC

Dependendo do país, o fornecimento de energia AC pode ter voltagem de 110 / 120V ou 220 / 240V. Embora o esquema
de circuitos utilizados por este projeto menciona uma fonte de alimentação de 110V AC, o mesmo circuito também deve
trabalhar para uma 220V fonte de alimentação. Se você estiver usando uma fonte de 220V, confira as seguintes notas
antes de avançar:

Certifique

Você tem que garantir que os relés utilizados pelo projecto são compatíveis com o fornecimento de energia AC

Arduino funciona em uma fonte de alimentação DC, e não é afetado por qualquer variação na alimentação AC
arquitetura do sistema
A partir dos requisitos anteriores, vamos ' s esboço da arquitetura do Tweet - um - sistema PowerStrip. A arquitetura do sistema
tenta utilizar os componentes de hardware e ferramentas de software que você aprendeu nos capítulos anteriores, apesar de
terem um componente relé como o único componente excepcional. Como você pode ver na arquitetura no diagrama a seguir,
estamos empregando o relé para controlar vários eletrodomésticos. Estes aparelhos são geralmente alimentado por uma fonte de
alimentação comum de 110V AC disponível em cada casa. Em vez de controlar um único aparelho, estamos implementando um
quatro - relé canal para controle de pelo menos quatro aparelhos, como uma lâmpada, um ventilador, uma torradeira e uma
máquina de café.

O relé é controlado usando os pinos digitais da placa Arduino Uno, que utiliza o protetor Ethernet para
conectar a sua rede doméstica. A unidade de computação que pode consistir em um computador, um
Raspberry Pi, ou um servidor, usa Python e suas bibliotecas de apoio aos tweets de acesso. A unidade
de computação também implanta um corretor mosquitto. Este corretor lida com os temas do programa
de Python e Arduino para controlar os relés. O usuário pode postar tweets que contenham palavras
componentes de hardware necessários
Este projecto vai exigir os seguintes componentes de hardware em todo o desenvolvimento e as etapas de
implantação:

Componente Montante Site / nota

Arduino Uno 1 https://www.sparkfun.com/products/11021

Arduino Ethernet Shield 1 https://www.sparkfun.com/products/9026

Retransmitir (quatro canais, Arduino http://www.amazon.com/JBtek-Channel-Module-Arduino- framboesa / dp /


1
B00KTEN3TM /

http://www.powerswitchtail.com/
PowerSwitch cauda 4
Alternativa para retransmitir

régua de energia Opcional

placa de ensaio 1 Durante a fase de desenvolvimento

cabo USB para Arduino 1 Durante a fase de desenvolvimento

fonte de alimentação Arduino 1 Durante a fase de implantação

De acordo com
fita elétrica
requisitos

De acordo com
fios de ligação
requisitos

relés
Como você pode ver na imagem a seguir, estamos introduzindo um novo componente de hardware que não foi utilizada
em nenhum dos capítulos anteriores - um relé:
Este é um dispositivo eletromagnético que usa eletricidade para ser operado como um interruptor. Um relê típico contém três
contactos sobre o lado de alta potência, normalmente ligados (NC), comum
( C) e normalmente aberto (NA). O outro lado (o lado de controlo) do relê exige uma tensão de activação para activar
a ligação a partir comum - NC a comum - NO. Esta ação demonstra as funcionalidades de comutação para a
ligação no alto - side poder. Nós ' ll usar Arduino - relés compatíveis de fabricantes como Keyes ou SainSmart.
Esses relês estão disponíveis no único - ,• dois -• ou quatro - configurações de canais. Na alta - lado de energia, os
relés suportam até 250V, 10A CA ou 30V, poder 10A DC. Os relês são controlados utilizando 5V DC no baixo - lado
de alimentação, que é fornecida através dos pinos de I / O digitais da placa Arduino.

PowerSwitch cauda

Trabalhando com alimentação AC pode ser perigoso se você paraíso ' t tratados anteriormente ou se você não estiver
familiarizado com as precauções e medidas necessárias. Se você não está confortável com o trabalho com relays abertos
ou conectar a energia AC para eles, não há outro dispositivo que você pode usar para substituir o relé - a cauda
PowerSwitch, uma caixa fechada com segurança que contém opticamente isolado sólido - relés de estado e oferece uma
conveniente maneira de interagir seu aparelho AC com a placa de Arduino. O seguinte é uma imagem da cauda
PowerSwitch, que pode ser obtido a partir de seu site oficial ( http://www.powerswitchtail.com/ ):
Nota

Se você está lidando com uma fonte de alimentação de 220V / 240V, o site da PowerSwitch cauda também fornece um kit de

montagem para 200V à alimentação de tensão 240V, pelo

http://www.powerswitchtail.com/Pages/PowerSwitchTail240vackit.aspx . É realmente fácil

de montar o kit das orientações fornecidas pelo


http://www.powerswitchtail.com/Documents/PSSRTK%20Instructions.pdf . Para este projeto, você precisará
de quatro destes dispositivos para substituir o relé de quatro canais que vamos usar. Como você pode ver
no diagrama a seguir, uma extremidade da cauda vai para a porta de alimentação regular, enquanto você
precisa conectar seu aparelho para a outra porta. Enquanto isso, você pode usar as três entradas de
controle para controlar o relé. Estamos usando um dos pinos digitais I / O da placa Arduino para enviar o
sinal de controle à cauda. Ao ir em frente com as caudas em vez dos relés, certifique
fluxo de experiência do usuário
A partir da arquitetura do sistema que criamos, o que deve o experiência do usuário (UX)
fluir, enquanto trabalhava com o Tweet-a-PowerStrip ser? Nós dividimos o UX

No desenho primeiro fluxo UX, tal como apresentado no diagrama a seguir, o utilizador começa por envio de um tweet
contendo o nome do aparelho (#fan, #lamp, #toaster, ou #coffee) e o comando de controlo (ou #on # fora). O sistema deve
ser capaz de lidar com o tweet do ponto de análise até que o aparelho se comportou como pediu. O sistema também deve
fornecer um aborrecimento - livre experiência para o usuário, onde o usuário doesn ' t tem que executar quaisquer outras
acções que os tweets simplesmente enviando.

Da mesma forma, o usuário deve ser capaz de post # #check estado tweets e simplesmente obter o
relatório de status enviada de volta pelo sistema. O sistema deve lidar com a verificação do estado das
portas de alimentação, publicá
Os seguintes mostra o diagrama do UX fluem para verificar o estado do sistema:
Desenvolvimento e estágios de implantação
De acordo com a arquitetura, que exigem dois estágios de desenvolvimento principais para concluir o projeto. A primeira fase,
que interage com o aparelho através dos relés, é desenvolvida usando Arduino. Esta unidade subscreve os temas relacionados
com os aparelhos, e uma vez que ele recebe uma mensagem apropriada, ele executa a ação no nível de revezamento. Na
segunda etapa, lidamos com os tweets individuais, onde se analisam os tweets da conta de Twitter, verificar se há duplicatas,
ações de decodificação das mensagens, e também do cargo tweets com relatórios de status. Durante essas fases de
desenvolvimento, estamos indo para usar uma placa de montagem e jumper de fios para testar os programas Arduino e Python.
Nesta fase, o projeto ainda não está pronto para implantar como uma unidade portátil para uso diário.

O estágio de implantação contém funções de criação de uma PCB para as conexões tábua de pão e isolante fios para evitar
qualquer perigo eléctrico. Você também pode comprar ou criar uma caixa de gabinete para isolar o hardware aberto de contato
físico. À medida que a fase de desenvolvimento contém tudo o que é necessário para converter o projeto em seu estado a
trabalhar, não estamos indo para mergulho profundo na fase de implantação. Você pode executar as tarefas de implantação de
adição de acordo com suas necessidades pessoais.

Deixe ' s início da fase de design de hardware e desenvolver a seção física da régua de energia inteligente usando
Arduino.
Fase 1• -• uma régua de energia inteligente com
Arduino e relés
O hardware do Tweet O código Arduino implementa o cliente MQTT, usando o PubSubClient biblioteca para
publicar e subscrever os tópicos. Embora nós estamos usando alguns exemplos de aparelhos para
controlar o uso do relé, você pode selecionar qualquer outro aparelho que você possui. Você também
pode usar uma régua de energia comercial em vez de um plugue de alimentação individual.
design de hardware
Enquanto a montagem dos componentes de hardware, como mostrado no diagrama a seguir, certifique
Um fio da ficha AC está directamente ligado ao aparelho, enquanto que o outro está ligado entre as
portas de C e não do relé. Temos conectado lado controle do relé ao pino digital da nossa Arduino.
Como estamos usando um relé de quatro canais, teremos de utilizar quatro pinos de IO digitais da placa
de Arduino. Complete as conexões restantes como mostrado aqui:

Conectando a unidade de hardware é bastante simples, mas requer muita precisão porque envolve de alta
potência conexões AC.

Gorjeta

Você deve cobrir os abertos cabos de alimentação de 110V AC indo para o relé eo aparelho com fita isolante para evitar qualquer
tipo de perigo elétrico. Mantendo estes fios vivos aberto pode ser muito perigoso, devido à grande quantidade de ser corrente
transportada por eles. Na fase de implantação, uma cobertura de plástico ou uma caixa ao redor da unidade relé também pode
ser útil na cobertura dos fios de energia ao vivo.

Quando estiver pronto com as ligações, ligue a placa Arduino para o seu computador
usando uma porta USB, como mostrado na imagem a seguir:
O código Arduino
O esboço Arduino para esta seção está localizada na pasta que contém o código de capítulo com a Arduino_powers
nome do arquivo. Você pode abrir o arquivo no Arduino IDE para explorar o código. Como de costume,
você terá que alterar os endereços IP do dispositivo eo servidor mosquitto para os endereços IP
apropriados, além de alterar o endereço MAC do Escudo Ethernet. mostra o código seguinte trecho da
Declaração dos pinos do Arduino e seus papéis na função principal, configuração(). Certifique
Alternativamente, você pode alterar o nome do aparelho para que o aparelho que você está usando.
Além disso, certifique

pinMode (FAN, OUTPUT); pinMode (LAMP, OUTPUT);


pinMode (torradeira, OUTPUT); pinMode (cafeteira,
OUTPUT); fanStatus = false; lampStatus = false;
toasterStatus = false; coffeemakerStatus = false;
digitalWrite (FAN, LOW); digitalWrite (LAMP, LOW);
digitalWrite (torradeira, LOW); digitalWrite (cafeteira,
LOW);

No configuração() função, o código também subscreve os canais MQTT apropriadas para que ele possa receber mensagens
do corretor mosquitto assim que eles estiverem disponíveis. Como você pode ver, também estamos assinando o PowerStrip
/ StatusCheck canalizar para lidar com o relatório de status:

if (client.connect ( "PowerStrip")) {
client.subscribe ( "PowerStrip / ventilador"); client.subscribe ( "PowerStrip /
lâmpada"); client.subscribe ( "PowerStrip / torradeira"); client.subscribe (
"PowerStrip / cafeteira"); client.subscribe ( "PowerStrip / StatusCheck"); }

No ligue de volta() função, usamos o E se declaração para coincidir com o tema com o apropriado digitalWrite () açao.
Como você pode ver, estamos a criar ALTO e BAIXO
estados para o pino digital quando o programa recebe em e fora mensagens, respectivamente (para esse aparelho).
Com esta ação, também estamos mudando o estado da variável booleana associada com o aparelho, que será
útil para recuperar o status da porta. O mesmo processo é repetido para todos os aparelhos:

if (Tópicos == "PowerStrip / ventilador") {


if (payloadS.equalsIgnoreCase ( "on")) {
digitalWrite (FAN, ALTA); fanStatus = true;
}
if (payloadS.equalsIgnoreCase ( "off")) {
digitalWrite (FAN, LOW); fanStatus =
false; }}

Quando o sistema recebe uma obter mensagem que está associado com a verificação de status, o programa cria
uma mensagem utilizando as variáveis ​booleanas que alternado antes. O programa, em seguida, publica o
status para o PowerStrip / statusreport canal:

if (topicS.equals ( "PowerStrip / StatusCheck")) {


if (payloadS.equalsIgnoreCase ( "get")) {
relatório String = "";
if (fanStatus) relatório + = "Fan: on,"; outra relatório + = "Fan:
off,";

if (lampStatus) relatório + = "Lâmpada: on,"; outra relatório + =


"Lâmpada: off,";

if (toasterStatus) relatório + = "Torradeira: on,"; outra relatório + =


"Torradeira: off,";

if (coffeemakerStatus) relatório + = "Cafeteira: on"; relatório outra + = "Cafeteira: off";

report.toCharArray (reportChar, 100);


client.publish ( "PowerStrip / statusreport", reportChar); }}

Assim como fizemos no projeto anterior, você pode configurar o código para enviar periodicamente mantenha vivo mensagens
para evitar o encerramento da conexão com o corretor mosquitto. Quando estiver pronto com o código, conecte o
cabo Ethernet, compilar o código, e, em seguida, enviá Seu Arduino deve estar no modo de receber agora, e vai
esperar a mensagem dos canais subscritos. Como discutimos no anterior do projeto, você precisa garantir que o
seu corretor mosquitto está sendo executado no endereço IP do servidor que especificou no código Arduino.
Fase 2• -• o código Python a tweets de processo

À medida que o usuário está interagindo com o sistema no nível do aplicativo Twitter, que não requerem uma computação
móveis ou unidade de controle para este projeto. Devido a isso, podemos apenas usar qualquer computador capaz de acolher
Python e mosquitto como a unidade de computação. Você ainda precisa garantir que a unidade está sempre ligado e
conectado à Internet, caso contrário, o sistema não trabalho vai como o esperado. Para simplificar, você pode implantar o
sistema no Raspberry - Pi - centro de controle baseado que você desenvolveu no projeto anterior, ou até mesmo no servidor
Amazon AWS. Para a fase de desenvolvimento, vamos ' s começar com o computador regular que você tem usado o tempo
todo. Estamos assumindo que este computador tem o corretor mosquitto instalado e em execução. Anote o endereço IP desta
unidade, como você vai precisar dele no código Arduino que você desenvolveu na seção anterior.
fluxo de software Python
As ofertas de código Python com dois serviços durante a execução, o Twitter API para obter ou os
tweets post e o corretor mosquitto para retransmitir mensagens para a unidade de hardware. O
programa começa por analisar a mais recente tweet da conta do usuário e verificar se ele foi utilizado na
ação anterior ou não. Isso evita a duplicação de comando, como a frequência de novos tweets é
significativamente menor do que a frequência do circuito programa. Uma vez que os achados de código
de um novo tweet com as palavras Se o tweet contém uma mensagem para verificar o estado, o código
solicita o status do seu Arduino e mensagens um novo tweet com o status após recebê O diagrama a
seguir mostra o fluxo de programa detalhado da unidade de computação:

Você pode alterar o fluxo do programa para acomodar qualquer outro recurso que você deseja adicionar ao nível Python.
A lógica por trás da identificação e alternando o aparelho pode ser improvisado para acomodar tweet do texto mais
complexo.
Configurando o aplicativo Twitter
Estamos assumindo que você tem uma conta no Twitter até agora. Se você don ' t, você pode criar uma nova conta apenas
para este projeto para mudanças evitar o seu próprio perfil. Com a introdução das mais recentes APIs, Twitter requer que
você autenticar usando OAuth antes de acessar qualquer informação da sua conta. Para fazer isso, você terá que criar um
aplicativo Twitter utilizando a sua conta. Execute os seguintes passos para criar um novo aplicativo Twitter para este projeto:

1. Faça login na sua conta do Twitter e abra a https://apps.twitter.com endereço na sua


web browser.
2. Clique no Criar Novo App Ícone na página, e você será direcionado para uma página
pedindo para seus detalhes do aplicativo, como mostrado na imagem seguinte:

3. Preencha todos os detalhes obrigatórios (marcados com asteriscos vermelhos) e continuar para a próxima página. Verifique
se o seu nome do aplicativo é único, como Twitter pede um nome de aplicativo exclusivo.

4. Uma vez que o aplicativo é criado, você pode clicar no chaves de API guia e encontrar o
Chave do consumidor ( Chave API) e segredo do consumidor ( segredo API) para a sua aplicação. Salvar essas informações em

um local seguro, como você vai precisar deles para autenticar com a API do Twitter.
5. Como o UX do projeto Tweet Vou ao

permissões guia, selecione o Leia e escreva opção, e guardá

6. Uma vez que você é feito com a criação das permissões para o aplicativo, volte para a guia chaves de API e clique
no Criar acesso token ícone para gerar um novo token de acesso para esta aplicação. Depois de um tempo, você
deve ser capaz de ver o token de acesso na mesma página, como mostrado neste screenshot:
7. Salve o token de acesso e segredo token de acesso em formação. Sua aplicação é agora
pronto para uso e pode ajudá

Agora vamos ' s passar para o código Python.


O código Python
Antes de saltar para o código, que são obrigados a instalar a biblioteca Twitter para Python. Use as Setuptools
ou pip para instalar a biblioteca usando o seguinte comando. Estamos supondo que você já tem a última paho_mqtt biblioteca
instalada em seu computador:

$ Pip sudo instalar o python-twitter

O código Python para esta seção está localizada na pasta de código com o
PythonTweetAPowerStrip.py nome do arquivo. Abra o código em seu IDE e começar a explorar isso. O código contém dois
threads paralelas para lidar com os tweets e biblioteca mosquitto separadamente.

Como você pode ver no seguinte trecho de código, estamos usando o Api classe do pythontwitter biblioteca para estabelecer
uma conexão com a API do Twitter. Estamos usando o Chave do consumidor, consumidor secreto, acessar a chave simbólica, e Acesso
segredo do token os valores para essa autenticação. Uma vez que a autenticação é estabelecida, o Api classe pode ser usada
para obter o status mais recente da linha do tempo usando o GetHomeTimeline () chamada de função, e para deixar o novo
status usando o PostUpdate () chamada de função. o GetHomeTimeline () função dá uma gama de estados de utilizador;
precisamos do estado mais recente, que pode ser buscada usando

estados [0] ( o primeiro elemento do array):

api = twitter.Api (CONSUMER_KEY = '<consumidor - chave>',


CONSUMER_SECRET = '<consumidor - segredo>', access_token_key =
'<access - símbolo - chave>', access_token_secret = 'acesso - símbolo -
segredo>')

Uma vez que tenhamos recuperado o mais recente tweet, precisamos ter certeza de que nós haven ' t usado esse tweet já. Então, nós

salvar o mais recente Tweet ID em uma variável global, bem como em um arquivo no caso de precisarmos para executar o código

novamente:

com aberto ( 'lastTweetID.txt', 'w +') como fh:


lastTweetId = fh.readline ()
print "Inicializar com ID:" + lastTweetId

Nós recuperar o ID do seu tweet anterior do lastTweetID.txt arquivo para coincidir com o último ID. Se ele doesn ' jogo t,
nós atualizamos o lastTweetID.txt arquivo com a mais recente ID para o próximo ciclo:

se lastTweetId = str (currentStatus.id!):


lastTweetId = str (currentStatus.id) print "Arquivo atualizado com ID:" +
lastTweetId com open ( 'lastTweetID.txt', 'w +') como fh:

fh.write (lastTweetId)
currentStatusText = currentStatus.text currentStatusText impressão

Uma vez que tenhamos identificado o mais recente Tweet único, usamos a operação seqüência de
Python para decodificar as palavras Como você pode ver no seguinte trecho de código, a palavra ventilador.
Uma vez que nós identificamos que a mensagem é direcionada para o fã, que verificar se há
palavras em e # fora, e depois tome a ação associada de publicar a mensagem para o corretor mosquitto.
Repetimos essa ação para todos os aparelhos conectados ao sistema. Seu Arduino toma uma ação
usando a mensagem publicada, e completa o fluxo UX para os aparelhos controlados:

se "#fan" em currentStatusText.lower ():


se "#on" em currentStatusText.lower ():
cli.publish ( "PowerStrip / ventilador", "on")
se "#off" em currentStatusText.lower ():
cli.publish ( "PowerStrip / ventilador", "off")

Da mesma forma, quando o código recebe uma atualização do PowerStrip / statusreport tópico, ele obtém o
status da carga da mensagem e mensagens Isso completa o fluxo UX para a verificação de status
usando o Twitter:

def onMessage (mosq, obj, msg):


se msg.topic == "PowerStrip / statusreport":
msg.payload impressão
api.PostUpdate (msg.payload)
Testes e solução de problemas
O teste pode simplesmente ser realizada por postar o # #on fã status para o Twitter conta usada neste projeto.
Você deve ser capaz de ver o ventilador ligar usando o comando mostrado aqui:

Da mesma forma, enviar o # #off fã status para desligar o ventilador. Você pode encontrar algum atraso, como o laço usado para recuperar os

tweets é definido com um atraso de um minuto.

Para acessar o status do sistema, postar o # #get estado status para a conta, e você será capaz de ver o status do
sistema postados automaticamente pela unidade de computação.

O Piu mostrado na imagem seguinte é gerada utilizando a unidade Tweet Ele exibe o status de todos
os aparelhos conectados.

Ao trabalhar com o sistema, você vai querer quer evitar os seguintes cenários ou solucioná

'Limite de taxa Twitter exceder' erro: Twitter impõe um limite no número de solicitações que você pode fazer a
sua API pública. Se você está solicitando a API muitas vezes
(Isso geralmente ocorre quando você reduz o tempo de sono entre as consultas consecutivas), sua
aplicação vai sair com uma exceção. Para evitar isso, defina um tempo de sono mais longo no circuito
programa Python antes de solicitar a API novamente. Há um trade Você pode aprender sobre esta
limitação no http://dev.twitter.com/rest/public/rate-limiting e ajustar o intervalo de solicitação nesse
sentido. Depois de ter recebido esse erro, você terá que esperar por algum tempo (aproximadamente
10 a 15 minutos) antes de fazer pedidos para o Twitter API novamente.

'Read Este erro só ocorrerá se você se esqueceu de alterar as permissões em seu aplicativo para Leia
e escreva a partir de Somente leitura. Certifique Além disso, Twitter leva algum tempo para que as
alterações tenham efeito.
Estendendo o projeto com recursos adicionais

O sistema atual pode ser expandido para incluir vários recursos:

Você pode começar a poupar o tempo de duração em que um aparelho especial foi ligado ou desligado, e, em seguida,
fornecer uma análise detalhada para o usuário. Você também pode usar esta informação para calcular o ser energia gasta
por estes aparelhos.
É possível utilizar os sensores de medição de corrente para calcular a carga de energia em cada
porto. Combinando Você pode usar o relógio do sistema com o sensor de movimento para ligar
de forma inteligente, desligue o aparelho durante as noites e os períodos de inatividade.

O projeto Tweet

Uma das modificações que você pode facilmente implementar é utilizar Twitter ' Mensagens Particulares s em vez de seus
tweets para controlar os aparelhos. Isto irá aumentar as permissões de acesso do seu sistema para outras contas do
Twitter confiáveis. Por razões de segurança, você deve apertar o nível de acesso e as pessoas só deixe aprovados postar
essas mensagens para a sua conta.
resumo
Agora você concluiu com êxito dois projetos da Internet das coisas diferentes, utilizando apenas duas
tecnologias de base, Arduino e Python. Com o projeto atual, é óbvio que é muito fácil de interface qualquer
outra tecnologia, ferramenta ou API com Arduino e Python. A metodologia de desenvolvimento do projeto
foram utilizados nestes dois projetos também irá ajudá prototipagem feliz! E feliz codificação!
Índice
UMA
plataforma Amazon AWS
sobre / Familiarize-se com a plataforma Amazon AWS
URL / Familiarize-se com a plataforma Amazon AWS
conta, instalação / A criação de uma conta no AWS
campainha analógico digital

URL / Campainha• -• gerando som padrão de alarme


arquitetura, aplicações web da Internet das coisas

sobre / Arquitetura de aplicações web da Internet das coisas

camada física / Arquitetura de aplicações web da Internet das coisas

camada de computação / Arquitetura de aplicações web da Internet das coisas

camada de interface / Arquitetura de aplicações web da Internet das coisas

Arduino
sobre / Introdução ao Arduino
história / História
Objetivos / Por Arduino?
variantes / variantes Arduino
placa Uno / A placa Arduino Uno
URL, para instalação em Linux / Linux
interface, com o Python / prototipagem
redes de computadores / Arduino e redes de computadores
Arduino, a interface com Xively
sobre / Interface Arduino com Xively
Arduino dados, o carregamento / Upload Arduino dados para Xively
dados, download para o Arduino / Transferência de dados para Arduino de Xively
código avançado, para o upload de dados e download / código avançado para upload e download de dados
usando Arduino
placa Arduino
esboço StandardFirmata, upload / Upload de um esboço Firmata à placa Arduino

configurar, métodos pyFirmata usado / Configurando a placa Arduino


conexão placa Arduino
estabelecendo / Ligar a placa Arduino
estabelecer, em Linux / Linux
estabelecer, no Mac OS X / Mac OS X
estabelecer, no Windows / janelas
solução de problemas / Solução de problemas

Arduino código, Tweet O código Arduino


dados Arduino
armazenar, em arquivo CSV / O armazenamento de dados do Arduino em um arquivo CSV

plotagem, a partir do arquivo CSV / Plotagem dados de um arquivo CSV


biblioteca Arduino Ethernet
sobre / biblioteca Arduino Ethernet
URL / biblioteca Arduino Ethernet
classe Ethernet / A classe Ethernet
classe IPAddress / A classe IPAddress
classe Server / A classe de servidor
classe do cliente / A classe Cliente
Arduino Ethernet Shield
sobre / Arduino Ethernet Shield
URL / Arduino Ethernet Shield
Arduino IDE
sobre / variantes Arduino , Introdução ao Arduino IDE
instalação / Instalação do Arduino IDE
instalar, em Linux / Linux
URL, para instalação no Ubuntu / Linux
URL, para instalação no Fedora / Linux
a instalação, no Mac OS X / Mac OS X
instalar, em Windows / janelas
URL, para o arquivo de configuração / janelas

esboço / O que é um esboço Arduino?


bibliotecas / Trabalhando com bibliotecas

exemplos, usando / Utilizando exemplos Arduino


URL, para built-in exemplos / Utilizando exemplos Arduino
esboço, compilando / Compilando e upload de esboços
esboço, carregamento / Compilando e upload de esboços
Monitor de série, usando / Usando a janela Monitor de série
interrupções Arduino
sobre / Usando interrupções Arduino
usando / Usando interrupções Arduino
ligação de referência / Usando interrupções Arduino

pinos do Arduino

Configurando / Configurando pinos do Arduino


a configuração, com o método directo / O método directo
modos de pino, atribuindo / Atribuindo modos pin
trabalhando com / Trabalhando com pinos

de dados, relatórios / Os dados de relatório

monitoramento / operações manuais


método write (), usando / O () método de gravação
ler () método, usando / O () método de leitura
programação Arduino
sobre / Introdução à programação Arduino
comentários / Comentários
variáveis ​/ variáveis
constantes / constantes
tipos de dados / Tipos de dados

funções de conversão / conversões


afirmações / Funções e instruções
funções / Funções e instruções
Arduino esboço, a estação de monitorização

sobre / O esboço Arduino para a estação de monitorização


sensor de informação, a publicação / A publicação de informações do sensor

actuador acções, assinando / Subscrever às acções do actuador


interrupção, programação / Programação uma interrupção para lidar com o pressionar de um botão

Escudo WiFi Arduino


sobre / Escudo WiFi Arduino
URL / Escudo WiFi Arduino
Arduino Yun
sobre / Arduino Yun
URL / Arduino Yun
tipo de dados de matriz

sobre / Tipos de dados


B
BH1750 sensor de luz
interface, Arduino utilizado / Arduino que codifica para o sensor de luz BH1750
interface, biblioteca PyMata usado / Interface BH1750 usando PyMata
Tipo de dados booleano

sobre / Tipos de dados

placa de ensaio

usando / Trabalhando com a placa de ensaio

URL / Trabalhando com a placa de ensaio


história / Trabalhando com a placa de ensaio
ligação de referência / Trabalhando com a placa de ensaio

corretor
sobre / MQTT• -• Um protocolo de mensagens leve
embutida funções
sobre / Built
métodos de conversão / conversões
operações matemáticas / operações matemáticas

operações de cadeia / operações de cadeia

URL / operações de cadeia


built-in tipos
sobre / operadores Python e built-in tipos , Built-in tipos
estruturas de dados / Estruturas de dados

Button () Widget
sobre / Aprendizagem Tkinter para o projeto GUI , O botão () Widget• -• interface GUI com Arduino e
LEDs
usando / O botão () Widget• -• interface GUI com Arduino e LEDs
cigarra
usando / Campainha• -• gerando som padrão de alarme
conexões / ligações
código Python / O código Python
tipo de dados de bytes

sobre / Tipos de dados


C
ligue de volta

sobre / A etiqueta () widget de• -• monitoramento I O pins /


Carriots
sobre / Carriots
tipo de dados char

sobre / Tipos de dados

Caixa de seleção () Widget

sobre / Aprendizagem Tkinter para o projeto GUI


CheckButton () Widget
sobre / O CheckButton () Widget• -• seleção de LEDs
utilizado, para a selecção de LEDs / O CheckButton () Widget• -• seleção de LEDs
classe do cliente

sobre / A classe Cliente


close () Método
usado, para fechar arquivo / O () Método perto
comentários
sobre / Comentários
bloco de comentário / Comentários

- Comentários
redes de computadores
sobre / Arduino e redes de computadores
endereço IP, obtendo / Obtendo o endereço IP do seu computador
extensões de rede, para Arduino / Networking extensões para o Arduino
Arduino biblioteca Ethernet / biblioteca Arduino Ethernet
servidor web, prédio com Arduino / Exercício 1• -• um servidor web, o seu primeiro programa de rede
Arduino
constantes
sobre / constantes
centro de controle, sistema de monitorização doméstica remota

sobre / Fase 2• -• um centro de controle usando Python e o Raspberry Pi


arquitetura / A arquitetura do centro de controle
código Python / O código Python para o centro de controle
GUI, criando com Tkinter / Criando a GUI usando Tkinter
Mosquitto corretor, comunicando-se com / Comunicando-se com o corretor mosquitto

status do sistema, calculando / Cálculo do sistema ' é consciência status e situação

Xively, comunicando-se com / Comunicando-se com Xively


estatuto buzzer, verificação / Verificar e atualizar a campainha ' status de s
estatuto buzzer, atualização / Verificar e atualizar a campainha ' status de s
testar, com monitorização estação / Testando o centro de controle com a estação de monitoramento
criação, em Raspberry Pi / Configurando o centro de controle sobre o Raspberry Pi
funções de conversão
Caracteres() / conversões

byte () / conversões
int () / conversões
flutuar () / conversões
sobre / conversões
arquivo CSV

sobre / Uso de arquivos CSV para armazenar dados

utilizado, para o armazenamento de dados / Uso de arquivos CSV para armazenar dados

Arduino dados, armazenar / O armazenamento de dados do Arduino em um arquivo CSV

dados, traçando / Plotagem dados de um arquivo CSV

plataforma de nuvem costume, a Internet das coisas

Configurando / Sua própria plataforma de nuvem para a Internet das coisas

Amazon AWS plataforma / Familiarize-se com a plataforma Amazon AWS


sistemas virtuais Arquitetura de aplicações web da Internet das coisas
D
estruturas de dados

sobre / Estruturas de dados


Lista / listas
tuplas / tuples
conjuntos / sets

dicionários / dicionários
URL / dicionários
tipos de dados

sobre / Tipos de dados

vazio / Tipos de dados

boleano / Tipos de dados

byte / Tipos de dados

int / Tipos de dados

flutuar / Tipos de dados

Caracteres / Tipos de dados

matriz / Tipos de dados

motores DC
usando / Motor DC• -• controlando a velocidade do motor usando PWM

conexões / ligações
código Python / O código Python
fase de implantação, Tweet
sobre / Desenvolvimento e estágios de implantação
methology design, projectos da Internet das coisas

sobre / A metodologia de projeto para projetos da Internet das coisas

fase de desenvolvimento, Tweet-a-PowerStrip


sobre / Desenvolvimento e estágios de implantação
estágios de desenvolvimento, sistema de monitorização doméstica remota

definindo / Definindo as fases de desenvolvimento do projeto


do-it-yourself projectos (DIY)
sobre / Introdução ao Arduino
Dual in-line Package (DIP)
sobre / Trabalhando com a placa de ensaio
Protocolo de Controlo de DHCP (Dynamic Host)
sobre / A classe Ethernet
E
serviço EC2
sobre / Familiarize-se com a plataforma Amazon AWS
componentes eletrônicos
interface, com Arduino / prototipagem
Fim de Linha (EOL)
sobre / Jogando com um exemplo pyserial
Entry () Widget
sobre / Aprendizagem Tkinter para o projeto GUI , A entrada () Widget• -• fornecendo entradas do usuário manuais

utilizada, para fornecer entradas de utilizador manuais / A entrada () Widget• -• fornecendo entradas do usuário manuais

classe Ethernet
sobre / A classe Ethernet
arquivo ez_setup.py

URL, para download / janelas , Mac OS X


F
Fedora / Red Hat Linux
Python, a instalação / Fedora e Red Hat
arquivos de trabalho com / Trabalhando com arquivos em Python

a manipulação, com o método aberto () / A) Método (aberta


método write (), usando / O () método de gravação
de fecho, perto () método utilizado / O () Método perto
ler () método, usando / O () método de leitura
com a declaração, usando / O com a afirmação• -• gerente de contexto Python
Firmata
sobre / Introduzindo o protocolo Firmata
URL / O que é Firmata? , Testando o protocolo Firmata
StandardFirmata esboço, upload para placa Arduino / Upload de um esboço Firmata à placa
Arduino
teste / Testando o protocolo Firmata
e biblioteca pyserial, ponte / Bridging pyserial e Firmata
bibliotecas Firmata
desvantagens / comandos úteis pyserial
Tipo de dados flutuador

sobre / Tipos de dados

ferramenta de formatação, cartão SD

URL, para download / Preparar um cartão SD


para declaração

sobre / O comando for


Fritzing
sobre / Testando o protocolo Firmata
usando / Apresentando Fritzing• -• um software de hardware prototipagem
URL / Apresentando Fritzing• -• um software de hardware prototipagem
funções
sobre / Funções e instruções
configuração () / função A função de configuração ()

ciclo () / função A função loop ()


pinMode () / função A função pinMode ()
funções, pinos
digitalWrite () / função Trabalhando com pinos
digitalRead () / função Trabalhando com pinos
analogRead () / função Trabalhando com pinos
função analogWrite () / Trabalhando com pinos
G
entrada de uso geral / saída (GPIO) pinos
sobre / design de hardware
interfaces gráficas de utilizador (GUI)
sobre / Por que usar Python
Grade sobre / O gerente geometria pacote

gerenciador de geometria grade

sobre / O gerente geometria grade


GUI, termostato
concepção / Projetando a GUI e trama em Python
PySerial, usada para transmissão de dados do sensor / Usando pyserial para transmitir dados dos sensores em seu

programa Python

concepção, Tkinter usado / Projetando a GUI usando Tkinter


percentagem de humidade, traçando com matplotlib / Traçando percentagem de humidade usando matplotlib

interrupções de botão, usando / Usando interrupções botão para controlar os parâmetros


interrupções de botão, usada para modificar a unidade de temperatura / Alterando a temperatura unidade, premindo um
botão
interrupções de botões, usados ​para trocar entre GUI e enredo / Alternar entre o GUI eo enredo
pressionando um botão
H
componentes de hardware, Raspberry Pi
Raspberry Pi / O que você precisa para começar a usar o Raspberry Pi?
cabo de energia / O que você precisa para começar a usar o Raspberry Pi?
cabo de vídeo / O que você precisa para começar a usar o Raspberry Pi?
Cartão SD / O que você precisa para começar a usar o Raspberry Pi?
rato / O que você precisa para começar a usar o Raspberry Pi?
teclado / O que você precisa para começar a usar o Raspberry Pi?
concentrador USB (opcional) / O que você precisa para começar a usar o Raspberry Pi?
componentes de hardware, sistema de monitorização doméstica remota

sobre / A lista de componentes necessários


componentes de hardware, Tweet-a-PowerStrip
sobre / componentes de hardware necessários
relés / relés
PowerSwitch cauda / PowerSwitch cauda
design de hardware, a Internet das coisas

sobre / design de hardware , As plataformas de Internet das coisas nuvem

design de hardware, Tweet-a-PowerStrip


sobre / design de hardware
design de sistema de hardware, LEDs disparada por movimento

Fritzing, usando / Apresentando Fritzing• -• um software de hardware prototipagem


placa de ensaio, usando / Trabalhando com a placa de ensaio

protótipo de hardware, design / Projetando o protótipo de hardware


função de ajuda ()

sobre / Traçando números aleatórios utilizando matplotlib


HIH-4030 sensor de humidade
usando / A lista de componentes necessários
rede de área local (HAN)
sobre / fundamentos de rede
homebrew
URL, / Mac OS X
instalação / Mac OS X
Eu
protocolo I2C
ligação de referência / Prototipagem com o protocolo I2C
if
sobre / A instrução if
de entrada / saída (E / S) dos pinos

sobre / variantes Arduino


instalação, IDE Arduino
em Linux / Linux
no Mac OS X / Mac OS X
no Windows / janelas
instalação, biblioteca paho Instalando paho-MQTT
instalação, pip
sobre / Instalando pip
instalação, biblioteca PubSubClient / A instalação da biblioteca PubSubClient
instalação, biblioteca pyserial
sobre / Instalando pyserial
instalação, Python
sobre / Instalando Python e Setuptools
em Linux / Linux
no Ubuntu / Ubuntu
no Fedora / Red Hat Linux / Fedora e Red Hat
no Windows / janelas
no Mac OS X / Mac OS X
de instalação, pacotes Python
sobre / Instalando pacotes Python
instalação, Setuptools
sobre / Instalando Setuptools
em Linux / Linux
no Windows / janelas
no Mac OS X / Mac OS X
instalação, web.py
sobre / Instalando web.py
Tipo de dados int

sobre / Tipos de dados

circuito integrado (IC)


sobre / Prototipagem com o protocolo I2C
ambiente de desenvolvimento integrado (IDE)
sobre / Instalação do Arduino IDE
ambiente de desenvolvimento integrado (IDLE)
sobre / Os fundamentos da programação Python
Internet of Things (Internet das coisas) aplicações

sobre / Por que usar Python


Protocolo de Internet (IP)
sobre / fundamentos de rede
Internet das coisas ficando processo iniciado / Começando com a Internet das coisas

design de hardware / design de hardware , As plataformas de Internet das coisas nuvem

aplicações em nuvem, em desenvolvimento com Python e Xively / Desenvolvimento de aplicações de nuvem


usando Python e Xively
plataforma de nuvem custom / Sua própria plataforma de nuvem para a Internet das coisas

plataforma de Internet das coisas nuvem, na instância EC2

criar / Criação de uma plataforma Internet das coisas na instância EC2

pacotes necessários, instalando em AWS / Instalar os pacotes necessários no AWS

segurança instância virtual, configurando / Configurando a segurança da instância virtual

teste / Testando a plataforma de nuvem


serviço mosquitto, testando / Testando o serviço mosquitto
segurança básica, configurando / Configuração e teste de segurança básica
segurança básica, os testes / Configuração e teste de segurança básica
projeto, carregar na instância / Upload e testar um projeto na instância
projecto, a testar no exemplo / Upload e testar um projeto na instância
plataformas em nuvem da Internet das coisas

Xively / As plataformas de Internet das coisas nuvem , Xively• -• uma plataforma de nuvem para a Internet das coisas

2lemetry / As plataformas de Internet das coisas nuvem

Carriots / As plataformas de Internet das coisas nuvem , Carriots

ThingSpeak / As plataformas de Internet das coisas nuvem , ThingSpeak

projetos da Internet das coisas

metodologia de projeto / A metodologia de projeto para projetos da Internet das coisas

aplicações web da Internet das coisas

arquitetura / Arquitetura de aplicações web da Internet das coisas

endereço de IP

sobre / fundamentos de rede


obtenção / Obtendo o endereço IP do seu computador
obtenção, para Windows / janelas
obtenção, para Mac OS X / Mac OS X
obtenção, para Linux / Linux
classe IPAddress
sobre / A classe IPAddress
eu
Etiqueta () Widget

sobre / Aprendizagem Tkinter para o projeto GUI , A etiqueta () Widget , A etiqueta () widget de• -•
monitoramento I O pins /
utilizado, para a monitorização de E / S dos pinos / A etiqueta () widget de• -• monitoramento I O pins /

bit menos significativo (LSB)


sobre / Arduino que codifica para o sensor de temperatura TMP102
LEDbrightness, controlando com PWM / LED• -• controlar o brilho de LED usando

PWM
conexões / ligações
código Python / O código Python
bibliotecas, Arduino IDE
sobre / Trabalhando com bibliotecas
URL / Trabalhando com bibliotecas
alimentação de linha + Return (LF + CR)
sobre / Jogando com um exemplo pyserial
LinuxPython, instalação / Linux

Setuptools, instalação / Linux


Arduino IDE, a instalação / Linux
Arduino conexão bordo, estabelecendo / Linux
endereço IP, obtendo / Linux
Listbox () Widget
sobre / O CheckButton () Widget• -• seleção de LEDs
URL / O CheckButton () Widget• -• seleção de LEDs
rede de área local (LAN)
sobre / fundamentos de rede
endereço localhost IP
sobre / fundamentos de rede
função loop ()
sobre / A função loop ()
usando / A função loop ()
M
Mac OS X
Python, a instalação / Mac OS X
Setuptools, instalação / Mac OS X
Arduino IDE, a instalação / Mac OS X
Arduino conexão bordo, estabelecendo / Mac OS X
matplotlib, configurando / Configurando matplotlib no Mac OS X
cartão SD, preparando Preparar um cartão SD
endereço IP, obtendo / Mac OS X
matplotlib
sobre / Começando com matplotlib
URL / Começando com matplotlib , Configurando matplotlib no Windows
configurando, no Windows / Configurando matplotlib no Windows
configurando, no Mac OS X / Configurando matplotlib no Mac OS X
modernização / matplotlib Upgrading
erros de instalação, solução de problemas / Resolução de problemas erros de instalação

ligação de referência / Resolução de problemas erros de instalação

a criação, no Ubuntu / Configurando matplotlib no Ubuntu


utilizado, para traçar números aleatórios / Traçando números aleatórios utilizando matplotlib
controlo de acesso ao meio (MAC)
sobre / fundamentos de rede
monitoramento estação, sistema de monitorização doméstica remota

definindo / Fase 1• -• uma estação de monitoramento usando Arduino , Projetando a estação de

monitoramento

Arduino esboço / O esboço Arduino para a estação de monitorização


mosquitto
sobre / Mosquitto• -• um MQTT corretor open source
URL / Mosquitto• -• um MQTT corretor open source
configurando / Configurando mosquitto
inicialização / Familiarize-se com mosquitto
o bit mais significativo (MSB)
sobre / Arduino que codifica para o sensor de temperatura TMP102
LEDs disparada por movimento

desenvolvimento / Movimento - desencadeada LEDs• -• a descrição do projeto

objetivos do projeto / O objetivo do projeto

exemplos / O objetivo do projeto


recursos online / O objetivo do projeto
software de design de fluxo / O design de fluxo de software

projeto de sistema de hardware / O projeto do sistema de hardware

conexões de hardware, teste / conexões de hardware de teste


LEDs disparada por movimento, componentes

PIR sensores / A lista de componentes


LEDs / A lista de componentes
fios / A lista de componentes
resistores / A lista de componentes
placa de ensaio / A lista de componentes
placa Arduino / A lista de componentes
Cabo USB / A lista de componentes
computador / A lista de componentes
LEDs disparada por movimento, usando esboço Arduino

desenvolvimento / Método 1• -• usando um autônomo esboço Arduino


configuração do projeto / A configuração do projeto

codificação / O esboço Arduino


função de configuração (), usando / A função de configuração ()

função loop (), usando / A função loop ()


funções costume Arduino, usando / Trabalhando com personalizados funções Arduino
teste / prova
solução de problemas / Solução de problemas

LEDs disparada por movimento, usando Python e Firmata


desenvolvimento / Método 2• -• utilizando Python e Firmata
configuração do projeto / A configuração do projeto

arquivos executáveis ​Python, usando / Trabalhando com arquivos executáveis ​em Python

codificação / O código Python


métodos pyFirmata, usando / Trabalhando com métodos pyFirmata
funções do Python, usando / Trabalhando com funções Python
teste / prova
solução de problemas / Solução de problemas

MQTT
sobre / MQTT• -• Um protocolo de mensagens leve
URL / Introdução ao MQTT
mosquitto / Mosquitto• -• um MQTT corretor open source
MQTT, em Arduino
biblioteca PubSubClient, usando / MQTT em Arduino usando a biblioteca PubSubClient
Arduino cliente MQTT, desenvolvimento / Desenvolver o cliente Arduino MQTT
MQTT, em Python
biblioteca paho-MQTT, usando / MQTT em Python utilizando paho-MQTT , Usando o MQTT OPAS biblioteca Python

MQTT gateway
desenvolvimento, por Arduino / Exercício 4• -• MQTT gateway para Arduino
Arduino em desenvolvimento, como o cliente MQTT / Desenvolvimento Arduino como o cliente MQTT

desenvolvimento, mosquitto usado / Desenvolver a MQTT Gateway usando mosquitto


estendendo-se, web.py usado / Estendendo o MQTT Gateway usando web.py
teste / Testando a mosquitto gateway
N
Nest Thermostat
URL / Termostato• -• a descrição do projeto
networking
fundamentos / fundamentos de rede
rede de área local (LAN) / fundamentos de rede
rede de área local (HAN) / fundamentos de rede
rede de área larga (WAN) / fundamentos de rede
protocolos / fundamentos de rede
controlo de acesso ao meio (MAC) / fundamentos de rede
Protocolo de Internet (IP) / fundamentos de rede
Endereço de IP / fundamentos de rede
endereço localhost IP / fundamentos de rede
extensões de rede, para Arduino
sobre / Networking extensões para o Arduino
Arduino Ethernet Shield / Arduino Ethernet Shield
Arduino Escudo WiFi / Escudo WiFi Arduino
Arduino Yun / Arduino Yun
caractere de nova linha

sobre / Jogando com um exemplo pyserial


URL / Jogando com um exemplo pyserial
New Out Of Box Software (NOOBS)
sobre / Preparar um cartão SD
pacote NumPy
URL / Configurando matplotlib no Windows
O
) Método (aberta
usado, para manipular arquivos / A) Método (aberta
modos / A) Método (aberta
operadores

sobre / operadores Python e built-in tipos , operadores


P
gerenciador de geometria pacote

sobre / O gerente geometria pacote


biblioteca paho-MQTT

sobre / MQTT em Python utilizando paho-MQTT


instalação / Instalando paho-MQTT
usando / Usando a OPAS-MQTT biblioteca Python
infravermelhos passivos (PIR) do sensor

sobre / O objetivo do projeto


usando / A lista de componentes
URL / A lista de componentes
PEP-8
URL / operadores
sistemas físicos / Começando com a Internet das coisas
função pinMode ()
sobre / A função pinMode ()
instalação pip / Instalando pip

função trama ()
sobre / Traçando números aleatórios utilizando matplotlib
display LCD TFT portátil
usando / Usando um display TFT LCD portátil com o Raspberry Pi
ligar, GPIO usado / Ligar o LCD TFT usando GPIO
a configuração, com framboesa Pi OS / Configurando o LCD TFT com o Raspberry Pi OS

GUI, optimizando / Optimizar a GUI para o ecrã TFT LCD


potenciômetro
conexões / ligações
código Python / O código Python
PowerSwitch cauda
URL / PowerSwitch cauda
Em processamento

sobre / Introdução à programação Arduino


protocolos
sobre / fundamentos de rede
prototipagem
sobre / prototipagem
prototipagem, termostato
sobre / Fase 1• -• prototipagem o termostato
Arduino esboço / O esboço Arduino para o termostato
sensor de temperatura, a interface / Interface entre o sensor de temperatura
sensor de humidade, a interface / Interface entre o sensor de humidade
sensor de luz, a interface / Interface entre o sensor de luz
solução de problemas / Solução de problemas

prototipagem, com protocolo I2C


sobre / Prototipagem com o protocolo I2C
exemplos Arduino / Arduino exemplos para interface I2C
sensor de temperatura TMP102, utilizando Arduino / Arduino que codifica para o sensor de temperatura TMP102

BH1750 sensor de luz, utilizando Arduino / Arduino que codifica para o sensor de luz BH1750

biblioteca PyMata, usando / PyMata para prototipagem rápida I2C


sensor de temperatura TMP102, usando a biblioteca de PyMata / Interface TMP102 usando PyMata

BH1750 sensor de luz, usando a biblioteca PyMata / Interface BH1750 usando PyMata
comandos PySerial, usando / comandos úteis pyserial
prototipagem modelos, utilizando Firmata
sobre / Prototipagem modelos usando Firmata
potenciômetro / Potenciómetro• -• observação contínua a partir de uma entrada analógica
campainha, utilizando / Campainha• -• gerando som padrão de alarme

motor de corrente contínua, usando / Motor DC• -• controlando a velocidade do motor usando PWM

CONDUZIU / LED• -• controlar o brilho de LED usando PWM


servomotores, usando / Servomotor• -• mover o motor para um determinado ângulo
biblioteca PubSubClient
usando / MQTT em Arduino usando a biblioteca PubSubClient
instalação / A instalação da biblioteca PubSubClient
URL / A instalação da biblioteca PubSubClient
modulação de largura de impulso (PWM)

sobre / A placa Arduino Uno


pressionar no interruptor

usando / A lista de componentes necessários


métodos pyFirmata
trabalhando com / Trabalhando com métodos pyFirmata
usado, para a criação de Arduino bordo / Configurando a placa Arduino
utilizado, para a configuração de pinos do Arduino / Configurando pinos do Arduino

utilizado, para trabalhar com os pinos do Arduino / Trabalhando com pinos

servo_config (pino, min_pulse = 544, max_pulse = 2,400, ângulo = 0) / Funções adicionais

pass_time (segundos) / Funções adicionais


get_firmata_version () / Funções adicionais
Saída() / Funções adicionais
pulseIn / pulseOut / funções futuras
shiftin / shiftOut / funções futuras
PyPIURL / Por que usar Python , Instalando pacotes Python

sobre / Por que usar Python


quadro pyplot
sobre / Traçando números aleatórios utilizando matplotlib
Figura () / função Traçando números aleatórios utilizando matplotlib
mostram método () / Traçando números aleatórios utilizando matplotlib
comandos pyserial
usando / comandos úteis pyserial
utilizado, para a conexão com a porta série / Ligar com o porta serial
utilizado, para a leitura de uma linha de porta / A leitura de uma linha a partir do porto

utilizado, para a lavagem da porta para evitar a sobrecarga do buffer / A lavagem do porta para evitar sobrecarga da

memória intermédia

utilizado, para fecho da porta / Fechar a porta


biblioteca pyserial
sobre / Começando com pyserial
instalação / Instalando pyserial
URL / Instalando pyserial
exemplo / Jogando com um exemplo pyserial
e Firmata, bridging / Bridging pyserial e Firmata
Pitão
sobre / Introdução ao Python
benefícios / Por que usar Python
considerações de utilização / Quando é que vamos usar outros idiomas

URL / Quando é que vamos usar outros idiomas


instalação / Instalando Python e Setuptools
instalar, em Linux / Linux
a instalação, no Ubuntu / Ubuntu
a instalação, no Fedora / Red Hat Linux / Fedora e Red Hat
instalar, em Windows / janelas
URL, para download / janelas , Mac OS X
a instalação, no Mac OS X / Mac OS X
pip, a instalação / Instalando pip
URL, para documentação / Controlar o fluxo do seu programa
código Python, Tweet
sobre / O código Python
gerente de contexto Python
ligação de referência / O com a afirmação• -• gerente de contexto Python
dados Python, download para Xively
sobre / Python• -• download de dados de Xively
método básico, para a recuperação de dados / O método básico para a recuperação de dados a partir de Xively

Dados recuperação, a partir da interface web web.py / Recuperação de dados a partir da interface web web.py

notificações personalizadas, de Xively / Triggers• -• notificações personalizadas de Xively


gatilhos / Triggers• -• notificações personalizadas de Xively
dados Python, upload para Xively
sobre / Python• -• a transferir dados para Xively
método básico, para o envio de dados / O método básico para enviar dados
interface web usado / Upload de dados usando uma interface web baseada em web.py
arquivos executáveis ​em Python

usando / Trabalhando com arquivos executáveis ​em Python

funções Python
usando / Trabalhando com funções Python
def chave / Trabalhando com funções Python
Python GUI
Tkinter / Aprendizagem Tkinter para o projeto GUI
primeiro programa / Seu primeiro programa Python GUI
projeto Python em Arduino, refazendo / Refazendo seu primeiro projeto Python no Arduino com uma GUI

pacotes Python
instalação / Instalando pacotes Python
instalação, $ pip instalar * PackageName> = versão * comando usado / Instalando pacotes Python

programação Python
fundamentos / Os fundamentos da programação Python
operadores / operadores Python e built-in tipos , operadores
embutida tipos / operadores Python e built-in tipos , Built-in tipos
comentários / operadores Python e built-in tipos
o fluxo do programa, controlando / Controlar o fluxo do seu programa
if / A instrução if
para a declaração / O comando for
while / A instrução while
fluxo de software Python, Tweet-a-PowerStrip
sobre / fluxo de software Python
biblioteca de threading Python

URL / Usando a OPAS-MQTT biblioteca Python


tutoriais Python
URL / Os fundamentos da programação Python , A instrução while
R
Radiobutton () Widget
sobre / O CheckButton () Widget• -• seleção de LEDs
URL / O CheckButton () Widget• -• seleção de LEDs
Raspberry Pi
sobre / O que é um Raspberry Pi?
/ Raspbian O que é um Raspberry Pi?
versões / O que é um Raspberry Pi?
Configurando / Instalar o sistema operacional e configurar o Raspberry Pi
sistema operacional, a instalação / Instalar o sistema operacional e configurar o Raspberry Pi

Componentes de hardware / O que você precisa para começar a usar o Raspberry Pi?
URL / O que você precisa para começar a usar o Raspberry Pi? , Preparar um cartão SD

cartão SD, preparando Preparar um cartão SD


processo de configuração / O processo de configuração Raspberry Pi

ler método ()
usando / O () método de leitura
Em tempo real Arduino dados

plotagem / Plotagem em tempo real Arduino dados

sistema de monitorização doméstica remota

Visão Geral do Projeto / Visão Geral do Projeto

objetivos do projeto / Os objetivos do projeto

requisitos do projeto / Os requisitos do projeto


arquitetura do sistema, concepção / arquitetura do sistema Designing
UX fluir, definindo / fluxo Defining UX
Componentes de hardware / A lista de componentes necessários
estágios de desenvolvimento, definindo / Definindo as fases de desenvolvimento do projeto

monitorização estação, Arduino utilizado / Fase 1• -• uma estação de monitoramento usando Arduino

teste / prova , Testes e solução de problemas


centro de controlo, usando / Fase 2• -• um centro de controle usando Python e o Raspberry Pi

aplicação web / Fase 3• -• uma aplicação web utilizando Xively, Python, e serviço Amazon
cloud
solução de problemas / Testes e solução de problemas
estendendo / Estendendo seu sistema de monitoramento residencial a distância

várias estações de monitoramento, utilizando / Utilizando múltiplas estações de monitoramento

capacidades sensoriais, que se estende / Estendendo as capacidades sensoriais

UX, melhorando / melhorar UX


recursos baseados em nuvem, em expansão / Expandindo recursos baseados em nuvem

melhoria da inteligência, para conhecimento da situação / Melhorar a inteligência para o conhecimento da

situação

recintos de hardware, criando / Criação de um gabinete para os componentes de hardware


Transferência de Estado Representação (REST)

sobre / Framework web Python• -• web.py


aplicações Web RESTful
desenvolvimento, com Arduino e Python / aplicações web RESTful com Arduino e Python

concepção / Designing RESTO baseada em aplicações Arduino


Pedido GET, implementando / Trabalhando com o pedido GET do Arduino
Pedido GET, gerando / O código Arduino para gerar a solicitação GET
Pedido GET, manipulação com web.py / O servidor HTTP utilizando web.py para manipular a solicitação GET

solicitação POST, implementando / Trabalhando com o pedido POST a partir Arduino


pedido POST, geradora / O código Arduino para gerar a solicitação POST
solicitação POST, manipulação com web.py / O servidor HTTP utilizando web.py para manipular a solicitação POST

arquitetura / Exercício 3• -• uma aplicação web RESTful Arduino


Arduino esboço / O esboço Arduino para o exercício
aplicação web web.py / A aplicação web.py às solicitações suporte a REST
mensagens de protocolo, utilizando de recursos limitados / Por que precisamos de um protocolo de mensagens

constrangimentos de recursos?
S
Scale () Widget
sobre / Aprendizagem Tkinter para o projeto GUI , A Escala () Widget• -• ajustando o brilho de um
LED
usado, para ajustar o brilho de LED / A Escala () Widget• -• ajustando o brilho de um
LED
cartão SD

ligação de referência / O que você precisa para começar a usar o Raspberry Pi? , Preparar um cartão SD

preparando / Preparar um cartão SD


preparar, a partir do Windows / Preparar um cartão SD
preparar, a partir do Mac OS X / Preparar um cartão SD
preparar, a partir do Ubuntu Linux / Preparar um cartão SD
Protocolo Secure Shell (SSH) / Entrar em sua instância virtual
Serial linha de clock (SCL)
sobre / Prototipagem com o protocolo I2C
Serial linha de dados (SDA)
sobre / Prototipagem com o protocolo I2C
monitor serial
usando / Usando a janela Monitor de série
série de interface periférico (SPI)
sobre / prototipagem
classe de servidor

sobre / A classe de servidor


Servo Motors
usando / Servomotor• -• mover o motor para um determinado ângulo
conexões / ligações
código Python / O código Python
função de configuração ()

usando / A função de configuração ()

setuptools
instalação / Instalando Setuptools
sobre / Instalando Setuptools
instalar, em Linux / Linux
instalar, em Windows / janelas
a instalação, no Mac OS X / Mac OS X
esboço
sobre / O que é um esboço Arduino?
compilando / Compilando e upload de esboços
Enviando / Compilando e upload de esboços
sketchbook
sobre / O que é um esboço Arduino?
fatiamento
sobre / listas
firmware StandardFirmata
usando / prototipagem
afirmações
sobre / Funções e instruções , Afirmações
sub-rede / sub-rede
sobre / Exercício 1• -• um servidor web, o seu primeiro programa de rede Arduino
ligação de referência / Exercício 1• -• um servidor web, o seu primeiro programa de rede Arduino

arquitetura do sistema, sistema de monitorização doméstica remota

concepção / arquitetura do sistema Designing


monitorização estação / A estação de monitorização
Centro de Controle / O centro de controle
serviços na nuvem / Os serviços em nuvem

arquitetura do sistema, Tweet-a-PowerStrip


sobre / arquitetura do sistema
T
Templetor
sobre / Modelos
URL / Modelos
termóstato
construção / Termostato• -• a descrição do projeto
Descrição do Projeto / Termostato• -• a descrição do projeto
fundo do projeto / Histórico do projeto
fases de projecto / objetivos e etapas do projeto
objetivos do projeto / objetivos e etapas do projeto

componentes necessários, identificando / A lista de componentes necessários


design de hardware / design de hardware
fluxo de software, para design de experiência do usuário / fluxo de software para design de experiência do usuário

prototipagem / Fase 1• -• prototipagem o termostato


GUI, concepção / Projetando a GUI e trama em Python
enredo, concepção / Projetando a GUI e trama em Python
implantação, framboesa Pi usado / Fase 2• -• usando um Raspberry Pi para o termostato implementável

termostato, prototipagem
interrupções Arduino, usando / Usando interrupções Arduino
termostato, usando framboesa Pi
Implantando / Fase 2• -• usando um Raspberry Pi para o termostato implementável
display LCD TFT portátil, usando / Usando um display TFT LCD portátil com o Raspberry Pi

conexão de LCD TFT, usando GPIO / Ligar o LCD TFT usando GPIO
TFT LCD, a configuração / Configurando o LCD TFT com o Raspberry Pi OS
GUI, optimizando para TFT LCD / Optimizar a GUI para o ecrã TFT LCD

solução de problemas / Solução de problemas

transistor de filme fino de exibição de cristal líquido (LCD TFT)


sobre / design de hardware
ThingSpeak
sobre / ThingSpeak
Tk () Widget
sobre / Aprendizagem Tkinter para o projeto GUI , A raiz widget de Tk () e os métodos de alto nível

Tkinter
sobre / Aprendizagem Tkinter para o projeto GUI
gerenciador de geometria pacote / O gerente geometria pacote
Grade gerenciador de geometria / O gerente geometria grade
parcelas, integrando / Integrando parcelas na janela de Tkinter
Tkinter, widgets
Tk () / Aprendizagem Tkinter para o projeto GUI

Rótulo() / Aprendizagem Tkinter para o projeto GUI


Button () / Aprendizagem Tkinter para o projeto GUI
Entrada () / Aprendizagem Tkinter para o projeto GUI

Escala() / Aprendizagem Tkinter para o projeto GUI

Caixa de verificação () / Aprendizagem Tkinter para o projeto GUI

classe Tkinter
sobre / A etiqueta () widget de• -• monitoramento I O pins /
BooleanVar () Método / A etiqueta () widget de• -• monitoramento I O pins /
update_idletasks método / A etiqueta () widget de• -• monitoramento I O pins /
método de atualização / A etiqueta () widget de• -• monitoramento I O pins /

sensor de temperatura TMP102


interface, Arduino utilizado / Arduino que codifica para o sensor de temperatura TMP102
interface, biblioteca PyMata usado / Interface TMP102 usando PyMata
terminais do transistor
ligação de referência / ligações
solução de problemas

Tweet-a-PowerStrip / Testes e solução de problemas


solução de problemas, conexão placa Arduino
sobre / Solução de problemas

Tweet-a-PowerStrip
Visão Geral do Projeto / Visão Geral do Projeto

requisitos do projeto / requisitos do projeto


arquitetura de sistema / arquitetura do sistema
Componentes de hardware / componentes de hardware necessários

user / experiência de fluxo fluxo de experiência do usuário

estágio de desenvolvimento / Desenvolvimento e estágios de implantação

fase implantação / Desenvolvimento e estágios de implantação


tira poder inteligente com Arduino / Fase 1• -• uma régua de energia inteligente com Arduino e relés

design de hardware / design de hardware


código Arduino / O código Arduino
código Python / Fase 2• -• o código Python a tweets de processo , O código Python
fluxo de software Python / fluxo de software Python
Twitter aplicação, instalação / Configurando o aplicativo Twitter
teste / Testes e solução de problemas
solução de problemas / Testes e solução de problemas
vários recursos, acrescentando / Estendendo o projeto com recursos adicionais
Twitter aplicação, Tweet
configurando / Configurando o aplicativo Twitter
você
Ubuntu
Python, a instalação / Ubuntu
matplotlib, instalação / Configurando matplotlib no Ubuntu
Ubuntu Linux
cartão SD, preparando Preparar um cartão SD
Universal Serial Bus (USB)
sobre / Usando a janela Monitor de série
placa Uno
sobre / A placa Arduino Uno
experiência do usuário (UX) fluxo, Tweet
sobre / fluxo de experiência do usuário
V
variáveis
sobre / variáveis
instância virtual, no AWS EC2 serviço
criar / Criando uma instância virtual do serviço AWS EC2
log em / Entrar em sua instância virtual
tipo de dados vazio

sobre / Tipos de dados


W
web.py
usado, para o desenvolvimento de aplicações web / Framework web Python• -• web.py
instalação / Instalando web.py
Conceitos Básicos / conceitos web.py essenciais para o desenvolvimento de aplicações web complexas

URL, manuseio / manipulação de URLs


métodos get / Os métodos GET e POST
métodos POST / Os métodos GET e POST
modelos / Modelos
formas / formas
com Arduino interface série / Exercício 2• -• jogo com conceitos web.py usando a interface serial
Arduino
aplicação web, sistema de monitorização doméstica remota

sobre / Fase 3• -• uma aplicação web utilizando Xively, Python, e serviço Amazon cloud

arquitetura / Arquitetura dos serviços em nuvem


aplicação web Python, hospedado no Amazon AWS / aplicação web Python hospedado na Amazon
AWS
teste / Testando o aplicativo web , Testes e solução de problemas
Aplicativos da web
desenvolvimento, com o Python / Desenvolvimento de aplicações web usando Python

desenvolvimento, web.py usado / Framework web Python• -• web.py


implementação, web.py usado / Sua primeira aplicação web Python
while
sobre / A instrução while
rede de área alargada (WAN)
sobre / fundamentos de rede
janelas
Python, a instalação / janelas
Setuptools, instalação / janelas
Arduino IDE, a instalação / janelas
Arduino conexão bordo, estabelecendo / janelas
matplotlib, configurando / Configurando matplotlib no Windows
cartão SD, preparando Preparar um cartão SD
endereço IP, obtendo / janelas
biblioteca wire
sobre / Prototipagem com o protocolo I2C
URL / Prototipagem com o protocolo I2C
Fiação
sobre / Introdução à programação Arduino
com a declaração

usando / O com a afirmação• -• gerente de contexto Python


World Wide Web (WWW)
sobre / aplicações web RESTful com Arduino e Python
write () método
usado, para trabalhar com arquivos / O () método de gravação
X
Xively / Arquitetura dos serviços em nuvem
Xively, plataformas em nuvem da Internet das coisas

sobre / Xively• -• uma plataforma de nuvem para a Internet das coisas

conta, instalação / A criação de uma conta no Xively


trabalhando com / Trabalhando com Xively
Adruino, a interface com / Interface Arduino com Xively

Você também pode gostar