Bramka SMS (SmsGate.exe)
Bramka SMS jest cyklicznie uruchamianą aplikacją przez aplikację eHouse, która pozwala na natychmiastowe wysyłanie SMSów z komputera poprzez dołączony telefon komórkowy lub kartę gsm. Aplikacja wysyła i odbiera SMSy i automatycznie kończy działanie po zakończeniu lub przekroczeniu zadanego czasu. SMSy do wysłania są brane z katalogu SMSOUT w katalogu aplikacji e-House. Jeden SMS jest zapisany w jednym pliku, w którym pierwsza linia zawiera numer telefonu adresata a druga treść wiadomości. Polskie znaki regionalne są automatycznie zastępowane na litery z podstawowego aflabetu, ze względu na dwukrotnie większą liczbę znaków na jeden SMS, które w tym formacie można wysłać. SMSy przychodzące z autoryzowanych numerów (administratorzy systemu eHouse) są zapisywane w katalogu SMSIN oraz EMAILS do uruchomienia zdarzeń przez aplikację eHouse. Stanowi to rodzaj zabezpieczenia aby nie można było uruchomić zdarzeń z numerów telefonów innych niż autoryzowane, gdyż nie można podszyć się pod inny numer telefonu. Pozostałe SMSy są zapisane w katalogu SMSIN\OTHERS jeśli taki istnieje, W przeciwnym razie są one kasowane. Przychodzące SMSy mogą być segregowane w katalogu SMSIN\OTHERS gdy utworzymy katalog o nazwie  numeru telefonu adresata wiadomości. Logi są zapisywane do pliku LOGS\sms.log.
Instalacja telefonu GSM

Podczas pracy bramki sms bardzo dobrze spisują się stare i nie używane telefony komórkowe. Najnowsze telefony komórkowe mogą posiadać pewne ograniczenia. W przypadku telefonów typu PALM lub PDA ewentualnie w niektórych modelach pracujących pod systemem operacyjnym nie jest możliwe odbieranie SMSów gdyż są one automatycznie odbierane przez system operacyjny. 
Aby zapewnić 100% wiarygodność przy wysyłaniu i odbieraniu SMS telefon komórkowy powinien być podłączony kablem RS232 lub konwerterem USB->RS232 tak aby telefon był wykrywalny przez aplikację hyper terminal. Przy połączeniach IRDA lub BlueTooth może być wymagana interwencja użytkownika podczas komunikacji co uniemożliwia bezobsługowe wysyłanie i odbieranie SMSów. Numer portu szeregowego musi znajdować się w zakresie COM1-COM9 lub być poprzedzony prefiksem "\\.\". Prędkość portu szeregowego nie powinna być wyższa niż zalecana przez producenta dla konkretnego modelu telefonu. Telefon powinien być jednocześnie podłączony do ładowania co zapewni stałe jego naładowanie.
Komputer powinien być zasilany poprzez UPS co uniezależni transmisję i pracę systemu w przypadku braku prądu. Dobre wybranie wartości progowej poziomu naładowania baterii pozwoli na sygnalizację zaniku napięcia w sieci, wartość ta zależy od zastosowanego modelu telefonu. 
W przypadku błędów transmisji i niestabilnej pracy systemu należy obniżyć prędkość interfejsu RS232 oraz ewentualnie wybrać optymalne ustawienia (zwiększenie) czasów w pliku sms.cfg tak by nie powodowało to dużego zwiększania czasu pracy aplikacji.

Konfiguracja Bramki SMS

Do konfiguracji służą dwa pliki konfiguracyjne:	sms.cfg i sms.body.

Opis parametrów konfiguracyjnych pliku sms.cfg:

Linia Nr	Wartość Domyślna	Zakres		Parametr
1					COM1-COM9	Nr portu szeregowego poprzedzona prefixem "\\.\".
2		9600			0-115200	Prędkość portu (Baud Rate).
3		TEXT					Tryb wysyłania wiadomości: PDU lub TEXT (zależy od modelu telefonu komórkowego, różne telefony posiadają lub nie, dany tryb wysyłania wiadomości).
4		NODEBUG				Tryb logowania: DEBUG lub NODEBUG (Tryb debugowania służy do wstępnej konfiguracji i sprawdzenia komend i parametrów telefonu).
5		5			0-100		Poziom sygnału (próg przy którym wysyłana jest wiadomość informująca o braku zasięgu telefonu GSM).
6		100			0-200		Poziom Baterii (próg przy którym wysyłana jest wiadomość informująca o rozładowanej baterii w telefonie GSM).
7		50			1-60000		Czas sprawdzania odpowiedzi na żądanie wysłane do telefonu GSM [ms]
8		50			1-60000		Czas wysyłania żądania (komendy) do telefonu GSM [ms]
9		30000			0-300000	Czas przekroczenia czasu działania aplikacja zostaje zamknięta bez względu na rezultat [ms]. 
							Timer jest uruchamiany przy starcie aplikacji, wysyłaniu wiadomości i odbiorze wiadomości.
10		60			0-1000		Ilość uruchomień programu po którym wysyłane jest ponowna informacja o słabej baterii lub braku zasięgu. 
							W przypadku gdy telefon jest naładowany i dobry zasięg licznik jest wyzerowany i wiadomość jest wysyłana 
							przy następnym uruchomieniu od wykrycia przekroczenia jednego z  progów
11							Od tej linii znajduje się lista autoryzowanych numerów, z których można wysyłać polecenia dla systemu eHouse.

Opis pliku sms.body (lista komend AT wysyłanych do telefonu GSM)

Komenda wysyłana do telefonu musi być poprzedzona znakiem 	">"
Komenda odbierana musi być poprzedzona znakiem 		"<" 	i zawsze następować po komendzie wysyłanej (liczba komend nadawczych i odbiorczych musi się zgadzać).
									"%" za znakiem "<" oznacza że wynik jest dopisany do pliku wyników phone.log przy każdym uruchomieniu plik ten jest czyszczony.
Pozostałe linie w pliku są ignorowane
Komendy zapisane w pliku sms.body powinny być najpierw jedna po drugiej sprawdzone w aplikacji hyperterminal podłączonej do telefonu komórkowego
Przykłady:
>AT
Wysyłanie Komendy AT
<OK
Oczekuje odpowiedzi OK
Wysyła komendę AT (sprawdzenie gotowości) do telefonu Komórkowego i powtarza aż do momentu odebrania odpowiedzi OK po odebraniu odpowiedzi OK przechodzi do następnej komendy.
>AT+COPS?
Wysyłanie komendy AT+COPS? (informacji o operatorze)
<%OK
Oczekuje odpowiedzi zakończonej OK dopisuje linie odpowiedzi do pliku phone.log 

Kompletny przykład dla telefonu GSM pracującego w trybie PDU dla niektórych modeli telefonów komendy mogą nie działać
Sprawdzenie statusu gotowości telefonu GSM czeka na odpowiedź OK
>AT
<OK
Resetuje telefon GSM do ustawień fabrycznych czeka na odpowiedź OK
>AT&F
<OK
Wyłączenie Echa dla telefonów nokia i siemens nie sprawdza odpowiedzi (jeśli nie znana komenda ignoruje ją)
>ATE
<
Wyłączenie Echa dla telefonów erricson nie sprawdza odpowiedzi (jeśli nie znana komenda ignoruje ją)
>ATE=0
<
Ustawia Asynchroniczy tryb transmisji RLP czeka na odpowiedź OK
>AT+CBST=0,0,1
<OK
Sprawdza poziom baterii telefonu GSM jeśli poniżej progu wysyła wiadomość na telefony autoryzowanych administratorów zapisuje wynik do pliku phone.log czeka na odpowiedź OK
>AT+CBC
<%OK
Odczytuje dane producenta telefonu i dodaje wynik do pliku phone.log czeka na odpowiedź OK
>AT+CGMI
<%OK
Odczytuje Model telefonu i dodaje wynik do pliku phone.log czeka na odpowiedź OK
>AT+CGMM
<%OK
Odczytuje dane operatora sieci podłączonego wynik zapisuje do pliku phone.log czeka na odpowiedź OK
>AT+COPS?
<%OK
Sprawdza poziom sygnału w telefonie GSM na okoliczność braku zasięgu zapisuje wynik do pliku phone.log i jeśli wartość znajduje się poniżej progu wysyła wiadomość na telefony autoryzowanych administratorów
>AT+CSQ
<%OK
Sprawdza gotowość telefonu GSM czeka na odpowiedź OK
>AT
<OK
Ustawia tryb wysyłania wiadomości PDU oczekuje odpowiedzi OK. Dodatkowo w pliku sms.cfg tryb wysyłania wiadomości musi być PDU
>AT+CMGF=0
<OK
Ustawia tryb wysyłania wiadomości TEXT (Dodatkowo w pliku sms.cfg tryb wysyłania wiadomości musi być TEXT) komenda ignorowana występuje wymiennie z trybem PDU
AT+CMGF=1
OK
Wysyła po kolei wiadomości SMS z katalogu SMSOUT czeka na odpowiedź OK
>AT+CMGS=
<OK
Sprawdza gotowość telefonu GSM czeka na odpowiedź OK
>AT
<OK
Wybiera pamięć  "Sim" w telefonie komórkowym czeka na odpowiedź OK
>AT+CPMS="SM"
<OK
Sprawdza gotowość telefonu komórkowego
>AT
<OK
Odczytuje wszystkie wiadomości (dla większości telefonów  w trybie PDU i TEXT) i na zakończenie wykasowuje odczytane wiadomości zakończone odpowiedzią OK
>AT+CMGL
<%OK
Dla niektórych telefonów w trybie PDU
AT+CMGL=4
%OK
Dla niektórych telefonów w trybie TEXT
AT+CMGL="REC ALL"
%OK
Sprawdza gotowość telefonu GSM
>AT
<OK
Wybiera pamięć "Telefon" w telefonie komórkowym czeka na odpowiedź OK
>AT+CPMS="MT"
<OK
Sprawdza Gotowość telefonu i czeka na odpowiedź OK
>AT
<OK
Odczytuje wszystkie wiadomości (dla większości telefonów  w trybie PDU i TEXT) i  zakończone odpowiedzią OK, na zakończenie wykasowuje odczytane wiadomości
>AT+CMGL
<%OK
Dla niektórych telefonów w trybie PDU
AT+CMGL=4
%OK
Dla niektórych telefonów w trybie TEXT
AT+CMGL="REC ALL"
%OK
Sprawdza gotowość telefonu GSM i czeka na odpowiedź OK
>AT
<OK
Ponownie sprawdza wiadomości do wysłania w katalogu SMSOUT i wysyła jeśli coś nowego doszło czeka na odpowiedź OK
>AT+CMGS=
<OK
Sprawdza gotowość telefonu GSM i czeka na odpowiedź OK
>AT
<OK

Kontakt:
iSys
biuro@isys.pl
www.isys.pl