Configurando totem no NovoSGA com Ubuntu 16.04.7 LTS + Epson TM T20

ISO (https://releases.ubuntu.com/16.04/ubuntu-16.04.7-desktop-amd64.iso)

HOSTNAMEIP
srvTOTEM192.168.0.145
srvNovoSGA192.168.0.243:8765
print243192.168.254.243

Atualizando o sistema e instalando os pacotes necessários

$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt-get install figlet curl dconf-editor ssh vim -y && sudo apt-get clean

Na mensagem de atualização do sistema clique em “Não atualize”

Desativar a ferramenta de relatórios de falhas Ubuntu

$ gedit /etc/default/apport
# set this to 0 to disable apport, or to 1 to enable it
# you can temporarily override this with
# sudo service apport start force_start=1
enabled=0

Instalação do TeamViewer (versão 13)

$ wget https://download.teamviewer.com/download/linux/version_13x/teamviewer_amd64.deb
$ sudo dpkg -i teamviewer_amd64.deb
$ sudo apt-get -f install
hold é usado para marcar um pacote como retido, o que vai prevenir que o pacote seja automaticamente instalado, atualizado ou removido.
$ sudo apt-mark hold teamviewer
$ sudo apt-mark hold firefox

Instalando a impressora Epson TM T20

Download do driver AQUI ou em: https://download.epson-biz.com/modules/pos/index.php?page=single_soft&cid=5012&pcat=3&pid=37

$ wget https://blog.joserodriguesfilho.com/wp-content/uploads/2021/05/tmx-cups-2.0.3.0.tar.gz && tar -vzxf tmx-cups-2.0.3.0.tar.gz && cd tmx-cups/
$ sudo ./install.sh
install.sh  for "TM/BA Series Printer Driver for Linux"  Ver.2.0.3.0
  Copyright (C) Seiko Epson Corporation 2010-2016. All rights reserved.

Checking for incompatible packages...

Please select your distribution.
1.RHEL 6.4 x86(32bit)
2.RHEL 6.4 x86_64(64bit)
3.RHEL 6.5 x86(32bit)
4.RHEL 6.5 x86_64(64bit)
5.Ubuntu 12.04 x86(32bit)
6.Ubuntu 12.04 x86_64(64bit)
7.Ubuntu 14.04 x86(32bit)
8.Ubuntu 14.04 x86_64(64bit)
9.Ubuntu 9.04 x86(32bit)
10.Ubuntu 9.04 x86_64(64bit)
11.openSUSE 11.1 x86(32bit)
12.openSUSE 11.1 x86_64(64bit)
13.openSUSE 12.2 x86(32bit)
14.openSUSE 12.2 x86_64(64bit)
15.openSUSE 13.1 x86(32bit)
16.openSUSE 13.1 x86_64(64bit)
Select number [0(cancel)/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16]? 8
  • Digite 8 e depois Enter para finalizar

Faça a instalação da impressora

Altere a “Media Size” conforme abaixo

Ajustes de impressão no Firefox, após configurado o sistema faça a impressão de uma senha para abrir as configurações da impressora.

Bloqueie o acesso a configuração com a tecla Q

Ajustes no Firefox

$ firefox about:config
print.show_print_progress | false
print.always_print_silent | true
mousewheel.with_control.action | 0
zoom.maxPercent | 100
zoom.minPercent | 100
browser.sessionstore.resume_from_crash | false

Ajustes do sistema

Ajustes da tela

# sudo dconf-editor

Script de inicialização

$ sudo vim /etc/hosts
$ 192.168.0.243   Servidor
$ sudo mkdir -p /opt/totem
$ sudo vim /opt/totem/start.sh
#/usr/bin/env bash
hosts="
Servidor
"
for i in $hosts
do
    sleep 30 | echo "# Inicializando sistema aguarde..."
    echo "# Verificando: $i"
    if ping -qc 10 $i
    then
        echo "# $i........ [OK]"
        sleep 5
        firefox --kiosk http://192.168.0.243:8765/totem
        exit
    else
        echo "# Contate suporte, sem comunicação com o $i. Desligando..."
        sleep 40
        shutdown -h now
    fi
done | zenity --title "PMFR - Totem" --progress --no-cancel --pulsate --auto-close --auto-kill --width=450 --height=100
$ sudo chmod +x /opt/totem/start.sh && sudo chown joserf /opt/totem/start.sh

Avisos via Telegram (impressora off-line)

$ sudo vim /opt/totem/print.sh
#!/bin/bash
TOKEN=""
CHAT_ID=""
TOTEM='Totem Paço municipal'
PRINT=print023
MSG_SUCCESS="$PRINT '$TOTEM' voltou a responder ao ping em:"
MSG_ERROR="$PRINT '$TOTEM' parou de responder ao ping em:"
IP=192.168.254.23
FILE=lock-file
NOW=$(date +"%d/%m/%Y %H:%M:%S")
        ping -qc 5 $IP > /dev/null
if [ $? -ne 0 ] && [ ! -f $FILE ];then
        echo "$PRINT '$TOTEM' parou de responder ao ping em: $NOW" | curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d "chat_id=$CHAT_ID&text=$MSG_ERROR $NOW" >/dev/null 2>&1
        touch $FILE
        exit
else
        ping -qc 5 $IP > /dev/null
        if [ $? -ne 0 ] && [ -f $FILE ];then
        echo "$PRINT '$TOTEM' continua sem responder ao ping, o aviso via Telegram já foi disparado, não enviar novamente..."
        exit
else
	ping -qc 5 $IP > /dev/null
if [ $? -eq 0 ] && [ -e $FILE ];then
#Calculando o tempo total de inatividade..
        echo "A impressora respondeu ao ping $NOW" | curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d "chat_id=$CHAT_ID&text=$MSG_SUCCESS $NOW" >/dev/null 2>&1
        rm -rf $FILE
else
        echo "A impressora está respondendo ao ping, o aviso via Telegram já foi disparado, não enviar novamente..."
fi
        fi
fi
$ sudo chmod +x /opt/totem/print.sh

Desligamento automático

$ sudo vim /etc/crontab
# Desligamento automático (16:15)
15 16 * * * root shutdown -h 1
# Monitora a impressora por ping
* * * * 1-5 root cd /opt/totem && sh print.sh >/dev/null 2>&1

Inicialização

Para finalizar reinicie o totem, não esqueça de colocar uma imagem de fundo do seu gosto 🙂

*Update 16/01/2024

#!/bin/sh

# Configurações dos Totens
IP_P="192.168.0.108"
MAC_P="00:e0:4b:41:00:69"

IP_F="192.168.0.145"
MAC_F="70:85:c2:d8:27:c0"

# Função para enviar mensagem
enviar_mensagem() {
  local mensagem="$1"
  wget -qO- "http://192.168.0.243:3001/SendMessage?token=&numero=55119&mensagem=$mensagem" >/dev/null 2>&1
}

# Verifica o número de argumentos
if [ $# -ne 1 ]; then
  echo "Uso: $(basename "$0") [-p Paço Municipal] | [-f Franco Fácil] [-h Versão]"
  exit 1
fi

# Realiza a ação com base no argumento fornecido
case "$1" in
  -p|-P)
    wakeonlan "$MAC_P"
    sleep 30
    ping -c5 "$IP_P" > /dev/null
    if [ $? -eq 0 ]; then
      enviar_mensagem "Totem Paço Municipal inicializado com sucesso!"
      exit 0
    else
      enviar_mensagem "Erro na tentativa de inicialização do Totem Paço Municipal!"
    fi
    ;;
  -f|-F)
    wakeonlan "$MAC_F"
    sleep 30
    ping -c5 "$IP_F" > /dev/null
    if [ $? -eq 0 ]; then
      enviar_mensagem "Totem Franco Fácil inicializado com sucesso!"
      exit 0
    else
      enviar_mensagem "Erro na tentativa de inicialização do Totem Franco Fácil!"
    fi
    ;;
  -h|-H)
    echo "José Rodrigues Filho"
    echo "Wake on lan Totem | V1.0"
    ;;
  *)
    echo "Opção inválida, use: [-p Paço Municipal] | [-f Franco Fácil] [-h Versão]"
    exit 1
    ;;
esac