Promotic

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 od firmy SIEMENS
- GS-01 od firmy WESTERMO
- Wavecom (např. WMOD2) od firmy WISMO
- GSM-BGS5-EEN od firmy SeaPraha (viz https://www.seapraha.cz/produkt/gsm-bgs5-een). Umožňuje komunikovat přes Ethernet.
- 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.
- Ovladač je začleněn do systému PROMOTIC pomocí objektu PmaComm.
Ovladač podporuje použití objektu PmaCommMsg. Objekt PmaCommGroup nelze použít.
Pro snadné přidání tohoto ovladače do aplikace je vhodné použít: Předkonfigurace "PmSMS - odesílání a příjem SMS z aplikace"


Doporučené hodnoty parametrů objektu PmaComm:

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
Zpoždění 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-klient:
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.
Popis a doporučené hodnoty pro Parametry protokolu:
Timeout příjmu odpovědi2000 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 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 / 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á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 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á sadaPř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".
- V kartě "Data-příjem" není žádná proměnná.

- 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".
- V kartě "Data-příjem" není žádná proměnná.

- 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-zaslání" není žádná proměnná.
- V kartě "Data-příjem" jsou proměnné:
- TIME (Time of receive): Čas příjmu zprávy do GSM modulu.
Příklad: "13.5.2023 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:
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č, 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:
JavaScriptVBScriptVyber a zkopíruj do schránky

var b1, b2;
b1 = Pm.CreateProcessSync("rasphone -h GSMname", ".");   // Odpojení GPRS sítě
if (b1)
{
b2 = pMe.Pm("/PmaCommSMS").OpenPort("COM1");
if (b2)
{
pMe.Pm("/PmaCommSMS/Msg1").Run();   // Poslání SMS zprávy
}
else
{
// Error OpenPort !!!
}
}
else
{
// Error Disconnect Rasphone !!!
}
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íť:
JavaScriptVBScriptVyber a zkopíruj do schránky

var b1;
pMe.Pm("/PmaCommSMS").ClosePort();
b1 = Pm.CreateProcessSync("rasphone -d GSMname", ".");   // Připojení GPRS sítě
if (! b1)
{
// 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 vlákně (threadu) - viz Jak spouštět vybrané skripty v jiném vlákně (threadu).

Historie:
Pm9.00.27: Nový konfigurátor "Timeout příjmu potvrzení zaslání [ms]" umožňuje zadat dobu čekání na potvrzení pro zprávu typu "Zaslání SMS zprávy".
Pm9.00.13: Nový konfigurátor "Znaková sada" umožňuje přepnout modem do kódování UTF-8.
© MICROSYS, spol. s r.o.