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 od firmy SIEMENS
- GS-01 od firmy WESTERMO
- Wavecom (např. WMOD2) od firmy WISMO
- ale také jakýkoliv jiný, který podporuje standard GSM ETSI 07.05
Před použitím tohoto ovladače v aplikaci PROMOTIC je vhodné shlédnout "
PROMOTIC video kurz 4 - Komunikační ovladače".
Základní vlastnosti ovladače:
- Použití tohoto ovladače vyžaduje zakoupení
licence PmSMS. Při vývoji aplikace ve freeware módu
PmFree nebo s
vývojovou licencí a při jejím testování v runtime je tato komponenta vždy funkční.
- Komunikace je pro Ethernet (aplikace PROMOTIC je klient) nebo pro sériovou linku (COM1, COM2 ...). Zatím je implementováno zasílání stejných dat přes Ethernet jak pro sériovou linku.
I když zařízení nemá Ethernet rozhraní, lze k němu připojit převodník "sériová linka-Ethernet" a na straně aplikace PROMOTIC tak komunikovat přes Ethernet.
Doporučené hodnoty parametrů objektu PmaComm:
Rychlost | 9600 Bd (závisí na nastavení GSM modulu) |
Počet datových bitů | 8 |
Parita | NO (žádná) |
Počet stopbitů | 2 (závisí na nastavení GSM modulu) |
Počet opakování při neúspěšném přenosu | 0 |
Timeout mezi příjmem 2 znaků | 100 ms |
Prodleva mezi příjmem-vysláním | 200 ms |
Řízení RTS signálu | log.1 |
Řízení DTR signálu | log.1 |
---|
Zatím je implementováno zasílání stejných dat přes Ethernet jak pro sériovou linku. V tom případě lze nastavit parametry Ethernet podle parametrů převodníku Ethernet/sériová linka.
Timeout příjmu odpovědi | 2000 ms. Jen pro sériovou 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ěď, pak se přenos zprávy ukončí (je vyvolána událost onEndOfTransfer s chybou 24 nebo 66). |
Prodleva navazování spojení při inicializaci | 2000 - 5000 ms |
Provést inicializační nastavení modemu | Urč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 / Ne.
Tento parametr je silnější než podobný parametr Filtrovat ECHO znaky v konfigurátorech Nastavení parametrů sériové linky. Proto je nutno zvolit "Filtrovat ECHO znaky"=Ne. |
Formát zprávy | Je 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 podle 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 od firmy Siemens.
PDU mód pro starý GSM modul A1 - Data se přenášejí v TPDU datech (podle 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)! |
Znaková sada | Při inicializaci ovladače se pošle příkaz AT+CSCS, který přepne modem do režimu kdy se textové zprávy budou posílat v dané znakové sadě.
No - Příkaz AT+CSCS se nepošle. Všechny textové zprávy se budou posílat jako ASCII znaky. V tom případě nelze posílat znaky v národních kódových stránkách (např. znaky ž,á,č ...).
UTF-8 - Při inicializaci se pošle příkaz AT+CSCS=UTF-8. Všechny textové zprávy se budou posílat v Unicode UTF-8. V tom případě lze posílat znaky všech národních jazyků. |
---|
Popis komunikace pomocí objektu PmaCommMsg
V parametrech zprávy objektu
PmaCommMsg lze definovat typy zpráv:
-
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 síti
GSM) je možné že poprvé inicializace neprojde úspěšně. V tom případě je nutno zvětšit prodlevu navazování spojení v parametrech protokolu nebo inicializační zprávu volat vícekrát.
- Karta "
Parametry":
-
Preferovaná paměť zpráv: Zde lze nastavit, která paměť modulu se bude využívat pro přenos zpráv. Možnosti jsou:
- Podle nastavení v GSM modulu (přednastaveno)
- Paměť na SIM kartě
- Paměť v GSM modulu
- Paměť na SIM kartě i v GSM modulu
- V kartě "
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 (Short Message Service Center).
Pro GSM síť O2 je to číslo "+420602909909", pro T-MOBILE je to číslo "+420603052000".
-
Zaslání SMS zprávy:
Tato zpráva pošle SMS zprávu na zadané telefonní číslo.
- Karta "
Parametry":
-
Timeout příjmu potvrzení zaslání [ms]:
Zde lze nastavit jak dlouho bude ovladač čekat (v milisekundách) na potvrzení příjmu zaslání.
Hodnota
0 znamená že se bude čekat podle hodnoty parametru
Timeout přenosu jednoho paketu [ms].
Pokud do této doby nepříjde potvrzení, pak se ukončí přenos zprávy s chybou
24.
- V kartě "
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".
Někdy je potřeba zadat toto číslo bez uvozovek a někdy s uvozovkami.
- 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".
-
Příjem SMS zprávy:
Tato zpráva zjistí zda je v
GSM modulu přijata alespoň jedna SMS zpráva.
Pokud ano, pak 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. je vyvolána 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 nutno spouštět objekt
PmaCommMsg s tímto typem zprávy (metodou
Run) pravidelně například každých 10 sekund.
- V kartě "
Data-příjem" jsou proměnné:
- TIME (Time of receive): Čas příjmu zprávy do GSM modulu.
Příklad: "13.5.2024 15:40"
- FROM (Phone number): Telefonní číslo odesilatele zprávy.
Příklad: "+420602505648"
- MSG (Content of message): Text přijaté SMS zprávy.
-
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.
- Karta "
Parametry":
- Typ příjmu dat: Lze nastavit zda data přicházejí v 1 nebo ve 2 zprávách. Implicitně je v jedné zprávě.
Pokud odpověď přichází například nejprve z GSM modulu a pak z SMS centra, pak nastavit na 2 zprávy.
- V kartě "
Data-zaslání" jsou proměnné:
- DATA (Data for send): Text zprávy (příkazu), která se má zaslat do GSM modulu.
- V kartě "
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, pak je nutno zvýšit:
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č, zaslání/příjem SMS a pak zase odpojit ovladač a připojit GPRS síť. GPRS síť lze ovládat pomocí nástroje
rasphone.exe (je součástí
OS Windows).
Příklad:
Na začátku konfigurátor "
PmaComm > Nastavení parametrů sériové linky > Sériový port" je nastaven na
"Nenastaveno". GPRS síť je připojena (název modemu v
OS Windows je například
"GSMname") a například port
"COM1" proto nelze použít. Nyní je potřeba poslat SMS zprávu:
Pokud nevznikla chyba, pak se těmito příkazy dal podnět k přenosu SMS zprávy. Po zaslání SMS zprávy je vyvolána událost
PmaCommMsg.onEndOfTransfer ve které lze nyní zavřít port a znovu připojit síť:
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 vlákně (threadu) - viz
Jak spouštět vybrané skripty v jiném vlákně (threadu).