lunedì 6 gennaio 2014

Rilevatore presenze - parte 4 - il codice (client)

Nel precedente post ho mostrato le porzioni principali del codice su Arduino.
Per effettuare la chiamata al server, viene invocata una chiamata HTTP in modalità GET, ovvero passando i parametri direttamente in query string.

E' previsto un unico tipo di chiamata, usato indifferentemente sia per l'entrata che per l'uscita.
Si noti che non è il client arduino a decidere se si tratta di una timbratura di entrata o di uscita, bensì il server secondo delle logiche applicative ben precise, dovute alla sequenza di chiamate.

La sintassi della chiamata è la seguente:

http://SERVER/presenze.aspx?code=CODICERFID&dataora=DATAORA

dove SERVER è ovviamente l'ip del vostro web server, presenze.aspx il nome della pagina aspx invocata, CODICERFID il codice della tag rfid rilevata e DATAORA la data/ora in formato yyyymmddhhMMss letta dalla rtc shield montata su Arduino.

La risposta del server è una stringa in questo formato
  • XyyyymmddhhMMss 
dove:
  • X: vale E per entrata, U per uscita
  • yyyymmddhhMMss :data/ora del server

Il valore X serve per determinare il messaggio da mostrare all'utente quale conferma della timbratura.


Il valore di data ed ora del server, serve invece ad aggiornare l'ora sull'rtc shield di Arduino. Questa operazione di aggiornamento non avviene ad ogni timbratura, ma unicamente sull'Uscita di una tag rfid utilizzata dall'amministratore del sistema, in modo da poter periodicamente correggere l'ora ( la mia rtc shield non è precisissima, inoltre non tiene conto del cambio tra ora legale e ora solare).

Questo spiega la parte di codice dove oltre a controllare se il movimento è di Uscita, viene controllato se il codice è quello dell'rfid in dotazione all'amministratore (codice: 2c4174d4cd)
[...]
if (returnWebStr.substring(0,1) == "U" )
    {
          showMessage("Registrazione","USCITA","");
          beep();
          beep();
          if (mynum=="2c4174d4cd")
[...]

Puoi scaricare lo sketch completo qui



1 commento:

  1. Ciao il link con lo sketch completo non funziona, potresti riattivarlo ? ti ringrazio

    RispondiElimina