• Nenhum resultado encontrado

4.2 Implementação do modelo cliente-servidor na plataforma computacional

4.2.6 Servidor

O esquema de funcionamento do servidor desenvolvido no âmbito desta dissertação, pode ser observado na figura 4.12. Nesta é visível que, após servidor ser iniciado, existe a verificação do estado da bancada de laboratório, isto é, se está operacional ou, se por algum motivo, está inoperacional. Esta verificação, à semelhança de todos os acessos feitos à base de dados, é efetuada através de uma query SQL embebida em C++ enviada à base de dados, sendo que mediante o resultado da query, o servidor conseguirá saber o estado da bancada.

Se o estado for inoperacional, será envida uma trama ao cliente atuadores de modo a ligar o led vermelho e fica a aguardar o recebimento de uma trama. Quando uma trama é recebida, o ser-

vidor verificará se a trama é proveniente do cliente atuador responsável por desligar a plataforma computacional da bancada laboratorial. No caso de ser, o Raspberry Pi é desligado, no caso de não ser, o servidor ignora o conteúdo da trama recebida e continua a receber tramas, até ser desligado. No entanto, se o estado da bancada for operacional, o resto das operações efetuadas pelo servidor, serão descritas abaixo.

Quando uma trama é recebida, o servidor divide-a nas suas duas componentes: identificador e informação. Deste modo, o servidor consegue saber qual o tipo de informação recebida devido ao identificador, tratando-a de forma conveniente.

Se o identificador recebido corresponder a um cliente leitor NFC, o servidor efetuará um, de dois, procedimentos:

• caso exista um login efetuado, o servidor não irá utilizar o UID NFC recebido para nada. O servidor tem uma variável auxiliar que lhe indica se existe um login ativo (’1’) ou não (’0’). • caso não exista um login efetuado, o servidor irá utilizar o UID NFC recebido para verificar

se é conhecido pela base de dados;

1. se for conhecido irá verificar se existe alguma reserva efetuada para aquela hora na bancada de laboratório em que se está a autenticar;

(a) se existir uma reserva naquela hora é efetuado o login e o servidor enviará quatro tramas para o cliente atuadores, mudando o estado dos led’s: ativando o led verde e o led amarelo 1 e desativando o led amarelo 0 e vermelho;

(b) se não existir uma reserva naquela hora, o servidor aguardará até receber uma nova trama, e enviará duas tramas ao cliente atuadores, uma para ligar o led ama- relo 0 e outra para desligar o led vermelho;

2. se não foi conhecido, o servidor aguardará até receber uma nova trama com um novo identificador NFC, e enviará duas tramas ao cliente atuadores, uma para ligar o led amarelo 0 e outra para ligar o led vermelho;

No caso do identificador recebido pelo servidor indicar que se trata de um cliente leitor RFID, este irá:

• se não existir um login efetuado, continuar a receber tramas, não guardando o UID RFID recebido.

• se existir um login efetuado na bancada, o servidor irá verificar se o UID RFID pertence a algum dos objetos registados na base de dados. Para casos em que pertença, o UID RFID é registado na base de dados, porque o objeto é conhecido pelo sistema, caso contrário este não é registado na base de dados. Desta forma, é criado um histórico dos objetos utilizados em cada operação numa bancada. No caso do servidor receber duas, ou mais, vezes o mesmo UID RFID de um objeto conhecido, este só será registado uma vez na base de dados. Por outro lado, quando o servidor deteta que recebeu um identificador correspondente a um dos botões irá agir em conformidade:

• se recebeu uma trama proveniente do botão shutdown irá registar o logout do utilizador, e desligar o sistema de seguida.

– e existir um colaborador com login efetuado: irá registar o logout do utilizador, e enviar duas tramas para o cliente atuadores por forma a ligar os led’s verde e amarelo 0;

– se não existir um colaborador com login efetuado, irá aguardar até receber uma nova trama.

No caso de um utilizador exceder o tempo da reserva que tinha feito para a bancada, o ser- vidor, que executa um algoritmo em ciclo infinito, poderá efetuar uma das duas situações abaixo descritas:

• logout automático por parte do servidor, registando-o na base de dados e informando o colaborador através do envio de uma trama para o cliente atuadores, ativando o led vermelho e o led verde, sendo que o led amarelo 1 será desativado.

• informar o colaborador que o tempo da sua reserva acabou, através do envio de uma trama para o cliente atuadores, ativando o led vermelho. Neste caso, o colaborador saberá que o seu tempo de reserva da bancada expirou pois tem o led verde, amarelo 1 e vermelho ligados. No entanto, poderá continuar a utilizar a bancada e registar objetos, até que seja detetada uma reserva para o minuto seguinte, sendo que aí o servidor efetuará o descrito acima no ponto 1.

Por fim, se o servidor receber uma trama com o identificador cliente atuadores, situação que ocorre apenas quando todo o sistema é ligado, o servidor irá enviar uma trama para o cliente atua- dores por forma a ligar os led’s verde e vermelho, indicando assim que o sistema está inicializado.

Figura 4.12: Esquema ilustrativo do funcionamento do servidor

Como já referido, o servidor acede sempre à base de dados através do envio de query’s SQL embebidas em C++. Após a ligação à base de dados e processamento da query, a base de dados envia um query de resposta, podendo o servidor continuar o seu normal funcionamento de acordo com o ilustrado na figura 4.12.

Na figura 4.13, podem-se observar os leitores, sensores e atuadores conetados ao Raspberry Pi. Esta representação ilustra uma bancada de laboratório, sendo que os números a observar na figura representam:

1. led’s utilizados para simular os atuadores; 2. botões que permitiram simular os sensores; 3. leitor NFC e cartões NFC;

4. leitor RFID e etiquetas RFID;

Figura 4.13: Representação ilustrativa de bancada laboratorial com leitores, sensores e atuadores

4.3

Interface de gestão e histórico da utilização das bancadas de la-

Documentos relacionados