Developer's Overview: Programming Smart HomesSmart homes are computer systems that integrate hardware devices, such as sensors and actuators, and software services/applications into homes to enrich the quality of life of their inhabitants. The gap between the "physical" world outside the computer and the "virtual" world inside the computer is bridged by using sensors make data about the physical world accessible to computer systems and actuators to make objects in the physical world controllable by computer systems. Software services and applications can then be built using these hardware devices to meet some user need, such as healthy aging or home security. The services and applications can also network the smart home with other smart homes and services. These are the basic steps to programming with devices and services. Programming with DevicesComputers already use many hardware devices, e.g. memory, keyboard, video card, network card, etc. These devices are physically attached to the computer, and the operating system has software libraries that allow it to communicate with the devices without knowing the implementation details of the device protocol. This similar to the setup and use of devices in the smart home, which usually involves following three basic steps:
For an and overview of the different types of devices used in the ISU smart home and their individual lab click here. Programming with Smart Home Services.In the physical world, we rely on the concept of services quite frequently when interacting with businesses and individuals. For example, when depositing money at the bank, you know that you need to go to the bank and fill out a deposit slip and give it to the teller to perform the transaction. You don't care which teller you see, and you don't know exactly how they peform the transaction, but you know the result of the transaction should be an increase in the balance of your account. The teller thus provides the service of depositing money into your bank account. There is a well-known set of inputs and a well-known set of results or outputs to interact with the teller. The service-oriented computing paradigm is similar to this situation. A service is a software component with a well-known interface that can be obtained from a well-known location, called the registry. Service providers create services and publish their interfaces (and possibly their implementations) to the registry so that service consumers can query/search the registry to obtain the services and use them according to their interfaces. Service-oriented architectures (SOA) are software frameworks that manage the service registries and the related activities of service providers and clients. These activities include
In the smart home lab, we use two popular SOA, the centralized, Java-based Open Service Gateway initiative (OSGi) and the decentralized Java-based implementation of the Web Services paradigm (WS). Click here for public tutorials on OSGi, WS, and here for tutorials developed by our lab. For an overview and description of the various services developed or used offered by the ISU smar thome lab click here. Development Practices and ProcessesBoth of the SOA used in the ISU Smart Home Lab are Java-based, and thus object-oriented in nature.
|