Philips HUE

Jeg har ikke skrevet meget om gadgets og det er såmænd ikke fordi jeg ikke interesserer mig for emnet, men nærmere fordi jeg ikke har al den tid i verden jeg gerne ville have til at skrive på min blog. Men nu skal det være slut, jeg har så utrolig mange lækre gadgets der skal deles med verden og den seneste i rækken er Phillips HUE.

Phillips HUE består af en kontrolenhed (The HUE Bridge) og en række pærer. Hvor mange pærer kommer vel an på ens temperament og pengepung, men i start pakken ligger der 3 pærer og 1 kontrolenhed. Prisen for denne er ca 1500,- på Apples hjemmeside og jeg har en kraftig mistanke om at Apple har vredet armen rundt på Phillips for ikke at lade andre sælge dem. Man kan så håbe at dette ændrer sig i fremtiden og at prisen vil ændre sig som følge af lidt konkurrence, for det er dyrt.

Men hvordan virker det så??

På pakken står der 3 informationer!

  1. Tilslut pærerne
  2. Tænd på kontakten
  3. Tilslut kontrolenheden

Og det er intet mindre end lige præcis så nemt. Jeg havde installeret app´en på forhånd, men det ville ellers være næste skridt. Når denne startes op, instruerer den en om at man skal trykke på knappen på kontrolenheden. Jeg trykkede på den eneste knap der er på kontrolenheden og voila, så var vi klar. Jeg kunne slukke og tænde og lege med farver som jeg lystede. Sidst jeg oplevede en installation der fremkaldte samme reaktion, var da jeg installerede mit sonos system og der er ikke meget der hører til i den klasse.

Efter lidt roden rundt i systemet fandt jeg ud af at omdøbe de enkelte pærer, så man kan se hvilke pærer man skifter farver på, det vil jeg mene er det første man skal gøre. Derefter oprettede jeg diverse temaer, dette kan gøres ud fra billeder man selv har taget eller man kan vælge “Phillips” og vælge mellem alle farver. Det kræver lidt roden rundt i farver før man finder de rigtige, men med lidt leg så kan man fremkalde stemninger der passer til ethvert tidspunkt. Vi har et tema til brætspil, spise, læse, se film osv osv. Man kan lave stemninger der lader lyset være en bestemt farve i en fastsat tid, for derefter at slukke ned, enten med det samme eller over tid (6 eller 9 minutter). Når man opretter et tema vælger man først et navn, hvilke pærer der skal være med, om det skal være med timer, farve, styrke og så gemmer man.

Udover de åbenlyse funktioner kan man også fjernstyre lyset fra ferien, få lyset til at tænde når man kommer hjem eller slukke når man går og med de forskellige udvidelser der findes så er det kun fantasien der sætter grænser. Og dette er kun begyndelsen, Phillips har også lightstrips der kan klæbes bag/under møbler og lyse op der og jeg tror der kommer mange mange flere sjove ting fra den kant i de kommende år.

Jeg vil ikke komme så langt ind på teknikken men kort kan det nævnes at det kører på z-waves som er en åben standard. Frekvensen der benyttes til at kommunikere på er lavere end almindelig wifi og rækker længere. Pærerne opretter et såkaldt mesh-netværk der betyder at pærerne kommunikerer indbyrdes og man kan derfor sætte pærer op der er uden for kontrolenhedens rækkevidde sålænge der er en forbundet pære i nærheden. En smart løsning som jeg ikke har et stort nok hus til at teste, men det skulle virke! Pærerne er led og bruger fra 2-8W i drift. Når de er slukkede bruger de 0.01-0.02A = 0.4W, dette bruges til logikken i pærerne. Om det så ender op med at være mere eller mindre end en almindelig pære kommer an på om man benytter led-pærer i forvejen eller almindelige sparepærer. Ihvertfald er det ikke de store strømtyve.

Overordnet er vi meget tilfredse og vi er kun lige begyndt at lege ;)

 

Installation af FreeNAS v. 9.1.0

Maskinen er klar og jeg har smidt en 160BG disk i til systemet. Den allokerer hele disken til systemet så jeg tænkte at det ville være en god ide at smide en lille disk i som jeg alligevel ikke vil benytte til storage. Min maskine er dog uden cdrom drev og derfor valgte jeg at installere fra en usb stick jeg har liggende. Det viser sig at jeg skulle kæmpe længe for at nå frem til et helt andet mål end det jeg egentlig ville frem til.

Først og fremmest så vælger jeg selvfølgelig at påbegynde installationen mens jeg alligevel er ved at lave mad. Det er såmænd ikke fordi jeg har en elendig timing, men jeg venter bare ikke, så der er slet ikke tale om timing. Der er lidt udfordringer, for det er en iso fil jeg har hentet og man  kan ikke bare smide de udpakkede filer over på en stick der er præpereret med diskpart og så boote maskinen fra den. Man skal åbenbart udpakke en image fil der ligger i biblioteket og kopiere den over på disken. Filen hedder FreeNAS-x64.img.xz og den indeholder FreeNAS-x64.img som er selve FreeNAS operativ systemet. Denne skal så smides over på disken med et program der hedder physdiskwrite og så er man klar til at boote.

Jeg blev noget overrasket over at se FreeNAS starte op, ikke installationen men selve systemet. Da jeg senere havde tid til at læse de blogs jeg tidligere havde fundet diverse info på, fandt jeg ud af at det også var sådan det skulle være. Min første tanke var at jeg måtte finde et cdrom drev og få installeret på disken, men jeg fandt ud af, på freenas.org, at selve systemet fint kan køre fra en usb stick sålænge den var på 4GB. Min var på 2GB men jeg startede forfra og oprettede en 4GB stick og så var jeg flyvende. Det har ingen effekt på systemets hastighed, da alt bliver lagt i ram og det er altså kun boot-tiden der er påvirket.

Første installation var altså i luften og jeg var klar til at lege lidt. Først oprettede jeg en volume i volume manageren. Jeg brugte (bad judgement call :) ) den 160GB disk der allerede sad i. Jeg var godt klar over at det ikke ville blive permanent, men bare for at prøve ;)

Opskriften er altå således for installationen.

  • Download FreeNAS iso´en fra http://www.freenas.org
  • Download physdiskwrite fra http://m0n0.ch/wall/physdiskwrite.php
  • Pak iso filen ud (evt med 7-zip)
  • Pak FreeNAS-x64.img.xz ud (evt med 7-zip)
  • Klargør din usb stick med diskpart, select disk #, clean
  • Brug physdiskwrite til at kopiere  FreeNAS-x64.img over på stick´en
  • Boot dit nye NAS fra disken

Det er simpelt når man får serveret hele opskriften, det gjorde jeg IKKE :(

 

FreeNAS

Jeg har besluttet mig for at jeg vil prøve at lave mit eget NAS og helst et der giver mig mulighed for at kunne udvide så meget jeg har lyst. Og jeg tror FreeNAS er et godt valg, så jeg tog en maskine jeg havde til overs frem og smed et par diske i og forsøgte at installere FreeNAS. Jeg er helt og aldeles grøn og synes derfor det kunne være interessant at skrive om de udfordringer jeg møder i denne nye verden! Så denne del af min blog kommer til at omhandle mit nye FreeNAS.

Gennemsøgning af tekst-filer

Fik en forespørgsel idag om jeg kendte et værktøj der kunne gennemse en masse tekstfiler for en bestemt streng og det gør jeg da. Det er nemlig lige et job for select-string.

Meget kort kunne det jo gøres vha:

Select-String -Path “sti til tekstfilerne” -Pattern “den tekst der skal findes”

Men output er ikke ligefrem lækkert og noget du kan servere for en chef eksempelvis ;) Så jeg brugte Out-Gridview så de kunne gennemgå om de havde fundet det forventede og derefter smider vi det ud i en komma-separeret fil, således:

Select-String -Path “sti til tekstfilerne” -Pattern “den tekst der skal findes” | Select Filename,Path | Outgrid-view -Passthru | Export-csv “sti til csv filen du vil lave” -NoTypeInformation -Delimiter “;” -Encoding “BigEndianUnicode”

Det var en hurtig og nem operation. ;)

 

LDAP Connection string

Jeg har fået en del spørgsmål på det sidste om ovenstående. Jeg har set en del bruge ldap://domænenavn som en LDAP Connection String, men det er ikke korrekt.. Sådan en består typisk af 3 ting:

  1. En URI LDAP://
  2. Navnet på kataloget (hvis det er Active Directory er det domænets DNS navn)
  3. Stien til hvor man vil søge i kataloget

Hvis vi forestiller os at der skal søges i bruger-folderen skal vi pege på Users folderen. I et Active Directory med DNS navnet firmaet.dk, så ville strengen se således ud:

LDAP://Firmaet.DK/CN=Users,DC=Firmaet,DC=DK

Du kan nemt finde ud af hvor en bruger ligger i Active Directory ved at benytte powershell og hente ham frem med get-aduser og så kigge i attributten DistinguishedName. DistinguishedName returnerer også brugernavn, så det skal du lige huske at fjerne før du copy/paster den.

Hvis du bare skal søge fra roden kan du bruge:

LDAP://Firmaet.DK/DC=Firmaet,DC=DK

 

 

Billeder i Active Directory

Jeg har i et stykke tid benyttet CodeTwo´s program “Active Directory Photos” til at opdatere brugernes billeder i Active Directory, det er nemlig et fantastisk produkt, hvis man bare skal have opdateret en sjælden gang. Find det her. Det er dog rimeligt besværligt at benytte hvis man skal opdatere dagligt eller ugentligt fra en base af billeder. Jeg har derfor lavet nedenstående script der kan gøre det helt automatisk..

Billeder i Active Directory lægges i den attribut der hedder ThumbnailPhoto og for at lægge et billede i den skal vi først konvertere billedet til en struktur som powershell forstår. Og da der er mere end 1 billede lægger jeg dem selvfølgelig i en variabel form.

Billedet hentes ind i en variabel

$Photo = [Byte[]] (Get-Content “sti til billeder” -Encoding Byte)

Og dette lægges ind i attributten ThumbnailPhoto ved at gøre følgende:

Set-ADUser -Identity “Username” -Replace @{thumbnailPhoto=$photo}

Ovenstående er grundfunktionerne og for at gøre det for flere billeder skal vi selvfølgelig bruge lidt mere avancerede funktioner. I følgende eksempel kører jeg en 3-trins raket af et script, først hentes brugernavne i AD og dernæst hentes billeder på en sharepoint side (da det typisk er der man vil have et billede af de ansatte) og til sidst uploader vi billederne til AD. Bemærk at jeg ikke har angivet nogle bruger med rettigheder til at hente brugernavne fra AD, jeg forventer at dette er muligt for alle. Men hvis dit Active Directory har enablet ListObjectModeOnly og ikke tillader dette, skal du selvfølgelig også angive en bruger til at hente brugernavne med.

$Cred = Get-credential  – brugernavn og kode der giver rettigheder til at hente billederne

$Cred2 = Get-Credential - Brugernavn og kode der giver rettigheder til at uploade billederne

$A = (Get-ADUser -filter * | where {$_.samaccountname.length -eq 5}).samaccountname - Henter brugernes samaccountname

foreach ($item in $A)

{Invoke-WebRequest -Uri “hjemmeside url/$item.jpg” -Method “get” -OutFile folder\$item.jpg -Credential $cred} - Henter billederne

foreach ($item in $A)

{$photo = [byte[]](Get-Content folder\$item.jpg -Encoding byte) - Konverterer dem til byte

Set-ADUser $item -Credential $Cred2 -Replace @{thumbnailPhoto=$photo} } - Uploader billederne

Ovenstående vil selvfølgelig fejle hvis ikke der er et billede til brugeren på siden og det kræver at billederne er navngivet brugernavn.jpg og er måske ikke brugbart for alle, men det giver et meget godt indblik i hvad der skal til for at uploade billeder automatisk. Det er også muligt at man kan finde en bruger der har adgang til det hele og så er det selvfølgelig kun 1 $cred der skal bruges.

 

Backup af GPO

At lave en backup af alle gruppe politikker i et domæne, kan man selvfølgelig bruge den indbyggede backup i den grafiske brugerflade (Group Policy Management Console), men det er jo noget sejere at lave sin helt egen backup gennem powershell. :)

Først skal vi finde en lokation hvor vi vil gemme vores backup og dernæst skal vi lave et lille script der foretager backuppen.

Start med at importere group policy modulet

Import-Module GroupPolicy

Dernæst skal vi have lavet et bibliotek der indeholder dagens backup (det kan selvfølgelig også være månedens backup, det er helt op til dig selv.) Bemærk at måned er med stort M, hvis du bruger et lille m er det minut du beder den om at sætte ind, de 4 yyyy gør at året bliver 2013 istedet for yy 13.

$Lib = Get-Date -Format d.M.yyyy

Så skal vi lave et bibliotek der hedder dags dato.

New-Item -Path lokation\$Lib -Itemtype directory

Og så skal vi køre en backup af alle politikkerne.

Backup-GPO -All -Path lokation\$Lib

Det var det hele. man kan så efterfølgende lave et script der trækker et antal dage fra dags dato og sletter de gamle biblioteker.

Det endelige script ser sådan ud:

$Lib = Get-Date -Format d.M.yyyy

$Lib = Get-Date -Format d.M.yyyy

Backup-GPO -All -Path lokation\$Lib

Så skal det bare signeres og scheduleres og så er den ged barberet.. ;)