Proj-2015-2016-Intégration de caméra de surveillance UPnP à Openhab/SRS

The document provides a template of the Software Requirements Specification (SRS). It is inspired of the IEEE/ANSI 830-1998 Standard.

Read first:
 * http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx
 * http://en.wikipedia.org/wiki/Software_requirements_specification
 * IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998

=1.  Introduction=

1.1 Purpose of the requirements document

 * It is our contract
 * The SRS document defines the objectives and the functional requirements and non functional requirements that can permit to achieve our ultimate goal which is to fully integrate a control interface of the UpNP cameras ...

1.2 Scope of the product
By means of the OpenHab interface, we would like to add a camera management function that is not present inside OpenHab.

Therefore, OpenHab will be able to show a streaming video of the cameras and also controlling options if there are any ones.

1.3 Definitions, acronyms and abbreviations

 * UPnP = Universal Plug and Play : is a set of networking protocols that permits networked devices, such as personal computers, printers, Internet gateways, Wi-Fi access points and mobile devices to seamlessly discover each other's presence on the network and establish functional network services for data sharing, communications, and entertainment.


 * iPOJO = A service component runtime aiming to simplify OSGi application development. It natively supports ALL the dynamism of OSGi. Based on the concept of POJO, application logic is developed easily. Non-functional properties are just injected in the component at runtime.


 * OpenHab = is an Open Source project that aims to allow control of equipements in a netwok by catching events. it also offers a nice user interface which is easy to configure.


 * OpenHab2= this is an improvement of the OpenHab that offers more features.


 * Felix-Apache Framework = is an open source implementation of the OSGi Release 5 core framework specification.


 * Eclipse Smarthome = is a platform that allows the integration of different systems, protocols or standards and that provide a uniform way of user interaction and higher level services.

1.4 References

 * http://www.eclipse.org/smarthome/documentation/index.html
 * http://www.openhab.org/
 * http://felix.apache.org/documentation/subprojects/apache-felix-osgi-bundle-repository.html
 * https://github.com/openhab/openhab2-addons
 * http://eclipse-jetty.github.io/getting_started.html
 * https://github.com/eclipse/smarthome


 * http://kaikreuzer.blogspot.fr/2014/06/openhab-20-and-eclipse-smarthome.html
 * https://github.com/openhab/openhab/wiki/Foscam-IP-Cameras
 * https://community.openhab.org/t/security-camera-recommendations/3616
 * https://community.openhab.org/t/security-cam-recommendation/2036
 * https://community.openhab.org/t/binding-to-integrate-with-imagery-generated-by-motion-detection-cctv/2985
 * https://groups.google.com/forum/#!topic/openhab/eag6cUqRTaU


 * https://github.com/eclipse/smarthome/tree/master/extensions/binding/org.eclipse.smarthome.binding.sonos
 * https://github.com/eclipse/smarthome/tree/master/extensions/binding/org.eclipse.smarthome.binding.fsinternetradio
 * https://github.com/eclipse/smarthome/tree/master/extensions/binding/org.eclipse.smarthome.binding.yahooweather


 * https://www.ispyconnect.com/man.aspx?n=D-Link

1.5 Overview of the remainder of the document
In the rest of the document, we will describe our objectives, the way the system is supposed to work and the constraints the project implies.

=2.  General description= This project aims to integrate a new feature to the openhab framework, to be able to manage cameras in the network by detecting them with the Upnp protocol.

2.1 Product perspective

 * Input = Cameras
 * output = Cameras videos stream

2.2 Product functions

 * Detection of all the cameras in the network
 * view the video stream in openHab interface
 * show the a mosaic when there is more than one camera

2.3 User characteristics
This can be used by all users that wants to do some surveillance of his house or an infrastructure.

2.4 General constraints
Cameras that support the Upnp protocol
 * material constraints

Cameras that support zoom/tilt/pan.
 * Constraints zoom/tilt/pan/motion

We need the OpenHab Framework
 * Software constraints

Openhab uses the port 8080. this port has to be dedicated to it.
 * Openhab constraints

the Network has to allow multicast because Upnp protocol relies on it.
 * Network constraints

2.5 Assumptions and dependencies
dependance = OpenHab

=3.Specific requirements, covering functional, non-functional and interface requirements=
 * document external interfaces,
 * describe system functionality and performance
 * specify logical database requirements,
 * design constraints,
 * emergent system properties and quality characteristics.

3.1 Requirement X.Y.Z (in Structured Natural Language)
Function: detect a camera and add the video stream, the monitoring options on the OpenHab Interface

Description: When the UPnP cameras are started, they are automatically detected, and the user can select the camera he wants to to visualize on the Openhab UI. The user must check before in the camera propertie file if the name of his camera is registered in the file. If not, the user must add the camera references, following this syntax : model|video_url|image_url|pan_url|tilt_url and put null if a field is missing.

Inputs: IP address, name and information about a camera

Source: UPNP camera

Outputs: Video stream of a camera and monitoring options on the OpenHab interface

Destination: OpenHab / Eclipse Smarthome user

Action: detect and add cameras on the OpenHab interface. Add tilt and pan functions if the camera support it.


 * Natural language sentences (with MUST, MAY, SHALL)

The user must turn on the camera. When launching OpenHab, the camera shall appear on the list of the discovered cameras. Once the user select the camera, the video stream must be displayed on the monitor. The interface should allows the user to pan and tilt the camera, if it has these features.


 * Graphical Notations : UML Sequence w/o collaboration diagrams, Process maps, Task Analysis (HTA, CTT)

Check out with the link below: http://air.imag.fr/index.php/Proj-Openhab/UML

Non functional requirements: The new software must work on OpenHab.
 * Portability Exigence


 * Product Exigence

The cameras that we would like to discover have to support the UPnP protocol.

The user needs to have a functionnal OpenHab 2 distribution.


 * Robutness Exigence

We should be able to detect several cameras and show the video stream correctly.

=4. Product evolution=

We can extend the project and integrate it in myOpenHab. Display the video stream on tv lab