Skocz do zawartości
SOYER

Arduino (?) i GSM

Pomocna odpowiedź

2 minuty temu, ethanak napisał:

koncepcja porównania 9-cyfrowych numerów bez kodu kraju to raczej radosna twórczość.

nie rozumiem, co ma kod kraju? jest taki ważny? to zamiast do 22 znaku, zrobię do 20... tylko dlaczego? 

 

4 minuty temu, ethanak napisał:

Rozumiem, że przy dzwonieniu zawsze numer zaczyna się od 22 znaku? To jakaś potwierdzona informacja czy tylko Twoja obserwacja?

przecież przy dzwonieniu moduł wysyła zawsze taką samą informację RING itd... przecież nie wysyła losowych wiadomości... 

 

6 minut temu, ethanak napisał:

BTW. swego czasu robiliśmy kumplom dowcipy, dzwoniąc do nich z numeru 997 😉 Caller ID łatwiej podrobić niż IP.

i...? 

 

6 minut temu, ethanak napisał:

Jak tam praca domowa?

jaka praca? 

Udostępnij ten post


Link to post
Share on other sites
2 minuty temu, SOYER napisał:

co ma kod kraju? jest taki ważny?

Bo numery nie są unikalne w skali całego świata, i mogę znaleźć klienta z takim numerem np. w Pernambuco albo immym Kazachstanie.

3 minuty temu, SOYER napisał:
10 minut temu, ethanak napisał:

To jakaś potwierdzona informacja czy tylko Twoja obserwacja?

przecież przy dzwonieniu moduł wysyła zawsze taką samą informację RING itd... przecież nie wysyła losowych wiadomości... 

No więc pytam, czy to Twoje obserwacje czy jest jakieś źródło do tego?

4 minuty temu, SOYER napisał:
11 minut temu, ethanak napisał:

Caller ID łatwiej podrobić niż IP.

i...? 

...i znając numer1 i/lub numer2 Twoja centralka już jest praktycznie moja.

5 minut temu, SOYER napisał:
11 minut temu, ethanak napisał:

Jak tam praca domowa?

jaka praca? 

Pokazanie dlaczego "a" == "b" || "c" jest prawdą (ew. że nomero == numer1 || numer2 jest zawsze prawdą pod pewnym warunkiem, konkretnie jakim).

 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
23 minuty temu, ethanak napisał:

Bo numery nie są unikalne w skali całego świata, i mogę znaleźć klienta z takim numerem np. w Pernambuco albo immym Kazachstanie.

ok, z obawy przed gościem z Pernambuco, mającym taki sam numer telefonu jak ja i znającym numer do mojej centralki zmienię na numer 11-cyfrowy...

 

23 minuty temu, ethanak napisał:

No więc pytam, czy to Twoje obserwacje czy jest jakieś źródło do tego?

Komendy AT, odpowiedzi na nie, oraz wcześniej wymieniona biblioteka

23 minuty temu, ethanak napisał:

...i znając numer1 i/lub numer2 Twoja centralka już jest praktycznie moja.

Jeszcze musisz znać numer centralki i się tu pofatygować. Jasne, że można, jak się zabezpieczyć przed tym? 

23 minuty temu, ethanak napisał:

Pokazanie dlaczego "a" == "b" || "c" jest prawdą (ew. że nomero == numer1 || numer2 jest zawsze prawdą pod pewnym warunkiem, konkretnie jakim).

chodzi Ci o to

if(nomero ==numer1) {} 

if(numer2) {} 

Teraz widzę...  jeśli numer2 nie będzie zerem to ten mój 

if(nomero == numer1 || numer2) 

zawsze będzie True... 

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites
Przed chwilą, SOYER napisał:

Jasne, że można, jak się zabezpieczyć przed tym

Nie zabezpieczysz się - Caller ID jest przyjmowany przez urządzenie odbierające połączenie "na wiarę" (zresztą dotyczy to wszystkich urządzeń po drodze) i może służyć jedynie jako pomocnicze zabezpieczenie, a nie główne.[1]

Owszem - dopóki się tym tylko bawisz to nie ma problemu, ale ja bym dał podstawowe zabezpieczenie np. w postaci kodu DTMF - wtedy ktoś musiałby znać zarówno numer centralki (co raczej problemem nie jest dla osoby chcącej zrobić jakieś brzydkie kuku), Twój numer telefonu (co jest jeszcze prostsze bo pewnie rozdajesz go znajomym) i do tego kod, który wstukałeś sobie na alarmie wychodząc z domu (co jest mało prawdopodobne).

5 minut temu, SOYER napisał:

Teraz widzę... 

O właśnie o to chodziło 🙂

--

[1] przynajmniej tak było parę lat temu, jak się bawiliśmy w tanią telefonię internetową

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
5 minut temu, ethanak napisał:

w postaci kodu DTMF

something more? 😉

 

5 minut temu, ethanak napisał:

O właśnie o to chodziło

Jak kompilowałem kod to mi się ten if nie podobał tak zapisany, ale olałem sprawę bo mi było pilno, a tu taki byk... shame on me... 

Udostępnij ten post


Link to post
Share on other sites
6 minut temu, SOYER napisał:
15 minut temu, ethanak napisał:

w postaci kodu DTMF

something more? 😉

Wybieranie tonowe

Istnieje co najmniej jeden projekt na Arduino nie używający zewnętrznego dekodera (nie próbowałem).

Udostępnij ten post


Link to post
Share on other sites

Nie bardzo rozumiem w jaki sposób to miałoby funkcjonować? 

Udostępnij ten post


Link to post
Share on other sites

Tak jak w każdym podobnym rozwiązaniu - dzwonisz do centralki i wystukujesz na klawiaturze polecenie... kiedyś (w zeszłym tysiącleciu) były takie automatyczne sekretarki które można było zdalnie obsługiwać wklepując konkretne kody, tak samo i tu.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

aaa, to ma sens... mam nad czym myśleć... 

Dzięki, za wytknięcie błędu też;) 

Udostępnij ten post


Link to post
Share on other sites

@ethanak znalazłem:), to komenda AT+DDET=1

Dokumentacja, strona 308 na dole i 309.

Jutro sprawdzę czy działa na moim module. 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

DTMF działa na moim module, komendą AT+DDET=1 odpalamy DTMF, następnie odbieramy połączenie, ATA. Potem wklepujemy na telefonie kod, a sim800l wysyła na Seriala wklepaną cyfrę. 

IMG_20200131_172755.thumb.jpg.b4b4ceccacb19bfab7ebb736a9e83b5f.jpg

No to mam zajęcie na weekend żeby to zaimplementować;) 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Ja na swoim modemie testowałem zdalne wykonywanie poleceń przez sms. W pierwszej kolejności był sprawdzany nr telefonu z którego nadszedł sms a następnie treść sms'a.

if (Serial.find("numer telefonu\r\n")) {
    Serial.print("Znalazłem twój numer");
    delay(500);
    if (Serial.find("kod\r\n")) {
      Serial.print(" i odczytalem wiadomosc");
    }
  }

domyślny czas oczekiwania na dane to 1000ms chyba , że zmienisz przez Seria.setTimeout(); Działało to całkiem fajnie aczkolwiek do rozbrajania alarmu to bym tego nie stosował.

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Po pewnych bojach udało mi się napisać funkcję odbierającą telefon od wybranych nadawców, nasłuchującą PIN z klawiatury numerycznej dzwoniącego, sprawdzającej ten PIN ze wzorcem, a następnie odpowiednio reagującą na poprawny lub nie PIN.

 void CheckTelPIN(){
//Serial.flush();
 if(gsm.available()>0)
  {
    if(odebrano==0){
      numer = gsm.readString();
      nomero = numer.substring(18,30);
      gsm.println("AT+DDET=1");
      
        if((nomero == numer1) || (nomero == numer2)){
         // Serial.println("AT+DDET=1");
          //Serial.println(nomero);
          delay(2000);
          gsm.println("ATA");
          odebrano=1;
          nomero="nic";
          }
  }
  String nOdczyt = gsm.readString();
    if(nOdczyt.indexOf("DTMF")>0){
      for(int i=0; i<4;){ 
        nOdczyt = gsm.readString();
      if((nOdczyt.indexOf("DTMF")>0) && (nOdczyt != sOdczyt)){ 
        sOdczyt=nOdczyt;
        DTMF = nOdczyt.substring(9,10);
         dtmf[i] = DTMF;
         Serial.println(i);
         Serial.println(dtmf[i]);
            if(i==3){
                odebranoPIN=1;
            }
         i++;
         if(odebranoPIN==1){
             for(int p=0; p<4; p++){
                if(dtmf[p]==PIN[p]){
                     telPIN++;
                }
              }
          }
  if((telPIN==4)&&(odebranoPIN==1)){
            //Serial.println("pin ok");
            gsm.callHangoff();
            delay(100);
            odebrano=0;
            odebranoPIN=0;
            telPIN=0;
            //Serial.flush();
            if(alarmUzbrojony >= 1){
              alarmUzbrojony = 0;
              sekundTrzy.restart();
              nomero = "nic";
              Serial.println("alarmRozbrojony");
              gsm.smsTextMode(true);
              gsm.smsSend(phone1, "Alarm ROZBROJONY");
              delay(100);
              gsm.smsSend(phone2, "Alarm ROZBROJONY");
              delay(100);
              menu=THREE;
            }
         else if(alarmUzbrojony == 0){
              alarmUzbrojony = 1;
              sekundTrzy.restart();
              minutDziesiec.restart();
              //Serial.println("alarmUzbrojony");
              nomero = "nic";
              menu=FOUR;
          }
    
            
          }
          else if((telPIN<4) &&(odebranoPIN==1)){
           // Serial.println("dupa");
            delay(5000);
            gsm.callHangoff();
            odebrano=0;
            odebranoPIN=0;
            telPIN=0;
            //Serial.flush();
          }
          
      }
  }
  }
  }
}

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Pisałeś coś o mikrofalowych czujnikach ruchu, możesz podać jakiś link? Jak to funkcjonuje w praktyce w porównaniu z PIRem? Jak z jakością dźwięku z tego modułu GSM czy tylko do SMS się nadaje?

Udostępnij ten post


Link to post
Share on other sites

Taki, działa, porównania z PIR nie mam, to się nie wypowiadam, może pracować za jakąś cienką osłoną, dlatego go kupiłem. Mam 5 szt i działają;) 

Co do jakości dźwięku też się nie wypowiem, bo sim800l używam do wysyłania SMS, odbierania połączeń i nasłuchiwania DTMF i dzwonienia na numer, ale bez rozmów... 

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...