Uitbreiding van de userinterface voor een domoticasysteem
Project aangeboden door Sam Vandendriessche voor het behalen van de graad van Bachelor in de New Media and Communication Technology Academiejaar 2012-2013 Stageplaats : Duotecno bvba Stagementor : Frederik Viane Stagebegeleider : Henk Bostyn
Uitbreiding van de userinterface voor een domoticasysteem
Woord vooraf Mijn naam is Sam Vandendriessche en volg de opleiding Bachelor New Media and Communicatio Technology aan Howest. Dit eindwerk speelde een belangrijke rol in het krijgen van een visie over het bedrijfsleven. Doorheen deze studiejaren ben ik als mens gegroeid en een stap dichter gekomen bij het beëindigen van mijn opleiding. Bij deze wil ik iedereen bedanken die het voor mij mogelijk gemaakt heeft deze drie mooie jaren van mijn studie af te ronden. Mijn ouders verdienen wellicht de grootste dank. Zij hebben mij gesteund in alle momenten en de kans gegeven om te studeren. In de eerste plaats wil ik Mr. Peter Gitsels en Mr. Burt Eeckhout bedanken omdat zij mij de kans hebben gegeven om mijn eindwerk te realiseren bij Duotecno bvba. Hierdoor heb ik immers ook kennis kunnen maken met de werking van een bedrijf. Dit was op zijn minst een even belangrijke ervaring als de opdracht zelf. Daarnaast wil ik mijn collega’s van de software afdeling Elke Vanrafelghem en Tom Mitchell danken voor hun ondersteuning bij het realiseren van het project. Ook Frederik Viane wil ik bedanken voor het begeleiden van mij tijdens deze periode. Dit rapport is een verduidelijking over de werking van de geïntegreerde applicaties in de HomeManager van Duotecno. Deze programma’s hebben als onderwerp het integreren van een camerabewakingssysteem. Dit rapport is bedoelt voor zowel programmeurs als voor lezers die betrekking hebben tot een camerabewakingssysteem.
Sam vandendriessche
Uitbreiding van de userinterface voor een domoticasysteem
Samenvatting Deze eindverhandeling bespreekt twee applicaties die ontwikkeld werden voor het domotica bedrijf Duotecno BVBA te Brugge. Beide applicaties zijn integraties van bestaande camerabewakingssystemen. Deze applicaties werden geïntegreerd in de bestaande HomeManager van het bedrijf. De HomeManager is een toepassing die de gebruiker een mooie userinterface aanbiedt voor het bedienen van hun domoticasysteem. Voor beide applicaties heb ik dezelfde werkwijze gehanteerd. Eerst begonnen met research te doen over de camerabewakingssystemen en daarna de SDK’s bestudeerd. Bij het ontwikkelen ben ik steeds begonnen met de Live weergave en zo verder opgebouwd. De eerste applicatie is een vernieuwde versie van de integratie van het Geovision camerabewakingssysteem in de HomeManager. Deze applicatie werd geïntegreerd in de HomeManager doordat de versie verouderd was en geen goed beeldkwaliteit leverde. De Geovision integratie maakt het mogelijk om live bewakingsbeelden te bekijken alsook opgenomen beelden. Niet alleen de userinterface van deze applicatie is vernieuwd maar ook zijn er nieuwe functies aan toegevoegd. Deze nieuwe functies bestaan uit een MultiView, PIP en PAP maar ook geluid is toegevoegd. De applicatie heeft ook ondersteuning ingebouwd voor het kunnen gebruiken van de camerabeelden als parlofoon of waarschuwing bij bewegingsdetectie. Het e-mailen van foto’s bij het detecteren van beweging is ook een van de vele extra functies die deze applicatie aanbied. De tweede applicatie is een integratie van het Milestone camerabewakingssysteem in de HomeManager. Deze applicatie moest ontwikkeld worden door het opkomend gebruik van Milestone en is ontwikkeld om zo gemakkelijk mogelijk de integratie te kunnen doen in de HomeManager. Hiervoor heb ik mij gebaseerd op de structuur van de eerste applicatie. De functionaliteit van deze applicatie is hetzelfde als deze van de Geovision integratie. Beide applicaties werken goed en zijn dus geslaagd. Als pluspunt van beide applicaties is dat ze al zijn geïntegreerd in de HomeManager.
Sam vandendriessche
Uitbreiding van de userinterface voor een domoticasysteem
Verklarende woordenlijst Domotica Domotica bestaat uit het automatiseren van een huis via informatica, telematica, robotica (huisautomatisering).
Mail Server Een mail server is een server (computer) die verantwoordelijk is voor het verwerken van e-mails.
Playback Het afspelen van opgenomen beelden.
PTZ Een afkorting voor Pan Tilt Zoom, deze opties zijn de manieren van beweging voor een camera.
User Interface (UI) Dit is de gebruiksomgeving, een omgeving tussen een computer en de mens.
Embedded software Software die rechtstreeks op de hardware zit.
GET request Vraagt data van een specifieke bron via http
ActiveX ActiveX is een framework voor het definiëren van herbruikbare softwarecomponenten op een programmeertaalonafhankelijke manier
Sam vandendriessche
Uitbreiding van de userinterface voor een domoticasysteem
Afkortingen CPU DNS DVR fps HD-SDI HTTP IP PAP PIP PTZ SDK TCP UI WCF
Sam vandendriessche
Central Processing Unit Domain Name Server Digital Video Recorder Frames per second High Definition Serial Digital Interface Hypertext Transfer Protocol Internet Protocol Picture and Picture Picture in Picture Pan Tilt Zoom Software Development Kit Transmission Control Protocol User Interface Windows Presentation Foundation
Uitbreiding van de userinterface voor een domoticasysteem
Inhoudsopgave Woord vooraf ..................................................................................................... 1 Samenvatting ..................................................................................................... 2 Verklarende woordenlijst ................................................................................... 3 Afkortingen ........................................................................................................ 4 Inhoudsopgave ................................................................................................... 5 Inleiding...................................................................................................... 8 Duotecno.................................................................................................... 9 Domoticasysteem .................................................................................. 9 Duotecno HomeManager..................................................................... 10 Research ................................................................................................... 11 Geovision ............................................................................................. 11 3.1.1
DVR Compact .............................................................................. 11
Milestone ............................................................................................. 12 HD-SDI en IP camera’s.......................................................................... 13 3.3.1
Wanneer HD-SDI? ....................................................................... 13
3.3.2
Wanneer IP? ............................................................................... 13
No-IP .................................................................................................... 14 3.4.1
Wat is No-IP ................................................................................ 14
3.4.2
Waarom Dynamische DNS? ........................................................ 14
3.4.3
Duotecno en No-IP...................................................................... 15
3.4.4
Web API voor embedded integratie No-IP .................................. 15
Integratie Geovision in HomeManager ..................................................... 17 Doelstellingen ...................................................................................... 17 Vooronderzoek .................................................................................... 17 Geovision SDK ...................................................................................... 17 Opbouw ............................................................................................... 18 Configuratie ......................................................................................... 19
Sam vandendriessche
Uitbreiding van de userinterface voor een domoticasysteem
4.5.1
Functies ...................................................................................... 21
Live ...................................................................................................... 22 4.6.1
Opbouw ...................................................................................... 22
4.6.2
Picture in Picture (PIP) ................................................................ 25
4.6.3
Picture and Picture (PAP) ............................................................ 25
Playback ............................................................................................... 26 4.7.1
Opbouw ...................................................................................... 26
Live – Playback ..................................................................................... 28 4.8.1
Audio .......................................................................................... 28
4.8.2
Afstandsbediening ...................................................................... 28
Multi View ........................................................................................... 29 Pop-up en E-mail............................................................................... 31 Problemen bij de realisatie ............................................................... 32 Integratie Milestone in HomeManager .................................................... 33 Doelstellingen ...................................................................................... 33 Vooronderzoek .................................................................................... 33 Milestone SDK ...................................................................................... 34 Opbouw ............................................................................................... 35 Configuratie ......................................................................................... 36 5.5.1
Functies ...................................................................................... 37
LiveView (Live & Playback) ................................................................... 38 5.6.1
Audio .......................................................................................... 41
5.6.2
Afstandsbediening ...................................................................... 41
Multi View ........................................................................................... 42 Pop-up en E-mail .................................................................................. 44 Problemen bij de realisatie .................................................................. 45 Besluit ...................................................................................................... 46 Bronvermelding ............................................................................................... 47
Sam vandendriessche
Uitbreiding van de userinterface voor een domoticasysteem
Bijlagen ............................................................................................................ 48 Bijlage 1 - HomeManager Mode RX .............................................................. 48
Sam vandendriessche
Uitbreiding van de userinterface voor een domoticasysteem
Inleiding Duotecno, een bedrijf gevestigd te Brugge, is gespecialiseerd in het ontwikkelen van gebruiksvriendelijke domoticasystemen. Duotecno biedt een totaalconcept aan waarmee het comfort binnen de woning op vele vlakken wordt verhoogd Domotica is een innoverend concept, een interessante omgeving om nieuwe dingen bij te leren en te ontdekken. Het steeds vernieuwen en ontwikkelen van nieuwe producten maakt de job uitdagend. Om deze reden heb ik gekozen om bij Duotecno mijn stage te gaan doen. Mijn project houdt in om de userinterface voor het domoticasysteem uit te breiden. De userinterface bestaat uit het programma ‘Duotecno HomeManager’. Duotecno biedt naast Domotica ook camerabewaking aan. De integratie van deze camerabewaking was niet optimaal en verouderd in hun HomeManager. Er werd mij gevraagd camerabewakingssystemen te gaan integreren in de HomeManager van Duotecno. Geovision en Milestone zijn bewakingssystemen waar Duotecno momenteel mee werkt. Dit project heb ik met plezier aangenomen omdat dit zeer afwisselend zou zijn. Het uitproberen van verschillende camera’s en bewakingssystemen, deze daarna integreren in hun HomeManager was voor mij een mooi aanbod. Het weten dat dit geen nutteloos project ging zijn was zeker ook een stimulans om mijn stage bij Duotecno te doen. Via SDK’s heb ik Geovision en Milestone kunnen integreren maar er is veel research vooraf gegaan. Zowel het bestuderen van de SDK’s als het proberen te werken met WinForms en ActiveX was een grote uitdaging.
Sam vandendriessche
8
Uitbreiding van de userinterface voor een domoticasysteem
Duotecno
Figuur 1 Domotica logo
Domoticasysteem Het domoticasysteem is gebaseerd op het CAN-protocol (Controller Area Network), een open protocol waardoor het gemakkelijk is om interfaces te schrijven. Een Domotica installatie kan beschikken over enkele modules zoals een dimmer, relais … . Deze modules worden met elkaar verbonden met een RJ12 kabel.
Figuur 2 Domotica opstelling
Sam vandendriessche
9
Uitbreiding van de userinterface voor een domoticasysteem
Duotecno HomeManager De Duotecno HomeManager is ontwikkeld met als doelstelling de gebruiker een overzicht te bieden van alle lichten, rolluiken, audio systemen … . De software is Client/Server gebaseerd en werkt via een TCP/IP connectie hierdoor is het mogelijke om via een interne of externe netwerkverbinding te communiceren met de domotica.
Figuur 3 HomeManager MyHome
Figuur 4 HomeManager Audio
Sam vandendriessche
10
Uitbreiding van de userinterface voor een domoticasysteem
Research Geovision Geovision is een camerabewakingsbedrijf die hun eigen hardware aanbiedt maar ook hun eigen software heeft. Deze software begint bij het opzoeken van camera’s in het netwerk tot het bekijken van camera beelden en vertonen van opgenomen beelden. Geovision biedt zowel lage kost constructies zoals analoge camera’s van 20fps tot 480fps. Een aanbod aan IP surveillance camera’s is ook aanwezig.
Figuur 5 Geovision logo
3.1.1 DVR Compact De DVR Compact van Geovision was een van de servers waar ik heb kunnen mee testen. De eerste uitdaging was om alles te installeren. De aansluitingen van de camera’s en de ingangen op de DVR waren namelijk niet hetzelfde. Door dit na te vragen bij een technieker heb ik dan de juiste koppelstukken gekregen voor het aansluiten van de camera’s. Figuur 6 Geovision DVR Compact Vervolgens moest ik de server instellen en verkennen wat de mogelijkheden waren. Alle mogelijkheden waren aanwezig zoals bij een gewone PCI card van Geovision in een eigen server. Hierna heb ik de software die ik tot nu toe had eens uitgeprobeerd op deze server, maar dit was tevergeefs. Na het uitzoeken waar het probleem zich bevond was mij opgevallen dat er 2 types zijn voor het inloggen naar een server. Door het veranderen van het type en de bijhorende Figuur 7 Geovision 800B poort werkte alles perfect. Sam vandendriessche
11
Uitbreiding van de userinterface voor een domoticasysteem
Milestone De eerste indruk die ik had toen ik de website van Milestone bekeek was dat dit veel professioneler aanvoelde dan de website van Geovision. Hun softwaresysteem bestaat uit verschillende soorten versies. Dit gaat van een gratis versie Go (8cameras) tot de Corporate versie (ongelimiteerd aantal camera’s). Het weergeven van alle informatie is zeer goed gedaan en komt zeer professioneel over. Ook de promo filmpjes op de website spreken direct aan. Mijn opdracht was alle aspecten te bekijken rond Milestone.
Is dit mogelijk voor ons om te integreren? Bestaat er een SDK? Is er een meerwaarde? …
Het was vlug duidelijk waar ik moest zijn voor de SDK en het verkrijgen van meer informatie. In de afdeling My Milestone kan je registreren om partner van Milestone te worden. Na het uitvoeren van deze registratie was het wachten op Milestone voor het bevestigen van de partnership. Die bevestiging kwam een aantal dagen later en hierdoor kreeg ik toegang tot het Milestone partner portal. Hier had ik toegang tot een developer forum, software en natuurlijk ook de SDK.
Figuur 8 Milestone logo
Sam vandendriessche
12
Uitbreiding van de userinterface voor een domoticasysteem
HD-SDI en IP camera’s HD-SDI is een nieuwe technologie die ook wordt gebruikt voor camerabewaking. De naam zegt het zelf HD (High-Definition) en SDI (Serial Digital Interface), dit zou als vervanger moeten dienen voor de oude Analoge camera’s (via coax). Bij het plaatsen van een nieuw camerasysteem is er nu de keuze tussen IPcamera’s of HD-SDI camera’s wat neem je? Dit is moeilijk te zeggen natuurlijk maar naar mijn mening en opzoekingswerk zou ik met allebei werken. IPcamera’s en HD-SDI zijn kwalitatief en prijs gebonden zeer goed. Beiden kunnen HD signalen doorsturen. Bij het zoeken naar HD-SDI camera’s heb ik nog niet veel keuze gevonden en de IP-camera’s hadden meestal een betere kwaliteit. 3.3.1 Wanneer HD-SDI? Als de plaats waar de camera bewaking moet komen coax kabel heeft liggen, zou het nogal omslachtig zijn om nog een nieuwe IP-kabel te gaan trekken. Door een nieuw server te plaatsen en eventuele oude analoge camera’s te vervangen ben je klaar. 3.3.2 Wanneer IP? Als er nog nergens kabels liggen, zou ik hanteren voor IP-camera’s dit doordat er dan overal ethernet kabels worden getrokken en dit handig kan zijn voor eventuele andere installaties. Ook is het aanbod veel groter en is er geen specifieke server nodig door bv. Milestone te installeren kan je via een doodgewone computer een beveiligd huis creëren.
Figuur 10 Coax kabel
Sam vandendriessche
Figuur 9 Ethernet kabel
13
Uitbreiding van de userinterface voor een domoticasysteem
No-IP 3.4.1 Wat is No-IP No-IP is een provider die een dienst van dynamische DNS aanbied. Dit wordt vooral gebruikt bij particulieren die geen vast IP-adres hebben. Dynamische DNS voorziet een onmiddellijke update in de DNS records van de lokale database. Door het verkrijgen van een dynamisch IP-adres van een ISP werden diensten zoals No-IP populair.
Figuur 11 No-IP logo
3.4.2 Waarom Dynamische DNS? Een particulier wil thuis een server plaatsen maar wil die ook van op afstand kunnen benaderen. Dit kan niet zonder een vast extern IP-adres. De meeste ISP’s geven tegenwoordig aan hun klanten een dynamisch IP-adres, hierdoor veranderd het extern IP-adres na een willekeurige tijd. Hier komt dan No-IP, DynDNS, … van pas, door bijvoorbeeld op een windows computer hun ‘client’ (bij No-IP DUC genaamd) te installeren maak je verbinding met hun update server. Door te verbinden met hun update server geef je deze server telkens je extern IP-adres. Deze update server koppelt uw extern IP-adres dan aan een geregistreerde host. Om deze dienst te gebruiken moet je je hiervoor registeren op hun website en kan je een gratis subdomein registreren zoals bv. sam.no-ip.org. Deze URL verwijst dan bijvoorbeeld naar de webserver.
Figuur 12 Cyclus No-IP
Sam vandendriessche
14
Uitbreiding van de userinterface voor een domoticasysteem
3.4.3 Duotecno en No-IP Duotecno heeft een professioneel account bij No-IP maar deze gaf een foutmelding. Doordat het domein duotecno.be niet bij No-IP geregistreerd staat moeten hun DNS records van duotecno.be verwezen worden naar die van No-IP. Door het risico te lopen dat de website niet meer zou werken heb ik voorgesteld een nieuw domein aan te kopen genaamd duotecno-ip.be en hier mee te gaan testen.
Figuur 13 No-IP foutmelding
Na het registreren van dit domein en het veranderen van de DNS records naar die van No-IP was dit onderdeel gedaan. Door dit alles te doen kan Duotecno nu hun klanten voorzien van een sub domein (bv. sam.duotecno-ip.be) van duotecno.be die naar hun Domotica verwijst om extern hun huis te kunnen bedienen. 3.4.4 Web API voor embedded integratie No-IP Duotecno wou in hun TCP-IP module een eigen update client voor No-IP ontwikkelen. Niet elke klant wil namelijk een computer 7 dagen op 7 en 24 uur op 24 laten aanstaan. Het opzoeken van hun API was dus de eerste stap. Via de website van No-IP wordt dit goed aangegeven waar deze zich bevindt. Samen met Tom hebben we de API bekeken en hebben we deze toegepast. Op de website van No-IP staat er vermeld dat je niet constant aanvragen mag versturen naar hun update server, om deze niet onnodig te gaan belasten. Hierdoor zijn we gaan controleren of het extern IP-adres veranderd was. Door het gebruiken van de software Wireshark die veel gebruikt word bij het maken van netwerk applicaties, heb ik ontdekt dat de update client van DUC een TCP connectie maakt met een andere server van No-IP om het extern IP-adres te gaan opvragen. Wij hebben hetzelfde toegepast niet via een TCP connectie maar via een http GET request, waardoor we het extern IP-adres verkregen. Door dit te gaan vergelijken met het vorige opgeslagen IP-adres kunnen we kijken of het extern IP-adres veranderd is of niet. Sam vandendriessche
15
Uitbreiding van de userinterface voor een domoticasysteem
Voorbeeld request string: http://username:
[email protected]/nic/update? hostname=mytest.testdomain.com&myip=1.2.3.4
Voorbeeld raw http header GET request. GET /nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4 HTTP/1.0 Host: dynupdate.no-ip.com Authorization: Basic base64-encoded-auth-string User-Agent: Bobs Update Client WindowsXP/1.2
[email protected]
Parameter
Omschrijving
username:password
Verplicht
hostname
Verplicht
myip
Optioneel
Hier moet het gebruikersnaam en wachtwoord worden ingevuld van uw account bij No-IP. Het hostname is het webadres die zou moeten worden upgedate (host.domein.com) Het IP-adres waar de host naar moet verwezen worden. Door dit leeg te laten wordt automatisch het WAN IP-adres van het systeem die verbonden is met No-IP gebruikt.
Een aantal Response Codes Status
Omschrijving
good IP_ADDRESS
OK
nochg IP_ADDRESS
OK
nohost
Error
badauth
Error
abuse
Error
Sam vandendriessche
DNS hostname is succesvol vernieuwd. Dit wordt gevolgd door het extern IP-adres. Het IP-adres is het recent en is dus niet veranderd. Dit wordt gevolgd door het extern IP-adres Het host adres bestaat niet onder het ingegeven No-IP account. Gebruikersnaam en wachtwoord zijn niet correct De gebruiker is geblokkeerd door het te misbruiken van de No-IP dienst.
16
Uitbreiding van de userinterface voor een domoticasysteem
Integratie Geovision in HomeManager Doelstellingen De doelstelling van dit project is om de huidige camerabewakingssoftware te vervangen door een eigen ontwikkelde versie. Deze zou volledig geïntegreerd moeten worden in de HomeManager software. Deze integratie moet de mogelijkheid bieden om live beelden van de camera’s te kunnen bekijken, maar ook opgenomen beelden terug te kunnen afspelen. De bediening moet zo eenvoudig mogelijk gebeuren.
Vooronderzoek In het vooronderzoek heb ik bekeken waar ik mee ging werken, welke servers, camera’s. Dit om zo op zoek te gaan naar een Software Development Kit (SDK). Een SDK is een verzameling hulpmiddelen die handig zijn bij het ontwikkelen van software. Geovision biedt zelf een SDK aan om de optimale integratie te garanderen met hun producten.
Geovision SDK Geovision biedt een SDK aan die de communicatie uitvoert tussen mijn software en hun hardware. Deze SDK bezit ook 2 ActiveX controls.
Live Control Deze control heeft als functie live beelden op te halen van de Geovision webcamserver. Ook het aansturen van de camera gebeurd via deze control.
Playback Control Deze control heeft als functie om vooraf opgenomen beelden op te halen van de remote playback server van Geovision.
Sam vandendriessche
17
Uitbreiding van de userinterface voor een domoticasysteem
Opbouw De applicatie wordt gestuurd door de klasse ‘HMGeovision’. Via een instantie van deze klasse kunnen alle functionaliteiten worden aangestuurd. De Camera, Playback en Config weergave zijn de 3 grootste onderdelen van de applicatie.
Duotecno HomeManager
Duotecno.Geovision
HMGeovision
Duotecno.Geovision.Views
CameraView
PlaybackView
ConfigView
Duotecno.Geovision.Controllers
CameraController
PlaybackController
ConfigController
Functies
Functies
Functies
Figuur 14 Structuur Geovision
Sam vandendriessche
18
Uitbreiding van de userinterface voor een domoticasysteem
Configuratie Om te beginnen vertrekken we van de Setup in de HomeManager, dit doen we door lang te drukken op het Duotecno logo links bovenaan. Daarna krijg je de keuze uit een aantal mogelijkheden, hier gaan we naar de Setup. De Setup is beveiligd voor de gewone gebruikers en hierdoor moet er dus een wachtwoord worden ingegeven, standaard is dit wachtwoord ‘2222’. 1. Lang drukken
2. Drukken
3. Code 2222 invoeren En daarna op OK drukken
4. Druk op Camera Setup
Figuur 15 Configuratie deel 1
Sam vandendriessche
19
Uitbreiding van de userinterface voor een domoticasysteem
Eenmaal in de camera configuratie kan je bovenaan kiezen voor Geovision (standaard Milestone). Na het selecteren van Geovision zie je een configuratie scherm zoals hieronder. Als er nog geen servers zijn toegevoegd staat er als voorbeeld server ‘0.0.0.0’. Deze kan aangepast worden naar een eigen server. Voor meerdere servers toe te voegen kan je op het ‘+’ icoontje drukken en komt er terug een voorbeeld server met als IP-adres ‘0.0.0.0’. Na het drukken op Save kan het IP-adres niet meer worden aangepast. Door op het ‘-‘ icoontje te drukken kan je een server verwijderen. 5. Selecteer Geovision
6. Toevoegen/Verwijderen van een nieuwe server configuratie
6.1. Meerdere Configuraties Ingesteld
7. Om de Configuraties op te slaan druk je op Save
Figuur 16 Configuratie deel 2
Sam vandendriessche
20
Uitbreiding van de userinterface voor een domoticasysteem
4.5.1 Functies Door via de instantie van HMGeovision de functie GetConfigView() te gaan oproepen word de ConfigView in het grid van HMGeovision geplaatst.
Controller functies
LoadData SaveData Add Remove
Alle configuraties inladen. Alle configuraties opslaan. Voegt een configuratie toe. Verwijderd de geselecteerde configuratie.
ConfigDAO Deze static DAO klasse gaat XML bestanden gaan inlezen of wegschrijven van een configuratie van een server. SaveConfig(Config config) Deze functie gaat de Config klasse gaan wegschrijven in een XML bestand. Hier word het wachtwoord beveiligd voor het word opgeslagen. LoadConfig(string ipaddress) Deze functie gaat een XML bestand inlezen via het geconfigureerde project map en een meegegeven IP-adres. In deze functie wordt het wachtwoord ontsleuteld. LoadAllConfigs() Deze functie gaat alle XML bestanden gaan inlezen in de project map die beginnen met ‘GEO’. DeleteConfig(string ipaddress) Deze functie gaat een configuratie bestand gaan verwijderen aan de hand van het meegegeven IP-adres. ConfigSavedEvent Door te abonneren op deze functie krijg je een event die laat weten dat de configuratie opgeslagen is.
Sam vandendriessche
21
Uitbreiding van de userinterface voor een domoticasysteem
Live Het live onderdeel staat in voor het weergeven van de huidige beelden van het camerabewakingssysteem. Ook het besturen van de camera gebeurt in dit onderdeel. 4.6.1 Opbouw Het live gedeelte bestaat uit 5 onderdelen.
1
2 3
4
5
Figuur 17 Opbouw Live
1. Cameralijst In de cameralijst zitten objecten van het type Camera die een camera van Geovision vertegenwoordigd. Deze Camera objecten worden omhuld door de control CCListboxItem.
Sam vandendriessche
22
Uitbreiding van de userinterface voor een domoticasysteem
2. Live weergave Dit bevat het ActiveX object uit de Geovision SDK deze werd in een nieuwe klasse genaamd LiveX gestoken voor het kunnen toevoegen van Drag & Drop. Bij het dubbelklikken op de weergave wordt het scherm volledig geplaatst, met alleen het geselecteerde camera beeld. Als er meerdere monitoren zijn aangesloten zal je de keuze krijgen op welke monitor je dit wilt uitvoeren.
Figuur 19 Meerder monitoren
3. PTZ Control
Figuur 18 IDropTarget
Via dit paneel kan men alle besturingen van de camera gaan doen. Als de rode bol opgelicht is dan kan de PTZ functie van de camera geactiveerd worden. Door het klikken op de rode bol wordt te PTZ functie geactiveerd. Daarna kan je door het klikken op de knoppen de camera gaan besturen (bv. naar rechts laten bewegen).
Als extra heb je hier ook nog het ‘Multi’ icoon. Door op deze knop te drukken zal de ‘MultiView’ Geopend worden.
Sam vandendriessche
23
Uitbreiding van de userinterface voor een domoticasysteem
4. Live Controls
Opnemen video Pauze/Play video Screencapture Mute audio
Figuur 20 Opslaan video
Figuur 21 Opslaan screencapture
5. Mini camera weergaves Door Drag en Drop te gaan toepassen kan je deze 4 onderste camera’s naar behoren aanpassen.
Sam vandendriessche
24
Uitbreiding van de userinterface voor een domoticasysteem
4.6.2 Picture in Picture (PIP) Door het activeren van PIP verschijnt er een klein venster met het volledig beeld van de camera. Door het verplaatsen van het groene vierkant in dit venster kan je inzoomen op een bepaald plaats.
Figuur 22 PIP
4.6.3 Picture and Picture (PAP) Door het activeren van PAP kan je verschillende sectoren selecteren om vergroot te bekijken. Dit kan door het selecteren van een gebied, de selectie wordt aangeduid door een groen kader en word in één van de omgevende kaders vergroot. Ook is het mogelijk deze kaders te herpositioneren.
Figuur 23 PAP
Sam vandendriessche
25
Uitbreiding van de userinterface voor een domoticasysteem
Playback Het live onderdeel staat in voor het weergeven van de huidige beelden van het camerabewakingssysteem. Ook het besturen van de camera gebeurt in dit onderdeel. Het Playback onderdeel van deze applicatie maakt het mogelijk om opgenomen beelden op de Geovision server te gaan ophalen. Als eerste is het nodig om een camera te selecteren, daarna worden de datums van de huidige dag opgevraagd. Bij het selecteren van een andere datum worden de opgenomen beelden van de geselecteerde dag in de lijst weergegeven. Door het selecteren van een tijdstip in de lijst wordt het opgenomen beeld opgehaald van de server, vervolgens wordt deze afgespeeld in de Playback weergave. Via de Playback controls kan je de Playback weergave gaan manipuleren. 4.7.1 Opbouw 1
2 3
4
Figuur 24 Structuur Playback
Sam vandendriessche
26
Uitbreiding van de userinterface voor een domoticasysteem
1. Huidige Playback tijd Door het abonneren op het event ‘NowTime’ van de Geovision control is het mogelijk om weer te geven welke tijd er precies wordt afgespeeld.
2. Playback weergave Dit bevat het playback ActiveX object uit de Geovision SDK. Via deze control wordt alles gemanipuleerd.
3. Tijd controle Dit onderdeel bestaat uit 3 elementen. 1. De kalender wordt standaard op de huidige dag geplaatst. 2. Lijst waar je een camera kan selecteren. 3. Tijdslijst die alle tijden bevat van opgenomen beelden. Door één van de tijden te selecteren word de playback van het geselecteerde tijdstip gestart.
4. Playback controls Deze controls manipuleren het weergegeven beeld. Er is mogelijkheid om een beeld te gaan versnellen of naar een volgend tijdstip te gaan. Het pauzeren of stoppen van de weergave is ook mogelijk dit kan handig zijn om een bepaald beeld beter te gaan bekijken.
Sam vandendriessche
27
Uitbreiding van de userinterface voor een domoticasysteem
Live – Playback De live en playback zijn 2 verschillende weergaves maar werken wel samen. Rechtsboven kan er altijd verwisselt worden tussen de Live en Playback weergave. 4.8.1 Audio Een overkoepelende control is de ‘Mute’ knop die op beide weergaves aanwezig is. Via deze knop kan je het geluid van de Live en Playback weergave aan of uit zetten. Deze waarde wordt bijgehouden in de HMGeovision instantie. Als je in de CameraView het geluid uit zet (mute), zal het geluid bij het omschakelen naar de PlaybackView ook uit staan.
4.8.2 Afstandsbediening Doordat de domotica van Duotecno ook kan aangestuurd worden via een afstandsbediening heb ik dit ook mogelijk gemaakt voor deze integratie. Door bijvoorbeeld op de ‘0’ toets te drukken verander je van Live naar Playback.
Figuur 25 Bose RC-38
Functies Door het aanroepen van onderstaande functies of eigenschappen in de controllers kan je de views besturen. (zie ook bijlage 1) (bv. HMGeovision.Instance().Cameraview._controller.SetPreset(nr))
Sam vandendriessche
28
Uitbreiding van de userinterface voor een domoticasysteem
CameraController (HMGeovision.Instance().Cameraview._controller)
ChangeLiveFeedCam(short cam) Pause() Stop() PTZActive()
PTZStop() PTZChange(string command) ZoomIn() ZoomOut() SetPreset(int nr) Speed
PlayBackController (HMGeovision.Instance().Playbackview._controller)
SetCamera(short cam) Pause() Stop() Pre() Next()
ActivateDate() DateUp() DateDown() DateLeft() DateRight()
Multi View Door in de LiveView op het ‘Multi’ icoon te drukken wordt onderstaande weergave geopend.
Figuur 26 MultiView 4
Sam vandendriessche
29
Uitbreiding van de userinterface voor een domoticasysteem
Na het openen van de MultiView kan je via de rechterkolom het aantal gaan bepalen, dit kan in 4, 9 en 16. Door met Drag en Drop te gaan werken kan je deze weergaves gaan aanpassen. Als het aantal camera’s kleiner is dan het aantal in de weergave, wordt deze camera bedekt door het logo van Duotecno. Door op een camera in de lijst te klikken en de muisknop ingedrukt te houden, kan je deze verslepen naar één van de camera vlakken. Door de muis los te laten boven één van deze vlakken zal de camera op dit vlak veranderd worden.
Camera vlak
Figuur 27 MultiView naar volledig scherm
Sam vandendriessche
30
Uitbreiding van de userinterface voor een domoticasysteem
Pop-up en E-mail Het laatste gedeelte van deze applicatie maakt het mogelijk om Geovision en de domotica van Duotecno aan elkaar te koppelen. Door aan bewegingsdetectie te doen of een knop in te drukken kan er een pop-up of een e-mail verstuurd worden.
Figuur 28 Pop-up
Bij het versturen van een e-mail worden een vooraf ingegeven aantal foto’s meegestuurd. Bij het nemen van een e-mail kan dit van groot belang zijn dat een camera bijvoorbeeld op een bepaalde positie staat voor er een image genomen wordt. Door het instellen van een aantal parameters in de ‘Setup’ van de HomeManager, kan je de positie van de camera en het aantal foto’s die genomen moeten worden instellen. Ook de tijd tussen de foto’s kan aangepast worden.
Figuur 29 Setup camsecurity
Sam vandendriessche
31
Uitbreiding van de userinterface voor een domoticasysteem
Problemen bij de realisatie Een eerste probleem was dat er moest gewerkt worden met een SDK die door Geovision werd geproduceerd. Deze was in functionaliteit soms beperkt, ook de documentatie rond de functies is niet altijd even duidelijk. Een aantal keer heb ik ook moeten beroep doen op de SDK ontwikkelaars om een aantal bugs uit hun SDK te proberen op te lossen. Een tweede probleem was dat na een aantal weken Geovision een nieuwe SDK aanbood, na het toevoegen van deze SDK viel mij op dat een aantal functies niet meer bestonden of veranderd waren. Het grootste probleem rond de ontwikkeling was het werken met de ActiveXcomponenten. Deze kunnen niet rechtstreeks op het WPF platform geplaatst worden en hiervoor moest ik een control gebruiken, de ‘WindowsFormsHost’. Ook het beheren van het geheugen voor deze ActiveX-componenten was niet eenvoudig aangezien dit unmanaged code is. Hierdoor moest ik zeker maken dat alles goed afgesloten werd, om een geheugenlek te voorkomen. Daarna moest de ‘Dispose’ methode nog opgeroepen worden.
Sam vandendriessche
32
Uitbreiding van de userinterface voor een domoticasysteem
Integratie Milestone in HomeManager Doelstellingen De doelstelling van dit project is om het camerabewakingssysteem van Milestone te gaan integreren in de HomeManager software Deze integratie moet de mogelijkheid bieden om live beelden van de camera’s te kunnen bekijken, maar ook opgenomen beelden terug te kunnen afspelen. De bediening moet zo eenvoudig mogelijk gebeuren. De basis van dit project zal gebaseerd worden op de integratie van de Geovision software in de HomeManager.
Vooronderzoek Om te starten heb ik eerst de website eens goed bekeken van Milestone, dit om te zien welke mogelijkheden er waren. Na het ontvangen van de gegevens voor het Milestone partner portal, ben ik begonnen met het downloaden van de gratis Milestone software Xprotect Go. Deze software is nodig om het kunnen testen van de SDK en mijn eigen applicatie. Op een externe server heb ik Xprotect Go geïnstalleerd om mijn computer minder te belasten. Het instellen van deze software was relatief eenvoudig. Door de wizards te volgen kan je gemakkelijk een aantal camera’s gaan installeren. In mijn geval waren dit USB-camera’s van Logitech de C310 en de C910.
Figuur 30 Milestone Xprotect Go
Sam vandendriessche
33
Uitbreiding van de userinterface voor een domoticasysteem
Figuur 31 Milestone server configuratie
Figuur 32 Mobotix S14 Figuur 33 Milestone Status
Milestone SDK De SDK van Milestone is veel complexer dan deze van Geovision. Om de SDK te begrijpen moet je beginnen met de voorbeeld projecten te bekijken. Door te baseren op deze projecten kan je beginnen met een eigen programma te maken. Een belangrijk pluspunt aan de SDK van Milestone is dat deze opgevolgd word via een developer forum van Milestone. Door berichten op dit forum te plaatsen kom je direct in contact met de ontwikkelaars.
Figuur 34 Solution Explorer
Sam vandendriessche
34
Uitbreiding van de userinterface voor een domoticasysteem
Opbouw De applicatie wordt gestuurd door de klasse ‘HMMilestone’. Via een instantie van deze klasse kunnen alle functionaliteiten worden aangestuurd. De Live en Config weergave zijn de 2 grootste onderdelen van de applicatie.
Duotecno HomeManager
Duotecno.Milestone
HMMilestone
Duotecno.Milestone.Views
LiveView
ConfigView
Duotecno.Milestone.Controllers
LiveController
ConfigController
Functies
Functies
Figuur 35 Structuur Milestone
Sam vandendriessche
35
Uitbreiding van de userinterface voor een domoticasysteem
Configuratie Na het uitvoeren van de procedure zoals in hoofdstuk 5.5 kan je nu door het bovenaan selecteren van Milestone, de Milestone servers gaan configureren. Door het drukken op het ‘+’ icoontje kan je een server toevoegen en door het drukken op het ‘-‘ icoontje kan je een server verwijderen. Door het aanvinken van het log venster kan je kijken wat er gebeurt. Na het drukken op ‘Save’ kan je via de log zien of deze werkelijk zijn opgeslagen. Na het opslaan van de configuratie is het nodig om op de ‘Connect All’ knop te gaan drukken. Dit om te gaan connecteren met alle servers. Het uitvoeren van de ‘Connect All’ maakt op de achtergrond een multi-server omgeving, hierdoor is het mogelijk om camera’s van verschillende servers in hetzelfde venster te gaan bekijken. 1. Selecteer Milestone
2. Toevoegen/Verwijderen van een nieuwe server configuratie
2.1. Meerdere configuraties ingesteld
Info: Maak het log venster actief om te zien wat er gebeurt
3. Om de Configuraties op te slaan druk je op Save
4. Na het opslaan van configuraties druk je op ConnectAll
Figuur 36 Milestone Configuratie
Sam vandendriessche
36
Uitbreiding van de userinterface voor een domoticasysteem
5.5.1 Functies Door via de instantie van HMMilestone de functie GetConfigView() te gaan oproepen word de ConfigView in het grid van HMMilestone geplaatst.
Controller functies SaveData Add Remove
Alle configuraties opslaan. Voegt een configuratie toe. Verwijderd de geselecteerde configuratie.
ConfigDAO Deze static DAO klasse gaat XML bestanden gaan inlezen of wegschrijven van een configuratie van een server. SaveConfig(Config config) Deze functie gaat de Config klasse gaan wegschrijven in een XML bestand. Hier word het wachtwoord beveiligd voor het word opgeslagen. LoadConfig(string ipaddress) Deze functie gaat een XML bestand inlezen via het geconfigureerde project map en een meegegeven IP-adres. In deze functie wordt het wachtwoord ontsleuteld. LoadAllConfigs() Deze functie gaat alle XML bestanden gaan inlezen in de project map die beginnen met ‘Mile’. DeleteConfig(string ipaddress) Deze functie gaat een configuratie bestand gaan verwijderen aan de hand van het meegegeven IP-adres.
Sam vandendriessche
37
Uitbreiding van de userinterface voor een domoticasysteem
LiveView (Live & Playback) Het live onderdeel staat in voor het weergeven van de huidige beelden van het camerabewakingssysteem. Ook het besturen van de camera gebeurt in dit onderdeel. Door op de knop Playback rechtsboven te drukken kan je ook naar het playback onderdeel van deze weergave gaan.
1
2 3
4
Figuur 37 Opbouw LiveView
1. Cameralijst In de cameralijst zitten objecten van het type ‘Item’. Deze klasse die uit Milestone komt stelt een item voor, dit kan een microfoon, camera, … zijn. Door het controleren op een camera type worden alleen camera’s weergegeven in deze lijst.
Sam vandendriessche
38
Uitbreiding van de userinterface voor een domoticasysteem
2. Camera weergave Door het genereren van deze control via het Milestone platform is het mogelijk om hier een item aan toe te voegen. Deze items worden toegekend via het Drag & Drop systeem. Deze control heeft een live status en een playback status, door het sturen van een bepaald commando kan deze control van status verwisselen. Door het verwisselen van status veranderd het controle paneel.
Bij het dubbelklikken op de weergave wordt het scherm in volledig geplaatst met alleen het geselecteerde camera beeld. Als er meerdere monitoren zijn aangesloten zal je de keuze krijgen op welke monitor je dit wilt uitvoeren.
Figuur 38 Meerdere monitoren
Sam vandendriessche
39
Uitbreiding van de userinterface voor een domoticasysteem
3. Controle paneel Live Via dit paneel kan je alle besturing doen van de camera. Als de rode bol opgelicht is dan is de PTZ functie van de camera geactiveerd. Door op de knoppen te drukken kan je de camera gaan besturen (bv. naar rechts laten bewegen). Als extra heb je hier ook nog het ‘Multi’ icoon. Door op deze knop te drukken zal de ‘MultiView’ Geopend worden.
Playback Dit onderdeel bestaat uit 3 elementen. Als eerste heb je de kalender, deze wordt standaard op de huidige dag geplaatst. Als tweede heb je dan daaronder een aantal controls waar je het weergegeven beeld mee kan manipuleren. Er is mogelijkheid om een beeld te gaan versnellen of naar een volgend tijdstip te gaan. Het pauzeren van de weergave is ook mogelijk dit kan handig zijn om een bepaald beeld beter te gaan bekijken.
Figuur 39 Rechter kolom Live
Figuur 40 Rechter kolom Playback
Als derde heb je dan de tijdslijst deze bevat alle tijden van opgenomen beelden. Door op één van de tijden te drukken wordt de playback van het geselecteerde tijdstip gestart.
Sam vandendriessche
40
Uitbreiding van de userinterface voor een domoticasysteem
4. Mini camera weergaves Door Drag en Drop te gaan toepassen kan je deze 4 onderste camera’s naar behoren aanpassen. 5.6.1 Audio Een overkoepelende control is de ‘Mute’ knop die op beide weergaves aanwezig is. Via deze knop kan je het geluid van de Live en Playback weergave aan of uit zetten. Deze waarde wordt bijgehouden in de HMMilestone instantie. Als je in de live weergave het geluid uit zet (mute), zal het geluid bij het omschakelen naar de playback weergave ook uit staan.
5.6.2 Afstandsbediening Doordat de domotica van Duotecno ook kan aangestuurd worden via een afstandsbediening heb ik dit ook mogelijk gemaakt voor deze integratie. Door bijvoorbeeld op de ‘0’ toets te drukken verander je van live naar de playback weergave.
Figuur 41 Bose RC-38
Functies Door het aanroepen van onderstaande functies of eigenschappen in de ‘LiveController’ kan je de live of playback weergave besturen. (zie ook bijlage 1) (bv. HMMilestone.Instance().LiveView._controller.ChangeLivePlayback())
Sam vandendriessche
41
Uitbreiding van de userinterface voor een domoticasysteem
LiveController (HMMilestone.Instance().LiveView._controller) Live weergave
ChangeCam(int cam) Pauze()
PTZStop() PTZChange(string command) SetSpeed (int speed)
DateUp() DateDown() DateLeft() DateRight()
Playback weergave
ChangeCam(int cam) Pauze() PlayPrevious() PlayNext()
Multi View Door in de live weergave op het ‘Multi’ icoon te drukken word onderstaande weergave geopend.
Figuur 42 MultiView
Sam vandendriessche
42
Uitbreiding van de userinterface voor een domoticasysteem
Na het openen van de MultiView kan je via de rechterkolom het aantal gaan bepalen, dit kan in 4, 9 en 16. Door met Drag en Drop te gaan werken kan je deze weergaves gaan aanpassen. Als het aantal camera’s kleiner is dan het aantal in de weergave, word deze camera bedekt door het logo van Duotecno. Dit om de computer zo weinig mogelijk te belasten. Door op een camera in de lijst te klikken en de muisknop ingedrukt te houden, kan je deze verslepen naar een van de camera vlakken. Door de muis los te laten boven één van deze vlakken zal de camera op dit vlak veranderd worden.
Camera vlak
Figuur 43 MultiView naar volledig scherm
Sam vandendriessche
43
Uitbreiding van de userinterface voor een domoticasysteem
Pop-up en E-mail Het laatste gedeelte van deze applicatie maakt het mogelijk om Geovision en de domotica van Duotecno aan elkaar te koppelen. Door bijvoorbeeld aan bewegingsdetectie te doen of een knop in te drukken kan er een pop-up of een e-mail verstuurd worden.
Figuur 44 Pop-up
Bij het versturen van een e-mail worden een vooraf ingegeven aantal foto’s meegestuurd. Door het instellen van een aantal parameters in de ‘Setup’ van de HomeManager, kan je het aantal foto’s die genomen moeten worden instellen. Ook de tijd tussen de foto’s kan aangepast worden.
Figuur 45 Setup camsecurity
Sam vandendriessche
44
Uitbreiding van de userinterface voor een domoticasysteem
Problemen bij de realisatie Het eerste probleem was het omzetten van de single server omgeving van Milestone naar de multi server omgeving. Door dit te moeten omzetten is er redelijk wat code moeten veranderen en bijkomen, zoals het toevoegen van een ConfigView. Het grootste probleem was het werken met hun audio control. Doordat ik in een multi server omgeving werkte waren er hier geen voorbeelden van. Ik had de integratie correct uitgevoerd maar er zat een fout in de SDK van Milestone zelf. Door dit probleem te posten op het forum van Milestone heb ik een aantal vernieuwde DLL’s gekregen waarna alles perfect werkte.
Sam vandendriessche
45
Uitbreiding van de userinterface voor een domoticasysteem
Besluit In dit project heb ik kennis gemaakt met enkele voor mij nieuwe technologieën zoals ActiveX en Forms objecten. Ook het werken met WPF was een uitdaging om bepaalde design aspecten te visualiseren. Deze projecten waren een grote uitdaging om deze succesvol uit te voeren. Ik heb er vooral veel uitgeleerd en er van genoten om met Duotecno aan deze projecten te werken. Een unieke ervaring heb ik opgedaan, door de kans te krijgen te zien hoe het bedrijfsleven er aan toe gaat. Deze projecten waren een goeie voorbereiding om het bedrijfsleven in te gaan en nog meer projecten te gaan realiseren.
Sam vandendriessche
46
Uitbreiding van de userinterface voor een domoticasysteem
Bronvermelding Camerabewakingssysteem, Geovision http://www.geovision.com.tw/ gezien op 18 februari 2013
Camerabewakingssysteem, Milestone http://www.milestonesys.com/ gezien op 11 maart 2013
DoDragDrop functie c#, MSDN http://msdn.microsoft.com/enus/library/system.windows.forms.control.dodragdrop.aspx gezien op 1 mei 2013
HD-SDI, Wikipedia http://en.wikipedia.org/wiki/Serial_digital_interface gezien op 27 maart 2013
No-IP Integratie https://www.noip.com/integrate gezien op 3 maart 2013
Sam vandendriessche
47
Uitbreiding van de userinterface voor een domoticasysteem
Bijlagen Bijlage 1 - HomeManager Mode RX
Sam vandendriessche
48
Uitbreiding van de userinterface voor een domoticasysteem
HomeManager Mode RX
ModeType 2: Camera Submode0: Live Submode1: Playback normal doom PLAY STOP PAUSE RR FF FRWD FFWD KEY_1 KEY_2 KEY_3 KEY_4 KEY_5 KEY_6 KEY_7 KEY_8 KEY_9 KEY_0 UP DOWN LEFT RIGHT ENTER
Play Stop
CameraNr 1 CameraNr 2 CameraNr 3 CameraNr 4 CameraNr 5 CameraNr 6 CameraNr 7 CameraNr 8 CameraNr 9
Zoom Zoom + Speed Speed + PreseNr 1 PreseNr 2 PreseNr 3 PreseNr 4 PreseNr 5 PreseNr 6 PreseNr 7 PreseNr 8 PreseNr 9 Up Down Left Right Activate doom
Previous Next CameraNr 1 CameraNr 2 CameraNr 3 CameraNr 4 CameraNr 5 CameraNr 6 CameraNr 7 CameraNr 8 CameraNr 9 Date Up Date Down Date Left Date Right Activate date
TIENEEN FREE_1 FREE_2 FREE_3 FREE_4 FREE_5 UP1 DOWN1 UP2 DOWN2
Sam vandendriessche
49