Skip to main content

Command Palette

Search for a command to run...

Tenha seu próprio smart mirror

Published
5 min readView as Markdown
Tenha seu próprio smart mirror
L

I'm a simple man... "I see coffee, I drink coffee"

Ainda lembro de ver os painéis do shopping Market Place quando criança e achar incrivel aquilo

imagem de capa: "info panel" by estorde is licensed under CC BY-NC-ND 2.0

Sabe aqueles painéis de informações como quiosques digitais em empresas, shoppings ou até mesmo em um consultório médico? Já quis ter um dele? Já tem um servidor com Rancher rodando? Ótimo, vai ser bem simples.

19823103471_ab9d664dd1_o.jpg

"Baggage Carousel Sign" by Aranami is licensed under CC BY 2.0

Uma das vantagem desta abordagem é que você poderá ter vários paineis funcionando de maneira igual precisando configurar apenas em um lugar, o servidor, diferentemente de algumas abordagens nais quais você teria que ir configurando painel por painel.

Outra boa vantagem é a você poderá prolongar a vida da sua Raspberry Pi Zero W uma vez que outras abordagens fazem ela ser o servidor e o painel ao mesmo tempo, fazendo com que a placa esquente muito e caso você não tenha um bom dissipador de calor ela acabará esquentando demais.

MagicMirror2

Caso não conheça ainda o MagicMirror2, recomendo entrar no site deles e dar uma olhada por cima no projeto. Alguns dos projetos que julguei interessante estão linkados do apêndice.

O legal do projeto em si é que você também poderá transformar ele em um Alexa para poder usar como ponto de acesso e modificação deles.

32885120141_9ce3f8a8ca_o.jpg

"Trumpet Playing Robot" by alisonjpope is licensed under CC BY 2.0

Rancher

  1. A configuração no Rancher será bem simples. Basta colocar bastilimbach/docker-magicmirror como imagem necessária e escolher um nome para ela: image919.png
  2. Depois dar um bind da porta 8080 em alguma disponível no seu servidor -- no meu caso foi a 8700: image1058.png
  3. Como env var, configure apenas a timezone com TZ -- a lista completa você pode ver aqui: image955.png
  4. SHH no seu servidor, crie uma pasta chamada magic_mirror, entre nela e digte pwd, copie o caminho para utilizar de binding nos volumes -- no meu caso o comando retornou /home/farm/magic_mirror/: g1100.png

Raspberry Pi Zero W

  1. Caso tenha uma Raspberry Pi Zero W ou W+ com o sistema operacional já instalado, pule para o passo 6, do contrário siga as configurações
  2. Baixe a versão Lite do sistema operacional
  3. Escreva ele em um micro SD -- recomendo o etcher para fazer isto porque caso tenha a versão mais recente não precisará fazer o passo 2
  4. Abra a pasta boot no cartão de memória, crie um arquivo chamado wpa_supplicant.conf e cole o seguinte texto fazendo as alterações necessárias:
    country=BR # seu país aqui
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
     ssid="MyWiFiNetwork" # nome da sua rede de wi-fi
     psk="aVeryStrongPassword" # sua senha do wi-fi
     key_mgmt=WPA-PSK
    }
    
  5. Também crie um arquivo de texto vazio com o nome ssh na mesma pasta
  6. Coloque o micro SD na Rasp, a ligue e acesse-a remotamente através de outro computador -- a senha é raspberry:
    ssh -l pi ip.da.rasp.aqui
    
  7. Depois disso só copiar e colar o seguinte comando -- ele vai executar este script:
    curl https://gist.githubusercontent.com/Fazendaaa/4a5e04ec51451c19c13eec049c3688f0/raw/ac44f16513751678a495c69a55791c2fbbc6eb3c/setupRaspClientMM.sh | sh
    
  8. Sua Rasp irá desconectar do ssh depois de finalizada, acesse ela de novo e edite o arquivo chromium_start.sh e altere a última linha dele -- usei o nano só de exemplo:
    nano ~/chromium_start.sh
    
    #!/bin/sh
    unclutter &
    xset -dpms # disable DPMS (Energy Star) features.
    xset s off # disable screen saver
    xset s noblank # don’t blank the video device
    matchbox-window-manager &
    chromium-browser --check-for-update-interval=31104000 \
     --start-fullscreen --kiosk --incognito \
     --noerrdialogs --disable-translate --no-first-run \
     --fast --fast-start --disable-infobars \
     --disable-features=TranslateUI \
     --disk-cache-dir=/dev/null \ http://ip.do.sevidor.rancher:portaConfiguradaDoMagicMirror
    
  9. Conecte o HDMI nela -- a Rasp não irá reconhecer o monitor se ele não tiver conectado nela quando ela inicar --, reinicie ela com o seguinte comando:
    sudo systemctl reboot
    

Tudo deverá estar funcionando normalmente agora.

image1222.png

Nova Aba

Uma vez que o servidor está configurado, você pode acessar ele digitando no seu navegador -- meu exemplo:

g1212.png

Uma possibilidade é caso você não tenha um monitor sobrando mas ainda gostaria de deixar como um "descanso de tela" ou como o painel que mostre toda vez que abra uma nova aba, vai conseguir fazer isto.

Outra possibilidade é caso sua empresa configure ou já esteja utilizando o MagicMirror e possua uma Virtual Private Network (VPN), você poderá acessar o MagicMirror da empresa em casa, tendo com facilidade ele no seu navegador ou até mesmo um painel com o endereço apontando pro da VPN -- este último será necessário configurar a VPN na Rasp ou no seu próprio modem.

Apêndice

  • Por favor, mude a senha da sua Rasp para não ficar utilizando a padrão dela, é uma boa prática de segurança
  • Adiconar para adicionar novos módulos, veja a lista deles
  • Para configurar ligar e desligar a tela automaticamente, só seguir os seguintes passos na sua Rasp:
  • Adicione as seguintes ferramentas:
    sudo apt-get -y install python3-pip
    sudo pip3 install vcgencmd
    
  • Rode o comando -- ele irá pedir para escolher um editor de texto para fazer a configuração do próximo passo, recomendo o nano por ser o mais simples de usar:
    crontab -e
    
  • Copie as próximas linhas e cole elas -- com Ctrl + shift + v --, basicamente você estará pedindo pra Rasp ligar o monitor conectado à ela às 9h e desligar às 17h -- 5h PM:
    0 9 * * * echo 'on 0' | vcgencmd display_power 1
    0 17 * * * echo 'standby 0' | vcgencmd display_power 0
    
  • Projetos recomendados:

Referências