gsm ile oto alarm ve sms

Başlatan necati, 12 Kasım 2006, 13:14:35

armys2000

Hocam o şekil ( M2M ) bir çalışma  hiç yapmadım. Daha çok PC ve Modem  şeklinde oldu. Ama konu hoşumada gitmedi değil. Anladığım kadarıyla GPRS bağlantısı yapılmış bir network ve bu network üzerinde bağlantıyı yapan cihazlardan bahsediyorsunuz. Olay normal bir network teki ARP istek sistemini anlatıyor gibi. İster sait olsun ister dinamik IP olsun networkte bir bilgisayar bir paketi göndereceği yeri IP ye değilde ethernet kartlarının fiziksel adreslerine yapar. Siz aslında IP bilirsiniz Fiziksel adreslerle işiniz olmaz. Bunu bizim yerimize ARP istek paketi yapar. Bİlgisayar önce bir ARP istek paketi yollar. Bu paketin içerisinde Karşı tarafın IP bilgisi mevcuttur. Karşılığında Fiziksel adresi gönder bana der. Bu sayede  IP sabit veya Dinamik olsun farketmeksizin fiziksel adresler vasıtasıyla ilgili yerine ulaşır. İşleri biraz daha hızlandırmak için  her bilgisyar kendi ARP tablolarını oluşturur. ilk önce bu tablo üzerinden dener olmazsa ARP istek paketinin sonucundaki bilgiyi dikkate alır.  

Şimdi sizin sisteminizde böyle bir yapının bulunması mümkün olmayabilir. Yani IP bilgilerini tutan bir ( DNS) sistem omayabilir. Kaldı ki dinamik adresten bahsediyoruz. Sabit olsa bir nebze belki olabilir. Ama araştırmadan bişey diyemiyorum.  Artı birşey daha var sizin cihazınız veya cihazlarınız  networkte uç noktalar. Yani sistemin bir üyesisiniz sistem olmadığınız için yetenekleriniz sınırlı oluyor.
Siz networke PPP ( noktadan noktaya) bağlantı yapıyorsunuz. herhangi bir fiziksel ( IMEI) adresi sizin cihazlarınız tutmuyor. Sistem kendisi tutuyor.  Paketleri sistem yönlendiriyor ulaştırıyor.  Bu şuna benziyor networkte herkesin internete çıkışı serbest, ben Ahmet'e kızdım onun çıkışı yasak gibi bişey . Bu konu hakkında yinede araştırma yapmadan bişey söyleyemiyorum. İyiki açmışsınız bu konuyu ilk işim bu konuyu araştırmak olacak.  Ama gördüğüm kadarıyla düşündüğünüz yoldan başka çare yok gibi gözüküyor.
Peki şöyle bişey olabilir mi?
Cihazlar gprs sistemi dışında bir server a  bağlantı yapsa. Birbirleri ile olan haberleşmelerini  gprs sistemi dahilinde  değil de  bu server üzerinden yapsa. Cihaz ilgili veriyi göndereceği ilgili yeri server a gönderse server da ister sabit olsun ister hareketli olsun aldığı bu veriyi yerine ulaştırsa.

Sormak istediğim bir kaç konu var.

Demişsiniz ki "Bu sistemlerde 2 IP de statik oldugu icin, IP EXCHANGE yapmak durumunda kaliyorsunuz "
burasını anlayamadım neden  IP EXCHANGE  yapmak zorundasınız?

armys2000

Alıntı yapılan: "katana"Bir server uzerinden IP index tutma (bir nevi DNS gibi) yada sizin direkt numarayi arayip kendi IP'nizi bildirmeniz ve onun IP'sini almaniz gerekmekte (IP EXCHANGE) . 2 side isletme maliyetine haiz. Teorik bilgi derliyorum ve alternatif bir yontem var ise onu ogrenmek istemistim...

sorduğum sorunun cevabını burda gördüm.

M2M sisteminde daha öncede dediğim gibi siz sistemin üyesisiniz, sistem değilsiniz. artı buna ilave olarak Sabit IP alamıyorsanız, yapılacak  en mantıklı yol  cihazlar sabit IP si olan bir server a bağlanır bu server IP indeksini  daima güncel tutar, ve cihaz başka bir cihaza veri göndereceği zaman bu server  üzerinden yaparsa sanırım maliyet düşer gibi gözüküyor. Çünkü cihaz server a bağlantı yaptığında otamatik olarak IP port bilgisi server tarafından biliniyor ( TCP/IP Paketinin içerisindeki  veriden dolayı ) ( Karşı tarafın IP sini öğrenme kısmını ekarte etmiş bulunuyoruz) . Aynı networkteki ethernet kartları gibi cihazlarınıza fiziksel birer adres verirsiniz. Server cihazın IP si değişse bile her yeni bağlantıda yeni IP bilgisini Cihazın fiziksel adresiyle eşleştirdiği vakit alış-verişte bir sorun kalmıyor.  Bu çalışma şeklinin işletme maliyet analizin yapılması gerekir  ona bişey diyemem . Ama karşı tarafı arayıp onun IP sini öğrenme ve kendi IP bilgini söyleme  durumundan daha ucuz olacağını düşünüyorum. Bir ara bu iş için ( IP bilgisi bildirme ) e-mail sistemini kullanmıştım cihaz internete çıktığı vakit kendi IP ve port bilgisini ( dinleme konumundaki ) bir e-mail adresine gönderiyordu   sistem bu adresi devamlı kontrol ederek IP bilgilerini güncel tutuyordu .  sanırım bu biraz daha karmaşık olur.

Hocam  umarım yardımcı olabilmişimdir. ama konuyu yinede araştıracağım .

Saygılar

Veli B.

Benim dusundugum sistemde ise PC destegi/bagimliligi  olmayacak, belki ilerleyen tarihlerde sadece gosterge amacli kullanilacak ama dedigim gibi sistemin olmazsa olmaz bir parcasi olmayacak. Ilginiz icin teşekkür ederim...

necati

#include <16F84A.h>
#use delay(clock=4000000)
#fuses HS,NOWDT
#use rs232(baud=9600,parity=N,xmit=PIN_A0)
#define db 10 //elemszám, kódhossz
#define t 100 //várakozási idõ
int adat=1011101001;
void main() {
  int i; //ciklusváltozó
  int f;
  int bit[db];
  setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
  output_bit(PIN_A2,0); //Clock alaphelyzetbe
  output_bit(PIN_A3,0); //-RE alaphelyzetbe
  output_bit(PIN_B1,0); //Chip in LED ki
  output_bit(PIN_A2,0); //Progress LED ki
  output_bit(PIN_A2,0); //Access ok LED ki
  output_bit(PIN_A2,0); //Error LED ki
  while(1) //végtelen ciklus
  {
     if(!pin_B7) //chipkártya behelyezve
     {
        output_bit(PIN_B1,1); //Chip in LED be
        output_bit(PIN_A2,1); //
        delay_ms(t);          //
        output_bit(PIN_A2,0); // Bekapcsolási RESET, 0 címre pozicionálás
        delay_ms(t);          //
        output_bit(PIN_A3,1); //
        delay_ms(t);          //
        output_bit(PIN_B2,1); //Progress LED be

        for (i=0;i<db;i++)   // adatbitek olvasása
        {
           bit=PIN_A4;     //adatbit olvasása
           delay_ms(t);
           output_bit(PIN_A2,1); //
           delay_ms(t);          //
           output_bit(PIN_A2,0); //  Ã³rajel, léptetés következõ címre
           delay_ms(t);          //
        } //end for
     } //end if
     //összehasonlítás
     f=1;
     for(i=0;i<db;i++)
     {
        if(bit!=adat)
        {
           f=0;
           i=db;
        }
     }
     if(!f) //nincs egyezés
     {
        output_bit(PIN_B4,1); //ERROR LED be
        do
        {}
        while (!PIN_B0); //várakozás kártyakivételre
        output_bit(PIN_B1,0); //Chip in LED ki
        output_bit(PIN_B3,0); //Access ok LED ki
        output_bit(PIN_A3,0); //-RE alaphelyzetbe
        delay_ms(3000); //várakozás mielõtt újabb kártyát helyeznének be
        output_bit(PIN_B2,0); //Progress LED ki
     }
     if(f) //egyezés esetén
     {
        puts("onoff"); //utasítás a fõmodulnak
        output_bit(PIN_B3,1); //Access ok LED be
        do
        {}
        while (!PIN_B0); //várakozás kártyakivételre
        output_bit(PIN_B1,0); //Chip in LED ki
        output_bit(PIN_B3,0); //Access ok LED ki
        output_bit(PIN_A3,0); //-RE alaphelyzetbe
        delay_ms(3000); //várakozás mielõtt újabb kártyát helyeznének be
        output_bit(PIN_B2,0); //Progress LED ki
        f=0;
     } //end if (f)
  } //end while
}

//////////////////////////////////////////////////////////////////////////////////
#include <16F628.h>
#include <string.h>
#use delay(clock=20000000)
#fuses HS,NOWDT
#define rovid 1;
#define hosszu 100;
#int_RB
int i; //ciklusváltozó
char adat[20]; //modul beérkezõ adat
char parancs[20]; //modul beérkezõ adat
char betu;
char f1[5];
char f2[5];
char fogadott_telszam[12];
char tarolt_telszam[12];
char smsc[12];
char pdu[70];
int r=0; //be-ki
int db=0;
int hossz=0;
RB_isr() //megszakítás
{
  if(r)
  {
     if(input(PIN_B7)) db=rovid; //ha rövid riasztás kell
     if(input(PIN_B6)) db=hosszu;//ha hosszú riasztás kell
  }
}
void central() //impulzus kimenet
{
  output_bit(pin_b2,1);
  delay_ms(100);
  output_bit(pin_b2,0);
}
void riasztas_be()
{
  output_bit(pin_b1,1);
  output_bit(pin_b3,1);
}
void riasztas_ki()
{
  output_bit(pin_b1,0);
  output_bit(pin_b3,0);
}
void main()
{
  strcpy(f1,"onoff");
  strcpy(f2,"panic");
  setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
  enable_interrupts(INT_RB);
  enable_interrupts(global);
  while(1)
  {
//sms
     #use rs232(baud=9600,parity=N,xmit=PIN_A0,rcv=PIN_A1) //rs232 definiálás sms-hez
     printf("at+cmgr=1");
     for(i=0;i<7;i++) betu=getc(); //bevezetõ karakterek elnyelése
     betu=getc();
     if (betu=='0') //van olvasatlan üzenet
     {
        betu=getc();
        betu=getc();
        betu=getc();
        if(betu=!'0') //valóban van üzenet
        {
           betu=getc();
           if(betu!=13) //max 10 karakter hosszu
           {
              betu=getc();
              if(betu!=13) //max 100 karakter hosszu
              {
                 betu=getc(); //enter
              }
           }
           //pdu kezelés
           betu=getc();     //smsc hossz meghatározása
           hossz=betu*10;   //
           betu=getc();     //
           hossz=hossz+betu;//smsc meghatározás vége
           for(i=0;i<hossz+2;i++)
           {
              smsc=getc();
           }
           getch();
           getch();
           betu=getc();     //telefonszám hossz meghatározása
           hossz=betu*10;   //
           betu=getc();     //
           hossz=hossz+betu;//telefonszám meghatározás vége
           for(i=0;i<hossz;i++) //fogadott szam eltarolasa
           {
              fogadott_telszam=getc(); //telefonszám eltárolása
           }
           for(i=0;i<20;i++) getc(); //ugrás következõ mûveletre
           //valódi pdu innen
           gets(adat); //üzenet beolvasása
           //identifikáció kell ide!!!
           printf("at+cpbr=1");
           for(i=0;i<11;i++) getc();
//          identifikacio
           printf("at+cpbr=1"); //telefonkönyv olvasása
           for(i=0;i<10;i++) getc(); //ugrás telefonszámhoz
           i=0;
           while((betu=getch())!='"') // olvasás " jelig
           {
              tarolt_telszam=betu;
              i++;
           }
           printf("at+csca?"); //smsc meghatározása
           for(i=0;i<9;i++) getc(); //ugrás telefonszámhoz
           i=0;
           while((betu=getch())!='"') // olvasás " jelig
           {
              smsc=betu;
              i++;
           }
           for(i=0;i<strlen(smsc);i++) //smsc kódolása
           {
              betu=smsc;
              smsc=smsc[i+1];
              smsc[i+1]=betu;
              i++;
           }
           if(strcmp(tarolt_telszam,fogadott_telszam)) //authentikáció
           {
              strcpy(parancs,"D26470AAA53EBFCB24");    //RIASZTO_KI PDU-ban
              if(strcmp(adat,parancs)) //f1 parancs (riasztó ki)
              {
                 r=0;
                 central();
                 db=0;
              }
              strcpy(parancs,"D26470AAA53EBFC222");    //RIASZTO_BE PDU-ban
              if(strcmp(adat,parancs)) //f2 parancs (riasztó be)
              {
                 r=1;
                 central();
              }
              strcpy(parancs,"536A905A9D02");          //STATUS PDU-ban
              if(strcmp(adat,parancs)) //f3 parancs (status)
              {
                 if(r) if(db)
                 {
                    strcpy(parancs,"D26470AAA506A7"); //üzenet másolása változóba (RIASZTAS)
                    printf("at+cmgs=");
                    printf("%s",(strlen(parancs)+strlen(fogadott_telszam)+16)/2);
                    delay_ms(50); //várakozás, hogy a > jel biztosan megérkezzen
                    printf("%s",strlen(smsc)/2+1); //smsc hossz küldése
                    printf("91"); //nemzetközi formátum
                    printf("%s",smsc); //üzenetközpont elküldése
                    printf("11000B91"); //inicializáló beállítások
                    printf("%s",fogadott_telszam); //fogadott számra küldi vissza az sms-t
                    printf("%s",parancs); //parancs küldése
                    printf("%c",26); //CTRZ-Z
                 }
                 if(r) if(!db)
                 {
                    strcpy(parancs,"D26470AAA53EBFC222"); //üzenet másolása változóba (RIASZTO_BE)
                    printf("at+cmgs=");
                    printf("%s",(strlen(parancs)+strlen(fogadott_telszam)+16)/2);
                    delay_ms(50); //várakozás, hogy a > jel biztosan megérkezzen
                    printf("%s",strlen(smsc)/2+1); //smsc hossz küldése
                    printf("91"); //nemzetközi formátum
                    printf("%s",smsc); //üzenetközpont elküldése
                    printf("11000B91"); //inicializáló beállítások
                    printf("%s",fogadott_telszam); //fogadott számra küldi vissza az sms-t
                    printf("%s",parancs); //parancs küldése
                    printf("%c",26); //CTRZ-Z
                 }
                 if(!r)
                 {
                    strcpy(parancs,"D26470AAA53EBFCB24"); //üzenet másolása változóba (RIASZTO_KI)
                    printf("at+cmgs=");
                    printf("%s",(strlen(parancs)+strlen(fogadott_telszam)+16)/2);
                    delay_ms(50); //várakozás, hogy a > jel biztosan megérkezzen
                    printf("%s",strlen(smsc)/2+1); //smsc hossz küldése
                    printf("91"); //nemzetközi formátum
                    printf("%s",smsc); //üzenetközpont elküldése
                    printf("11000B91"); //inicializáló beállítások
                    printf("%s",fogadott_telszam); //fogadott számra küldi vissza az sms-t
                    printf("%s",parancs); //parancs küldése
                    printf("%c",26); //CTRZ-Z
                 }
              }
              strcpy(parancs,"D0A0333904");            //PANIC PDU-ban
              if(strcmp(adat,parancs)) //f1 parancs (panic)
              {
                 if(r)
                 {
                    central();  //impulzus adás (ajtók bezárása stb)
                    r=1; //riasztó élesít
                 }
                 db=hosszu; //riasztás aktivizálás
              }
           }
        }
        printf("at+cmgd=1");
     }
     //modulok lekezelése
     #use rs232(baud=9600,parity=N,rcv=PIN_A2) //rs232 definiálás modulokhoz
     for(i=0;i<100;i++) //fõleg modulokat figyelje
     {
        gets(adat);
        if(strcmp(adat,f1)) //be-ki jel van
        {
           if(r)
           {
              r=0; //be volt kapcsolva kikapcsol
              central();
              db=0;
           }
           else
           {
              r=1; //ki volt kapcsolva kikapcsol
              central();
           }
        }
        if(strcmp(adat,f2)) //panic jel van
        {
           r=1;
           db=hosszu;
        }
     }
     //riasztás lekezelése
     if(r)
     {
        db--;
        if(db)   riasztas_be();
        else if(!input(PIN_B7)) if(!input(PIN_B6)) riasztas_ki(); //ha még mindig fennáll a riasztási jel nem kapcsol ki
     }
  }//end while
} //end main

eksikleri duzeltebilirmisiniz
[email]entegreterbiyecisi@yahoo.com[/email]

tekin126

gprs ye ıhtıyaç olmadan gsm uzerınden dtmf ıle haberleşme olmazmı?

baykoyu

Alıntı yapılan: tekin126 - 27 Kasım 2012, 22:59:30
gprs ye ıhtıyaç olmadan gsm uzerınden dtmf ıle haberleşme olmazmı?
mümkündür hocam basit kolay bir yöntem tek yapmanız gereken dtmf i aktif etmek ama önce firmware güncellemeniz gerekebilir benim başıma gelmişti sim900 aldım fakat adamlar müşteri istekte bulunmadan dtmf i vs. kullanabileceğiniz şekilde firmware güncelli modul göndermiyorlarmış ya baştan söylemeniz gerekiyor yada kendinizin güncelleme yapması gerekiyor...