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:05]
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 27: Line 27:
 In final, prin inner join si sume cumulative ajungem la 2 vectori crescatori si de dimensiuni egale. In final, prin inner join si sume cumulative ajungem la 2 vectori crescatori si de dimensiuni egale.
  
 +[[https://​github.com/​CSBonLaboratory/​MagneticAuth/​blob/​main/​Pearson.flux | Pearson.flux]] este scriptul cu care calculam acest coeficient.
  
-===== Hardware Description =====+1. Pornim de la citirile senzorului aflate in coloana _values din "​MagneticAttempts"​ bucket si agregate ca sume partiale la fiecare 100 ms
  
-Statia meteo primeste energia de la baterii lithium ion incarcate de la soare, informatia de la senzori si posteaza prin internet rezultateleAm pus microcontroller-ul in sleep mode majoritatea timpuluipentru ca in mod realistic nu se schimba temperatura atat de mult in cateva secunde. Pana si 30 secunde s-ar putea sa fie prea putin timp intre esantionariAm pus tot montajul electric intr-o cutie in care am dat gauri in zona senzorilor pentru ​primi aer de afara si am izolat ​cat am putut de bine montajul de influenta soareluiAm ridicat sistemul ​de la sol ca sa nu faca contact termic ​cu suprafata pe care sta, am acoperit cu folie de staniol ​toate suprafetele care stau la soare ca sa nu ajungem la un fel de sera si am inclinat panoul solar intr-un unghi ca sa fie mai eficienta capturarea energiei ​de la soareMult timp a fost petrecut in testarea sistemului si sa ma asigur ​ca fiecare componenta functioneaza corect (ca bateriile se incarca de la soare, ca supravietuieste pe balcon fara sa moara etc.).+{{:​iothings:​proiecte:​2022:​magnetic_att_init.jpg?​750|}} 
 + 
 +2. Eliminam din coloanele aditionaleaplicam 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 ​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 6Am obtinut un tabel cu toti parametrii necesari ​ca sa calculam coeficientul. 
 + 
 +{{:​iothings:​proiecte:​2022:​pearson_components.jpg?​750|}} 
 + 
 +  
 + 
 + 
 +===== Descriere hardware =====
  
 Componente necesare: Componente necesare:
   * Lolin32 microcontroller esp32   * Lolin32 microcontroller esp32
-  * Panou solar 3W +  * breadboard 
-  * Doua baterii lithium ion ICR18650 3.7V de 2600mAh +  * fire
-  * Lithium ion battery charger TP4056 +
-  * Senzor temperatura si presiune atmosferica BMP280 +
-  * Senzor de temperatura si umiditate DHT11+
  
-{{:​iothings:​proiecte:​2022sric:​whatsapp_image_2023-06-02_at_02.09.32.jpeg?​600|}} 
-{{:​iothings:​proiecte:​2022sric:​whatsapp_image_2023-06-02_at_02.09.26.jpeg?​600|}} 
  
-===== Software Description ​=====+===== Descriere software ​=====
  
-Pentru ​ingerarea ​datelor folosim InfluxDB ​si pentru afisare ​folosim ​Grafana.+Pentru ​stocarea, procesarea si afisarea ​datelor folosim InfluxDB
 +Pentru placuta ​folosim ​2 componente software: 
 + 
 +1. [[https://​github.com/​CSBonLaboratory/​MagneticAuth/​blob/​main/​magnetic_auth.ino | magnetic_auth.ino]] : componenta principala care e responsabila doar cu conectarea la reteaua WiFi, sincronizarea temporala si citirea de la senzorul Hall atunci cand pe seriala este data o comanda de start a autentificarii.
  
-Modul de functionare al proiectului poate fi descris in pseudocod in felul urmator: 
 <​code>​ <​code>​
-init_wifi() +void doUntilSerialInput(void(*task_functional)(void*), void *task_param){ 
-init_influx() +  while(1){
-init_sensors()+
  
-while true: +    if(task_functional != NULL){ 
-      ​read_sensors() +      ​task_functional(task_param)
-      ​send_influxDB() +    } 
-      ​hibernate(30s)+ 
 +    if(Serial.available() > 0){ 
 +      ​String response = Serial.readString(); 
 +      ​response.trim()
 +      if(response == "​y"​){ 
 +        return; 
 +      } 
 +    } 
 +  } 
 +}
 </​code>​ </​code>​
 +"​doUntilSerial"​ este functia ce permite executia unei actiuni (data ca pointer de functie/​functionala - in cazul nostru task_functional),​ actiune ce accepta orice parametru (in cazul nostru task_param).
  
-In grafana folosim flux pentru ​querry-uri din influx:+Concret ​pentru ​a citi inregistrati de la senzorul Hall se apeleaza astfel <​code>​ doUntilSerialInput(sampleHallSensor,​ NULL) </​code>​
  
-<​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. 
-from(bucket:​ "esp") + 
-  |> range(start:​ -1d+partea centrala este reprezentata de construirea query-ului de Flux care sa verifice daca id-ul dat apare sau nu in bucket-ul "​Signatures"​. 
-  |> filter(fn: (r) => + 
-    ​r._measurement == "wifi_status" and ( +Prezinta urmatorea interfata:​ 
-      r._field ​== "dht temp" ​or +<​code>​int userExists(int id){ 
-      ​r._field ​== "mbe temp+  ​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>​ </​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.1685721906.txt.gz · Last modified: 2023/06/02 19:05 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