Escolar Documentos
Profissional Documentos
Cultura Documentos
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:
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.
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
Adicionar mais funcionalidades de controlo e protocolos de comunicação ao mesmo tempo, proteger os seus dados
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.
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.
Como você tem uma conta na Amazon AWS agora, vamos ' s criar sua instância virtual nele.
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:
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.
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.
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:
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
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
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.
Ubuntu já vem com a última versão do Python. No entanto, você ainda precisará instalar Setuptools para
instalar os pacotes adicionais do Python:
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:
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:
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:
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.
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
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.
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:
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:
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.
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:
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.
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á
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:
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:
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:
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.
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
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
cigarra 1 http://www.adafruit.com/products/160
Como
resistores
exigido 220 ohms, um quilo-ohms, e 10 quilo-ohm
Como
fios de ligação
requerido
Raspberry Pi 1 https://www.sparkfun.com/products/11546
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
residencial a distância. O processo global de desenvolvimento de hardware e software também está alinhada com estas três unidades e
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.
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 ();
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:
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 .
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"); }
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:
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
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:
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.
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:
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.
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:
setNormal (status)
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:
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:
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:
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:
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:
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:
5. Para instalar outras dependências Python, vamos ' s primeiro instalar o pacote Setuptools usando
apt-get:
6. Usando Setuptools, agora podemos instalar todo o Python necessário bibliotecas como
paho_mqtt, xively e web.py:
sobre o Raspberry Pi, é hora de configurar o Raspberry Pi para que ele possa fornecer o funcionamento ininterrupto para um sistema
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:
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:
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.
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:
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")
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:
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.
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.
Você também pode combinar vários canais Xively formatando dados em JSON ou XML.
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
À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
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:
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
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",
"chave",
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.
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
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
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:
http://www.powerswitchtail.com/
PowerSwitch cauda 4
Alternativa para retransmitir
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
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
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:
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:
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:
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
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á
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
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:
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:
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:
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:
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
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
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
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
pinos do Arduino
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
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
- 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
byte () / conversões
int () / conversões
flutuar () / conversões
sobre / conversões
arquivo CSV
utilizado, para o armazenamento de dados / Uso de arquivos CSV para armazenar dados
dicionários / dicionários
URL / dicionários
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
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
programa Python
Xively / As plataformas de Internet das coisas nuvem , Xively• -• uma plataforma de nuvem para a Internet das coisas
endereço de IP
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 /
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
monitoramento
arquivos executáveis Python, usando / Trabalhando com arquivos executáveis em Python
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
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
BH1750 sensor de luz, utilizando Arduino / Arduino que codifica para o sensor de luz BH1750
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
utilizado, para a lavagem da porta para evitar a sobrecarga do buffer / A lavagem do porta para evitar sobrecarga da
memória intermédia
Dados recuperação, a partir da interface web web.py / Recuperação de dados a partir da interface web web.py
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
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
ler método ()
usando / O () método de leitura
Em tempo real Arduino dados
monitorização estação, Arduino utilizado / Fase 1• -• uma estação de monitoramento usando Arduino
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
situação
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
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
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
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
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 /
Tweet-a-PowerStrip
Visão Geral do Projeto / Visão Geral do Projeto
sobre / Fase 3• -• uma aplicação web utilizando Xively, Python, e serviço Amazon cloud