Nesta segunda parte do projeto do kiosk interativo, veremos como construir a imagem do kiosk-manager.
O kiosk-manager é o responsável por configurar as páginas e propagandas que serão exibidas nos web-kiosks. Neste exemplo estamos usando um web-kiosk e um kiosk-manager, sendo ambos usando uma Beaglebone Black cada e presentes na mesma rede LAN onde os endereços IP foram atribuídos por um servidor DHCP.
Gerando a imagem do kiosk-manager
Após ter seguido os passos de montagem do ambiente de construção e geração da imagem do web-kiosk da primeira parte da série, vamos gerar a imagem do kiosk-manager com os seguintes comandos:
cd ~/yocto . . kiosk-src/oe-init-build-env kiosk-build bitbake core-image-kiosk-manager
Gravando a imagem do kiosk-manager
Iremos gravar um outro microSD com a imagem do kiosk-manager. Este procedimento é praticamente o mesmo utilizado no tutorial do Henrique sobre Beaglebone Black + Yocto.
Para a gravação da imagem no microSD card, o mesmo deve ser particionado e formatado de acordo o padrão aceito pela placa. Para isso foi criado um script, que pode ser obtido com os seguintes comandos:
cd ~/yocto/ git clone https://github.com/henriqueprossi/beaglebone-black.git bbb-sdcard-prepare
Insira um microSD card no computador PC ou notebook (sistema host) e descubra qual o device node criado pelo sistema operacional. Tente um dos seguintes comandos:
dmesg sudo fdisk -l
Caso, por exemplo, o device node criado seja /dev/sdb, use os comandos:
cd bbb-sdcard-prepare cd scripts chmod +x format_sd_card.sh sudo ./format_sd_card.sh /dev/sdb
Assim que o processo de particionamento e formatação terminar, duas partições no microSD card são criadas:
- boot (FAT32);
- rootfs (ext4).
Execute a “montagem” dessas duas partições no sistema de arquivos do sistema host. Caso esse faça uso da distribuição Ubuntu, basta remover e inserir novamente o dispositivo no seu conector. Dado que, por exemplo, os pontos de montagem criados sejam /media/boot e /media/rootfs, as imagens geradas anteriormente são copiadas da seguinte forma para o kiosk-manager:
cd ~/yocto/kiosk-build/tmp/deploy/images/beaglebone cp MLO /media/boot cp u-boot.img /media/boot sudo tar xzf core-image-kiosk-manager-beaglebone.tar.gz -C /media/rootfs
Testando a imagem do kiosk-manager e web-kiosk
Remova o microSD do computador e insira-o na BBB, conecte-a a um roteador pelo cabo ethernet. Não se esqueça de conectar a outra BBB que fará o papel de web-kiosk no mesmo roteador, além de conectar também o cabo HDMI.
Para que o kiosk-manager possa configurar as páginas e propagandas que serão exibidas no web-kiosk, precisamos saber qual é seu IP. Para isso vamos conectar um cabo serial no web-kiosk e rodar o comando abaixo:
ifconfig
eth0 Link encap:Ethernet HWaddr C8:A0:30:C4:61:4C
inet addr:192.168.0.101 Bcast:0.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1284 errors:0 dropped:0 overruns:0 frame:0
TX packets:436 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:217748 (212.6 KiB) TX bytes:50863 (49.6 KiB)
Interrupt:56
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Podemos ver que a interface de rede ethernet (eth0) está com o IP: 192.168.0.101.
Agora iremos conectar o cabo serial na BBB kiosk-manager e configurar as páginas que queremos que sejam exibidas no web-kiosk.
O script responsável por essa configuração é o “manage_kiosk.sh” que está localizado em “/usr/bin/manage_kiosk.sh” e contém a seguinte implementação:
#!/bin/sh
client=192.168.1.101
changescript=/usr/bin/change_midori_url.sh
REMOTE_ADS="
100;https://alteredqualia.com/canvasmol/#Penicillin
120;https://peterned.home.xs4all.nl/3d/
120;https://andrew-hoyer.com/experiments/walking/
120;https://ie.microsoft.com/testdrive/performance/fishbowl/
120;https://fff.cmiscm.com
"
LOCAL_VIDEOS="
134;file:///var/local/ads/html5video/video-yp1.html
134;file:///var/local/ads/html5video/multi-video.html
170;file:///var/local/ads/html5video/video-yp2.html
140;file:///var/local/ads/html5video/video-seagaul.html
63;file:///var/local/ads/html5video/video-bunny.html
193;file:///var/local/ads/html5video/video-linux1.html
62;file:///var/local/ads/www.shinydemos.com/hipster-dog/index.html
"
LOCAL_INTERACTIVE_ADS="
62;file:///var/local/ads/www.shinydemos.com/beach/index.html
32;file:///var/local/ads/www.shinydemos.com/inbox-attack/index.html
32;file:///var/local/ads/www.shinydemos.com/rock-piano/index.html
"
ADS=${REMOTE_ADS}
ADS=${LOCAL_VIDEOS}
#ADS=${LOCAL_INTERACTIVE_ADS}
for ad in ${ADS}
do
duration=`echo ${ad} | cut -d\; -f1 `
url=`echo ${ad} | sed "s/^[0-9]*;//"`
echo ${client} ${duration}Seconds ${url}
ssh -x root@${client} ${changescript} ${url}
sleep ${duration}
done
Vamos alterar o IP do web-kiosk na linha 3 e adicionar um comentário na linha 33 para que ele comande o web-kiosk a exibir páginas da internet.
De acordo com o nosso exemplo, o arquivo “manage_kiosk.sh” deverá ficar assim:
#!/bin/sh
client=192.168.0.101
changescript=/usr/bin/change_midori_url.sh
REMOTE_ADS="
100;https://alteredqualia.com/canvasmol/#Penicillin
120;https://peterned.home.xs4all.nl/3d/
120;https://andrew-hoyer.com/experiments/walking/
120;https://ie.microsoft.com/testdrive/performance/fishbowl/
120;https://fff.cmiscm.com
"
LOCAL_VIDEOS="
134;file:///var/local/ads/html5video/video-yp1.html
134;file:///var/local/ads/html5video/multi-video.html
170;file:///var/local/ads/html5video/video-yp2.html
140;file:///var/local/ads/html5video/video-seagaul.html
63;file:///var/local/ads/html5video/video-bunny.html
193;file:///var/local/ads/html5video/video-linux1.html
62;file:///var/local/ads/www.shinydemos.com/hipster-dog/index.html
"
LOCAL_INTERACTIVE_ADS="
62;file:///var/local/ads/www.shinydemos.com/beach/index.html
32;file:///var/local/ads/www.shinydemos.com/inbox-attack/index.html
32;file:///var/local/ads/www.shinydemos.com/rock-piano/index.html
"
ADS=${REMOTE_ADS}
#ADS=${LOCAL_VIDEOS}
#ADS=${LOCAL_INTERACTIVE_ADS}
for ad in ${ADS}
do
duration=`echo ${ad} | cut -d\; -f1 `
url=`echo ${ad} | sed "s/^[0-9]*;//"`
echo ${client} ${duration}Seconds ${url}
ssh -x root@${client} ${changescript} ${url}
sleep ${duration}
done
Note que a frente de cada URL há um número. Esse número representa o tempo em segundos que a página ficará sendo mostrada. Se quiser, você pode alterar esses valores, bem como as URLs.
Para comandarmos o web-kiosk basta executarmos o comando:
manage_kiosk.sh
Na primeira vez que esse comando for executado o ssh pedirá a confirmação que se deseja conectar ao dispositivo e isso não ocorrerá mais nas próximas vezes.
O que vem por aí
Na terceira e última parte da série veremos como customizar a imagem e inserir novos pacotes.
Saiba mais
Cozinhando com o Yocto Project
Desvendando Yocto Project – Primeiros passos
Beaglebone Black + Yocto Daisy (Versão 1.6)
Lançada Nova Versão 1.7 (dizzy) do Yocto Project
Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 1
Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 2
Desenvolvendo um Kiosk Interativo para a Beaglebone Black com Yocto – parte 3
Beaglebone Black + Qt Embedded + Yocto – parte 1
Beaglebone Black + Qt Embedded + Yocto – parte 2
Beaglebone Black + Qt5 + Yocto – parte 1
Beaglebone Black + Qt5 + Yocto – parte 2








