1

Téma: Počítadlo zákazníků

zdravím všechny,
pomocí SDS a dvou pohybových čidel Jablotron JS-20 jsme za cca 2.000 korun sestrojili poměrně přesné počítadlo zákazníků do prodejny.

Jak to funguje:

- Každé čidlo je umístěno na jedné straně dveří. Při aktivaci jednoho čidla se čeká 5 vteřin na aktivaci druhého ( než člověk projde, případně otevře dveře). Pokud k aktivaci dojde, zapíše se jako průchod daným směrem. Pokud neprojde a jen se motá u dveří, dojde k zahození impulsu.
- Čidla jsou napájeny 12V a při aktivaci rozpínají kontakt, který mám připojený na OPT 1 a 2.
- Sčítám průchody a každou minutu odesílám data na server. Pokud nikdo neprojde, např. v noci, neposílám nic.
- Následně zpracovávám do grafu pro přehled.

graf
graf
graf


Přesnost:
Nedokáži zaznamenat přesně všechny průchody, například skupinky, rodiny. Dále je třeba počítat, že pokud někdo přijde ve skupině, může odejít samostatně nebo pěkně za sebou abych je mohl spočítat. Proto v celkové statistice sečtu příchody a odchody a dělím dvěma. Dostanu dost přesné číslo o návštěvnosti prodejny.

graf
graf

Program není složitý, nejhorší je pohrát si s umístěním čidel a počítat s tím, že kontakt čidla je rozepnutý 2 vteřiny

2

Re: Počítadlo zákazníků

Velice pěkné, děkujeme za prezentaci.. šel by zveřejnit i onen program  ? Je to jedno z primárně nepředpokládaných alůe na druhou stranu standardně snad ani nevyráběných řešení, přitom využití najde jistě větší počet provozovatelů obchodů, či jiných míst kde prochází kopa lidí..

3

Re: Počítadlo zákazníků

Hotová řešení existují. Mnohem přesnější. Buď přes infračidlo (cca 30tis) nebo přes ip kameru. (cca 15 - 20 tis.) Oba systémy rozeznají přesně i pohyb lidí proti sobě apod. Řešení SDS nám dostačuje.

Kód by šel určitě napsat lépe, šlo o funkčnost

var dovnitr;
var ven;
var zahozeno;
var dovnitr_dnes;
var ven_dnes;
var zahozeno_dnes;


vynuluj_dnesni_data                     // o pulnoci vynulujeme denni data, ktere jsou jen pro prehled
{
 if ((sys[8]==0) && (sys[9]==0))
                                       {
                                       echo ('Nuluji dnesni data...');
                                       dovnitr_dnes=0;
                                       ven_dnes=0;
                                       zahozeno_dnes=0;
                                       }
}

odesli_data_portal
{
http_get(xxxxx','http://xxxxx/zapis.php?dovnitr=',dovnitr,'&ven=',ven,'&zahozeno=',zahozeno);

 //nachystame timeout pro http
  sys[64] = 20;  //sekund

label cekam_na_http_smycka:
 if (sys[64] == 0) goto chyba_www_serveru;
 if (sys[65] == 0) goto cekam_na_http_smycka;
 if ((sys[65] != 1024)||(sys[75] != 200)) goto chyba_www_serveru;

 echo ('Dovnitr: ', dovnitr,' Ven: ',ven,' Zahozeno: ', zahozeno);
 echo ('Dnes   : ', dovnitr_dnes,'      ',ven_dnes,'           ', zahozeno_dnes);
 echo (sys[8],':',sys[9],':',sys[10],' ODESLANY DATA');
 dovnitr=0; ven=0; zahozeno=0;

 wait (1234);
 return;

label chyba_www_serveru:

 echo(sys[5],'-',sys[6],'-',sys[7],' ',sys[8],':',sys[9],':',sys[10],' Chyba www http OSI7: ', sys[75],' v sys 65: ' sys[65]);

}



//////////////////////////////////////////////////////////////



main
{
 echo('Start programu 201206-30.');

label start:


//cekej na obe cidla v klidu

label cekam_na_klid:
if ((sys[153] !=0 ) || (sys[151] !=0 )) goto cekam_na_klid;

// kdyz se sklidnim tak cekam na aktivaci jednoho z cidel

label cekam_na_pohyb:
if ((sys[10] == 15) && ((dovnitr != 0) || (ven != 0) || (zahozeno != 0))) odesli_data_portal();    //posilam jen kdyz tam nejsou nuly v 15te vterine

vynuluj_dnesni_data ();             // kdyz je pulnoc vynuluj dnesni data

if ((sys[153] ==0 ) && (sys[151] ==0 )) goto cekam_na_pohyb;



if (sys[153] !=0 ) //nekdo jde dovnitr
             {
             sys[64]=7;
             label cekani:
             if (sys[151] != 0)   //potvrzeno
                          {
                          dovnitr ++;
                          dovnitr_dnes ++;
                          echo (sys[8],':',sys[9],':',sys[10],' >>>>>>>  Sel dovnitr');
                          goto start;
                          }
             if (sys[64] == 0)
                            {
                             zahozeno ++;
                             zahozeno_dnes ++;
                             echo ('>>>>>>----------');                  // nikdo neprosel
                             goto start;
                            }
               goto cekani;
               
             }
             
if (sys[151] !=0 ) //nekdo jde ven
             {
             // pockam
             sys[64]=5;
             label cekani_ven:
             if (sys[153] != 0)   //potvrzeno
                          {
                          ven ++;
                          ven_dnes ++;
                          echo (sys[8],':',sys[9],':',sys[10],' <<<<<<<  Sel ven');
                          goto start;
                          }
             if (sys[64] == 0)
                            {
                             zahozeno ++;
                             zahozeno_dnes ++;
                             echo ('<<<<<<----------');
                             goto start;
                            }
                goto cekani_ven;
             }



}

4

Re: Počítadlo zákazníků

Moc pěkné.
Pro snažší detekci průchodu by bylo možné použít třeba Paradome DG466, které je přímo dělané na detekci směru průchodu a má dvě výstupní relé, každé pro jeden směr průchodu.

5

Re: Počítadlo zákazníků

qidorv napsal:

Moc pěkné.
Pro snažší detekci průchodu by bylo možné použít třeba Paradome DG466, které je přímo dělané na detekci směru průchodu a má dvě výstupní relé, každé pro jeden směr průchodu.

To vypadá moc dobře. jsem netušil že něco takového existuje smile. Díky za tip