Differences

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

Link to this comparison view

pm:prj2026:ionut.otelea:andrei.prusacov [2026/05/27 08:47]
andrei.prusacov
pm:prj2026:ionut.otelea:andrei.prusacov [2026/05/27 08:48] (current)
andrei.prusacov
Line 114: Line 114:
 {{ :​pm:​prj2026:​ionut.otelea:​smartdogtracker_diagram_2.png?​direct&​600 |}} {{ :​pm:​prj2026:​ionut.otelea:​smartdogtracker_diagram_2.png?​direct&​600 |}}
  
-==== Implementare SIM808 ==== +====== Implementare SIM808 ​====== 
-Partea de implementare SIM808 este cea mai importanta proiectului. Conceptual nu este grea, modulul se bazeaza pe comunicare UART si este un simplu proces de a trimite comenzile ​potrivie ​si a citi corect raspunsurile pentru a active ​/ lua orice informatie necesara.+ 
 +Partea de implementare SIM808 este cea mai importanta ​proiectului. Conceptual nu este grea, modulul se bazeaza pe comunicare UART si este un simplu proces de a trimite comenzile ​potrivite ​si a citi corect raspunsurile pentru a activa ​/ lua orice informatie necesara. 
 Pentru abstractizare s-au folosit urmatoarele functii: Pentru abstractizare s-au folosit urmatoarele functii:
-  * ``setupSim()`` -> activeaza toate modulele sim-ului si configureaza setarile +  * ''​setupSim()'' ​-> activeaza toate modulele sim-ului si configureaza setarile 
-  * ``sendSIM808Command()`` -> trimite o comanda si asteapta ca aceasta sa fie primita +  * ''​sendSIM808Command()'' ​-> trimite o comanda si asteapta ca aceasta sa fie primita 
-  * ``httpGet()`` si ``httpPost()`` -> get si post generice +  * ''​httpGet()'' ​si ''​httpPost()'' ​-> GET si POST generice 
-  * ``sendHttpData()`` -> trimitem date intr-un feed adafruit +  * ''​sendHttpData()'' ​-> trimitem date intr-un feed Adafruit 
-  * ``getHttpDate()`` -> primit ​valoarea dintr-un feed adafruit +  * ''​getHttpDate()'' ​-> primeste ​valoarea dintr-un feed Adafruit 
-  * ``sendHttpLocation()`` -> trimitem ​locaita +  * ''​sendHttpLocation()'' ​-> trimitem ​locatia 
-  * ``sendSMS()`` -> trimite o alerta la un numar de telefon +  * ''​sendSMS()'' ​-> trimite o alerta la un numar de telefon
-+
-<note tip>Cand SIM808 asteapta raspunsuri de la web se foloseste ``yield()``,​ ``webTick()`` si ``updateBarking`` pentru a nu bloca restul "​firelor"​ de executie</​note>​ +
-<note warning>​Ideal comunicarea s-ar fi facut prin protocolul MQTT insa modelul meu de SIM808 este prea vechi si nu suporta acest protocol, asa ca am folosit HTTP ca fallback.</​note>​+
  
 +<note tip>
 +Cand SIM808 asteapta raspunsuri de la web se folosesc ''​yield()'',​ ''​webTick()''​ si ''​updateBarking''​ pentru a nu bloca restul "​firelor"​ de executie.
 +</​note>​
 +
 +<note warning>
 +Ideal comunicarea s-ar fi facut prin protocolul MQTT, insa modelul meu de SIM808 este prea vechi si nu suporta acest protocol, asa ca am folosit HTTP ca fallback.
 +</​note>​
 +
 +
 +====== Implementare ESP ======
 +
 +Implementarea din ''​main''​ este core-ul principal al acestui modul. Logica se bazeaza pe un sistem de stari si niste functii de update.
  
-==== Implementare ESP ==== 
-Implementarea din main este core-ul principal al acestui modul. Logica se bazeaza pe un sistem de stari si niste functii de update. 
 <code cpp> <code cpp>
 struct SystemState { struct SystemState {
Line 141: Line 150:
 }; };
 </​code>​ </​code>​
-In loop-ul principal exista cate o functie de update care verifica starea si bazat pe aceasta executa actiuni. De exemplu daca forceBuzzer este ``true``, la urmatorul update o sa fie activat buzzer-ul. In afara de asta exista o functi de ``pollCommands()`` care foloseste ``httpGet`` pe field-urile importante din adafruit si modifica starile bazat pe aceste informatii. 
  
-**Detalii extra despre implementare:** +In loop-ul principal exista cate o functie de update care verifica starea si, bazat pe aceasta, executa actiuni. De exemplu, daca ''​forceBuzzer''​ este ''​true'',​ la urmatorul update o sa fie activat buzzer-ul.  
-  * Sistemul de geofencing se bazeaza pe calculul distantei ​Harvesine ​fata de un punct central si activeaza alerta in cazul in care catelul este in afara zonei. + 
-  * Update-urile se fac la un interval variabil in functie de starea alertei +In afara de asta, exista o functie de ''​pollCommands()''​ care foloseste ''​httpGet()''​ pe field-urile importante din Adafruit si modifica starile bazat pe aceste informatii. 
-  * LED-ul va clipi intr-un pattern specific daca exista probleme + 
-  * Latratul este trimis sub formatul: A latrat de X ori cu intensitate maxima Y, deoarece ar fi foarte costisitor sa trimitem ​latrat incontinuu +===== Detalii extra despre implementare ​===== 
-  * Starea de activitate a catelului se bazeaza pe viteza returnata de SIM808.+  ​* **Sistemul de geofencing** se bazeaza pe calculul distantei ​Haversine ​fata de un punct central si activeaza alerta in cazul in care catelul este in afara zonei. 
 +  ​* **Update-urile** se fac la un interval variabil in functie de starea alertei. 
 +  ​* **LED-ul** va clipi intr-un pattern specific daca exista probleme. 
 +  ​* **Latratul** este trimis sub formatul: ​"A latrat de X ori cu intensitate maxima Y", deoarece ar fi foarte costisitor sa trimitem ​date in mod continuu. 
 +  ​* **Starea de activitate** a catelului se bazeaza pe viteza returnata de SIM808.
  
-<note tip>​Exista si o functie de webServer pentru serverul de debug, dar nu face parte din functionalitatea ​importanta ​a proiectului.</​note>​+<note tip> 
 +Exista si o functie de ''​webServer'' ​pentru serverul de debug, dar nu face parte din functionalitatea ​principala ​a proiectului. 
 +</​note>​
  
 ==== Site Monitorizare ==== ==== Site Monitorizare ====
pm/prj2026/ionut.otelea/andrei.prusacov.txt · Last modified: 2026/05/27 08:48 by andrei.prusacov
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