eHouse 4 Android – Wysyłanie zdarzeń i komend do systemu eHouse przez SMS, eMail, WiFi, Internet

eHouse Inteligentny Dom komunikacja z Androidem.
Aby wysłać jedno lub kilka zdarzeń systemu eHouse została stworzona klasa ehousecommunication przy pomocy jednej komendy (1 linijki kodu źródłowego)
Wszystkie funkcje tej klasy uruchamia się statycznie (bez tworzenia instancji klasy).

Klasa ehousecommunication zawiera i będzie rozszerzana o wszystkie metody wysyłania komend sterujących do automatyki budynku eHouse z urządzeń pracujących pod systemem Android.

Aktualnie są to :

  • SMS
  • eMail
  • TCP/IP (WiFi, Ethernet, Internet, Intranet, LAN, WAN)

Funkcje dostępne w klasie „ehousecommunication”


public static int AddAsciiEvent(String event)

Dodanie zdarzenia (komendy eHouse) dla sterowników do kolejki zdarzeń do przesłania dowolną metodą transmisji
parametr event: kod zdarzenia (DirectEvent zapisany w kodzie hex) zgodnie ze standardem eHouse:
przykład: ehousecommunication.AddAsciiEvent(„37010101020000000000”);
Zdarzenie – przełączenie (zmiana stanu) wyjścia nr 1 w RM 1 (adres 55,1)

ehousecommunication.AddAsciiEvent(„37010101020000000000”); //Toggle output 1 of RM1 – address hex (37h,1)
addrh -> 55 (37h) (adres sterownika H )
addrl -> 1 – (adres sterownika L)
command 1 – komenda => ustawienie wyjścia
arg 1 – output nr (1) – parametr 1 dla komendy (nr wyjścia)
arg 2 – set value (2) – parametr 2 dla komendy (przełącz – zmień stan)
arg 3 – parametr 3 dla komendy
arg 4 – parametr 4 dla komendy
arg 5 – parametr 5 dla komendy
arg 6 -parametr 6 dla komendy
arg 7 – parametr 7 dla komendy

zwraca liczbę bajtów w kolejce binarnej – 10 bajtów na każde dodane zdarzenie.

Zdarzenia są jednocześnie dodawane do kolejki binarnej: EventToRunByte 10B każde zdarzenie
jak i tekstowej: EventToRun 20 znaków każde zdarzenie (zakodowane w kodzie ascii hex – tak jak parametr funkcji)

W przypadku wysyłania zdarzeń przez TCP/IP maksymalnie można wysyłać 20 zdarzeń (200B) (wysyłana jest kolejka binarna).
W przypadku zdarzeń wysyłanych przez SMS maksymalnie można wysyłać 7 zdarzeń (wysyłana jest kolejka tekstowa).
W przypadku zdarzeń wysyłanych przez eMail maksymalnie można wysyłać 7 zdarzeń (wysyłana jest kolejka tekstowa).

Dla zgodności najlepiej przyjąć najniższą wartość dla wszystkich metod (7) aby można było wybrać dowolną formę transmisji zdarzeń z kolejki do sterowników


public static void ClearEventQueue()

Czyści zawartość obu kolejek zdarzeń (binarną i tekstową oraz długość kolejki

przykład zastosowania:

ehousecommunication.ClearEventQueue();


public static void init()

Inicjuje ustawienia komunikacji dla wszystkich sposobów – wczytuje pliki konfiguracyjne wyeksporowane z aplikacji „eHouse.exe /mobile”. Funkcja ta musi być uruchomiona jako pierwsza (przed uruchomieniem prób transmisji, synchronizacji danych itd)

Aktualne pliki konfiguracyjne muszą zostać wgrane na kartę SD do katalogu „/isys/”.
Pliki te należy eksportować z aplikacji eHouse i aktualizować w przypadku:

  • Zmiany hash-kodu szyfrowania
  • zmiany ustawień transmisji przez jakiekolwiek media
  • zmiany haseł dostępowych
  • dodanie / usunięcie urządzeń
  • zmiany nazw sterowników, wyjść, wejść
  • zmiany obrazów do wizualizacji graficznej

przykład zastosowania:

ehousecommunication.init();


static public String GetLog()

zwraca zawartość logu
przykład zastosowania:
String Log=ehousecommunication.GetLog();


public static void ClearLog()

Czyści automatyczny log systemowy zawierający ważne informacje o transmisji itd
przykład zastosowania:
ehousecommunication.ClearLog();


static public String GetSmtpLog()

zwraca zawartość logu wysyłania eMaili przez server SMTP
przykład zastosowania:
String Log=ehousecommunication.GetSmtpLog();


public static void ClearSmtpLog()

Czyści automatyczny log wysyłania eMaili przez server SMTP
przykład zastosowania:
ehousecommunication.ClearSmtpLog();


public static boolean SendEmail()

Wysyła kolejkę zdarzeń przez eMail

zwraca „true” jak ok

czyści kolejkę zdarzeń jak ok

zapisuje rezultaty do logu SMTP

przykład zastosowania:
ehousecommunication.SendEmail();


public static boolean SendSMS()

Wysyła kolejkę zdarzeń przez SMS

zwraca „true” jak ok

czyści kolejkę zdarzeń jak ok

przykład zastosowania:
ehousecommunication.SendSMS();


public static boolean SendWiFi(String host,int port)

Wysyła kolejkę zdarzeń przez TCP/IP (WiFi,Ethernet, Internet, LAN, WAN)

host – adres ip serwera odbierającego zdarzenia lokalny lub globalny lub usługi ddns lub podobnej
port – nr portu serwera odbierającego dane

zwraca „true” jak ok

czyści kolejkę zdarzeń jak ok

przykład zastosowania: lokalnie dla CommManager’a

ehousecommunication.SendWiFi(„192.168.0.254”,9876);



Kompletny przykład kodu

/* eHouse For ANDROID panels, tablets, PDAs, Smartphones template API for communication to the eHouse system
* ONLY FOR REGISTERED USERS, VENDORS, COOPERATIVES Copyright iSys.Pl All Rights Reserved
*
* Requires classes:
*      ehousecommunication.class :
*                          Sending Events to eHouse system via:
*                          SMS, eMail, WIFI, INTERNET, ETHERNET, TCPIP

* Szablon Aplikacji Sterującej (API) dla platformy ANDROID do komunikacji z systemem eHouse oraz Wizualizacji stanu systemu
* TYLKO Dla zarejestrowanych użytkowników systemu eHouse, Firm Współpracujących All Rights Reserved
*
* Wymaga class:
*
*      ehousecommunication.class :
*                          Wysyła zdarzenia systemowe (komendy) do sterowników systemu eHouse przez:
*                          SMS, eMail, WIFI, INTERNET, ETHERNET, TCPIP
*
*
*/
package ehouse.android;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class ehouseandroid extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{   TextView tv=new TextView(this);
super.onCreate(savedInstanceState);

/* Initate and setup Android Application from config files generated from eHouse.exe appliaction
*
* Inicjuje ustawienia aplikacji na platformę Android wygenerowane z aplikacji eHouse.exe
*/

ehousecommunication.init();

/*
* Adding eHouse event to queue
*  dodanie eventu systemu ehouse do kolejki zdarzeń
*
*/
ehousecommunication.AddAsciiEvent(„37010101020000000000”);  //Toggle output 1 of RM1 – address hex (37h,1)
//addrh 55 (37h)
//addrl 1
//command 1 – set output
//arg 1 – output nr (1)
//arg 2 – set value (2) toggle
// arg 3.. not used

/* Sending eHouse events from queue via WiFi, Ethernet or Internet (TCP/IP) to CommManager or PC
*
* Wysłanie zdarzeń z kolejki zdarzeń (TCP/IP) przez WiFi, Ethernet lub Internet
*/

ehousecommunication.SendWiFi(„192.168.0.254”,9876);   //Sending to CommManager via WiFi, Ethernet – local

/* Send Contents of EventQueue via eMail for reception by emailgate.exe
* Wysyła zdarzenia z kolejki zdarzeń przez eMail do odbioru przez oprogramowanie emailgate.exe
*/

// ehousecommunication.SendEmail();

/*
* Send Contents of EventQueue via SMS for reception by CommManager or SMS-Gate connected to PC
* Wysyła zawartość kolejki Zdarzeń przez SMS dla CommManagera
* lub Bramki SMS/ Telefonu GSM podłączonego do PC odbieranego przez aplikację SMSGate.exe
*
*
*/
//SendSMS();

/*
*  Clear Event Queue do wysłania (after successful transmition via any metod) performed automatically
*
* Czyści kolejkę zdarzeń do wysłania (automatycznie usuwane są zdarzenia po przasłaniu dowolną metodą)
*
*/

//ehousecommunication.ClearEventQueue();

/*
* Get recent transmition Log
* zwraca Log z ostatniej transmisji
*/

tv.setText(ehousecommunication.GetLog());
setContentView(tv);

/*
*
* Clear Log
*
* Czyści Log
*
*/
//ClearLog();

}
}