Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmSMS - Ovladač pro komunikaci s GSM moduly pomocí SMS zpráv

Komunikační ovladač pro SMS zprávy umožňuje pomocí GSM modulu posílat a přijímat SMS zprávy (Short Message Service).

GSM modem musí podporovat AT příkazy v textovém módu (standard GSM ETSI 07.05). Tento standard podporuje většina GSM modemů.

 
Příklady GSM modulů na kterých byl ovladač vyzkoušen:
- TC35, TC35i, MC35, MC35i, MC39i firmy SIEMENS
- GS-01 firmy WESTERMO
- Wavecom (např. WMOD2) firmy WISMO
 
Před použitím tohoto ovladače v aplikaci PROMOTIC je vhodné přečíst kapitolu: Komunikace pomocí PROMOTIC ovladačů.
 
Základní vlastnosti ovladače:
- Použití tohoto ovladače je vázáno na zakoupení licence: PmSMS. S freeeware verzí PmFree nebo při vývoji aplikace (s vývojovou licencí pro testovací účely) je tato komponenta funkční vždy.
- Komunikace je přes Ethernet nebo přes standardní sériovou linku (COM1, COM2 ...). Zatím je implementováno zasílání stejných dat po Ethernet jak pro sériovou linku.

I když přístroj nemá Ethernet rozhraní, lze k němu připojit převodník "sériová linka-Ethernet" a na straně PROMOTIC aplikace tak komunikovat přes Ethernet.

- Ovladač je začleněn do systému PROMOTIC pomocí objektu PmComm.

Ovladač podporuje použití objektu PmCommMsg. Objekt PmCommData nelze používat.

Pro snadné přidání tohoto ovladače do aplikace je vhodné použít: Předkonfigurace ve skupině "SMS zprávy"

 

Doporučené hodnoty parametrů:

Doporučené hodnoty pro Parametry sériové linky:
Rychlost9600 Bd (závisí na nastavení GSM modulu)
Počet datových bitů8
ParitaNO (žádná)
Počet stopbitů2 (závisí na nastavení GSM modulu)
Počet opakování při neúspěšném přenosu0
Timeout mezi příjmem 2 znaků100 ms
Prodleva mezi příjmem a vysíláním200 ms
Řízení RTS signálulog.1
Řízení DTR signálulog.1
Doporučené hodnoty pro Parametry Ethernet:
Zatím je implementováno zasílání stejných dat po Ethernet jak pro sériovou linku. V tomto případě se mohou parametry Ethernet nastavit podle parametrů převodníku Ethernet/sériová linka.
Popis a doporučené hodnoty pro Parametry protokolu:
Timeout příjmu odpovědi2000 ms. Jen pro seriovou linku. Čas (v milisekundách) po který bude ovladač čekat na odpověď při vyslání zprávy. Pokud do této doby nepřijde vyžádaná odpověď, přenos zprávy se ukončí (vyvolá se událost onEndOfTransfer s chybou 24 nebo 66).
Prodleva navazování spojení při inicializaci2000 - 5000 ms
Provést inicializační nastavení modemuurčuje příkaz, který se při inicializaci zašle do modemu
Ano - příkaz "AT&F" (tovární nastavení modemu)
Ne - nezašle se nic
V přijímané zprávě bude i zpráva vyslaná (tzn. je ECHO=ozvěna)Ano Tento parametr je silnější než podobný parametr "Filtrovat ECHO znaky" v konfigurátorech Zadávání parametrů sériové linky. Musí se proto zvolit "Filtrovat ECHO znaky"=Ne.
Formát zprávyJe několik druhů GSM modemů, které spolu nejsou úplně kompatibilní. Proto lze v ovladači určit druh formátu zprávy:
Textový mód dle GSM 07.05 - Doporučujeme tento mód. Data se přenášejí v textovém režimu. Tento mód je kompatibilní například s GSM moduly: Siemens M20,TC35,TC35i,MC35,MC35i,MC39i, Westermo-GS01, Wavecom-WMOD2, atd.
PDU mód pro starý GSM modul M1 - Data se přenášejí v tzv PDU datech, která jsou kompatibilní s GSM modulem M1 firmy Siemens.
PDU mód pro starý GSM modul A1 - Data se přenášejí v TPDU datech (dle GSM 03.40), kompatibilní s modulem A1 (ale snad i s modulem M20 a Westermo-GS01). Zde je však implementováno jen posílaní SMS zpráv (ne příjem)!

Popis komunikace pomocí objektů PmCommMsg

V parametrech zprávy objektu PmCommMsg lze definovat 4 typy zpráv:
1) Inicializace SMS: Tato zpráva se musí spustit před všemi jinými typy. Provede se inicializace GSM modulu. Vzhledem k pomalosti navazování spojení (asi registraci modulu v GSM síti) je možné že poprvé inicializace neprojde úspěšně. Tehdy je potřeba zvětšit prodlevu navazování spojení v parametrech protokolu nebo inicializační zprávu volat vícekrát.
- Záložka Parametry:
- Preferovaná paměť zpráv: Lze zde nastavit, která paměť modulu se bude využívat pro přenos zpráv. Možnosti jsou:
- Dle nastavení v GSM modulu (implicitně)
- Paměť na SIM kartě
- Paměť v GSM modulu
- Paměť na SIM kartě i v GSM modulu
- V záložce Data-zaslání jsou proměnné:
- PIN (Personal Identification Number): Číslo PINu SIM (Subscriber Identity Module) karty vložené do GSM modulu. Příklad: "1589"
- SCA (Service center addres): Telefonní číslo SMS centra. Pro GSM síť O2 je to číslo "+420602909909", pro T-MOBILE je to číslo "+420603052000".
- V záložce Data-příjem není žádná proměnná.
2) Poslání SMS zprávy: Tato zpráva pošle SMS zprávu na zadané telefonní číslo.
- V záložce Data-zaslání jsou proměnné:
- TLF (Phone number): Telefonní číslo, na které se požaduje poslat SMS zpráva. Příklad: "602505647" nebo "+420602505647"
- MSG (Content of message): Text SMS zprávy, která se má poslat. Text může mít maximálně 160 znaků. Příklad: "Kotel1 má poruchu"
- V záložce Data-příjem není žádná proměnná.
3) Příjem SMS zprávy: Tato zpráva zjistí zda je v GSM modulu přijata alespoň jedna SMS zpráva. Pokud ano, uloží obsah první SMS zprávy do dat příjmu, tato SMS zpráva se v GSM modulu vymaže a přenos se ukončí. Pokud v GSM modulu není žádná přijatá zpráva, pak se přenos ukončí (tzn. vyvolá se událost onEndOfTransfer) s chybou 62 (záporné potvrzení). Spuštění zprávy tohoto typu tedy přijme jednorázově maximálně 1 zprávu. Pro kontinuální příjem přijímaných SMS zpráv je proto potřeba objekt PmCommMsg s tímto typem zprávy spouštět (metodou Run) pravidelně například každých 10 sekund.
- V záložce Data-zaslání není žádná proměnná.
- V záložce Data-příjem jsou proměnné:
- TIME (Time of receive): Čas příjmu zprávy do GSM modulu. Příklad: "13.5.2016 15:40"
- FROM (Phone number): Telefonní číslo odesilatele zprávy. Příklad: "+420602505648"
- MSG (Content of message): Text přijaté SMS zprávy.
4) Přenos obecné zprávy: Tato nestandardní zpráva slouží k přímému ovládání GSM modulu, například pomocí AT příkazů. Seznam těchto AT příkazů je mimo rámec této dokumentace.
- Záložka Parametry:
- Typ příjmu dat: Lze nastavit zda data přicházejí v 1 nebo ve 2 zprávách. Implicitně je v 1 zprávě. Pokud odpověď přichází například nejdřív z GSM modulu a pak z SMS centra, pak nastavit na 2 zprávy.
- V záložce Data-zaslání jsou proměnné:
- DATA (Data for send): Text zprávy (příkazu), která se má zaslat do GSM modulu.
- V záložce Data-příjem jsou proměnné:
- DATA (Data for receive): Text odpovědi z GSM modulu.
Poznámky:
- SMS zprávy by neměly obsahovat znaky s háčky a čárkami.
- GSM modul může mít potíže s příjmem zpráv jdoucích neustále rychle za sebou. V některých situacích se dokonce může komunikačně odpojit a je pak ho nutno manuálně resetovat. Pokud by k těmto situacím docházelo, je potřeba zvýšit:
a) Prodleva mezi příjmem a vysíláním v konfiguračním okně Parametry sériové linky.
b) Timeout příjmu odpovědi v konfiguračním okně Parametry protokolu.
 
GSM modem, GPRS síť a posílání SMS:

Pokud je potřeba mít GSM/GPRS modem napojený i na GPRS síť, pak je nutno mít v OS Windows nainstalovaný modem. V době GPRS připojení však sériový port ovládá OS Windows (přes tento instalovaný modem) a ovladač již tento port nemá přístupný - a nelze tedy přes něj posílat SMS zprávy. Řešením je dynamicky odpojit GPRS síť, připojit ovladač, poslat/přijmout SMS a pak zase odpojit ovladač a připojit GPRS síť. GPRS síť lze ovládat pomocí OS Windows utility rasphone.exe. Příklad:

Na začátku je konfigurátor PmComm > Zadávání parametrů sériové linky > Sériový port nastaven na "Nenastaveno". GPRS síť je připojena (název modemu v OS Windows je například "GSMname") a například port "COM1" nelze proto používat. Nyní je potřeba poslat SMS zprávu:

Dim b1, b2
b1 = Pm.CreateProcessSync("rasphone -h GSMname", ".") 'odpojení GPRS sítě
If b1 Then
  b2 = pMe.Pm("/PmCommSMS").OpenPort("COM1")
  If b2 Then
    pMe.Pm("/PmCommSMS/Msg1").Run 'poslání SMS zprávy
  Else
    .. ' Error OpenPort !!!
  End If
Else
  .. ' Error Disconnect Rasphone !!!
End If
Pokud nevznikla chyba tak se těmito příkazy dal podnět k přenosu SMS zprávy. Po zaslání SMS zprávy se vyvolá událost PmCommMsg.onEndOfTransfer ve které lze nyní zavřít port a znovu připojit síť:
Dim b1
pMe.Pm("/PmCommSMS").ClosePort
b1 = Pm.CreateProcessSync("rasphone -d GSMname", ".") 'připojení GPRS sítě
If Not b1 Then ... 'Error Connect Rasphone
Příkazy na odpojení a připojení síťě jsou synchronní a mohou trvat delší dobu (několik sekund). Je proto vhodné předložené algoritmy volat v jiném threadu - viz Jak spouštět vybrané skripty v jiném vlákně (threadu).
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice