Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iothings:proiecte:2022:magneticauth [2023/06/02 19:36]
carol.bontas [Cum comparam semnaturile ?]
iothings:proiecte:2022:magneticauth [2023/06/02 20:09] (current)
carol.bontas
Line 3: Line 3:
 Autor: Carol-Sebastian Bontas SRIC1 Autor: Carol-Sebastian Bontas SRIC1
  
-===== Project Description ​=====+===== Descriere proiect ​=====
  
 Magnetic Authentication este o forma de autentificare folosind un magnet ce interactioneaza cu senzorul Hall integrat in ESP32. Fiecare utilizator are un id unic introdus de la tastatura si citit de ESP32. Magnetic Authentication este o forma de autentificare folosind un magnet ce interactioneaza cu senzorul Hall integrat in ESP32. Fiecare utilizator are un id unic introdus de la tastatura si citit de ESP32.
Line 29: Line 29:
 [[https://​github.com/​CSBonLaboratory/​MagneticAuth/​blob/​main/​Pearson.flux | Pearson.flux]] este scriptul cu care calculam acest coeficient. [[https://​github.com/​CSBonLaboratory/​MagneticAuth/​blob/​main/​Pearson.flux | Pearson.flux]] este scriptul cu care calculam acest coeficient.
  
 +1. Pornim de la citirile senzorului aflate in coloana _values din "​MagneticAttempts"​ bucket si agregate ca sume partiale la fiecare 100 ms
  
-===== Hardware Description ​=====+{{:​iothings:​proiecte:​2022:​magnetic_att_init.jpg?​750|}} 
 + 
 +2. Eliminam din coloanele aditionale, aplicam o functie de suma cumulata pe coloana cu citiri ale senzorului si adaugam o noua coloana ce numeroteaza randul (o sa fie folositoare atunci cand facem inner-join). 
 + 
 +{{:​iothings:​proiecte:​2022:​magnetic_att_sum_final.jpg?​750|}} 
 + 
 +3. Se aplica aceeasi pasi 1 si 2 dar pentru citirile din "​Signature"​ bucket 
 + 
 +4. Se face inner-join pe cele 2 tabele de sume cumulative folosind coloana de numerotare a randului de la pasul 2 si se calculeaza patratele sumelor cumulative din acelasi bucket cat si produsele sumelor cumulative din buckets diferite. 
 + 
 +{{:​iothings:​proiecte:​2022:​sumstable_joined_mapped.jpg?​750|}} 
 + 
 +5. Facem suma fiecarei coloane de patrate si produse (exemplu din poza ar fi un tabel ce contine suma patratelor sumelor partiale) 
 + 
 +{{:​iothings:​proiecte:​2022:​one_join_table.jpg?​750|}} 
 + 
 +6. Repetam pasul 5 pentru toate coloanele din tabelul de la pasul 4. 
 + 
 +7. Facem un inner-join cu toate tabelele de la pasul 6. Am obtinut un tabel cu toti parametrii necesari ca sa calculam coeficientul. 
 + 
 +{{:​iothings:​proiecte:​2022:​pearson_components.jpg?​750|}} 
 + 
 +  
 + 
 + 
 +===== Descriere hardware ​=====
  
 Componente necesare: Componente necesare:
Line 38: Line 64:
  
  
-===== Software Description ​=====+===== Descriere software ​=====
  
 Pentru stocarea, procesarea si afisarea datelor folosim InfluxDB. Pentru stocarea, procesarea si afisarea datelor folosim InfluxDB.
Line 67: Line 93:
 Concret pentru a citi inregistrati de la senzorul Hall se apeleaza astfel <​code>​ doUntilSerialInput(sampleHallSensor,​ NULL) </​code>​ Concret pentru a citi inregistrati de la senzorul Hall se apeleaza astfel <​code>​ doUntilSerialInput(sampleHallSensor,​ NULL) </​code>​
  
 +2. [[https://​github.com/​CSBonLaboratory/​MagneticAuth/​blob/​main/​magnetic_influx.cpp | magnetic_influx.cpp]] este o componenta auxiliara ce se ocupa exolicit cu interactiunea cu InfluxDB.
 +
 +partea centrala este reprezentata de construirea query-ului de Flux care sa verifice daca id-ul dat apare sau nu in bucket-ul "​Signatures"​.
 +
 +Prezinta urmatorea interfata:
 +<​code>​int userExists(int id){
 +  String existQuery = String("​from(bucket:​ \""​) + String(BUCKET_USERS) + String("​\"​)"​);​
 +  existQuery += String("​|>​ range(start:​ 2021-05-22T23:​30:​00Z)"​);​
 +  existQuery += String("​|>​ filter(fn: (r) => r._measurement == \""​) + String(MEASUREMENT) + String("​\"​ and r.id == \""​) + String(id) + String("​\"​)"​); ​
 +  existQuery += String("​|>​ count()"​);​
 +
 +  Serial.println(existQuery);​
 +  int userFound = 0;
 +  FluxQueryResult result = clients[USERS_INDEX].query(existQuery);​
 +
 +  while(result.next()){
 +    if(result.getValueByName("​_value"​).getLong() > 0){
 +      Serial.println("​User was registered in the past"​);​
 +      userFound = 1;
 +    }
 +  }
 +
 +  if(result.getError() != ""​){
 +    Serial.print("​Query result error: ");
 +    Serial.println(result.getError());​
 +    return -1;
 +  }
 +
 +  Serial.print("​User id");
 +  Serial.println(id);​
 +  Serial.println("​ is available."​);​
 +  result.close();​
 +  return userFound;
 +
 +}
 +</​code>​
  
-===== InfluxDB ===== 
-{{:​iothings:​proiecte:​2022sric:​screenshot_5.png?​800|}} 
  
-===== Grafana ===== 
-{{:​iothings:​proiecte:​2022sric:​screenshot_4.png?​800|}} 
  
 ===== Bibliografie ===== ===== Bibliografie =====
-  * https://randomnerdtutorials.com/​esp32-influxdb/​ +  * https://www.wallstreetmojo.com/pearson-correlation-coefficient
-  * https://​randomnerdtutorials.com/esp32-web-server-with-bme280-mini-weather-station+  * https://github.com/tobiasschuerg/InfluxDB-Client-for-Arduino
-  * https://megma.ma/wp-content/​uploads/​2021/​08/Wemos-ESP32-Lolin32-Board-BOOK-ENGLISH.pdf +
-  * https://​www.mischianti.org/​wp-content/​uploads/​2020/​11/​ESP32-WeMos-LOLIN32-pinout-mischianti.png+
iothings/proiecte/2022/magneticauth.1685723795.txt.gz · Last modified: 2023/06/02 19:36 by carol.bontas
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0