Saturday, December 12, 2015

Pausa no Hardware - Usando a API do Google Maps para criar um Mapa de Calor: Qual escolher?

Fala Pessoal,

Agora que fiquei em paz com o Intel Edison e estou começando uma pequena briga com o Raspberry Pi, vou dar uma pausa no hardware e focar um pouco no desenvolvimento de aplicações.

Como falei no post anterior, estou ajudando o pessoal do Hacker Clube de SJC a criar uma aplicação chamada SmartCitzen, que terá como objetivo criar uma plataforma para que makers, escolas e afins possam enviar dados coletados por seus dispositivos e depois ter uma visão consolidada, rodar ferramentas de análise, etc.

Para isso estamos usando o ThingWorx, plataforma de IoT da PTC. Entre os vários motivos para usar a plataforma, eu trabalho na PTC e sou um entusiasta da tecnologia - curioso - como alguns dizem! Como não tenho background como programador, o ThingWorx é uma mão na roda para acelerar o desenvolvimento e abstrair várias necessidades que não conheço muito - desenvolver em HTML, segurança dos dados, persistir os dados, etc.

Em outro post falo mais sobre ThingWorx!


Hoje vai ser sobre outra surra: usar a API do Google Maps para criar um HeatMap ou mapa de calor (?) para o SmartCitzen. A ideia é consolidar os dados como feito aqui:

O ThingWorx já possui uma extensão para o Google Maps mas essa função não está disponível na extensão provida pela PTC.

USANDO AS APIs

As APIs do Google Maps  possuem ao menos 2 formas para criar um Mapa de Calor

  1. Fusion Tables - é um produto experimental do Google que facilita esse tipo de trabalho. A grande vantagem é o HeatMap ser rodado no servidor e não no cliente, portanto a performance para um alto volume de dados será melhor. Como desvantagem, o fato de que os dados tenham que estar em uma Fusion Table no Google, ou seja, os dados tem que sair da plataforma (sic) e alterá-los dinâmicamente é difícil.
  2. Função Heatmap Layer - mais flexível, porém tem cotas para utilização e cãlculo do layer no cliente.
Vejam uma tabela de comparação retirada da documentação:

Heatmap Layer
Fusion Table Layer
A large number of data points may result in reduced performance.
More data points will have little impact on performance.
Able to customize the appearance of the heatmap by changing such options as: the color gradient, the radius of data points, and the intensity of each data point.
No ability to customize the appearance of the heatmap.
Able to control whether heatmap data dissipates at higher zoom levels or not.
All heatmap data will dissipate as you zoom in.
Data can be stored with your HTML, stored on a server, or calculated on the fly. Data can be changed at runtime.
All data must be stored in a Fusion Table. Data cannot be easily changed at runtime.

Decidi escolher a segunda opção para evitar ter que colocar os dados na Fusion Table. Na verdade vou colocar as 2 opções na extensão, mas meu foco será na Função Heatmaps.

No próximo post irei descrever meu "Hello World" usando a função HeatMaps.







Friday, December 11, 2015

Intel Edison - Trégua por enquanto, paz ainda longe!

Fala Pessoal,

Depois de uma briga enorme com o Edison para fazer o WiFi funcionar e também instalar algumas aplicações para rodar um agente Thingworx (mais sobre isso em outro post), consegui um pouco de paz!

Depois de pegar o jeito de fazer um flash no Edison e ter 99% de sucesso em fazê-lo, entrei em uma outra batalha para instalar o Node.js no Edison.

Fato era que a versão 0.8.1 da lib mraa que é instalada usando o npm  é incompatível com o node v0.12.7. Depois de quebrar a cabeça procurando uma forma de instalar uma versão anterior da lib, descobri que é relativamente simples:

root@edison:~# npm install mraa@0.8.0

irá instalar a versão anterior do node. js
Agora WiFi funcionando, node.js rodando com o mraa irei fazer o ThingWorx funcionar com o Edison. Já fiz alguns testes e estou tendo problemas com a tabela de pinos, então espero mais uma batalha.

Se der muito trabalho vou deixar o Edison de lado e focar no Raspberry Pi, boas ideias e um pessoal animado para um hackathon aqui em SJC!

Hoje foi rápido. Em breve irei fazer um post sobre o ThingWorx e começarei a postar regularmente sobre isso. Estamos usando ThingWorx para criar uma aplicação chamada SmartCitzen.

Keep it up!
Ewerton



Monday, November 30, 2015

Intel Edison Flashing - Nada é tão simples que não possa ser complicado

Fala galera, blz?

Decidi fazer um reflash no Edison porque preciso rodar o node.js e como não manjo tanto dessas coisas preferi seguir a dica do pessoal que já colocou o node.js para rodar.

Me passaram esse procedimento para fazer o reflash. Simples não? Não!

Pra começar, o Edison não apareceu como um drive no meu laptop. Preferi então tentar um procedimento via serial que encontrei aqui.

Maio problema foi que nem o filezilla se conectava no Edison, isso pq venho usando-o a muito tempo. Achei esse procedimento aqui, que aliado a um reboot fez com que eu conseguisse me conectar.

O meu maior problema porém não foi esse, e sim um comportamento estranho do Edison: ao tentar fazer  o flashing usando a Phone Flash tool, que é a ferramenta recomendada, o status ficava em 69%, algumas vezes em 76% e falhava depois de um tempo.

Liguei a conexão serial para acompanhar e percebi que o Edison dava um reboot normalmente, pedia login e senha e se "lixava"  para o processo de flashing. Aí encontrei esse procedimento. E depois de ler tudo com cuidado percebi o procedimento.

Basicamente é necessário deixar o Edison dar o reboot após o 69% e dar um reset (via linha de comando ou via pushbutton), e rodar:

boot> run do_flash

Nessa hora a ferramenta de flashing reconhece o Edison e volta para o processo normal de boot..

Uma coisa que percebi: é necessário deixar o Edison finalizar o boot após o 69%. Tentei interromper e fazer o procedimento mas isso falhou em todas as vezes. Já deixando o boot ocorrer normal e resetando eu tive sucesso em 99% das vezes. Quando falhou eu fechei a Flash Lite Tool e reiniciei o Edison. E deu tudo certo.. Então, o passo a passo que segui foi esse.


  1. Ligar o Edison e conectar-se à serial utilizando o Putty ou uma ferramenta similar;
  2. Desligar o Edison e preparar o Flash Lite tool para o procedimento de Flash;
  3. Abrir o diretório da imagem a ser carregada e procurar o arquivo FlashEdison.json 
  4. Certificar-se que em Configuration a selção seja RNDIS (para Windows)
  5. Clicar em Start Flash
  6. Religar o Edison e aguardar até 69%;
  7. Quando o Edison der o boot, caso a Flash Lite tool não reconhecer, esperar o boot completar, logar no Edison e dar o comando reboot;
  8. Monitorar o boot pela serial e quando a msg "Hit any key to stop autoboot" , pressione uma tecla. Aparecerá o prompt de comand boot>;
  9. Dar o comando run do_flash
  10. A ferramenta de flash deve continuar e finalizar o procedimento;
Espero que funcione para vocês. Para mim funcionou bem.

Abraços

Keep it up!
Ewerton



Wednesday, November 25, 2015

Intel Edison e Wifi - a grande batalha - Capítulo 2




Fala Pessoal! Eu por aqui de novo!

Continuando minha batalha com o Edison para fazer o wifi funcionar.

Acabei de perceber que agora ao dar um ifconfig só aparecem as porta wlan0 e a lo, e antes tinha a porta usb0, o que me leva a crer que pode haver algum tipo de conflito que faz com que a wlan0 pare de funcionar.

Não fiz nada em especial para que o problema fosse resolvido, mas me parece que esse post também descreve o problema, mas nesse caso houve uma ação específica para desabilitar a usb0, o que eu não fiz.

Vamos esperar, não vou dar essa batalha como vencida porque acho que ainda haverão outras, mas o problema não se repetiu novamente.

PS: Interessante o post sobre o Edison no Embarcados

Keep it up!
Ewerton

Tuesday, November 24, 2015

Intel Edison e Wifi - a grande batalha - capítulo 1

Fala Pessoal!

Resolvi seguir o conselho do grande Mauro Assis, do AutomatoBR e registrar minhas aventuras no mundo das coisas.


Isso deve ajudar outros que como eu ficam perdidos nesse mar de informação que é a internet e que muitas vezes não leva a uma conclusão.


Pois é: decidi começar fazendo uma conexão simples do Edison com minha instância ThingWorx para o projeto SmartCitzen do Hacker Clube de SJC


Para minha surpresa, ao contrário do que havia lido, O Edison é um touro bravo! Difícil para quem está iniciando, por conta dos imensos problemas que apresenta.


O básico do básico - como por exemplo, a conexão wifi - que no meu Raspberry Pi funcionou tão rapidamente (com ajuda das dicas do AutomatoBR), no Edison é super instável!


Algumas coisas que aconteceram (aleatoriamente, sem muita sequência lógica):

  1. O comando configure_edison --setup não acha nenhuma rede
  2. O comando configure_edison --setup acha uma rede porém não se conecta a ela. Erro: Attempting to enable network access, please check 'wpa_cli status' after a minute to confirm.
    Not connected. Something went wrong
  3. O comando ifconfig não acha a wlan0
  4. O comando iconfig wlan0 up sobe a wlan0 mas ela some em seguida ao dar o comando ifconfig 
Encontrei muitas referencias aos problemas no site da intel, com as mais diversas recomendações e até agora nada resolveu.

De repente eu dei o comando ifconfig wlan0 up e depois  ifconfig -a e a rede se estabeleceu. Vamos ver se estabiliza.

Vou fazer mais uns testes e posto os resultados (capítulo 2 aqui)  , mas é provável que eu tenha que fazer um reflash no Edison por causa de um problema com o node.js, mas isso é também assunto para outro post.

Keep it up!
Ewerton