Manual
do
Maker
.
com
Que tal ler suas mensagens do twitter no Onion Omega2 usando um display OLED de expansão? Não é só divertido, mas é útil, se considerar a possibilidade de fazer acionamentos remotos a partir de qualquer ponto que você tenha internet, sem precisar abrir uma conexão entrante em sua rede doméstica.
Antes de começar, sugiro um factory, porque o espaço é limitado e a instalação dos pacotes consumirá um bocado de espaço.
Após fazer o factory, você precisará novamente fazer a conexão de setup. Se não sabe como fazê-lo, sugiro que leia os artigos anteriores relacionados, clicando alí em cima no menu MIPS. Serve também para o caso de você não saber como fazer o factory, que pode ser feito de trẽs maneiras diferentes, à sua escolha.
Uma dica é não instalar a interface HTTP, assim haverá muito mais espaço para fazer seus projetos. Sem essa interface, o Omega fica com 29.6M de espaço livre para as aplicações!
Para esse projeto, você precisará de 3 componentes. Se não tiver o módulo display, pode ser que consiga utilizar um display OLED via I2C no slot de expansão, mas eu não testei. De qualquer modo, o display do Omega2 é I2C, de modo que é muito provável que outro sirva. Qualquer hora eu faço um teste.
Quando você digitar o comando para a instalação de pacotes, não se assuste com a quantidade de dependências da urllib.
opkg update
opkg install python-light python-urllib3 pyOledExp
Quando finalizar a instalação, baixe o código de projeto no github do Onion em seu desktop/notebook. É melhor do que instalar o git no Omega2, porque isso consumirá muito mais espaço do que o projeto em sí. Depois, transfira o diretório de download para o Omega2 por ssh.
git clone https://github.com/OnionIoT/oled-twitter-display.git
scp -r oled-twitter-display root@192.168.1.3:~/
Não se esqueça de trocar o IP para o endereço correto do seu Omega. No Omega2 você terá um diretório com o tamanho de apenas 89.5K, uma maravilha.
Se você fez o primeiro acesso por ssh ao seu Omega2, uma chave já foi criada no arquivo .ssh/knwon_hosts. Nesse caso, você pode simplesmente remover o arquivo e tudo voltará a funcionar. Isso acontece porque quando é feito o factory reset, a chave de assinatura muda. Não é um bug, isso é característico do ssh.
Para conseguir a comunicação com o twitter, temos que criar um app que nos fornecerá a chave da API e um autenticador. Isso é simples de fazer, basta ir ao site http://apps.twitter.com, então preencher o formulário de sua aplicação. A parte mais importante é fornecer um bom nome e uma boa descrição.
Na tela seguinte você terá as informações necessárias para adicionar ao seu código.
O config.json é um arquivo bem simples, contendo apenas uma estrutura básica com os parâmetros de comunicação, onde devemos mudar o user, o consumerKey e o consumerSecret.pelos valores obtidos através do app criado previamente.
O consumerKey está na aba Key and Access Tokens.
Lembre-se que esse é um código de exemplo, por isso a única coisa que ele faz é ler e imprimir o resultado no display. Se quiser acionar relés, abrir portas ou acender luzes, basta criar um script python à parte com as respectivas funções, então importá-lo no código principal do script oledTwitterDisplay.py. Agora vamos ver sua execução:
python oledTwitterDisplay.py
E o resultado é esse da imagem de destaque.
Podemos fazer isso de diversas maneiras, como por exemplo, um script Python principal temporizando a execução, ou um script shell cumprindo essa tarefa. Uma terceira possibilidade é agendar a tarefa no cron do sistema, assim mesmo após o reboot o script será executado. Para editar o agendador de tarefas do sistema utilize o comando crontab -e, então adicione a seguinte linha:
*/5 * * * * $(which python) /root/oled-twitter-display/oledTwitterDisplay.py
Quando tiver tempo, escrevo uma implementação pra cotrolar o módulo de expansão com relés, espero que isso já lhe empolgue.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.