Desenvolvimento com tecnologia Microsoft e Interoperabilidade
Twitter: @vbs_br
Facebook: vbatistadesouza
LinkedIn: viniciusbatista

TDC 2014 – São Paulo

Olá meus amigos,

Semana passada foi realizado o TDC – The Developers Conference edição de São Paulo, e nós participamos como patrocinadores Diamante juntamente com outras grandes empresas de tecnologia.

O evento está cada vez maior tanto em termos de patrocinadores como de audiência, fruto do trabalho dos meus amigos Yara Senger e Vinícius Senger da Globalcode.

Nós da Microsoft estávamos com um estande onde estávamos demostrando alguns de nossos devices como Tablets, notebook, All in one, phone, Xbox Onde e uma ação de IoT  (Internet of things) envolvendo toda a Plataforma Microsoft.

Nesse post vou compartilhar com vocês o desenvolvimento dessa ação de IoT, juntamente com o seu código fonte publicado no GitHub.

Primeiramente o processo criativo. Bom eu juntamente com meus colegas Marlon Luz e Thiago Bessa ambos antigos funcionários do INdT e agora fazendo parte da família de Evangelistas da Microsoft gostaríamos de fazer algo que fosse inspirador e ao mesmo tempo que deixassem os participantes do evento fazer parte.

Depois de várias ideias acabamos fechando na seguinte solução:  Um projeto de IoT onde o usuário vai mudar a cor de nosso estande literalmente.

Veja o vídeo da ação para ter uma visão do projeto: https://www.youtube.com/watch?v=Uu51yMC1EIo

Definido o nosso objetivo decidimos fazer um aplicativo móvel para Windows Phone e Android para envio de mensagens para a nossa nuvem pública Microsoft Azure (utilizando o Mobile Services) e um Web site MVC / Web.Api para também hospedado no Azure utilizando o Web Site, o web site foi utilizado para gerenciar as informações apresentadas nos aplicativos.

Começamos a desenvolver a solução e o primeiro ponto foi resolver o tipo de luz que iríamos utilizar, já que a agência estava envolvida no processo e não podíamos deixa-los esperando. Decidimos utilizar uma Luz de Led, 3 pontos para cada cor utilizada no logo da Microsoft, e nosso hardware no casso o NetDuino iria utilizar relês para acender e apagar a luz.

Fizemos um piloto mínimo validando a solução e partimos para a implementação de fato, e novas ideias vieram a mesa o que é normal, a primeira foi disponibilizar as palestras Microsoft (entregue por profissionais Microsoft) no aplicativo e enviar um push notification quando o estiver faltando 10 minutos para a palestra ser realizada e a segundo foi incluir uma autenticação com o Twitter para que a cada troca de cor o aplicativo iria realizar um Tweet informando a alteração de cor.

Como dominamos a nossa plataforma decidimos incluir estas novas features na plataforma Microsoft e deixar o mínimo em Android e depois de tudo pronto fazer o restante no Android também, essa foi uma abordagem bem interessante pois garantimos a entrega das duas plataformas. O desenvolvimento do aplicativo em Android foi feito utilizando o Xamarin que permite desenvolver em C# para outras plataformas como Android e iOS.

O trabalho em conjunto funcionou muito bem, mesmo com o Marlon tendo que ir para um evento em Seattle na sede da Microsoft ele conseguiu ajudar no desenvolvimento do aplicativo.

O projeto também proporcionou uma visita nossa (Eu e o Thiago) para a Santa Efigênia para compra de alguns componentes e encontramos tudo em um único lugar ;)

Diagrama de Casos de Uso

Para ficar mais claro para todos os envolvidos os componentes envolvidos eu fiz no Visual Studio um diagrama de casos de uso (Use Cases), segue a imagem abaixo.

Tecnologias do Microsoft Azure utilizadas.

Mobile Services

Logo no início identificamos o uso do Mobile Services, para facilitar a interação com o serviço em múltiplas plataformas, a criação é simples e a utilização do SDK é muito tranquila.

Como disse antes, depois optamos por incluir o Push Notification ou seja enviar mensagens diretamente para o dispositivo do usuário e o Mobile Service ajuda muito na implementação pois disponibiliza um Hub de Notificação, onde e possível configurar todos as principais plataformas disponíveis no mercado atualmente Windows, Android, iOS.

Para fazer o envio propriamente dito eu utilizei um Scheduler também uma outra funcionalidade do Mobile Service que consegue executar um Job a um período definido, para a nossa aplicação eu utilizei dois Jobs, um para o envio da notificação da palestra e outro para o envio de mensagens geradas a partir do site. Por utilizar dois serviços eu tive que mudar o tipo de oferta de Mobile Service para Basic, pois a Gratuita não permite a utilização de mais de hum Job ao mesmo tempo, mais ainda sim o custo é super baixo cerca de 25,00 USD por mês para 1.5 milhões de chamadas de API.

 

Web Sites

A publicação de web sites no Azure pode ser realizada basicamente de 3 formas, sendo uma com IaaS e duas com o nosso PaaS utilizando Cloud Services ou Web Sites, quando utilizar um ou outro vale um novo post e estou me comprometendo aqui com vocês. Mas voltando para esse projeto estou utilizando o Web Sites para hospedar nosso site que está utilizando a seguinte URL: http://iot4dx.azurewebsites.net, deem uma olhada, é o template padrão do Visual Studio com algumas mudanças mínimas o interessante do template é que já utiliza Bootstrap, o que significa que o nosso site é adaptativo para múltiplos tamanhos de tela.

O site dá uma ideia sobre o projeto, fornece os links das apps para Windows Phone e Android e permite gerenciar as palestras, além de postar mensagens de push notification para algumas chamadas que fizemos em nosso estande.

 

Projeto de IoT

Como mencionei antes utilizamos o Netduino para desenvolver essa solução, nós queríamos utilizar o Galileo, mas por motivo de força maior como não possuir o dispositivo não conseguimos.

O NetDuino funciona muito bem e o mais legal podemos utilizar C#, aliás esse foi um projeto desenvolvido inteiramente em C# de ponta a ponta… Até na app de Android (lembra do Xamarin). Além do C# contamos com Visual Studio para fazer esse desenvolvimento com suporte a breakpoint no código rodando no hardware e muito mais, o Thiago que foi o evangelista responsável pelo Hardware pode falar mais depois.

Viram que no Use Case eu tinha colocado para fazer o Tweet na troca de cor, mas não deixei isso no HW deixei no endpoint do WebApi utilizado para retornar a próxima cor, mudanças que ocorreram para facilitar o desenvolvimento :)

Todo o projeto está publicado no GitHub através dessa URL: https://github.com/ViniciusSouza/TDC_SaoPaulo_IOT, fiquem a vontade para fazer o download e dar uma olhada no código e até replicar a ideia da maneira que acharem melhor.

Para facilitar o uso deem uma lida no Readme do projeto, coloquei uma identificação dos componentes da solução.

Conclusão

A participação no TDC é algo especial para nós evangelistas e os funcionários da Microsoft em geral, pois permite que conversamos com o audiência que não pertence a Microsoft e saber como está o funcionamento da nossa tecnologia junto com outras tecnologias como Java, Ruby, PHP,  Python, Teste, Open Source e muito mais.

Além de todo esse relacionamento, proporcionou a execução desse projeto bem bacana desenvolvido por nós evangelistas para vocês da comunidade em geral.

Agradecimento especial para o time de Marketing da Microsoft e mais especial ainda para o time de Marketing do nosso time de DX: Luciana Lancerotti, Diego Blanco, Rodrigo Dias, Silvia Valadares, Bianca Xavier, Bianca Nunes, Thais Trindade, Isadora Reis e o pessoal da Case: Carol, Marcinho, Barba as meninas da recepção.

Um abraço e até o próximo artigo.

 

No comments

Trackbacks/Pingbacks

  1. The Developers Conference 2014 – veja o que mostramos durante a edição São Paulo | Porta 25 - […] da Microsoft, marcamos presença com um estande onde demonstramos alguns de nossos devices, como tablets, notebooks, All in one, …

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>