Raumanzeige

Hintergrund

Die Raumanzeige war eine kleine Spielerei, da ich keine Verwendung für ein altes Tablet mehr hatte. Ich hatte ein altes HP Stream 7 Tablet rumliegen, welches ich irgendwann einmal für einen Spottpreis gekauft hatte. Nach ein paar kleinen Spielereien, diente es aber nur noch als Staubfänger. Als Staubfänger war das Ding ganz gut geeignet, für alles andere nicht, wie man an den Hardware Daten erkennen kann:

Hardware HP Stream 7

1 GB RAM und die kleine Atom CPU haben einfach keinen Spaß gemacht. Ursprünglich lief auf dem Stream 7 mal „Windows 8 mit Bing“, dass lies sich mit allerdings irgendwann zu Windows 10 Home aktualisieren und dann wiederum zu Windows 10 Pro upgraden. Allerdings lief schon Windows 8 auf dem Ding wie ein Sack Schrauben und bei dem Touchscreen war es eher Glückssache das zu Treffen was man haben wollte.

Irgendwo auf einer Schulung habe ich dann diese „Raumanzeigen“ an den Besprechungsräumen gesehen und hab mir gedacht, dass könnte dem Tablet ein zweites Leben einhauchen. Einfach neben der Badezimmertür aufhängen. Das Badezimmer als „Besprechungsraum“ auf dem Exchange Server anlegen und somit für die Damen des Hauses „buchbar“ machen. Ich weiß nicht warum, 3 Damen und 2 Badezimmer (wovon eine Dame noch nicht über den Waschbeckenrand schauen kann) scheinen aufgrund von mir nicht nachvollziehbaren Gründen eine Unterversorgung an Nassräumen darzustellen. Spaß beiseite, es war ein reines Bastelprojekt.

Die Umsetzung

Das Tablet sollte also Anzeigen ob ein Raum gebucht ist und dabei auf die EWS Schnittstelle des Exchange Servers zurückgreifen. Ob der Raum frei oder gebucht ist, kann dann per Webseite angezeigt werden. Um die Webseite anzuzeigen reicht der Browser des Tablets im Vollbildmodus.

Dabei ist das folgende kleine PowerShell Script entstanden:

Das Script benötigt die EWS API 2.2 (Download). Ich habe die EWS API direkt auf dem Tablet installiert, bzw. Ich habe das Verzeichnis von meinem PC auf das Tablet kopiert, denn der EWS Installer liegt nur als 64Bit Installer vor, während auf dem Tablet nur ein 32Bit Windows läuft. Das PowerShell Script habe ich dann alle 5 Minuten mit dem Windows Taskplaner starten lassen.

Das Script holt sich die entsprechenden Daten per EWS und legt eine kleine HTML-Datei an, diese Datei habe ich dann einfach per Internet Explorer im Vollbildmodus anzeigen lassen. Kleine Besonderheit: Die HTML Datei enthält im Header einen Meta Tag, der den Browser anweist die HTML-Datei alle 60 Sekunden zu aktualisieren. Das war nötig, damit eine Statusänderung auch angezeigt wird.

So in etwa sollten dann die Statusseiten für den Raum aussehen (Frei und Belegt):

Raumanzeige Frei

Raumanzeige Belegt

Das Resultat

Eigentlich funktionierte es gar nicht so schlecht, hätte allerdings noch etwas feinschliff benötigt:

Raumanzeige auf HP Stream 7

Man sieht auf dem Bild noch die Scrollbalken unten und rechts auf dem Display. Das wäre allerdings schnell durch entsprechende Anpassung im Script erledigt gewesen. Ich hab die Raumanzeige dann allerdings aus einem relativ banalen Grund nicht mehr zu Ende entwickelt: Neben der Badezimmertür ist keine Steckdose…

Das Display hat übrigens 7 Zoll, für eine schicke Anzeige hätte das also gereicht, auch hätte ich die Farben noch anpassen müssen. Ich denke ein schwarzer Hintergrund hätte besser ausgesehen. Irgendwann (mehrmals täglich) hätte das Tablet allerdings geladen werden müssen und immer wieder von der Wand abnehmen, laden und wieder aufhängen, war keine Option.

Übrigens: Das Tablet liegt wieder im Schrank und dient als Staubfänger, es funktioniert aber noch. Ich hab es nämlich für diese Seite extra mal wieder geladen und das Script ausprobiert. Vielleicht finde ich ja noch einmal Verwendung dafür…

13 Replies to “Raumanzeige”

  1. Moin,
    Nettes Tool!
    Wäre es auch möglich die Aufbereitung und die Seite direkt auf dem Server laufen zu lasen und die Seite dann von einem anderen Device aus aufzurufen?
    Habe hier noch einige ale Androiden rumliegen die ich gerne für solch zwecke nutzen würde.
    Ein Webserver läuft ja auf dem Server sowieso.
    Gruss Ralf

  2. Hi,
    bin gerade zufällig auf dieses Super Script gestoßen.
    Wir nutzen Exchange 2013. Leider erhalte ich einen Fehler bei get-date:
    get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der
    Parameter übereinstimmen, die Pipelineeingaben akzeptieren.
    In Z:\Installationen\Software\Scripts\Raumanzeige\Raumanzeige\Raumanzeige.ps1:61 Zeichen:44
    + … $NextmeetingStart = $Nextmeeting.start | get-date -format „HH:mm“

    Kann ich da irgendwas tun?

  3. Hi Franky,
    vielen Dank für das tolle Projekt. Ich komme allerdings genau wie mein Vorredner nicht weiter…
    LG Micha

    —————–

    PS D:\Userprofil\jelinski.KS\Desktop\Raumanzeige> D:\Userprofil\jelinski.KS\Desktop\Raumanzeige\Raumanzeige.ps1
    get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren
    Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren.
    In D:\Userprofil\jelinski.KS\Desktop\Raumanzeige\Raumanzeige.ps1:61 Zeichen:44
    + … $NextmeetingStart = $Nextmeeting.start | get-date -format „HH:mm“
    + ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetDateCommand

    get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren
    Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren.
    In D:\Userprofil\jelinski.KS\Desktop\Raumanzeige\Raumanzeige.ps1:62 Zeichen:40
    + $NextmeetingEnd = $Nextmeeting.End | get-date -format „HH:mm“
    + ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetDateCommand

    get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben akzeptiert oder die Eingabe und deren
    Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben akzeptieren.
    In D:\Userprofil\jelinski.KS\Desktop\Raumanzeige\Raumanzeige.ps1:63 Zeichen:43
    + … $NextmeetingDate = $Nextmeeting.start | get-date -format „dd.MM.yyyy“
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetDateCommand

  4. Hi Franky,
    wir sind ein mittelständischer Konzern mit mehreren Standorten weltweit – wobei ich in der zentralen IT sitze, mitverantwortlich für AD & Exchange.
    Unser IT Kollege am Standort Österreich hat für diesen Fall ein sehr teures System gekauft und implementiert.
    Ein Monitor der neben jedem Meetingraum hängt und anzeigt, OB dieser Raum gebucht ist, WANN und durch WEN.
    Wenn dieser Raum frei ist, kann man darüber auch direkt „spontan“ buchen.

    Wie schwer wäre es, denn dein Skript in diese Weise zu erweitern?
    Evtl. ein Butten „jetzt buchen“ und die notwendige Zeit angeben, damit dieser Raum dann sofort gebucht wird.
    Wie schwer wäre das umzusetzen?

    Liebe Grüße
    Mille

  5. Hi,
    ich würde nicht dieses Script erweitern, dies war nur ein kleines Spielprojekt. Grundsätzlich ist es aber nicht weiter kompliziert deine Anforderung umzusetzen. Man könnte daraus ein kleines Azubi Projekt machen.
    Gruß,
    Frank

  6. Hi Frank,
    unser Azubi würde in dem Fall leider eher die ganze Exchange Farm zerstören :)

    Ich muss auch ehrlich gestehen, dass ich aktuell ziemlich auf dem Schlauch stehe…
    Dein Skript schmeißt mich in Zeile 19 immer raus mit dem Error:
    „The Autodiscover service couldn’t be located.“

    Hast du einen Lösungsansatz für mich?

  7. Hallo,

    habe ebenfalls das Problem mit dem fehlerhaften Aufruf:

    —————————————————————–
    get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben
    akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben
    akzeptieren.
    In C:\neu\Raumanzeige.ps1:61 Zeichen:44
    + $NextmeetingStart = $Nextmeeting.start | get-date -format „HH:mm“
    + ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetDateCommand

    get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben
    akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben
    akzeptieren.
    In C:\neu\Raumanzeige.ps1:62 Zeichen:40
    + $NextmeetingEnd = $Nextmeeting.End | get-date -format „HH:mm“
    + ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetDateCommand

    get-date : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben
    akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben
    akzeptieren.
    In C:\neu\Raumanzeige.ps1:63 Zeichen:43
    + $NextmeetingDate = $Nextmeeting.start | get-date -format „dd.MM.yyyy“
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) [Get-Date], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.GetDateCommand
    —————————————————————–
    es scheint so, als ob er keine Einträge findet.

  8. Eine ganz andere Frage?! Wozu benötige ich für den Raum ein Passwort in dem Script?? Oder kann ich ein vorhandenes Konto samt Passwort verwenden? Wenn ich den Raum anlege werde ich nicht nach einem Passwort gefragt. Das Raumkonto schein auch gesperrt zu sein (Pfeil nach unten).

    Grüße Herta

  9. Da sich hier einige über den Selben Fehler beklagen, habe ich mir das Script genauer angesehen, und adaptiert. Bei mir Funktioniert es nun. Da wir mehrere Räume haben, habe ich das Script auch gleich aufgebohrt, um alle Räume auf einmal zu erstellen. Falls wer bedarf hat bitte einfach kurz einen Kommentar hinterlassen :)

    LG

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.