Implementation of a HomeMatic simulator using Android
|
|
|
- Cody West
- 10 years ago
- Views:
Transcription
1 Fakultät für Informatik der Technische Universität München Bachelor s Thesis in Informatics Implementation of a HomeMatic simulator using Android Johannes Neutze
2
3 Fakultät für Informatik der Technische Universität München Bachelor s Thesis in Informatics Implementation of a HomeMatic simulator using Android Implementierung eines HomeMatic Simulators unter Android Author: Johannes Neutze Supervisor: Prof. Dr. Uwe Baumgarten Advisor: Nils T. Kannengießer, M. Sc. Date: April 15, 2013
4
5 I assure the single handed composition of this bachelor thesis only supported by declared resources. Munich, 15th of April, 2013 Johannes Neutze
6
7 Abstract This bachelor thesis is about the development of an Android application, simulating the HomeMatic system and the XML API v1.2, designed to control the HomeMatic system, e.g. through the HomeDroid client. Configuration of the system, handshake with HomeDroid and persistent storage of the entire system status is implemented by using standard components, like a HTTP server, a relational database and an Android graphical user interface. As a result, the user can connect to the application via HomeDroid and interact with it, like with the real hardware. First, the foundation of emulated system and the environment used to develop the application, are explained. Then the system requirements are outlined and the architecture is illustrated. Finally, the implementation of each component, the graphical user interface and its testing are described.
8 Table of contents Abstract... 6 Table of content... 7 Acronyms and terms... 9 I Introduction and foundation Introduction Scope statement Problem statement Outline Foundation HomeMatic Logic structure HomeMatic API XML-API v HomeDroid Android Android demographics Android SDK Applications fundamentals Memory model...16 II Application implementation System design System requirements Architecture NanoHTTPD HomeMatic Emulator Database SQLite on Android Implementation Definitions NanoHTTPD
9 4.3 Data model Abstract Level tables HWDevice table Devicetype table Datapoint table Reality Level tables Device table Channel table Value table Groupings and Positioning Level Function table Room table Position table Database Database implementation ListHelper GUI HomeMatic Emulator Main Activity Edit devices Edit rooms and edit functions Connection information Assign channel Edit channel...46 III Quality management Testing Test criteria User test results...48 IV Conclusion and future work Conclusion Future work...53 Appendix...54 Storage medium...54 Bibliographic references
10 Acronyms and terms ADB Android Debug Bridge [10] ADT Android Development Tools [11] API Application Programming Interface App Application CCU Central Computing Unit CGI Common Gateway Interface Eclipse Open Source Development Software [14] EditText Text box in Android GUI [8] GUI Graphical User Interface HMEmulator HomeMatic Emulator application HomeDroid Android client for HomeMatic systems [31] HomeMatic Home automation hardware and software [19] HTTP HyperText Transfer Protocol MIME Multipurpose Internet Media Extension SDK Software Developer Kit spinner selection box with drop down menu [5] Tcl Tool Command Language toast small information pop up [6] USB Universal Serial Bus XML Extensible Markup Language XML API HomeMatic Plugin [13] 9
11 I Introduction and foundation 1 Introduction 1.1 Scope statement Create an emulator for a HomeMatic CCU including the XML API, a system database and a configuration module in 4 months using Android standard packages in Eclipse. The XML API implements the communication with the HomeDroid client. 1.2 Problem statement The emulator allows to demo the functionalities of the HomeMatic CCU with an Android device without buying the dedicated HomeMatic hardware. 1.3 Outline The following work describes the chosen architecture, its individual modules, the usage of the Android standard packages and the code developed to emulate the relevant parts of the CCU. 2 Foundation 2.1 HomeMatic The HomeMatic System is a proprietary system produced by the German company eq 3 and distributed in Germany and Switzerland [17]. The HomeMatic System includes the CCU, sensors and actors. Figure 1. HomeMatic system components. 10
12 2.1.1 Logic structure The CCU is a dedicated hardware running an operation system based on Linux with the HomeMatic software on top. It is responsible for the wired and wireless communication with the peripheral hardware and allows to automate tasks. The unit itself offers a small display with very rudimental functions. More complex tasks are supported via a web interface or PC software using direct USB connection. The HomeMatic software can be extended with plugins, e.g. for planning scheduled tasks or remote control. Sensors and actors are external hardware. Sensors for example are smoke detectors, thermometers or door/window lock sensors. Switches, dimmers or valves are actors. The whole system is modular and can be extended by adding hardware at any time. [21] HomeMatic API The hardware of the CCU is managed over the web interface which can be expanded via plugins using HomeMatic Script. HomeMatic Script is an internal language for the HomeMatic CCU to access and modify the status information and system variables. It represents the internal base for the application interfaces. Figure 2. Structure and integration of the XML API v
13 Tcl scripts are able to connect to the HomeMatic Script interpreter by including the tclrega.so library. Tcl scripts are then able to call HomeMatic Script functions via the rega_script() function and to read results via an array returned by rega_script(). Tcl script enhanced by HomeMatic Script is used in *.cgi scripts to implement application interfaces (API). These scripts are accessible via standard HTTP calls. The specific API (XML API v1.2) emulated in this thesis provides a predefined set of *.cgi scripts with its functionalities. [20] XML-API v1.2 The XML API is installed as a firmware update via the web interface. It uses the stack of HomeMatic Script, *.tcl and *.cgi, described above, to provide the functionalities in the set of *.cgi scripts listed below. Applications access the scripts via HTTP calls, such as IP]/config/XMLAPI/[script name].cgi?ise_id=[channel id]&new_value=[value]. All data is returned in STDOUT, structured in XML format. [13] Table 1. Available XMP API v1.2 *.cgi scripts [13]. devicelist.cgi functionlist.cgi roomlist.cgi state.cgi statechange.cgi statelist.cgi version.cgi returns list of all devices and its channels returns list of all functional groups and its channels returns all rooms and its channels returns the current value of the requested channel initiates the change of values for the specified channel returns all values of channels returns used version of the XML API The third party application used to verify the emulated system is HomeDroid. [31] 12
14 2.2 HomeDroid HomeDroid is an Android remote application for the HomeMatic system. It is providing a GUI, assigning data to categories, like devices, rooms, functions and methods to manipulate it. This application uses the XML API to communicate with the CCU. 2.3 Android Android demographics Android is the most popular mobile operating system. It is open source and based on the Linux kernel. It is designed for touchscreen devices like mobile phones and tablets. [7] The project to develop Android was financially backed and later bought by Google in Android was released synchronously to the founding of the Open Handset Alliance, a consortium of hardware, software and telecommunication companies, including Motorola, Qualcomm, T Mobile and others. Their aim was to develop open standards for mobile devices. The consortium is led by Google and members of the alliance are not allowed to produce devices running incompatible versions of Android. The Android code is released under the Apache Open Source License. This allows device manufacturers, wireless carriers and private developers to enhance the operating system. One reason for the large user and fan base. [29] Android s popularity is reflected in the Play Store where most of the applications are distributed. Over apps are available. [34] Android applications are written in Dalvik Java, a modified version of Java, using the Android SDK Android SDK The Android software developer kit is used for programming Android apps. It includes the necessary API libraries and developer tools to build, test and debug Android apps. It can be used on Linux, Mac OS and Windows, e.g. in Eclipse by using the Android Development Tools Plugin. [9] Eclipse is an open source, multi language software development environment which can be extended by plugins to provide additional languages and functions. Android Debug Bridge, short ADB, is included in the SDK package. It is used for direct interaction between computer and Android device via USB. The final version is compiled as a *.apk file on the computer by the Android SDK. Downloaded onto the device, it can be executed without the device being connected to a computer via ADB. Registered developers are allowed to upload the application to the Play Store. 13
15 2.3.3 Applications fundamentals Android applications are written in Java and compiled to *.apk archives. An apk file is considered as one single program and used to install the application on an Android device. If an application is installed on a device and started, it is executed in its own sandbox. A sandbox is an isolated computing environment where only this application runs in. Basically Android OS is a multi user Linux system in which each application represents a different user. The system has a strict permission management allowing applications only to access its own resources and system functions. Android starts the process when it is needed or shuts the process down when it is not used and memory has to be recovered. The memory management is done by Android in the background. This is realized in the application structure, described later. This creates a very secure environment by using the principle of least privilege. [3] All activities and privileges used by the application, like Internet, WiFi and SD card access, have to be defined in the manifest file of the application. These application rights have to be accepted on application installation by the user. There are some ways to share data with other applications and for an application to access system services. One way is to use the same user id to access each other s files. The applications have to be signed with the same application creator certificate to achieve this. The graphical user interface consists of screens, represented by activities. Each screen is an activity on its own. Activities have basically three states, resumed, paused and stopped. Resumed is also referred to as running and means the application activity is in the foreground. A paused activity is still alive and visible but another activity is shown. It still has its state and member information but it can be killed if extreme memory shortage occurs. If the activity is in the background and not visible by the user it is called stopped. It still holds state and member information but is more likely to be cleaned from the memory by the system. Activities can be stopped running by finish(), sent from the system or the app itself, or by the system forcing it. The application needs to have the data saving functions in the onpause() and onstop() methods to preserve its generated data. 14
16 Figure 3. Activity lifecycle [2]. Beside the code an application also has resources, like photos, strings and audio files. These are declared in XML files. This helps to update different characteristics of the application without changing the code and to easily make it available to devices with different configurations, like screen size or language. The Android SDK assigns each resource a unique integer ID which is used to reference it. [3] 15
17 2.3.4 Memory model There are different ways to store data in a persistent way so it does not get lost when the application is closed. Primitive data is mostly stored in sharedpreferences, like the reference to a ringtone or settings. It is hidden from the user and is saved as long as the application is installed on the device. Data can be saved in text files directly on the device s internal storage. It is saved to the application folder and can only be accessed by the application. This is a very simple way of saving data because the data is outside of the app itself. It is persistent and save from outside access because it is in the application folder. All data is lost upon uninstalling the application. Getting data into the application can be accomplished by choosing assets. Assets are files moved to the assets folder of the application before compiling the project. They can be accessed at runtime but are read only. These are mostly rudimental ways of handling data. Complex operations on persistent data have to be more efficient than using text files or the sharedpreferences. That s the reason why databases are used. They can provide data to all classes of the application but the data ca not be accessed from outside the application. Databases are realized by using SQLite databases. [4] 16
18 II Application implementation 3 System design 3.1 System requirements REQ 1 Stable Android application REQ 2 Emulating the CCU and the XML API v1.2 REQ 2.1 Data exchange between application and HomeDroid REQ devicelist.cgi retrievable and working REQ roomlist.cgi retrievable and working REQ functionlist.cgi retrievable and working REQ state.cgi and statelist.cgi retrievable and working REQ statechange.cgi executable and working REQ version.cgi retrievable and working REQ 2.2 Data storage REQ Creation of relevant entities REQ Persistency of data REQ Initial load of config database REQ 2.3 Data modification REQ Interactive creation of real configuration REQ Editable devices REQ Editable rooms REQ Editable functions REQ Editable channels REQ Editable values REQ Visualization of positions and values of channels in the house Not in scope is the functionality on mobile internet and the use real sensors and actors in connection with the application. 17
19 3.2 Architecture The emulated system consists of five main parts. First part is the emulated the XML API v1.2 providing the needed *.cgi commands. The second part is the web server, which handles the incoming requests from HomeDroid. Third part is the logic, responsible for processing input and output. The fourth part is the database, handling the persistent storage of the system data. And last but not least the graphical user interface with its possibilities to configure the system. Figure 4. Real vs. emulated configuration NanoHTTPD HomeDroid raises requests via HTTP and expects XML structured data as an answer. For this purpose a web server has to be implemented because the client requested format is in HTTP. The web server answers on these HTTP call with the requested data. An integration into the application code is necessary so it should be preferably written in Java. Instead of using *.cgi as in the original hardware the server has to handle requests in combination with a database. Also multi user support should be available. 18
20 To fit all of this requirements, NanoHTTPD is used. It is an open source web server with a small resource usage, embeddable and modifiable. It was developed to be small and uncomplicated to embed into Java projects. It features only one Java file and is compatible from Java 1.1 up. It supports GET and POST methods as well as dynamic content and file serving but does not support *.cgi. [25] HomeDroid raises requests as HTTP requests in the following scheme [33]: GET /config/xmlapi/[script name] HTTP/1.1 User Agent: Dalvik/1.6.0 (Linux; U; Android 4.2.1; Nexus 4 Build/JOP40G) Host: :8765 Connection: Keep Alive Accept Encoding: gzip Request line: The request line contains the path to the requested source and the HTTP version User Agent: The user agent header contains the software name acting on behalf of the user. It contains information about the client. With this information the server can return special content for the different clients, like mobile sites for mobile devices or adjusted ads for the different operating systems. In this case the Nexus 4 with Android Build JOP40G can be identified. Host: The host header contains the domain name of the server. It has to be included since HTTP/1.1 for name based hosts. If it is not present the server replies with a 400 Bad Request. Connection: The connection header defines the connection type. In this case the connection should be Keep Alive that it has to be established only once. Accept Encoding: The accept encoding header submits which encode formats are supported. Encoding is used to minimize the data size. Content Type: On response, the server adds the MIME type of the body to the header to inform the client that XML is used. The real HomeMatic uses *.cgi scripts to return the data. These *.cgi scripts are written in perl and use HomeMatic Script to retrieve the data. There are some reasons why this methodic was not transferred to the emulator. Using *.cgi script would require to use an interpreter and would increase the footprint unnecessarily. NanoHTTPD is not a stand alone web server but is embedded into the application. Being part of the application the NanoHTTPD is able to access the database directly so *.cgi scripts are not necessary to create dynamic content. Parameters and data can be simply passed inside the application and no external scripts are needed. 19
21 3.2.2 HomeMatic Emulator In this implementation the *.cgi scripts are replaced by the web server transmitting the requests and parameters directly to the logic. The logic is part of the application code and uses SQL statements to gather the requested data. The web server passes the request line to the ListHelper which does the work. The requests, the ListHelper can handle, are defined. The web server knows these GET requests and whether they are available. If the request is unknown, the NanoHTTPD replies with an error. When the request is passed to the ListHelper, the matching method is called and executed. The method queries the required data from the database and then transfers into the XML code for the HomeDroid application Database A database system is used to store data. It consists of a database management system and the stored data that should be managed. A database system guarantees persistence and consistency of data and provides an interface to insert, delete and manipulate information. The stored data is physically saved on the hard disc or flash memory, as opposed to the volatile program variables only residing in RAM during process runtime. The database uses tables to store the data. A table is a two dimensional representation of the data using columns and rows and has a unique name. [30] Android provides full support for SQLite databases. SQLite is a relational database management system. Its software library implements a self contained, serverless, zero configuration, transactional SQL database engine. SQLite is an integral part of the client and not a separate process like other databases. [32] SQLite is an embedded database system and has an optimized size. Unlike common database systems it does not use separate processes for the server and the client. It might be the most widely used embedded database because of its use in application software such as web browsers and on most mobile operating systems, like Android or ios. It is published under public domain license SQLite on Android SQLite is fully supported by Android and is available on every Android device. SQLite itself supports data types TEXT, INTEGER and REAL, similar to String, long and double in Java. All data has to be converted to these types in order to be saved in the database. SQLite has no mechanism to check whether the right format is inserted into a column. The database itself does not require a setup and is managed by the Android system. For the database itself, oncreate() and onupgrade() must be defined. Upon creation, the database is saved on the internal storage in the directory DATA/data/[application name]/database/[filename]. To use and work with databases on Android, the package android.database is needed. The package android.database.sqlite contains the SQLite specific classes. While the management of the database is done by the Android system, the create and upgrade methods for the database need to be provided in the application code. Create, read and update methods are written when their functionality is needed. The database is created with a class that is extended by SQLiteHelper. This class handles the 20
22 declaration and creation of tables and creation, updating and loading of the database. In the class constructor of the SQLiteHelper class the super() method is invoked. super() executes the default method with the parameters of database name and the database version to define the database object. The two functions oncreate() and onupgrade() overwrite the methods of the SQLiteHelper class. oncreate() is called by the framework to create the database. In case it does not exist, onupgrade() is called if the database version, defined in the code, changed. It provides a way to change the database schema when the database or a table was edited in the code. These functions receive the database they should handle as parameter. To read and write from and to the database, the methods getreadabledatabase() and getwritabledatabase() are used. In addition to the respective data, a primary auto increment key column is inserted into each table. The key column is used to uniquely identify each record and used by most methods to access the data. The content of the database is handled with another class. The DataSource class provides insert(), update() and delete() methods as well as execsql() to directly execute SQL statements. ContentValues are used to insert and update database entries. Each attribute is added to the ContentValue and inserted into the database as one column with a generated key. Data can be accessed by using rawquery() which accepts SQL statements, like SELECT * FROM table WHERE a=b, as input. Whereas query() has a defined interface for passing query components. Java and the environment is object orientated so even the query data is returned as an object. The cursor object saves the id of the first result in the table and can be moved to the next result row. The whole data can be accessed by movetofirst() and movetonext(). Finally with isafterlast(), it is checked whether all elements were provided. By calling getcount() the number of rows can be received. With getter methods single columns and its attributes can be read. Before using the next Cursor object, it has to be released by calling close(). [1, 12, 27] 21
23 4 Implementation 4.1 Definitions Below data types reflect the entities in the HomeDroid system and are stored in specific database tables. The tables are used to create the different lists. The HomeDroid app requests the data and the ListHelper processes the data. [15, 16] Device A device is a sensor or actor. It provides the basis for its channels and the channel s datapoints. The device can be seen as a container for its components, e.g. a blinds device has many channels, the blinds channels. Channel A channel is a part of a device. It contains the datapoints that define the type of the channel, e.g. a thermometer has two datapoints, temperature and humidity. Datapoint A datapoint contains a value of the the channel, e.g. a thermometer s temperature channel has 27.0 as value. Room A room is an area inside or outside the house. A Channel can be attached to a room to provide orientation where it is located. For instance a thermometer s channel has the attribute Garden as room, to indicate it somewhere in the garden. Function Channels can be grouped into functions. They will be summed up under one word, like all smoke detectors in the house can be united in the function fire alarm system. Each channel can be assigned to one function. 22
24 4.2 NanoHTTPD The NanoHTTPD server starts on application startup. It is responsible for handling the HomeDroid requests. The server provides a port for the client to which it can connect. Figure 5. Sequence diagram of a HomeDroid request. When the connection is established, the client sends requests in HTTP GET, as described above, to the server s IP address and port. The server buffers the request and parses it into the demanded *.cgi name and if available, the given parameters as well. HomeDroid requires the answer in a XML format. The ListHelper creates the demanded format and collects the needed data from the database by calling the *.cgi related method with the corresponding parameters. After the ListHelper created the XML list, the necessary HTTP header information will be added by the NanoHTTPD and responded to the HomeDroid client. 23
25 4.3 Data model Before the function of the data handling and output can be explained, a closer look at the data model has to be made. The data is persistently saved in a database to which the the GUI and the ListHelper have access. The database is used to store the initiated devices and its components to make it editable and reachable for the clients. The data is split into three big categories, the Abstract Level, the Reality Level and the third level, which can be divided into Groupings and Positioning. The initial database is located in the assets folder of the application. It contains the predefined tables which are transferred from the documentation of the HomeMatic system [15, 16]. Only devices and their components, provided as templates in the Abstract Level of the database, can be created. If the portfolio of devices should be expanded, new hardware devices have to be added and the database has to be recompiled. Then the database has to be transferred into the assets folder of the application in Eclipse and the apk file has to be generated. Figure 6. Structure of the database tables. 24
26 4.3.1 Abstract Level tables The Abstract Level contains the information needed for the creation of individual devices with their channels and values. The Abstract Level tables contain information about hardware available for the HomeMatic system, like the associated number of channels and the matching value type for channels. The HMEmulator can only handle these predefined hardware components. [15, 16] HWDevice table This table contains the information about hardware models provided by HomeMatic and is initially loaded from the assets. The data has been taken from the HomeMatic documentation [16]. When initiating an actual device based on the hardware model, the device type is used to determine the channel attributes. That s the reason why only hardware models in this table can be instantiated into actual devices. Table 2. HWDevice table. _id type hw (key) The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 The device type. e.g. temperature humidity sensor The hardware model name given by HomeMatic. e.g. HM WDS10 TH 0 The hw column is used to join the table with the Devicetype table s hw column. 25
27 Devicetype table The Devicetype table contains the different channel types and the number of associated channels. The count indicates how many channels of the given channel_type a device has. For example blinds actor come with one to two channels to control the blinds. On device creation in Edit Devices, the necessary channels are created. Depending on the channel_type, the relevant datapoints are created in turn [16]. Device types are e.g. Weather or Dimmer. The table is loaded from the assets. Table 3. Devicetype table. _id hw (foreign key) cnt channel_type (key) The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 The hardware model name. e.g. HM WDS10 TH 0 The number of channels of channel_type for the device. e.g. 2 The type reference for the device. e.g. WEATHER The Devicetype table is linked to the HWDevice table via the hw columns and to the datapoint via channel_type. 26
28 Datapoint table The Datapoint table is also loaded from the assets and contains the data defined in the HomeMatic documentation [16]. The datapoints are the variables and values a channel has. On device creation all datapoints belonging to the device type are created in the Value table. The table specifies the value type, its format, its access type, min and max value, unit and the standard value. Table 4. Datapoint table. _id (key) channel_type (foreign key) name type access_type min max unit stdvalue The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 Devicetype using this datapoint. e.g. WEATHER The name of the value. e.g. Humidity The value type as number. As not documented and not needed by HomeDroid, it is populated with a dummy. e.g. float Direction of communication. e.g. sender or receiver Minimum value of the state. Maximum value of the state. Type of the value. e.g. percentage Default value. e.g. 0.0 The Datapoint table is linked to the Devicetype table via channel_type. 27
29 4.3.2 Reality Level tables The Reality Level instantiates the real devices. In contrast to the abstract level tables, these tables contain all devices actually present in the current configuration, not the archetype devices. These would be the devices present in real life in the HomeMatic system, the ones which are existing and not only known to the system Device table The Device table contains the actually existing devices of the emulated system with a name given by the user. Device creation instantiates a hardware device in the table. Devices can be created and deleted in the Edit Devices menu in the top right corner of the Main Activity of the GUI. Table 5. Device table. _id (key) name address device_interface device_type The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 Name given by the user. e.g. Garden Thermometer The device address for clients. It is starting with JEQ followed by a seven digit number consisting of zeros and the device _id at the end. e.g. JEQ The hardware interface name. As this address is not documented and not needed for the HomeDroid, it is populated with a dummy. e.g. BidCos RF Hardware references name. e.g. HM WDS10 TH 0 The device is linked to the Channel table via the (device) _id and the (channel s) parent_device. 28
30 Channel table The Channel table instantiates the channels of an actual device, e.g. a thermometer has one channel which provides the temperature and humidity and a blinds device can have several blinds channels. The number and type of channels created for a device is defined in the Devicetype table. Table 6. Channel table. _id (key) name address parent_device (foreign key) device_index function_id (foreign key) room_id (foreign key) The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 Name of the channel. It is generated on creation and consisting of type, address and index. It can be renamed by user. e.g. HM WDS10 TH 0 JEQ :1 The channel address for clients. It consists of device address plus the index of the channel. The address is used by the HomeDroid client to assign channel and device. e.g. JEQ :1 Id of the device the channel belongs to. e.g. 42 A running number of the channel for the device. Starts with 1. The number of channels of the device is defined in Devicetype table e.g. 1 Id of the function the channel is assigned to. e.g. 2 Id of the room the channel is assigned to. e.g. 5 The channel is linked to its device via parent_device and the room as well as the function are linked via room_id and function_id. 29
31 Value table In the Value table the actual status of the channels are instantiated. Each channel type has its own datapoints. They are created on channel declaration and saved in the Value table. The status of a datapoint can be remotely modified by using statechange or direct via the GUI of the HMEmulator. Table 7. Value table. _id (key) name value_type state timestamp channel_id (foreign key) dp_id (foreign key) The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 Name of the value. e.g. temperature The type of the value. Boolean, integer float are supported and depending on the datapoint. e.g. 4 Current value of the state. e.g. 25 ( C) System generated timestamp of the last edit. Id of the channel the value record belongs to. e.g 42 Id of the datapoint the value record inherits from. e.g. 42 The Value table is linked to the Channel table via the channel_id. 30
32 4.3.3 Groupings and Positioning Level Groupings are present in the real HomeMatic model. They consist of Functions and Rooms. Functions summarize different channels under one term. Whereas rooms are a spatial grouping of the channels, functions are functional grouping. Positioning realizes the visualization for the emulator and is not present in the original HomeMatic Function table The Function table contains the names and descriptions of the different functional groupings of sensors. Functions can be edited in the Edit Functions menu. The function can be named and given a description for humans to identify it more easily. The function can be assigned to the channel on Assign Channel. Table 8. Function table. _id (key) name description The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 User given name of the function. e.g. all blinds User given description of the function. e.g. easy and fast access to all blinds The channel is connected via the function_id. 31
33 Room table The Room table contains the different rooms available in the simulated house. Rooms can be added to the system in the Edit Rooms menu of the Main Activity. In Assign Channel, channels can be tied to rooms and their _ids. Please note, rooms are a logical grouping of channels whereas positions are virtual locations for single channels. Table 9. Room table. _id (key) name The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 User given name of the room. e.g. living room The channel is connected via the room_id. 32
34 Position table The coordinates of the channel in the virtual house are saved in the Position table. On position assignment the channel_id, coordinates and size are stored in the table. Table 10. Position table. _id channel_id (foreign key) x_cood y_cood size The unique identifier. It is automatically created by database and incremented for each new table record. e.g. 42 Id of the channel the position represents. e.g. 42 x coordinate of the location of the channel in the two dimensional map. e.g. 133,7 y coordinate of the location of the channel in the two dimensional map. e.g. 133,7 Size of the channel location in pixels. e.g. 100 The position is linked to its channel via channel_id. 33
35 4.4 Database All these tables are part of the database building the foundation of the HomeMatic emulator. The Abstract Level includes the basic data needed to create the devices and its components. The Reality Level is used to save the user created and modified content and initially empty. The Groupings and Positions are also initially empty. The abstract level tables are predefined upon the installation of the app. The data needed for the HMEmulator was extracted from the documentation [15, 16]. It was written into a *.csv file. In order to make the creation reproducible, a shell script was created with all the SQLite statements needed to create the tables and populate them with the data from the *.csv file. This database is added to the assets folder of the Android application. A pre created database was chosen because it is very uncomplicated to create a database out of this data and to enter a big amount of data very quickly via a *.csv file. It is more comfortable to edit and add configuration data to the database than doing it directly in the Android application s code. On first startup, the database is read and copied from the assets folder into the application s own database. The database already contains the empty tables of the Reality and Grouping level which are needed for the application. If adding new hardware models or device types becomes a recurring process and user created data should not be lost, the upgrade method has to be modified. [26] Database implementation The implemented database consists of two classes and one class for each table object. The DatabaseHelper extends the SQLiteHelper class and is responsible for the creation, editing and updating of the database itself. The DataSource class contains the methods to handle the tables. The table object classes provide the setters and getters to handle the attributes of the objects created by the DataSource from the tables. The setters are used to assign attributes to an object, while getters are used to receive the requested attribute. The tables names and columns are known as strings in the DatabaseHelper class to get access to them. It checks if there s already a database of the app with the same version number in the application folder on the device. If it does not exist or is of an older version, the database from the asset folder is copied into applications database. The DataSource contains all the methods needed to access the tables of the database. To edit the database, it has to open it first to gain write rights. This is achieved by using a DatabaseHelper object. The methods included in this class are the read, insert and update functions which are allowed for each table, e.g. there is no delete or insert method for the HWDevice table because it stays unmodified. The Java code uses cursors to point to a database record which are then converted to an object. Each table has its own object and queries are returned as a list of results created with the cursor. To create objects, classes with setter and getter methods for the object are needed. The cursor is converted to the object via a cursortoobject() method which sets the position of the cursor in the record to the related attribute in the object. These objects are used throughout the Java code. DatabaseHelper and DataSource are the basis for the GUI and database access. [28] 34
36 4.4.2 ListHelper The ListHelper is the functionality which emulates the *.cgi scripts. Its job is to gather the requested information for the NanoHTTPD to pass to the client via STDOUT. Thus the ListHelper class has a replacement method for each needed *.cgi used by HomeDroid. The methods query the database to receive the necessary data for the lists. The data is merged with the XML format the original XML API delivers. Only the information necessary for HomeDroid were added to the table, so some parts of the responses are static. This data was re engineered from the HomeMatic documentation, the XML API, the real hardware and by using HomeDroid. First, the XML API was analyzed. The scripts were downloaded and the XML related content was extracted [18]. This theoretical way was used, because in the beginning no real hardware was available. With this information, the structure, like the different *.cgi lists, were modeled. They were tested as dummy lists to check the NanoHTTPD functionality in combination with the HomeDroid client. Information about the HomeDroid requests was gathered by printing the HTTP GETs it sends. With this information the methods for the NanoHTTPD to reply with the right XML code were created. The lists were phrased from the extracted code and by using existing lists from other users posted in forums [22, 23, 24]. Later the hardware was available and lists were directly accessible and could be inspected in connection with the real hardware. Second the implementation of the data model created from gathered information was performed. The lists were split up into the different tables. The tables have been inserted into the database and the dynamical creation of the *.cgi request answers was implemented. After the foundation was working, the Abstract Level tables were added. The data for these tables has been taken directly from the documentation [16]. This was done after being sure the HomeDroid accepted the data that had been taken from the available hardware. With these tables it was possible to implement the statechange.cgi method and its functionalities. The Position table was added with the graphical user interface because it has only HMEmulator specific information. All *.cgi s, except state and statechange, require no parameters. State requires an _id to return the channel s current status. Whereas statechange needs a datapoint _id to change the current status of a datapoint. Parameters are specified in a name = value fashion standard in HTTP GET requests. Script request with parameters are looking like this: [script name].cgi?ise_id=[_id]&new_value=[value] 35
37 The responses always start with the XML header <?XML version="1.0" encoding="iso "?> followed by the XML content. The content is generated in each *.cgi replacement method. Not all fields of the lists are relevant to the HomeDroid thus some fields have no content. When devicelist.cgi is requested, the devicelist method is executed. It collects all instantiated devices from the Device table with its related channels. All devices and channels are requested from the database, matched and returned in the proper XML format. Figure 7. devicelist example. The functionlist.cgi contains all Functions from the Function table with its related channels. It is created by the roomlist method. Figure 8. functionlist example. 36
38 The roomlist.cgi returns all Rooms and the corresponding channels via the roomlist method. Rooms are stored in the Room table and the channels are stored in the Channel table. Figure 9. roomlist example. The statelist.cgi calls the statelist method. The statelist provides information about the current state of all datapoints. The datapoints are grouped with their channels and the channels with their devices. The values of the datapoints are stored in the Value table. Figure 10. statelist example. The state.cgi is almost the same as the statelist except it only returns information of the requested device with its components. 37
39 The statechange.cgi is responsible for changing values. The NanoHTTPD passes the _id of the channel to change and the new value to the statechange method. This method modifies the data in the database and returns the _id of the channel it just changed. Figure 11. statechange example. The version.cgi method returns the version of the emulated XML API. Figure 12. version example. 38
40 4.5 GUI The graphical user interface consists of four activities. The Main Activity, the Create activity with dynamical content for each menu parameter, the Assign Channel activity and the Edit Channel activity HomeMatic Emulator Main Activity The HomeMatic Emulator Main Activity is the standard activity and will be displayed on startup of the application. It represents the virtual house in a graphical form and there is access to all application functions from here. The menu is, as usual for Android 4.x, in the top right corner. It provides four options, namely Edit Devices, Edit Rooms, Edit Functions and Connection. The Edit menu points open the Create activity while the Connection displays a toast, i.e. message box on the screen. Figure 13. Main Activity. Figure 14. Main Activity with expanded menu. By touching anywhere on the screen the Assign Channel activity appears. If a channel is already drawn on the screen and the screen is touched at roughly its coordinates, the Edit Channel activity will be called. The background of Main Activity is the ground plan of a virtual house and positions of the channels can be assigned and shown on it. If a channel is assigned, there s an entry in the position database. Each time the activity comes in the foreground it will be checked whether there s a new entry in the Position table. If there s an entry, a red point is drawn at the coordinates contained. 39
41 4.5.2 Edit devices By clicking the menu item Edit Devices the Create activity with device parameters is started[27]. This activity enables the creation of new devices and the deletion of existing devices. A device is an instantiation of a hardware offered by HomeMatic. Figure 15. Create activity with devices setup. To create a device, a name has to be entered in the EditText field and a hardware model has to be chosen in the spinner. The spinner shows the different types of devices contained in the HWDevice table. The add button verifies whether a name was entered and a device type was chosen, if one of the two is missing, an error toast is displayed. The back button closes the activity and recalls the Main Activity. When a new device should be created and the add button has verified the two values correctly, the creation process starts. First the device is created by taking the strings from the EditText field and the current spinner position and using them as name and hardware type for the Device table entry. The device_interface is filled with the standard BidCos RF and after the insertion into the database, the address is modified to match the standard string JEQ with 7 digits consisting of the device id filled with zeros in front. After the device is created and stored in the Device table, the createchannels() method is called with the new device as parameter. The method checks in the Devicetype table how many channels have to be created for this type of device and what type the channels are of. The information of the datapoints to be created for each channel, the amount of channels and the 40
42 parent device are then passed on to the createchannel() method. The createchannel() method creates a generic name and address for the channel by concatenating the device type, the address and the index for the name. The device _id is used as parent_device entry to link the channel to the device. The index is the running number of the channel of the device. It starts with 1 and is incremented for each channel created. The number of channels created is passed from the createchannels() method as well. Each record will be saved in the Channel table. Finally the datapoints for the channels have to be created. They are stored in the Value table. The datapoints are passed on as a List from the createchannel() method, which calls the createvalue() method with the datapoint list and the created channel. The method creates the entries for the Value table from the datapoints and adds the channel _id of the related channel and a timestamp to identify the last modification of the record. The device and its components can now be listed in the *.cgi requests of the HomeDroid client. The deletion of a device from the application is performed by clicking on a list item in the device list below the buttons. It reverses the sequence of device creation. On touching the device which should be deleted, the deletedevice() method is called. The device clicked is passed to this method, which deletes its entry in the Device table. After that the deletechannel() method is called with the same device _id to delete all channels with this device as parent_device. The same happens with the value and Position table records. The position of the channel is deleted by using deleteposition() and for each channel s value the deletevalue() method for the channel _id is called. 41
43 4.5.3 Edit rooms and edit functions When the Edit Rooms option is selected in the Main Activity menu, the Create activity is opened with the room parameter, meaning rooms can be created and deleted. Figure 16 Create activity with rooms setup. Figure 17. Create activity with functions setup. This activity interface structure consists of a EditText field for the room name, a add button to add the room to the table if a name is entered, a back button to return to the Main Activity and a list of existing rooms. Existing rooms can be deleted on touch, provided they are not assigned to a channel. When a room name is entered and the add button is touched, a new room is created by calling the createroom() function with the name as parameter. The name is set as name attribute and its _id is created. When an existing room is touched for deletion, it is first checked whether a channel is assigned to the room. If so, an error toast is displayed, else the deleteroom() method for this room is executed and the room is deleted. The same rules apply for functions and their createfunction() and deletefunction() methods, except that the description is optional. The function records are stored in the Function table. 42
44 4.5.4 Connection information The fourth menu option is the Connection. It shows the current wireless network IP address of the device running HMEmulator and the port of the NanoHTTPD. This IP address has to be entered in the HomeDroid app to connect to the HomeMatic Emulator application. The WiFi IP is created by using the Android WifiManager, an Android class to manage WiFi related aspects. Figure 18. Main Activity with Connection information. 43
45 4.5.5 Assign channel The emulator can visualize the channels of the device, i.e. placing a channel at a certain position in the virtual house, allowing to interact with it. This is done by clicking on the position of the background of the Main Activity where the channel should be placed. When a spot is touched, the coordinates are captured and the Assign Channel activity will start. Figure 19. Assign Channel activity. In this activity, an existing channel can be chosen and given a name. The name has to be entered in the EditText field. The channel can also be installed in a virtual room, which was created in the Edit Rooms menu. Likewise a channel can be assigned to a function which can be created in the Edit Functions menu. Both is done by selecting an existing room respective function from a spinner. When the Assign Channel button is activated, it is checked whether a name was entered and channel was picked. Assigning a function to a channel is optional. If everything is correct, the createposition() is called with the parameters of the new name, the chosen channel, the coordinates, a size for the dot representing the channel, the new room and the new function. The method creates a new position entry into the Position table containing the channel _id, x and y coordinates and the size for the visualization. The size parameter is used to set the diameter of the dot drawn on the Main Activity background and the area around the point counting as the dot, too. 44
46 The method also updates the channel with the new name, room and function. After creating the positioning dot of the channel, the activity closes and the next channel can be assigned. In the Assign Channel activity below the buttons, there is a list with already assigned channels. They are listed with their name, the name of their parent device, name of their room and their function. They can be edited in the Edit Channel activity when touched. 45
47 4.5.6 Edit channel The Edit Channel activity is used for editing channels and their values, already to a position assigned. They can also be deleted in this activity. Figure 20. Edit Channel activity. On pressing the Delete Channel button, their position entry is removed from the Position table. The other values remain untouched and the channel is still visible for HomeDroid. It just has no longer a virtual place in the house. The name of the channel can be changed at the top EditText. The name field mustn t be empty. The Text below shows the parent devices _id and its name. With the two spinners below the room and function can be changed. These fields are filled on start of the activity with the values already assigned to the selected channel. Below Edit Values, all values editable for the chosen channel are listed. On the left side, the name of the value is shown while on the right side the value can be edited. There are three types of values, boolean, integer and float. Each value for a given channel requires a certain type of one of these three. By hitting the Edit Channel button the entered value will be checked whether it has the correct type. If everything is correct on button activation, the activity is closed and the record in the Value table and the channel record in the Channel table are modified with modifyvalues() and modifychannel(). 46
48 III Quality management 5 Testing Testing is done on various levels to ensure the functionality of the application. I want to thank my application tester Franziska Stützl and Klaus Neutze. 5.1 Test criteria It is vital to employ several person testings for bugs and misspellings the developer will never catch on his own. Different hardware and Android versions need to be tested to ensure compatibility. There are many different devices with different hardware specs and software iterations. For this purpose, three different devices with two different versions of Android were chosen. Samsung Galaxy S Advance Android LG Nexus 4 Android Asus Nexus 7 Android In addition, the application was installed on a variety of devices, including the Samsung Galaxy Nexus, Sony Xperia S and the Samsung Galaxy S3, running the current version of their Android. Figure 21. Galaxy S Figure 22. Nexus 4. Figure 23. Nexus 7. Advance. 47
49 5.2 User test results The specified user tests were done manually on all three devices. These tests were performed on the final version of the software by different users to avoid developer routine. Test cases were given to the testers. They derived from the System Requirements as follows. From REQ 1 Stable Android application: test: app runs for 10 minutes untouched expectation: application does not crash passed: working as intended From REQ 2.1 Data exchange between application and HomeDroid: test: connect to the application with a device running HomeDroid expectation: HomeDroid finds the server and starts requesting the *.cgi scripts passed: start HomeDroid connect to HMEmulator From the requirements: REQ devicelist.cgi retrievable and working REQ roomlist.cgi retrievable and working REQ functionlist.cgi retrievable and working REQ state.cgi and statelist.cgi retrievable and working REQ version.cgi retrievable and working test: synchronize HomeDroid client expectation: HomeDroid requests the *.cgi scripts above and the HMEmulator replies in a correct way passed: HomeDroid can process the requested *.cgi script replied and shows them on its GUI From REQ statechange.cgi executable and working test: edit a value on HomeDroid expectation: value is edited in HomeMatic Emulator and HomeDroid passed: Click on the edited channel in the Main Activity and check the values in the Edit Channel activity. Re sync HomeDroid and check the channels values. From REQ Creation of relevant entities: test: create a device and check if it is properly visible expectation: device is created, shown in the list at the bottom of the screen and its channels are visible in the Assign Channel activity passed: channel appears in the list and the respective spinner in the Assign Channel activity 48
50 test: create 20 devices expectation: all 20 devices are shown in the list below and its channels are shown the Assign Channel activity passed: devices appear in the list and the respective spinner in the Assign Channel activity test: create a room expectation: room is created, shown in the list at the bottom of the screen and appears in the room spinner in the Assign Channel activity passed: room appears in the list and the respective spinner in the Assign Channel activity test: create a function expectation: function is created, shown in the list at the bottom of the screen and appears in the function spinner in the Assign Channel activity passed: function appears in the list and the respective spinner in the Assign Channel activity From REQ Persistency of data: test: create a device, room and function, close the app, restart it and check objects created before expectation: device, room and function are still available as created passed: in Create Channel all created entities are available From REQ Initial load of config database: test: check availability of hardware models in the Edit Device activity expectation: spinner shows available hardware models passed: relevant hardware models are available in the Edit Device activity From REQ Interactive creation of real configuration: test: Assign a channel to a position, give a new name, room and function. Then use HomeDroid to resynchronize. expectation: changes are shown in the HomeDroid application after resynchronization passed: newly assigned channel appears correctly on HomeDroid From REQ Editable devices: test: delete a device by clicking on it in the Edit Device activity expectation: Device is deleted, including its channels, positions and datapoints. Check this by resynchronizing HomeDroid passed: Device, channel and position are no longer shown in their respective activities and on HomeDroid 49
51 From REQ Editable rooms: test: delete a room not yet assigned to a channel expectation: room disappears from room list and is not shown at the Assign Channel activity passed: room is no longer shown in the list and in the respective spinner in the Assign Channel activity test: delete a room with assigned channels expectation: error toast and no deletion passed: error toast appears when trying to delete and the room is not removed from the list and the respective spinner in the Assign Channel activity From REQ Editable functions: test: delete a function not yet assigned to a channel expectation: function disappears from function list and is not shown at the Assign Channel activity passed: function is no longer shown in the list and in the respective spinner in the Assign Channel activity test: delete a function with assigned channels expectation: error toast and no deletion passed: error toast appears when trying to delete and the function is not removed from the list and the respective spinner in the Assign Channel activity From REQ Editable channels: test: delete a channel, including its position in the Edit Channels activity expectation: points will disappear from the Main Activity and channels can be reassigned in the Assign Channel activity passed: the channel has no more position dot in the Main Activity and can be used in Assign Channel From REQ Editable values: test: click on an assigned channel dot in the Main Activity, edit its values and return to that channel expectation: Edit Channel opens and the channels values can be edited. On return, the values have the edited value. passed: changed values appear when clicking on the channel circle of the just edited channel 50
52 test: changed value is propagated to HomeDroid expectation: value is changed on HomeDroid after re synchronizing passed: changed value are shown after re synchronizing in HomeDroid From REQ Visualization of positions and values of channels in the virtual house: test: click on the Main Activity background and assign a channel expectation: on return a dot is shown at that position passed: dot is shown at the selected position test: click on an existing point expectation: Edit Channel activity shows values passed: Edit Channel activity opens and shows values of the channel associated to the dot selected. 51
53 IV Conclusion and future work 6 Conclusion The goal of this thesis was to develop an emulator for the HomeMatic system. It allows the creation of devices, rooms and functions and assignments of channels to locations in the virtual house are possible. The assigned channels can be manipulated in the Emulator and the HomeDroid client is able to download and change values in the emulated HomeMatic system. Android was chosen as platform for the implementation. The application can easily be installed on any Android device and the touch screen allows intuitive handling of the application. The thesis includes basic facts, definitions and an overview over the planning and architecture of the application. The development of the application was divided into four smaller projects. The first project was to implement the NanoHTTPD which provides the web server functions that are needed. The second part was to re engineer the XML API and define the data model. The third project was to successfully transfer data between the HomeDroid and the HMEmulator. The final work was to create a GUI and implement functions to create, edit and delete different entities of the system. Due to the big amount of different devices in the documentation available from HomeMatic and their sometimes incomplete definitions in the documentation, only a sample was selected to be present in the application. [16] Finally the testing of the application was accomplished. 52
54 7 Future work The application contains all basic functionalities required to emulate the HomeMatic system. HMEmulator could be extended by an alarm system, e.g. due to too high temperature at a thermometer the fire alarm will be activated and the HMEmulator starts blinking. Other events could be defined, like motion sensors causing an alarm as well. On the design side, for example the current value of a channel s datapoint could be shown right next to the channel point on the Main Activity. This could cause problems with clarity and small screens, so a smart technique has to be found not to overload the screen with information. Expanding the functionalities for professional use could be another future project. Instead of integrating the predefined database into the application, an interface could be implemented to add new devices from HomeMatic. Via this interface, the direct upload of spreadsheets and conversion into the database could be realized. Thinking far ahead the application could communicate with real sensors and actors via WiFi or could act as visualization of the HomeMatic system. 53
55 Appendix Storage medium As part of my thesis, I provide a CD with the program source code. 54
56 Bibliographic references [1] Android Developers. android.database.sqlite. summary.html, [2] Android Developers. Activities. [3] Android Developers. Fundamentals. [4] Android Developers. Storage Options. storage.html [5] Android Developers. Spinner. [6] Android Developers. Toasts. [7] Android Developers. Android Developers. [8] Android Developers. EditText. [9] Android Developers. Android SDK. [10] Android Developers. Android Debug Bridge. 55
57 [11] Android Developers. ADT Plugin. adt.html [12] Android Developers. SQLiteOpenHelper. [13] dirch, Falk Werner, Maik Breternitz, Philipp Ebert. XML API v inside.de/software/addons/item/xmlapi [14] Eclipse. The Eclipse Foundation. [15] eq 3. Objektmodell. 3.de/Downloads/PDFs/Dokumentation_und_Tutorials/HM_Script_Teil_2_Objektm odell_v1.2.pdf [16] eq 3. Datenpunkte. 3.de/Downloads/PDFs/Dokumentation_und_Tutorials/HM_Script_Teil_4_Datenpu nkte_1_503.pdf [17] eq 3. Partner finden. 3.de/partner finden.html [18] hobbyquaker. XML API. API [19] HomeMatic. HomeMatic. [20] HomeMatic Wiki. HomeMatic Script. wiki.info/mw/index.php/homematic_script 56
58 [21] HomeMatic Wiki. Was ist HomeMatic?. wiki.info/mw/index.php/was_ist_homematic%3f [22] HomeMatic forum.de. Erweiterung der XML API Version 1.2?. forum.de/forum/viewtopic.php?f=26&t=10098 [23] HomeMatic forum.de. HMCompanion Schnittstelle zur CCU. forum.de/forum/viewtopic.php?f=26&t=4639#p28188 [24] HomeMatic forum.de. XML RPC Interface Beschreibung. forum.de/forum/viewtopic.php?t=4827 [25] Jarno Elonen. NanoHTTPD. [26] Juan Manuel Fluxà. Using your own SQLite database in Android applications, your own sqlite database in android applications/ [27] Lard Vogel, Android Intents Tutorial, accessed [28] Lars Vogel. Android SQLite Database and ContentProvider Tutorial, [29] Open Handset Alliance. Open Handset Alliance. [30] Osmar R. Zaïane. Database Systems and Structures. 57
59 [31] Philipp Ebert. HomeDroid. [32] SQLite. SQLite. [33] w3.org. Hypertext Transfer Protocol. [34] Womack, Brian. "Google Says 700,000 Applications Available for Android." BloombergBusinessweek. Bloomberg, /google says applications available for android devices 58
60 List of figures Figure 1. HomeMatic system components Figure 2. Structure and integration of the XML-API v Figure 3. Activity lifecycle[2] Figure 4. Real vs. emulated configuration...18 Figure 5. Sequence of a HomeDroid request Figure 6. Structure of the database tables Figure 7. devicelist example Figure 8. functionlist example Figure 9. roomlist example Figure 10. statelist example Figure 11. statechange example Figure 12. version example Figure 13. Main Activity Figure 14. Main Activity with expanded menu Figure 15. Create activity with devices setup...40 Figure 16. Create activity with rooms setup Figure 17. Create activity with functions setup Figure 18. Main Activity with Connection information Figure 19. Assign Channel activity Figure 20. Edit Channel activity Figure 21. Galaxy S Advance Figure 22. Nexus Figure 23. Nexus
61 List of tables Table 1. Available XMP-API v1.2 *.cgi scripts [13]...12 Table 2. HWDevice table Table 3. Devicetype table Table 4. Datapoint table Table 5. Device table Table 6. Channel table Table 7. Value table Table 8. Function table Table 9. Room table Table 10. Position table
62 Software versions used Android SDK Bundle Version Eclipse v NanoHTTPD v SQLite v XML API v1.2 installed on HomeMatic hardware inside.de/software/addons/item/xmlapi 61
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Our program is a practical knowledge oriented program aimed at making innovative and attractive applications for mobile
ANDROID APPS DEVELOPMENT FOR MOBILE GAME
ANDROID APPS DEVELOPMENT FOR MOBILE GAME Lecture 7: Data Storage and Web Services Overview Android provides several options for you to save persistent application data. Storage Option Shared Preferences
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
Creating and Using Databases for Android Applications
Creating and Using Databases for Android Applications Sunguk Lee * 1 Research Institute of Industrial Science and Technology Pohang, Korea [email protected] *Correspondent Author: Sunguk Lee* ([email protected])
INTRODUCTION TO ANDROID CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 11 02/15/2011
INTRODUCTION TO ANDROID CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 11 02/15/2011 1 Goals of the Lecture Present an introduction to the Android Framework Coverage of the framework will be
AndroLIFT: A Tool for Android Application Life Cycles
AndroLIFT: A Tool for Android Application Life Cycles Dominik Franke, Tobias Royé, and Stefan Kowalewski Embedded Software Laboratory Ahornstraße 55, 52074 Aachen, Germany { franke, roye, kowalewski}@embedded.rwth-aachen.de
Introduction to Android. CSG250 Wireless Networks Fall, 2008
Introduction to Android CSG250 Wireless Networks Fall, 2008 Outline Overview of Android Programming basics Tools & Tricks An example Q&A Android Overview Advanced operating system Complete software stack
Introduction to Android
Introduction to Android Poll How many have an Android phone? How many have downloaded & installed the Android SDK? How many have developed an Android application? How many have deployed an Android application
Workshop on Android and Applications Development
Workshop on Android and Applications Development Duration: 2 Days (8 hrs/day) Introduction: With over one billion devices activated, Android is an exciting space to make apps to help you communicate, organize,
Android Development. Marc Mc Loughlin
Android Development Marc Mc Loughlin Android Development Android Developer Website:h:p://developer.android.com/ Dev Guide Reference Resources Video / Blog SeCng up the SDK h:p://developer.android.com/sdk/
Running a Program on an AVD
Running a Program on an AVD Now that you have a project that builds an application, and an AVD with a system image compatible with the application s build target and API level requirements, you can run
ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)
ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Who am I? Lo Chi Wing, Peter Lecture 1: Introduction to Android Development Email: [email protected] Facebook: http://www.facebook.com/peterlo111
ITG Software Engineering
Basic Android Development Course ID: Page 1 Last Updated 12/15/2014 Basic Android Development ITG Software Engineering Course Overview: This 5 day course gives students the fundamental basics of Android
Android Basics. Xin Yang 2016-05-06
Android Basics Xin Yang 2016-05-06 1 Outline of Lectures Lecture 1 (45mins) Android Basics Programming environment Components of an Android app Activity, lifecycle, intent Android anatomy Lecture 2 (45mins)
Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University
Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University Android OS Open-source mobile OS (mostly Apache licence) Developed by Google + Open Handset Alliance
Homework 9 Android App for Weather Forecast
1. Objectives Homework 9 Android App for Weather Forecast Become familiar with Android Studio, Android App development and Facebook SDK for Android. Build a good-looking Android app using the Android SDK.
Table of Contents. Adding Build Targets to the SDK 8 The Android Developer Tools (ADT) Plug-in for Eclipse 9
SECOND EDITION Programming Android kjj *J} Zigurd Mednieks, Laird Dornin, G. Blake Meike, and Masumi Nakamura O'REILLY Beijing Cambridge Farnham Koln Sebastopol Tokyo Table of Contents Preface xiii Parti.
Enterprise Service Bus
We tested: Talend ESB 5.2.1 Enterprise Service Bus Dr. Götz Güttich Talend Enterprise Service Bus 5.2.1 is an open source, modular solution that allows enterprises to integrate existing or new applications
An Introduction to Android
An Introduction to Android Michalis Katsarakis M.Sc. Student [email protected] Tutorial: hy439 & hy539 16 October 2012 http://www.csd.uoc.gr/~hy439/ Outline Background What is Android Android as a
LICENSE4J FLOATING LICENSE SERVER USER GUIDE
LICENSE4J FLOATING LICENSE SERVER USER GUIDE VERSION 4.5.5 LICENSE4J www.license4j.com Table of Contents Getting Started... 2 Floating License Usage... 2 Installation... 4 Windows Installation... 4 Linux
Getting Started with Android Programming (5 days) with Android 4.3 Jelly Bean
Getting Started with Android Programming (5 days) with Android 4.3 Jelly Bean Course Description Getting Started with Android Programming is designed to give students a strong foundation to develop apps
How to develop your own app
How to develop your own app It s important that everything on the hardware side and also on the software side of our Android-to-serial converter should be as simple as possible. We have the advantage that
Android Programming and Security
Android Programming and Security Dependable and Secure Systems Andrea Saracino [email protected] Outlook (1) The Android Open Source Project Philosophy Players Outlook (2) Part I: Android System
Example Connection between USB Host and Android
Example connection between USB Host and Android Example Connection between USB Host and Android This example illustrates the connection between Board ETMEGA2560-ADK and Android through Port USB Host. In
Android Setup Phase 2
Android Setup Phase 2 Instructor: Trish Cornez CS260 Fall 2012 Phase 2: Install the Android Components In this phase you will add the Android components to the existing Java setup. This phase must be completed
SIP-DECT Knowledge Base SIP-DECT System Update
SIP-DECT Knowledge Base SIP-DECT System Update MAI 2015 DEPL-2046 VERSION 1.6 KNOWLEDGE BASE TABLE OF CONTENT 1) Introduction... 2 2) Update (New Service Pack in the same Release)... 3 2.1 OMM HOSTED ON
Passion for Innovation
Passion for Innovation A Complete Solution Hardware All the Alveo servers are designed and optimized to manage the home automation system. They arebuilt for continuous operation with fanless processing
LabVIEW Internet Toolkit User Guide
LabVIEW Internet Toolkit User Guide Version 6.0 Contents The LabVIEW Internet Toolkit provides you with the ability to incorporate Internet capabilities into VIs. You can use LabVIEW to work with XML documents,
Reminders. Lab opens from today. Many students want to use the extra I/O pins on
Reminders Lab opens from today Wednesday 4:00-5:30pm, Friday 1:00-2:30pm Location: MK228 Each student checks out one sensor mote for your Lab 1 The TA will be there to help your lab work Many students
WatchDox Administrator's Guide. Application Version 3.7.5
Application Version 3.7.5 Confidentiality This document contains confidential material that is proprietary WatchDox. The information and ideas herein may not be disclosed to any unauthorized individuals
App Development for Smart Devices. Lec #2: Android Tools, Building Applications, and Activities
App Development for Smart Devices CS 495/595 - Fall 2011 Lec #2: Android Tools, Building Applications, and Activities Tamer Nadeem Dept. of Computer Science Objective Understand Android Tools Setup Android
Graduate presentation for CSCI 5448. By Janakiram Vantipalli ( [email protected] )
Graduate presentation for CSCI 5448 By Janakiram Vantipalli ( [email protected] ) Content What is Android?? Versions and statistics Android Architecture Application Components Inter Application
01. Introduction of Android
01. Introduction of Android Goal Understand the concepts and features of the Android Install the complete Android development environment Find out the one-click install Android development environment
FileMaker Server 11. FileMaker Server Help
FileMaker Server 11 FileMaker Server Help 2010 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker is a trademark of FileMaker, Inc. registered
Hacking your Droid ADITYA GUPTA
Hacking your Droid ADITYA GUPTA adityagupta1991 [at] gmail [dot] com facebook[dot]com/aditya1391 Twitter : @adi1391 INTRODUCTION After the recent developments in the smart phones, they are no longer used
Zenprise Device Manager 6.1.5
Zenprise Device Manager 6.1.5 CLIENT GUIDE Rev 6.1.50 Introduction 2 ZENPRISE DEVICE MANAGER 6.1 CLIENT GUIDE 2011 Zenprise, Inc. All rights reserved. This manual, as well as the software described in
IRF2000 IWL3000 SRC1000 Application Note - Develop your own Apps with OSGi - getting started
Version 2.0 Original-Application Note ads-tec GmbH IRF2000 IWL3000 SRC1000 Application Note - Develop your own Apps with OSGi - getting started Stand: 28.10.2014 ads-tec GmbH 2014 IRF2000 IWL3000 SRC1000
ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android
Why Android? ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android Dr Dimitris C. Dracopoulos A truly open, free development platform based on Linux and open source A component-based
CS378 -Mobile Computing. Android Overview and Android Development Environment
CS378 -Mobile Computing Android Overview and Android Development Environment What is Android? A software stack for mobile devices that includes An operating system Middleware Key Applications Uses Linux
Smartphone market share
Smartphone market share Gartner predicts that Apple s ios will remain the second biggest platform worldwide through 2014 despite its share deceasing slightly after 2011. Android will become the most popular
NVMS-1200. User Manual
NVMS-1200 User Manual Contents 1 Software Introduction... 1 1.1 Summary... 1 1.2 Install and Uninstall... 1 1.2.1 Install the Software... 1 2 Login Software... 3 2.1 Login... 3 2.2 Control Panel Instruction...
026-1010 Rev 7 06-OCT-2011. Site Manager Installation Guide
026-1010 Rev 7 06-OCT-2011 Site Manager Installation Guide Retail Solutions 3240 Town Point Drive NW, Suite 100 Kennesaw, GA 30144, USA Phone: 770-425-2724 Fax: 770-425-9319 Table of Contents 1 SERVER
Introduction to Android Development. Jeff Avery CS349, Mar 2013
Introduction to Android Development Jeff Avery CS349, Mar 2013 Overview What is Android? Android Architecture Overview Application Components Activity Lifecycle Android Developer Tools Installing Android
Board also Supports MicroBridge
This product is ATmega2560 based Freeduino-Mega with USB Host Interface to Communicate with Android Powered Devices* like Android Phone or Tab using Android Open Accessory API and Development Kit (ADK)
User s Manual. Management Software for ATS
ATS Monitor User s Manual Management Software for ATS Table of Contents 1. ATS Monitor Overview... 2 2. ATS Monitor Install and Uninstall... 2 2.1. System Requirement... 2 2.2. Software Install... 2 2.3.
POPP Hub Gateway. Manual
POPP Hub Gateway Manual 008900 POPP Hub Gateway Manual Quick Start... 2 Hardware... 2 Smart Home User Interface... 2 Applications (Apps) realize the intelligence of your Smart Home... 3 Functions of the
Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013
Mobility Introduction Android Duration 16 Working days Start Date 1 st Oct 2013 Day 1 1. Introduction to Mobility 1.1. Mobility Paradigm 1.2. Desktop to Mobile 1.3. Evolution of the Mobile 1.4. Smart phone
A Real Time, Object Oriented Fieldbus Management System
A Real Time, Object Oriented Fieldbus Management System Mr. Ole Cramer Nielsen Managing Director PROCES-DATA Supervisor International P-NET User Organisation Navervej 8 8600 Silkeborg Denmark [email protected]
MobileLite Wireless G2 5-in-1 Mobile Companion User Manual
MobileLite Wireless G2 5-in-1 Mobile Companion User Manual Document No. 480-MLWG2-021315.A00 Kingston MobileLite Wireless Page 1 of 21 Table of Contents Introduction... 3 What s Included:... 3 Getting
Site Configuration SETUP GUIDE. Windows Hosts Single Workstation Installation. May08. May 08
Site Configuration SETUP GUIDE Windows Hosts Single Workstation Installation May08 May 08 Copyright 2008 Wind River Systems, Inc. All rights reserved. No part of this publication may be reproduced or transmitted
Android Mobile App Building Tutorial
Android Mobile App Building Tutorial Seidenberg-CSIS, Pace University This mobile app building tutorial is for high school and college students to participate in Mobile App Development Contest Workshop.
Developing NFC Applications on the Android Platform. The Definitive Resource
Developing NFC Applications on the Android Platform The Definitive Resource Part 1 By Kyle Lampert Introduction This guide will use examples from Mac OS X, but the steps are easily adaptable for modern
An Introduction to Android Application Development. Serdar Akın, Haluk Tüfekçi
An Introduction to Android Application Serdar Akın, Haluk Tüfekçi ARDIC ARGE http://www.ardictech.com April 2011 Environment Programming Languages Java (Officially supported) C (Android NDK Needed) C++
060010702 Mobile Application Development 2014
Que 1: Short question answer. Unit 1: Introduction to Android and Development tools 1. What kind of tool is used to simulate Android application? 2. Can we use C++ language for Android application development?
000-420. IBM InfoSphere MDM Server v9.0. Version: Demo. Page <<1/11>>
000-420 IBM InfoSphere MDM Server v9.0 Version: Demo Page 1. As part of a maintenance team for an InfoSphere MDM Server implementation, you are investigating the "EndDate must be after StartDate"
System Administration Training Guide. S100 Installation and Site Management
System Administration Training Guide S100 Installation and Site Management Table of contents System Requirements for Acumatica ERP 4.2... 5 Learning Objects:... 5 Web Browser... 5 Server Software... 5
Oracle FLEXCUBE Direct Banking Android Tab Client Installation Guide Release 12.0.3.0.0
Oracle FLEXCUBE Direct Banking Android Tab Client Installation Guide Release 12.0.3.0.0 Part No. E52543-01 April 2014 Oracle Financial Services Software Limited Oracle Park Off Western Express Highway
MA-WA1920: Enterprise iphone and ipad Programming
MA-WA1920: Enterprise iphone and ipad Programming Description This 5 day iphone training course teaches application development for the ios platform. It covers iphone, ipad and ipod Touch devices. This
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY Suhas Holla #1, Mahima M Katti #2 # Department of Information Science & Engg, R V College of Engineering Bangalore, India Abstract In the advancing
IBM Campaign Version-independent Integration with IBM Engage Version 1 Release 3 April 8, 2016. Integration Guide IBM
IBM Campaign Version-independent Integration with IBM Engage Version 1 Release 3 April 8, 2016 Integration Guide IBM Note Before using this information and the product it supports, read the information
Mercury User Guide v1.1
Mercury User Guide v1.1 Tyrone Erasmus 2012-09-03 Index Index 1. Introduction... 3 2. Getting started... 4 2.1. Recommended requirements... 4 2.2. Download locations... 4 2.3. Setting it up... 4 2.3.1.
How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip
Load testing with WAPT: Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. A brief insight is provided
Lecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy
Moxa Device Manager 2.0 User s Guide
First Edition, March 2009 www.moxa.com/product 2009 Moxa Inc. All rights reserved. Reproduction without permission is prohibited. Moxa Device Manager 2.0 User Guide The software described in this manual
BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: 10.1.1. Security Note
BlackBerry Enterprise Service 10 Secure Work Space for ios and Android Version: 10.1.1 Security Note Published: 2013-06-21 SWD-20130621110651069 Contents 1 About this guide...4 2 What is BlackBerry Enterprise
FileMaker Server 12. FileMaker Server Help
FileMaker Server 12 FileMaker Server Help 2010-2012 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker is a trademark of FileMaker, Inc.
FileMaker Server 10 Help
FileMaker Server 10 Help 2007-2009 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker, the file folder logo, Bento and the Bento logo
Android Programming. Høgskolen i Telemark Telemark University College. Cuong Nguyen, 2013.06.18
Høgskolen i Telemark Telemark University College Department of Electrical Engineering, Information Technology and Cybernetics Cuong Nguyen, 2013.06.18 Faculty of Technology, Postboks 203, Kjølnes ring
Data Transfer Management with esync 1.5
ewon Application User Guide AUG 029 / Rev 2.1 Content Data Transfer Management with esync 1.5 This document explains how to configure the esync 1.5 Server and your ewons in order to use the Data Transfer
Monitoring PostgreSQL database with Verax NMS
Monitoring PostgreSQL database with Verax NMS Table of contents Abstract... 3 1. Adding PostgreSQL database to device inventory... 4 2. Adding sensors for PostgreSQL database... 7 3. Adding performance
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
Call Recorder Oygo Manual. Version 1.001.11
Call Recorder Oygo Manual Version 1.001.11 Contents 1 Introduction...4 2 Getting started...5 2.1 Hardware installation...5 2.2 Software installation...6 2.2.1 Software configuration... 7 3 Options menu...8
What else can you do with Android? Inside Android. Chris Simmonds. Embedded Linux Conference Europe 2010. Copyright 2010, 2net Limited.
What else can you do with Android? Chris Simmonds Embedded Linux Conference Europe 2010 Copyright 2010, 2net Limited 1 Overview Some background on Android Quick start Getting the SDK Running and emulated
iridium for Weinzierl KNX IP BAOS
iridium for Weinzierl KNX IP BAOS Fast Start: Connection Setting Manual for KNX/EIB bus through IP Interfaces of Weinzierl KNX IP BAOS Review of iridium Software Package for KNX/EIB: iridium turns your
The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.
Installing the SDK This page describes how to install the Android SDK and set up your development environment for the first time. If you encounter any problems during installation, see the Troubleshooting
Installation and Operation Manual Portable Device Manager, Windows version
Installation and Operation Manual version version About this document This document is intended as a guide for installation, maintenance and troubleshooting of Portable Device Manager (PDM) and is relevant
GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS
Embedded Systems White Paper GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS September 2009 ABSTRACT Android is an open source platform built by Google that includes an operating system,
SyncThru Database Migration
SyncThru Database Migration Overview Database Migration for SyncThru application is an intuitive tool that enables the data stored in the database of an older version of SyncThru, to be moved to the database
Studio 5.0 User s Guide
Studio 5.0 User s Guide wls-ug-administrator-20060728-05 Revised 8/8/06 ii Copyright 2006 by Wavelink Corporation All rights reserved. Wavelink Corporation 6985 South Union Park Avenue, Suite 335 Midvale,
Tutorial: BlackBerry Object API Application Development. Sybase Unwired Platform 2.2 SP04
Tutorial: BlackBerry Object API Application Development Sybase Unwired Platform 2.2 SP04 DOCUMENT ID: DC01214-01-0224-01 LAST REVISED: May 2013 Copyright 2013 by Sybase, Inc. All rights reserved. This
AdRadionet to IBM Bluemix Connectivity Quickstart User Guide
AdRadionet to IBM Bluemix Connectivity Quickstart User Guide Platform: EV-ADRN-WSN-1Z Evaluation Kit, AdRadionet-to-IBM-Bluemix-Connectivity January 20, 2015 Table of Contents Introduction... 3 Things
Lab 4 In class Hands-on Android Debugging Tutorial
Lab 4 In class Hands-on Android Debugging Tutorial Submit lab 4 as PDF with your feedback and list each major step in this tutorial with screen shots documenting your work, i.e., document each listed step.
Android Developer Fundamental 1
Android Developer Fundamental 1 I. Why Learn Android? Technology for life. Deep interaction with our daily life. Mobile, Simple & Practical. Biggest user base (see statistics) Open Source, Control & Flexibility
Android Application Development
Android Application Development Self Study Self Study Guide Content: Course Prerequisite Course Content Android SDK Lab Installation Guide Start Training Be Certified Exam sample Course Prerequisite The
Skynax. Mobility Management System. System Manual
Skynax Mobility Management System System Manual Intermec by Honeywell 6001 36th Ave. W. Everett, WA 98203 U.S.A. www.intermec.com The information contained herein is provided solely for the purpose of
Frameworks & Android. Programmeertechnieken, Tim Cocx
Frameworks & Android Programmeertechnieken, Tim Cocx Discover thediscover world atthe Leiden world University at Leiden University Software maken is hergebruiken The majority of programming activities
User s Manual of DVR DVS Remote Client Software V 4.0.1
User s Manual of DVR DVS Remote Client Software V 4.0.1 Index Version description...4 1 Introduction...8 2 Software Install, Uninstall and use...9 2.1 Install remote client software ver4.0.1...9 2.2 Uninstall
Network Licensing. White Paper 0-15Apr014ks(WP02_Network) Network Licensing with the CRYPTO-BOX. White Paper
WP2 Subject: with the CRYPTO-BOX Version: Smarx OS PPK 5.90 and higher 0-15Apr014ks(WP02_Network).odt Last Update: 28 April 2014 Target Operating Systems: Windows 8/7/Vista (32 & 64 bit), XP, Linux, OS
Android Application Development Lecture Notes INDEX
Android Application Development Lecture Notes INDEX Lesson 1. Introduction 1-2 Mobile Phone Evolution 1-3 Hardware: What is inside a Smart Cellular Phone? 1-4 Hardware: Reusing Cell Phone Frequencies 1-5
HP AppPulse Active. Software Version: 2.2. Real Device Monitoring For AppPulse Active
HP AppPulse Active Software Version: 2.2 For AppPulse Active Document Release Date: February 2015 Software Release Date: November 2014 Legal Notices Warranty The only warranties for HP products and services
IBM Campaign and IBM Silverpop Engage Version 1 Release 2 August 31, 2015. Integration Guide IBM
IBM Campaign and IBM Silverpop Engage Version 1 Release 2 August 31, 2015 Integration Guide IBM Note Before using this information and the product it supports, read the information in Notices on page 93.
FileMaker Server 13. FileMaker Server Help
FileMaker Server 13 FileMaker Server Help 2010-2013 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker and Bento are trademarks of FileMaker,
Exam Name: IBM InfoSphere MDM Server v9.0
Vendor: IBM Exam Code: 000-420 Exam Name: IBM InfoSphere MDM Server v9.0 Version: DEMO 1. As part of a maintenance team for an InfoSphere MDM Server implementation, you are investigating the "EndDate must
Basic Android Setup. 2014 Windows Version
Basic Android Setup 2014 Windows Version Introduction In this tutorial, we will learn how to set up the Android software development environment and how to implement image processing operations on an Android
The full setup includes the server itself, the server control panel, Firebird Database Server, and three sample applications with source code.
Content Introduction... 2 Data Access Server Control Panel... 2 Running the Sample Client Applications... 4 Sample Applications Code... 7 Server Side Objects... 8 Sample Usage of Server Side Objects...
Basic Unix/Linux 1. Software Testing Interview Prep
Basic Unix/Linux 1 Programming Fundamentals and Concepts 2 1. What is the difference between web application and client server application? Client server application is designed typically to work in a
Seagate NAS OS 4 Reviewers Guide: NAS / NAS Pro / Business Storage Rackmounts
Seagate NAS OS 4 Reviewers Guide: NAS / NAS Pro / Business Storage Rackmounts Seagate NAS OS 4 Reviewers Guide 2 Purpose of this guide Experience the most common use cases for the product, learn about
Gauge Drawing Tool... 8. Slider Drawing Tool... 8. Toggle Button Drawing Tool... 8. One-Way List Drawing Tool... 8
v. 20120510 Table of Contents RTiPanel Overview and Requirements... 3 Software Requirements:... 3 Hardware Requirements:... 3 Network Requirements:... 3 Licensing Requirements:... 4 Basic Integration Designer
Fast remote data access for control of TCP/IP network using android Mobile device
RESEARCH ARTICLE OPEN ACCESS Fast remote data access for control of TCP/IP network using android Mobile device Vaibhav Muddebihalkar *, R.M Gaudar** (Department of Computer Engineering, MIT AOE Alandi
