Sistema para automação e controle residencial via Twitter Eduardo Felippi Gadotti Orientador: Miguel Alexandre Wisintainer
Roteiro da apresentação 1. Introdução e objetivos 2. Fundamentação teórica 3. Especificações do sistema 4. Desenvolvimento e operacionalidade do sistema 5. Resultado e discussões 6. Conclusão 7. Extensões
Introdução Significado Problemas Regras Custos
Objetivos Automatizar uma residência Multi-Plataforma Serviço IP Utilização do hardware FEZ, dispensando o uso de um Computador ou Servidor na residência. Utilizar um WebService para autenticação e comunicação com o Twitter.
Automação Residencial Histórico Possibilidades Expansão Objetivos (Valorização)
Twitter O que é? Restrições Popularidade Segurança
Placa FEZ O que é? Objetivo Restrições Vantagens / Integração
Trabalhos correlatos REITER (2006), apresentou um sistema de automação, utilizando Delphi / Serial / Windows ou Linux. Dispensa PC. Sem comunicação com internet. CENSI (2001), apresentou um sistema de automação utilizando C / hardware Rabbit / Via E-mail
Requisitos funcionais Principais requisitos funcionais do sistema são: Permitir que seja configuráveis em arquivos externos parâmetros do sistema, comandos e usuários. Permitir que seja enviado comandos de automação através do Twitter. Permitir que o usuário receba uma mensagem de retorno dos comados.
Requisitos não funcionais Principais requisitos não funcionais do sistema são: Sistema deve possui acesso à Internet. Sistema deverá gravar log das execuções e erros. Sistema deverá comunicar-se com um WebService gerenciador de mensagens. Sistema deverá ler as configurações de comandos e parâmetros de arquivos do tipo XML.
Regras de negócio Principais regras de negócio do sistema são: Sistema não poderá realizar mais de 150 requisições por hora. Sistema não deverá enviar mensagens de retorno que possuam mais que 140 caracteres. Sistema não deverá permitir a leitura de mensagens já lidas anteriormente.
Diagrama de sequência Funcionamento da comunicação entre componentes sd Business Process Model Usuário Sistema embarcado (FEZ) Webservice gerenciador Api Twitter Placa controladora (CLPIC) Envia Mensagem() Busca mensagens não lidas() Busca mensgens não lidas() Retona mensagens() Retorna mensagens() Executa comando() Envia mensagem de retorno() Envia mensagem() Recebe mensagem()
Ferramentas utilizadas Microsoft Visual Studio 2008 Micro Framework 4.0 Framework 3.5 Linguagens C# e VB.Net WebServices
Exemplos de envios Utilizando o site oficial:
Exemplos de envios Utilizando programa TweetDeck para PC:
Exemplos de envios Utilizando programa TweetCaster para Android:
Exemplos de envios Utilizando envio SMS:
WebService Métodos publicas no WebSerivce Gerenciador
Código Fonte Utilizando placa FEZ para buscas mensagens no Twitter através do WebService Gerenciador var serversocket = new FEZ_Shields.Ethernet.uSocket(FEZ_Shields.Ethernet.uSocket.Protocol.TCP, 80); var serverip = new byte[] { 174, 123, 78, 178 }; //servidor onde está o WebService Try { //Realiza conexão com o socket serversocket.connect(serverip, 80); System.Threading.Thread.Sleep(5000); //5 segundos //Constroi o Header da mensagem var request = BuscaHeader(url, referer, extraheaders, requestmethod, postcontenttype, postbody); //Converte o Header para Array de Bytes var bytestosend = System.Text.Encoding.UTF8.GetBytes(request);
Gerador Programa Gerador de Token
Mudança de Estados Acendendo uma lâmpada
Código fonte Associação de equipamentos switch (pcomando.equipamentosid) { case 1: { psaidas.tomada1.write(pcomando.estadoequipamento); break;} case 2: { psaidas.tomada2.write(pcomando.estadoequipamento); break; } case 3: { psaidas.tomada3.write(pcomando.estadoequipamento); break; } case 4: { psaidas.tomada4.write(pcomando.estadoequipamento); break; } case 5: { psaidas.tomada5.write(pcomando.estadoequipamento); break; } }
Código fonte Associação com as saídas digitais public class Saidas { public OutputPort Tomada1 { get; set; } public OutputPort Tomada2 { get; set; } public OutputPort Tomada3 { get; set; } public OutputPort Tomada4 { get; set; } public OutputPort Tomada5 { get; set; } } public Saidas() { //Inicia as saídas e indica o estado inicial Tomada1 = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di3, false); Tomada2 = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di7, false); Tomada3 = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di5, false); Tomada4 = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di8, false); Tomada5 = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.Di9, false); }
Resultados e discussões Automação / Rede social / Dispensa IP fixo Programas clientes / SMS Segurança / E-mail / Token s Objetivos
Conclusão Utilização de redes sociais para automações Segurança Custos Multi-plataformas Contribuição à comunidade / Pioneiro Diferencial / limitação
Extensões Gerenciador de configurações Configuração por cômodos Agendamento de comandos Autenticação xauth
Agradecimentos Obrigado!