Byggstatus med Lavalampor

Vi håller på att migrera från Visual Studio 2005, Visual Source Safe och CruiseControl.NET till Visual Studio 2008, Team Foundation Server och Team Build. Som en del i detta så ville vi få igång en tydlig visualisering av hur våra byggen går. Vi valde att använda de traditionella lavalamporna! Såhär fick vi det att fungera.

lavalamporna

Vi hade sedan tidigare ett CK13 Activehome Kit för att styra 220V från datorn.

Lampmodule och appliance module CM11a

För att styra de två X10 modulerna från kod så använde vi oss av Brian Vallelungas Home Automation (X10) Library

Vi utgick sedan från Martin Woodward TFS Build Wallboard API Example 

Vi uppdaterade koden i WallboardForm.cs för att tända och släcka lavalamporna till:

public voidUpdateStatus(IBuildDetaildetail) { // We used the build server later to convert the enums into the localized display values.
  
IBuildServerbuildServer = detail.BuildServer;

    lblBuildNumber.Text = detail.BuildNumber;

    //  The TFS API’s always return DOMAINusername, however the convention is that we only
    //  display the domain portion if it is different from our current users domain.
  
lblRequestedFor.Text = UserNameFormatter.GetFriendlyName(detail.RequestedFor, null);

    // If the build has finished then display the finish time.
  
lblFinishTime.Text = detail.FinishTime.Equals(DateTime.MinValue) ?
      “”: detail.FinishTime.ToString();

    // Convert the build status into a localized display text.
  
StringstatusText = buildServer.GetDisplayText(detail.Status);

    using(CM11AlavaLamps = CM11A.Instance(“COM1”))
    {
        // Now we want to show the fancy images.
      
switch(detail.Status)
        {
            caseBuildStatus.Failed:
                statusPictureBox.Image = global::BuildWallboard.StatusImages.status_bad;
                lavaLamps.SendCommand(X10HouseCode.B, 2, X10Command.TurnOn);
                lavaLamps.SendCommand(X10HouseCode.C, 2, X10Command.TurnOff);
                break;
            caseBuildStatus.InProgress:
                lavaLamps.SendCommand(X10HouseCode.B, 2, X10Command.TurnOn);
                lavaLamps.SendCommand(X10HouseCode.C, 2, X10Command.TurnOn);
                break;
            caseBuildStatus.NotStarted:
                statusPictureBox.Image = global::BuildWallboard.StatusImages.status_queue;
                statusText = buildServer.GetDisplayText(BuildStatus.InProgress);
                break;
            caseBuildStatus.PartiallySucceeded:
                statusPictureBox.Image = global::BuildWallboard.StatusImages.status_partial;
                break;
            caseBuildStatus.Stopped:
                statusPictureBox.Image = global::BuildWallboard.StatusImages.status_stop;
                break;
            caseBuildStatus.Succeeded:
                statusPictureBox.Image = global::BuildWallboard.StatusImages.status_good;
                lavaLamps.SendCommand(X10HouseCode.B, 2, X10Command.TurnOff);
                lavaLamps.SendCommand(X10HouseCode.C, 2, X10Command.TurnOn);
                break;
            default:
                break;
        }
    }
    // And finally set the text.
  
lblStatus.Text = statusText;

}

För att sedan få allt att fungara så var vi tvunga att trixa lite med X10 delarna (jag tror att Brian Vallelungas bibliotek inte är 100% kompatibelt med den Europeiska varianten av CM11 modulen).

Till att börja med så kunde man inte ha båda X10 modulerna på samma huskod. Jag valde att köra gröna lampan på huskod C och den röda på huskod B.

Sen var man tvungen att tända och släcka båda modulerna med en X10 kontroller (som jag lånade från min X10 anläggning hemma).

När detta var gjort så var det bara att köra igång! Alla i rummet ser nu snabbt och enkelt byggstatus liksom alla som går förbi i hallen!

Byggstatus Grön Röd
Bygger X X
Success X  
Fail   X
Advertisements

4 thoughts on “Byggstatus med Lavalampor

  1. Dag 2008-04-22 / 06:23

    Intressant och kul inlägg.
    /dag

  2. Hakan 2008-04-22 / 07:31

    Tack Dag,
    Kanske något ni skulle addera stöd för i Rosario!

  3. Martin 2008-05-25 / 12:31

    Awesome work!

  4. Hakan 2008-05-28 / 04:34

    Thanks Matrin,
    The implementation is rough but works quite well. Would love to have this built in too the TFS Build Notification Power tool.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s