Projeto: LOGIN / GPIO - 2021 2S
Equipe: Eric Kazuichi Kaneda, José Barreto dos Santos Junior
-----------------------------------------------------------------
- Execução do projeto:
-----------------------------------------------------------------
1: Executar as aulas de "aula01" a "aula12" na Url: http://www.lt38c.hturbo.com

2: Transferir o conteúdo da pasta "gpio" para a para /var/www/html/gpio no Raspberry

2.1: Baixar todos os arquivos necessários: css, imagens, html, etc.

3: Com a Raspberry conectada na mesma rede do computador e sabendo o IP da Raspberry deverá ser aberto no navegador o endereço: 
- http://{{ip_rasp}}/gpio/login.php

4: Em seguinda abrir o link de login em uma nova aba: 
- login.php
ou acessando a seguinte URL:
- http://{{ip_rasp}}/gpio/login.php

5: Agora pode executar acessar a tela de login (login.php), realizar a autenticação com as credênciais da Universidade e após isso será redirecionado para a tela inicial (bemvindo.php). Onde o usuário poderá selecionar entre acionar pinos ou realizar a leitura dos pinos.
------------------------------------------------------------------
- Conteúdo adicional:
------------------------------------------------------------------
REQUEST: METHOD: POST
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/auth
- BODY: Tipo: (RAW - JSON)
{
	"username": "ra",
	"password": "senha"
}
RESPONSE: 
(exemplo que uma variave recebe o response) $objetoJson =
{
    "ativo": true,
    "authTipo": "ALUNO",
    "docente": false,
    "name": "1514750",
    "roles": [
        "public",
        "portalAluno"
    ],
    "token": "T1/5BqvH0jk62avP9lh4ePrnN75fnNxEyl/0SDChBgk=",
    "pessNomeVc": "1514750",
    "pessCodDvNr": 1514750,
    "serverName": "webapp.utfpr.edu.br"
}
------------------------------------------------
- A partir de agora, será preciso utilizar o parâmetro "token", que está dentro do objeto de retorno (RESPONSE) da requisição auth (POST), e desta forma, podemos realizar todas as próximas requisições (GET)
- Próximo passo: adicionar o token ao Header para realizar as requisições:
(Exemplo)
$token = objetoJson->{'token'};
$bearer = 'Bearer ' . $token;
- Adicionar o token ao seguinte parâmetro do Header:
$auth = 'Authorization: ' . $bearer;
$headers = array(
    "Accept: application/json",
    $auth,
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
----------------METHOD: GET---------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/dados
- Response:
{
    "pessNomeVc": "Jose Barreto Dos Santos Junior",
    "alunEmailAlternVc": "juniorbarreto2009@hotmail.com",
    "alunemail": "jbarretosantosjr@gmail.com",
    "emInstAluemailVc": "josebarreto@alunos.utfpr.edu.br",
    "estCivCodNr": 1,
    "estCivDescrVc": "Solteiro(a)",
    "login": "a1514750",
    "matrbloqstatusNr": 0,
    "paisNacioVc": "Brasileira",
    "pessMaeVc": "Edna Aparecida Firmiano Dos Santos",
    "pessNascDt": 810874800000,
    "pessPaiVc": "Jose Barreto Dos Santos",
    "pessSexoCh": "M",
    (...)
}
------------------------------------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/unidades
- Response:
[{
        "unidCodNr": 10,
        "unidNomeVc": "Apucarana",
        "unidEnderecoVc": "Rua Marcílio Dias, 635",
        "unidAbrevVc": "CAMPUS-AP",
        "unidBairroVc": "Jardim Paraíso",
        "unidfonevc": "(43) 3162-1200",
        "unidcepvc": "86812-460",
        "unidcidadevc": "Apucarana",
        "ufcodch": "PR",
        "unidsiglavc": "AP",
        "unidlatitudenr": "-23,551392900000",
        "unidlongitudenr": "-51,428440000000",
        "ultimaModificacao": "2017-04-27 07:45:45.5427"
    },
    { ... }
]
------------------------------------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/rc+w+t/horario
- Response:
[{
        "turmIdVc": "y5imck",
        "discCodVelhoVc": "LT37C",
        "discNomeVc": "Fundamentos De Comunicações",
        "turmCodVc": "IL7A",
        "turmAtivaNr": 1,
        "turmVagastotNr": 44,
        "turmSolicitaramNr": 0,
        "turmVagasCalNr": 0,
        "turmCalourosCh": "0",
        "discChorPeriodoNr": 6,
        "horarios": [
            {
                "horaDescrVc": "3T4",
                "ambienteNomeVc": "B005"
            },
        { ... }
}]
------------------------------------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/rc+w+t/boletim
- Response:
[{
        "turmIdVc": "ejczef",
        "discCodVelhoVc": "LT30A",
        "discNomeVc": "Viabilidade Econômica E Financeira De Projetos",
        "turmCodVc": "IL10A",
        "modAvalCodNr": 1,
        "siHiCodNr": 1,
        "tpCurCodNr": 2,
        "siHiDescrVc": "Cursando",
        "faltas": 0,
        "aulasDadas": 12,
        "aulasPrevistas": 20,
        "mediaNotaTurma": "7.3",
        "avaliacoes": []
    },
    { ... }
]
------------------------------------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/rc+w+t/matriz
- Response:
[{
        "discCodvelhoVc": "CD3X1",
        "discNomeVc": "Calculo Diferencial E Integral 1",
        "discAbrevVc": "CALCULO DIF INT 1",
        "digrperiodoNr": 1,
        "codconjoptNr": 0,
        "ultimaModificacao": "2018-10-18 11:34:34.503132",
        "preRequisito": [],
        "equivalentes": [
            {
                "discCodvelhoVc": "CALC30N1",
                "discNomeVc": "Calculo Diferencial E Integral 1",
                "discAbrevVc": "CALCULO DF 1",
                "grupoEquivalencia": null,
                "dataCad": 1352920976000
            },
     { ... }       
]
------------------------------------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/rc+w+t/historico
- Response:
[{
        "turmIdVc": "wdxhpx",
        "discCodVelhoVc": "FS3X1",
        "discNomeVc": "Fisica 1",
        "turmCodVc": "IL1A",
        "unidCodNr": 3,
        "unidNomeVc": "Campo Mourão",
        "discChorTotNr": 75,
        "digrPeriodoNr": 1,
        "histanonr": 2015,
        "histperanonr": 2,
        "histnotanr": "8.4",
        "histfreqnr": "100",
	{ ... }       
]
------------------------------------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/fotoCracha
- Response:
/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABsSFBcUERsXFhceHBsgKEIrKCUlKFE6PTBCYFVlZF9VXVtqeJmBanGQc1tdhbWGkJ6jq62rZ4C8ybqmx5moq6QBHB4eKCMoTisrTqRuXW6kpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpP/AABEIAXABcAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5   (....)
------------------------------------------------
- URL:
https://webapp.utfpr.edu.br/portalAluno/ws/rc+w+t/horario
- Response:
[{
        "turmIdVc": "y5imck",
        "discCodVelhoVc": "LT37C",
        "discNomeVc": "Fundamentos De Comunicações",
        "turmCodVc": "IL7A",
        "turmAtivaNr": 1,
        "turmVagastotNr": 44,
        "turmSolicitaramNr": 0,
        "turmVagasCalNr": 0,
        "turmCalourosCh": "0",
        "discChorPeriodoNr": 6,
        "horarios": [{
        { ... }  
]
-------------------------------------------------
- Só é possivel realizar requisições via PHP se estiver instalado no servidor ou rapsberry, o pacote chamado cURL, que pode ser instalado da seguinte forma:
/usr/bin/apt-get install php php-curl

- Para acesso remoto, segue abaixo tutorial para instalar na rapsberry o ngrok, onde é capaz de realizar uma conexão via tunel com o servidor local. Para mais duvidas, segue documentação: https://ngrok.com/docs

wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip

unzip ngrok-stable-linux-arm.zip

./ngrok --version

./ngrok http 80
--------------------------------------------------
Referência:
https://ngrok.com/docs

https://reqbin.com/req/c-dwjszac0/curl-post-json-example

https://stackoverflow.com/questions/2138527/php-curl-http-post-sample-code

https://medium.com/@gaelollivier/connect-to-your-raspberry-pi-from-anywhere-using-ngrok-801e9fd1dd46
