logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zrealizować sterowanie przekaźnikiem przez SMS z telefonu?

rmffm1 29 Mar 2005 16:48 7442 27
  • #1 1358640
    rmffm1
    Poziom 13  
    Posty: 139
    Ocena: 2
    chciałem sie dowiedziec czy ktoś ma pomysł na sterowanie jakiegos ukladu poprzez wysłanie smsa z komórki na drugi telefon podpiety do takiego ukladu i po tresci smsa strowanie np przekaznikiem na zasadzie wlacz wyłacz
  • Pomocny post
    #2 1360511
    bifi
    Poziom 16  
    Posty: 119
    Pomógł: 11
    Ocena: 3
    Na tej stronie www.easy-soft.tsnet.pl znajdziesz ciekawy artykuł na temat sterowania SMSem za pomocą komórki oraz procka.
  • Pomocny post
    #3 1369419
    wwmajor
    Poziom 15  
    Posty: 109
    Pomógł: 7
    Ocena: 9
    Witam!
    Wszystko tak naprawdę rozbija się o to jakiego telefonu używasz i czego tak naprawdę oczekujesz od układu.
    Ja zrobiłem takie coś ale na drogim telefonie Samaung c100 (bo i wymagania były spore). Miał to być terminal GSM łączący układ mikrokontrolerów (inteligentny dom) ze światem.
    Tu masz opis projektu którym się wzorowałem https://www.elektroda.pl/rtvforum/topic94985-0-asc-0.html
    Ale jeśli miał by to być prosty jednostronny odbiornik to może być tania komóra obsługująca tryb PDU mikrokontroler w pamięci zapisany by miał wzór wiadomości jeśli odebrana wiadomość by się z nim zgadzała to by załączał przekaźnik.
    Komunikacja oczywiście przez UART (bezpośrednie kable od mikrokontrolera do telefonu krosując je TxD<=>RxD).
    [/url]
  • #4 1372025
    rmffm1
    Poziom 13  
    Posty: 139
    Ocena: 2
    To ma byc prosta komunikacja najlepiej z nokia 5110 bo jest najtańsza :D chodzi o to ze gdy wysle smsa na ta ta nokie z innej komorki a nawet z internetu to ta komorka go odbierze przekaze komunikat do ukladu sterujacego a on np przełaczy mi przkaznik ktory mi cos tam załaczy
  • Pomocny post
    #5 1376701
    wwmajor
    Poziom 15  
    Posty: 109
    Pomógł: 7
    Ocena: 9
    Ta twoja komórka obsługuje tryb TXT więc sprawa prosta.
    Załatw sobie kabelek podłącz komórę do PC i poeksperymentuj na terminalu. Potem odcinasz od kabla wtyczkę komputerową i wtykasz bezpośrednio do UARTu mikrokontrolera. Piszesz program który odbiera znaki i jeśli natrafi na tekst WLACZ LAPKE to ustawia stan wysoki na nóżce do której podłączony jest przekaźnik. Ot cała filozofia.

    Oczywiście jest jeszcze kilka poważnych problemów, ale jeśli jesteś uparty to sobie poradzisz.
  • Pomocny post
    #6 1436075
    juntom
    Poziom 19  
    Posty: 216
    Pomógł: 35
    Ocena: 27
    Co do nokii 5110 to nalezaloby sprostowac: tekst smsa jest kodowany (7 bit). Polecam projekt gnoki. Tam znajdziesz szczegoly. Latwiej jest sterowac ktoregos z erikssonow za pomoca komend AT.

    pozdr.
  • #7 1495990
    wwmajor
    Poziom 15  
    Posty: 109
    Pomógł: 7
    Ocena: 9
    Oj kolego nie pisz jak czegoś nie jesteś pewien:
    Oto opis
    'Message format' Nokia 5110
    wpisujesz taki kod
    AT+CMGF=?
    a komóra odpowie
    +CMGF: (0,1)
    OK
    I to znaczy że obsługuje tryb tekstowy a nie PDU
  • #8 1496731
    juntom
    Poziom 19  
    Posty: 216
    Pomógł: 35
    Ocena: 27
    Do Pana wwmajor :
    Nie sprawdzalem osobiscie komend at na noki 5110, a korzystalem z formatu pdu (wysylanie i odbieranie komunikatu). Moj projekt jest sprawdzony i dziala wiec co do tego jestem absolutnie pewien. Zreszta polecam lekture gnokii . Nie spotkalem jeszcze projektu z wykorzystaniem nokii 5110 i komend at. A udalo sie Tobie wyslac smsa w trybie tekstowym z tej nokii ?
  • #9 2062525
    Kakalia
    Poziom 18  
    Posty: 363
    Pomógł: 14
    Ocena: 6
    Witam

    Mam wykaz komend AT i chcialbym sie pobawic telefonem z poziomu PC. Jakiego oprogramowania mam uzyc?? Probowalem TERM95 i nie nawizalem wspolpracy z telefonem. Pozniej odpalilem Hyperterminal w 98 i tez bez rezultatu. Nie jestem pewien czy uzywam wlasciwego przewodu, podlaczylem telefon przez com2 FBusem(kabelek jest na 100% sprawny) telefon rownierz.

    Prosze o pomoc. :[
  • #10 3306373
    gpql
    Poziom 17  
    Posty: 200
    Pomógł: 17
    Ocena: 38
    Potwierdzam wypowiedz juntom. Niestety NOKIA 5110 nie ma komend AT bezposrednio jedynie emulowane przez kompa po zainstalowaniu softu nokii.

    Mam pytanie bo tez pracuje nad sms-ami z Nokii do kolegi juntom :
    1. poczatek ramki to w/g roznych publikacji; (0x55) 32 razy i (0xC1)
    2. pakiet zaczyna 0x1E ......
    co ciekawe zapis logu z nokii wysyla 201 znakow 0x55 i potem 0xC1 ....
    3. kodowanie numeru jest przez zamiane bajtu (to co bylo w FSB idzie na LSB i odwrotnie
    4. konwersja na 7 bit PDU przez tablice znaków

    Moje pytanko jak zapytac telefon czy jest nowy sms i jak go odczytac
    (wysylac potrafie)

    GP
  • #11 3306986
    juntom
    Poziom 19  
    Posty: 216
    Pomógł: 35
    Ocena: 27
    Ramka o której mówisz (zawierająca bajt 0x55) słuzy do synchronizacji tel z uc. O ile pamiętam to okreslono ,ze nalezy wysłac min 200 razy 0x55. O nadejsciu nowego smsa zostanie uc powiadomiony przez tel wysalniem okreslonej ramki. Dokladnie jest to opsiane w doc dla gnoki ( sms_handling).Dekodowanie tekstu z pdu robie na "piechote" tak :
    // dekodowanie tekstu (o dlugosci lenght) sms z 7 na 8 bitow, zdekodowany tekst umieszczony w dest_buf 
    unsigned char char_8bit_unpack (unsigned char *text, unsigned char lenght, unsigned char *dest_buf)
    {
    unsigned char i=7,j=0,rest=0;
    while (lenght)
    	{
    	*dest_buf = ((*text&0x7f)<<(7-i)|rest)&0x7f;
    	rest = *text>>i;
    	text++;
    	dest_buf++;
    	j++;
    	if (i==1)
    		{
    		*dest_buf= rest;
    		dest_buf++;
    		i=7;
    		rest=0;
    		}
    	else
    		i--;
    	lenght--;
    	}
    return (j);
    }
    
    a tu kodowanie do pdu :)
    
    
    // kodowanie 8 bit -> 7 bitów (funkcja zwraca długość łańcucha po kodowaniu , zakodowany łańcuch
    // umieszczony jest w dest_buf
    unsigned char char_7bit_pack (unsigned char*sms_ptr,unsigned char *dest_buf)
    {
    unsigned char temp_buf2[80];
    unsigned char chr,next_chr,val,cnt=7,i=0,j=0;
    unsigned char *temp_ptr;
    temp_ptr = sms_ptr;
    chr= *temp_ptr++;
    do
    	{
    	if (cnt==0)
    		{
    		cnt=7;
    		j=0;
    		chr =*temp_ptr++;
    		}
    	next_chr=*temp_ptr;
    	j= (j<<1)|0x01;
    	val = next_chr&j;
    	val <<=cnt;
    	chr |=val;
    	if (chr)
    		temp_buf2[i++]=chr;
    	chr = next_chr>>(8-cnt);
    	cnt--;
    	} while (*temp_ptr++);
    j=i;
    memcpy (dest_buf,temp_buf2,i);
    return (i);
    }
    
    

    U mnie wszystko bylo zrobione na przerwaniach wiec nie potrzebowalem sprawdzac czy w telefonie sa nieprzeczytane wiadomosci bo robilem to na biezco ale jest to oczywiscie do zrobienia ( w genokii plik n6100.c -> GetSMSStatus )

    pozd. JUNTOM
  • #13 3307780
    darrrrek
    Poziom 22  
    Posty: 733
    Pomógł: 4
    Ocena: 98
    bylby ktos w stanie ten kod przedstawic w bascomie ???

    // dekodowanie tekstu (o dlugosci lenght) sms z 7 na 8 bitow, zdekodowany tekst umieszczony w dest_buf 
    unsigned char char_8bit_unpack (unsigned char *text, unsigned char lenght, unsigned char *dest_buf) 
    { 
    unsigned char i=7,j=0,rest=0; 
    while (lenght) 
       { 
       *dest_buf = ((*text&0x7f)<<(7-i)|rest)&0x7f; 
       rest = *text>>i; 
       text++; 
       dest_buf++; 
       j++; 
       if (i==1) 
          { 
          *dest_buf= rest; 
          dest_buf++; 
          i=7; 
          rest=0; 
          } 
       else 
          i--; 
       lenght--; 
       } 
    return (j); 
    } 
    
    a tu kodowanie do pdu :) 
    
    
    // kodowanie 8 bit -> 7 bitów (funkcja zwraca długość łańcucha po kodowaniu , zakodowany łańcuch 
    // umieszczony jest w dest_buf 
    unsigned char char_7bit_pack (unsigned char*sms_ptr,unsigned char *dest_buf) 
    { 
    unsigned char temp_buf2[80]; 
    unsigned char chr,next_chr,val,cnt=7,i=0,j=0; 
    unsigned char *temp_ptr; 
    temp_ptr = sms_ptr; 
    chr= *temp_ptr++; 
    do 
       { 
       if (cnt==0) 
          { 
          cnt=7; 
          j=0; 
          chr =*temp_ptr++; 
          } 
       next_chr=*temp_ptr; 
       j= (j<<1)|0x01; 
       val = next_chr&j; 
       val <<=cnt; 
       chr |=val; 
       if (chr) 
          temp_buf2[i++]=chr; 
       chr = next_chr>>(8-cnt); 
       cnt--; 
       } while (*temp_ptr++); 
    j=i; 
    memcpy (dest_buf,temp_buf2,i); 
    return (i); 
    } 
    
  • #14 3352285
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    Panowie, powiedzcie którą komendą testować gotowość telefonu i karty sim
    sprawdzanie czy odpowie error to takie trochę "nieteges" ;)
  • #15 3355431
    submariner
    Poziom 32  
    Posty: 2319
    Pomógł: 51
    Ocena: 268
    a czy nie mozna odpowiednio ustawic grupy wiadomosci (by nie reagowal na kazdy sms) i podpiac przekaznik zamiast silniczka wibratora?
  • #16 3355696
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    do kolegi Bolek - wysyłasz co jakiś czas jakies polecenie AT - np (ATI) i czekasz aż dostaniesz dobrą odpowiedź ;) - to jest jedna z normalnych metod czekania na gotowość modemu i wcale nie jest "nieteges" ;)

    pozdr
  • #17 3937036
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    odswierze trochę
    Jeśli chodzi o gotowość to OK jest praktycznie zawsze. Ale gdy rozkaz tyczy sie karty SIM to niekiedy wyskoczy ERROR- zwłaszcza bezpośrednio po włączeniu zasilania.

    Inna, bardziej ważna sprawa. Zrobiłem układ, jednak wyszedł mały problem. Procek nie kiedy nie odczytuje prawidłowo SMSów.
    Początek PDU z treścią SMSa mam mam ustawiony na sztywno. Najwyraźniej niekture telefony wysyłaja go w innej formie. Nie działa np wysłanie SMSa z jakiegoś Siemensa serii ME. Ktoś miał taki problem? wystarczy zmiana ustawień w tym telefonie czy musze przerabiać obsługę PDU?? :(
  • #18 3937461
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    bolek napisał:
    Cytat:
    czy musze przerabiać obsługę PDU??


    tak musisz przerabiać PDU, bo nie chodzi o to, że jedne telefony wysyłają jakieś tam PDU a inne przy tej samej treści jeszcze inaczej zakodowane PDU. Standard PDU jest ten sam, ale np jeśli wiadomość wysłana z telefonu jest długa i zawiera więcej niż 160 znaków a telefon wysyła całą wiadomość jako 2 SMSy - połączone, to już zmienia ci się początek PDU każdego z tych SMSów. Poprostu do PDU dodawany jest UDH (User Data Header) i trzeba umieć go obsłużyć. On powoduje właśnie np że początek PDU jest inny niż gdybyś te same 2 SMSy wysłał oddzielnie.

    pozdrówka
  • #19 3937744
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    nie nie, SMSem idzie komenda- raptem 8 znaków (a jak! :) )
    Tak ze nie idzie o kodowanie tego PDU, tylko o to że naglówek wiadomości wysłany z jednego telefonu ma inna długość niż np wysłane z innego telefonu.

    Wg mnie, bardziej mieszają tutaj ustawienia SMSów w telefonie ktory je wysyła, no bo niby co by jeszcze mogło mieć wpływ na to że treść SMSa jest przestawiona...?
    Jutro porównam SMSy. Zobaczy sie w czym różnica,
  • #20 3938521
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    Mirek36, wygląda na to że po części miałeś racje z tym UDH. Jeden z telefonów go dodaje mimo że SMSjest krótki. Zastanawia mnie tylko fakt czy będzie on tak robił zawsze, czy jest zakazania tego zbędnego UDH

    SMS prawidłowy
    07918405210077F7040B918405074617F300007050139032808008B81C2E071A6263
    SMS z dodatowym UDH
    07918405210077F7640B918405055534F60000705003919293800F050A0300080470395C0E34C4C600
  • #21 3941307
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    tekst twoich SMSów to
    Cytat:
    "8989 CX1"


    w drugim masz rzeczywiście dodany UDH, i faktycznie nie wiem za bardzo po co ten telefoniusz dziwny dodaje to UDH. W tym przypadku nie jest to UDH odpowiedzialne za tzw "złożoną wiadomość" . Aby się tego pozbyć musisz normalnie to rozkodować i od odpowiedniego pola wyciąć UDH. W twoim przypadku to UDH wygląda tak:

    Cytat:
    USER DATA LENGTH : 15 septets
    UDH LENGTH : 5 octets
    UDH : 0A 03 00 08 04
    UDH ELEMENTS : 0A - EMS text formatting
    3 (0x03) Bytes Information Element
    000 starting character
    008 length in characters
    04 formatting mode:
    text ALIGN left
    text SIZE large


    - naprawdę nie wiem co to jest "EMS text formatting" i po jaką kiszkę jest to tu dodawane. Ale może masz jakiś nie wiem dziwny wyświetlacz czy co?

    tak czy inaczej po wycięciu UDH otrzymasz czysty tekst swojego SMSa
  • #22 3941536
    migol
    Poziom 18  
    Posty: 313
    Pomógł: 4
    Ocena: 5
    Hmmm... a może wysyłasz w Unicode?
  • #23 3941630
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    nie nie, na pewno nie jest to SMS z obsługą znaków narodowych bo byłby znacznie znacznie dłuższy. Wysłanie chociaż jednej np polskiej literki ą powoduje, że treść 1 SMSa skraca się tylko do 70 znaków a resztę ze 160 pożera właśnie obsługa polskich znaków. W tym SMSie dodany jest tylko ten dziwny UDH, który tak jakby tylko formatuje w jakiś sposób tekst

    pozdr
  • #24 3941631
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    no wlsnie problem w tym, że to nie ja wysłałem, tylko gość u którego to pracuje . Z przeóbką dekodowania SMSów może być problem bo nie mam tego gdzie robić (RAM). Oby to była własnie sprawa ustawienia wiadomości. Mirku, Spotkałeś sie już z takim przypadkiem? (taki inniejszy SMS) w zalezności od marki aparatu.
  • #25 3941675
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Witam
    Może nie siedzę w temacie, ale mam wrazenie ze jest to sformatowany SMS czyli EMS (dodana wielkosc trzcionki, bold, underline, kolor, logo, etc.)
    Zapewne da sie to wyłączyć w telefonie
    Pozdrawiam
  • #26 3943799
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    niestety nie spotkałem się z tym i być może kolega Ch.M. ma rację, że można to poprostu wyłączyć w tym telefonie. Niestety ludziska mają różnie telefony poustawiane a najbardziej cierpią na tym nieświadomi użytkownicy chcący koniecznie pisać polskie literki ąśćń bo wtedy też dostaniesz SMSa z UDH i co wtedy? nie dość że gościu który ci go wyśle nie jest świadomy że telefon naciąga go na dodatkowe SMSy to jeszcze robi ci problem. Oczywiście takie polskie literki na 100% można wyłączyć ale czy to formatowanie EMS? - nie wiem. Tak czy inaczej może być jeszcze wiele różnych przypadków gdy będzie wysyłany UDH i chcąc podejść uniwersalnie to trza pomyśleć o dekodowaniu jednak tego i wyrzucaniu niepotrzebnego śmiecia w tym przypadku UDH.

    chyba że korzystasz z procedur które ktoś inny napisał a ty sam nie za bardzo wiesz jak to przekodować - to wtedy jest klops.

    Ja akurat SMSy rozgryzam od dawna ale na PCcie i właśnie już jakiś czas temu porozgryzałem niektóre UDH dzięki czemu mogę już odbierać polskie znaki itp. Ale jak ktoś mi np wizytówkę wyśle czy logo - o kicha ;) ... muszę jeszcze nad tym popracować

    pozdrówka
  • #27 3944422
    bolek
    Poziom 35  
    Posty: 4099
    Pomógł: 86
    Ocena: 299
    Dzis bawiłem sie różnymi telefonami i nijak nie udało mi sie wygenerowac takiego dziwolonga. Można tylko gdybać co jest przyczyną.
    Chyba faktycznie trzeba będzie zrobić obsługe takiego SMSa.
    Dekodowanie PDU pisałem sam (jakoś nie idzie zastanawianie sie nad gotowym softem- trudno mi dostrzec co podmiot liryczny miał na myśli :) )
    To dekodowanie akurat zrobiłem dla 8 bajtów, tak było wygodnie i starczyło. Nie wiem teraz czy nie bedzie problemu z ramem, bo żeby przemielić tego SMSa to musze go zassać całego i obrabiac od końca. No nic pomyśli się. szkoda tylko że tego telfonu nie mam pod ręką- będzie partyzantka.

    Tak czy siak- treść SMS ZAWSZE zaczyna sie w tym samym momencie (od 43 odebranego bajtu)?
  • #28 3944557
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    chyba cię zmartwię ale nie zawsze od 43 bajtu bo zobacz sobie wyżej gdzie pokazałem ci rozpiskę twojego akurat UDH. Pierwszy paramter UDH to UDH Length. W większości takich prostych przypadków ma on długość 5 oktetów ale jak widać może mieć więcej. Tak więc gdy będziesz sam dekodował to pobierz tą długość i wyrżnij te niepotrzebne bajty o ile rzeczywiście będą niepotrzebne ;) .... w tych twoim przykładzie właśnie było 5 oktetów co daje nam 7 bajtów i gdy się je "wyrżnie" to następne bajty są już czystym niesformatowanym tekstem tegoż SMSa. Tak bym chyba podszedł do tej sprawy

    pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy realizacji sterowania przekaźnikiem za pomocą SMS wysłanego z telefonu na drugi telefon podłączony do układu sterującego. Proponowane rozwiązania opierają się na wykorzystaniu telefonu obsługującego tryb tekstowy SMS (TXT) lub tryb PDU, komunikującego się z mikrokontrolerem przez interfejs UART. Przykładowo, tani telefon Nokia 5110 może odbierać SMS-y, które mikrokontroler analizuje i na podstawie określonych komend (np. "WLACZ LAPKE") steruje przekaźnikiem. Wskazano, że obsługa SMS wymaga dekodowania formatu PDU, który może zawierać dodatkowe nagłówki UDH (User Data Header), zwłaszcza przy wiadomościach łączonych lub formatowanych (EMS). Problemy pojawiają się przy różnorodności formatów SMS wysyłanych z różnych marek telefonów, co wymaga elastycznej obsługi dekodowania i ewentualnego usuwania UDH. Dyskutowano także o komendach AT do testowania gotowości telefonu i karty SIM oraz o konieczności dostosowania oprogramowania mikrokontrolera do specyfiki odbieranych wiadomości. Wskazano na dostępność projektów i artykułów, m.in. na stronie easy-soft.tsnet.pl oraz na forum elektroda.pl, które mogą pomóc w implementacji takiego systemu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA