Reconfiguring a PlusNet ADSL router (Technicolor TG582n)

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

This post is probably not much interest to many people but it might help some if, like me, you’re trying to re-configure a Technicolor TG582n ADSL router from Plusnet. Just make sure you read all the way to the end and save yourself some time!

For the last 11 years, my ADSL connection has been running with an elderly Solwise SAR110 ADSL modem/router, provided by Plusnet when we first connected to 512Mbps ADSL. Those were the days – half a meg download speeds seemed so fast back then! Whilst fibre has (just about) reached my neck of the woods, my ADSL 2 connection is working well, most of the time, and I get about 6Mbps down and 0.7Mbps up these days. Indeed, the connection actually seems to have become more responsive lately (my theory is that the contention rate has dropped in line with people switching to fibre)!  I did have cause to call Plusnet for support last week though, and they agreed to ship me a new router if I signed up to one of their current packages (which, incidentally saved me money too as we were still on a very old tariff).

The new router is a Technicolor TG582n and I finally got around to setting it up tonight. I was told that I might get slightly faster speeds but there’s no evidence of that based on the tests I’ve run so far (that may change in a couple of days when we roll into a new billing month and onto the new service) [Update: after a few reboots my speed has doubled to around 12Mbps]. For now though I just want to swap the old router out for the new one.

The first thing I found was that the default configuration sets the router’s IP address to 192.168.1.254. That’s the IP address of my wireless access point, and all of my devices are expecting a gateway address of 192.168.1.1.  So, I downloaded the router configuration (Technicolor Gateway -> Configuration -> Save or Restore Configuration).  This gave me a file called user.ini, which I then searched for all instances of 254 and looked like they were part of an IP address (ignoring one which was part of a long string of numbers) and replaced 254 with 1.  I then uploaded the new configuration and, hey presto, the browser refreshed giving me back the config for my wireless access point on 192.168.1.254 and the router was responding on 192.168.1.1.  That seems a bit of a kludge and there should be another way to do this, but I couldn’t find it in the GUI (at least not with software release 10.2.2.B).

Then, reading around I found that the router also has a DHCP server enabled by default. I don’t want that right now (my Raspberry Pi is doing that job for me) so I started to investigate switching that feature off. Again, I couldn’t find it in the GUI, so I tracked down a copy of the CLI guide for the router (from another ISP – Demon – albeit for an older release) and, sure enough, after telnetting onto the box the dhcp server config command told me it was enabled so I corrected that with the following commands:

dhcp server config state=disabled
saveall

After all that, I found the config that I needed – it seems that the location to make the changes is Home Network -> Interfaces -> Local Network -> Configure.

There I found some handy checkboxes to turn on/off DHCP servers (IPv4 and IPv6) as well as the static address for IPv4 addresses!

After all this, I may well switch over to one of the popular open source firmware packages on the router… but I’ll leave it alone for now…

Microsoft News Q4 2014

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

This post is an edited version of one that originally appeared on my internal blog at Fujitsu.

Fujitsu UK’s resident Exchange Master (and Distinguished Engineer), Nick Parlow (@Hagbard) does a great job of running an [internal] email list with links of things going on around Exchange. Indeed, there’s so much there I don’t manage to keep up with it but I do know where to look to see what’s happening… and I’d like to be able to do something similar about broader developments in the Microsoft Community.

I’ll use my blog for the time being… this post is my first attempt at a Microsoft News round-up.

Directions on Microsoft Enterprise Software Roadmap

Directions on Microsoft is an independent analysis service focused on Microsoft technologies, roadmaps and licensing policies and their latest quarterly roadmap calls attention to recent roadmap shifts for Microsoft enterprise technologies, including:

  • “Windows 10. The next version of the Windows client operating system is scheduled for release in the third quarter of 2015 and will improve security and management as well as address the user interface problems that limited adoption of Windows 8 and 8.1 by enterprise customers. The new operating system will likely ship for phones as well as tablets and PCs, which will simplify development of applications that run on all three devices types. Organizations should evaluate Windows 10 previews scheduled for early 2015 to see if the new OS will be a viable replacement for Windows 7, which leaves Mainstream support on Jan. 13, 2015.
  • Office 365. Customers of the Office 365 cloud services and software will continue to get new capabilities in areas such as e-mail filtering, collaboration, and search that are not available to customers running the corresponding on-premises software. Organizations planning future investments in Exchange, SharePoint, and Office should review the capabilities of Office 365 and its roadmap, even if they are not ready for an immediate move to the cloud.
  • Office 16. The next version of the Microsoft desktop productivity suite has an estimated release date in the third quarter of 2015. A touch-oriented Modern Office suite for mobile Windows devices such as tablets is likely to appear at the same time. Organizations can expect previews of these Office suites in early 2015.
  • Skype for Business. New versions of Lync products and services will launch in the first half of 2015 instead of late 2014 as originally planned. The versions will ship under a new name, Skype for Business, but current Lync technology and licenses should transition without major disruption.”

[the bullets above are a direct quote from the email I received from Directions on Microsoft]

Access to the report requires a subscription (which I don’t have) but even the snippets above provide a useful overview.

Future Decoded

Microsoft’s flagship marketing event for the UK took place last month over three days at the ExCel Conference Centre in London’s Docklands. Each of the days focused on a different audience with business leaders on Monday, partners on Tuesday and a technical audience on the Wednesday, with different Microsoft teams leading the day. I attended the business and technical events.

Clearly, lots of money was spent on keynotes speakers – of varying quality – but the real gems on the business day were the afternoon sessions with real world customer stories of how they were implementing Microsoft technologies (not just product pitches). I heard from Marstons on how they’re using Dynamics CRM (just enough for me to get a feel of what the product can do), JustGiving on their GiveGraph big data solution that aims to make giving social by picking up on how emotion and sentiment flows between people, Schroders on the lessons learned from their Lync deployment, ThyssenKrupp on how they’re using data to change the way they maintain lifts [and hijacking the Internet of Things trend to discuss what’s really just “things on the Internet”], from Transport for London explaining the evolution of payment systems (contactless micropayments), and finally from Landmarc on the “private cloud” they built for the MoD (I mis-read the session title because I was interested to hear how MoD might embrace cloud services).

The technical day was a bit harder to jump tracks in the afternoon – I’ve fed back to Microsoft that many of us (particularly in the enterprise space) will have multiple streams to follow and not just one topic of interest – but I did manage to attend sessions on outsmarting the digital deluge, hyperscale solutions for the Internet of things, hybrid identity management, and Microsoft Azure Machine Learning (MAML).

All three days also featured an Expo with about 3000 attendees on each of the days I visited and delegates on the third day could also visit AppsWorld in the next hall (passes were valid for both conferences)…

In other news, one of the Platinum sponsors was Risual (the others were Dell and HP).  I didn’t tweet about this too much because I didn’t want to be seen to support one of our competitors but it seems they got plenty of PR when their promotional video went viral.

Re-imagining the Enterprise

Tony Muraki-Hart, CTO for the Microsoft-Fujitsu Alliance spoke at a recent Distinguished Engineers’ event about Microsoft’s forward-looking vision – how Microsoft is re-imagining the enterprise. Key themes included digital transformation, becoming a customer-obsessed enterprise, and the re-imagination of Microsoft as a productivity and platform company for the mobile-first and cloud-first world.

Unfortunately the slide deck is not one I can share publicly but, in essence, the Microsoft that Steve Ballmer led with a focus on Windows and Office is a different organisation to the one Satya Nadella is leading – more open, and cross-platform.

Wrap up

That’s it for now. I’ll aim to come back with another Microsoft News update in the new year. Until then, I’ll sign off with a link to a Redmond Magazine article from Mary Jo Foley on the five changes at Microsoft in 2014 that mattered the most.

Learn the basics of computer programming in an #HourOfCode

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Next week (8-14 December 2014) is Computer Science Education Week and the Hour of Code is coming to the UK. More than 3 million people have tried an Hour of Code already, in an initiative that aims to dispel any myths that computer programming is difficult and to provide parents, teachers and students across the nation with an enjoyable introduction to coding. Code.org hope that this will help build awareness of and confidence in the changes that have come in the September 2014 English school curriculum.

It’s not just in schools either – my employer has 24 “hour of code” workshops scheduled all over the country for our technical staff to give non-techies a one-hour introduction to the basics of computer programming and there’s been a fantastic sign-up rate.

Other IT companies are getting involved too (actually, there’s an extensive list of partners) including Apple, who are hosting Hour of Code workshops in Apple Stores across the world on 11 December (I’m hoping to get at least one of my sons to come along with me). It’s billed as “no experience needed” and for “ages 6-106”.

If computer programming is a mystery to you but it might be something of interest, find out more about the hour of code on the Code.org UK website or follow @codeorg on Twitter.

And if the Hour of Code whets your appetite, you might like to check out some of these resources:

[Update 10 December 2014: added Microsoft Imagine to the list]

[Update 14 December 2014: added 20 hours of code to the list]

Short takes: Unicode characters in Windows; OS X Remote Disc goes AWOL

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

More micro-posts from the collection of open tabs in my browser…

Unicode characters in Windows

Sometimes, when tweeting, it’s useful to be able to type the unicode horizontal ellipsis (…) rather than three full stops (…). It might look similar, but that’s two less characters out of 140.  I remember back in early days of Windows I could enter special characters using the numeric keypad but it seems that still works (sort of): FireFormat.Info has some useful information on entering Unicode characters in Microsoft Windows.

Mac OS X Remote Disc goes AWOL whilst installing Adobe Lightroom

My new Mac Mini doesn’t have an optical drive. That’s not generally a problem except I needed to install Lightroom on it, so I used OS X’s Remote Disc technology to share the DVD drive from my old MacBook across the network.  The software installation was progressing nicely until, right at the end, the Adobe installer wanted me to insert the disc! As I was already connected to a logical disc, I had no way forward but to abandon the installation, connect a USB DVD drive and try again.  Seems it’s not the universal solution to accessing optical media that I had hoped…

To add insult to injury, I then found (thanks to the Lightroom Queen) that the Lightroom downloads on the Adobe website are the full programme, so I could have downloaded the software and installed it locally – all I really needed was my license key!

Choosing an Office 365 identity model (when to use ADFS)

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

At the time of writing, Microsoft Office 365 has the ability to work with three identity models:

  • Cloud identity (stored in Microsoft Azure Active Directory).
  • Synchronised identity (a copy of the objects from an on-premises Active Directory is made in Microsoft Azure AD), optionally with synchronised password hashes.  This is also known as same sign on (not single sign on as there are still two separate objects, albeit two objects that are kept synchronised).
  • Federated identity, using a federation service (such as Active Directory Federation Services, but others are supported) to authenticate users in an on-premises directory following which authorisation can be granted to Office 365 resources. This is also known as single sign on.  In this instance, directory synchronisation is still used to populate the Azure AD with user objects, although authentication happens on-premises.

Whilst the majority of small businesses will be fine with cloud identities, many of my conversations with enterprise customers start off in the directory synchronisation space. Generally, synchronisation is performed using the Office 365 DirSync appliance (a customised version of Forefront Identity Manager) although, more recently a new tool (Azure AD Sync) has been released that will eventually replace DirSync.  At the time of writing the main difference is that Azure AD Sync supports multiple forests (DirSync is a single forest solution) but it doesn’t support password synchronisation (still a major advantage for DirSync).

In general, the approach I recommend is to choose the simplest model for the organisation’s needs. The cloud identity model can work well when there is no on-premises directory service or there is no requirement to integrate; synchronised identity is the most commonly used (assuming there is an existing Active Directory) but sometimes federation is required:

  1. If there is an existing ADFS infrastructure.
  2. If a third party federated ID provider is in use.
  3. If Forefront Identity Manager 2010 is in use (which does not support password synchronisation).
  4. If there are multiple on-premises Active Directory forests (although Azure AD sync may negate this requirement).
  5. If smart cards or other third-party multi-factor authentication solutions are in use (Azure AD does have an MFA capability, although there are some restrictions on its use).
  6. If custom hybrid apps or hybrid search are in use (SharePoint).
  7. If a hybrid Lync solution is in use (i.e. placing users with enterprise voice capabilities on premises and those that don’t need voice in Lync Online, sharing the same SIP namespace).
  8. For self-service password reset via a web service (only administrators have self-service password reset in Office 365).
  9. If there is a requirement to audit logins and/or immediately disable accounts.
  10. If there is a requirement for single sign-on (i.e. accessing Office 365 workloads with the same user credentials as on-premises).
  11. If there is a requirement to restrict client logins by time or location.
  12. If the organisational security policy prevents the synchronisation of password hashes to Azure AD.

On a related topic, the Microsoft Online Services Sign-in Assistant (MOSA) for IT Professionals only exists to simplify the user experience (handling tokens, etc.) and is generally not required with modern versions of Office. Administrators using PowerShell may still need it though.

Finally, if ADFS is down, there is no way for users to authenticate. For that reason, federated infrastructure needs to be highly available (e.g. multiple ADFS proxies and multiple ADFS servers).  One method that’s starting to be commonly recommended is an “ADFS safety net”, using DirSync as a fall back (it’s possible to move between identity models on demand) but obviously that’s only an option if your organisation’s security policy allows the synchronisation of identities (including password hashes to minimise the impact on end users).

For reference, the PowerShell commands are:

Convert-Msol-DomainToStandard -DomainName domainname.tld -SkipUserConversion $true
Convert-Msol-DomainToFederated -DomainName domainname.tld

Set-Msol-DomainAuthentication -Authentication Managed -DomainName domainname.tld
Convert-Msol-DomainToFederated -DomainName domainname.tld

Credit is due to Michel de Rooij (@mderooij) for the ADFS safety net tip.

My new Office 365 Resource Centre

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

I’ve been doing a fair amount of work with Office 365 in recent months (including passing certification exams) and, along the way, I’ve found a lot of snippets of useful information. Normally I’d write a blog post but I expect to be constantly adding to the information so I thought I’d create a different solution this time.

So, I’ve started to create what’s currently known as Mark’s Office 365 Resource Centre. It’s work in progress – and I’m sure the structure will change as it grows over time – but at least I’ve found something to do with the public website on my Office 365 subscription!

Déjà vu: buying and upgrading another Mac Mini

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Eight years ago, I was writing blog posts about buying a Mac Mini and upgrading its inner workings. Then, last weekend, I bought a new one.  Well, actually I bought the outgoing model at a knock-down price, thanks to a tip-off from Dom Allen (@ca95014).  A 2.3GHz Core i7 late-2012 model should happily replace my aging MacBook and, unlike the late-2014 model that Apple recently announced, it has upgradable RAM (up to 16GB) rather than memory integrated on the main logic board (I believe the term is planned obsolescence and I find it deeply cynical…).

As usual, I bought my memory from Crucial but, whilst I was waiting for it to arrive, I introduced my eldest son to the Apple unboxing experience…

The memory turned up a day or so later and now I’m in the process of transferring all of my images and photo-editing software to the new Mac… I’m sure there will be more posts to follow on that experience.

With some more hard disk space and a faster Mac, maybe I’ll start taking more pictures (lost my “photo mojo” of late, although I did grab a few shots when I went to watch the Revolution Series track cycling a couple of weeks ago).

Dreaming of a better commute

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

Travelling in and out of London this week for the course I’ve been attending has reminded me why working from home (mostly) is a huge blessing. At least 4 hours’ travel a day for a relatively simple 60-mile commute? No thank you!

I did, however, use two different routes with contrasting experiences and that made me think – why does it have to be this way? And what might it be like one day?

Commute route 1: Olney to London via Bedford (Thameslink/East Midlands Trains)

After driving to Bedford and finding a space in the car park (not always easy), the next question was where are the ticket machines? The option to pay and display with optional mobile phone/SMS/app payment seems to have been replaced by a system to pay as you leave the car park on foot (albeit with an optional mobile app). It uses ANPR to recognise my car but the user interface is confusing and there’s no option for contactless payment (surely a perfect use case for fast commodity transactions like this?). At £7.90 for a day’s parking (when the only reason you would ever park there is to catch a train!), it’s expensive too.

Then, at the station I bought a ticket – again falling foul of a confusing user interface (not helped by Thameslink’s corporate colours not really highlighting what I need to see). I switched to another machine and followed a different (but more familiar) purchase journey on the touch screen whilst another customer switched queues because of a broken card reader in the machine she was using.

Catching the train is simple, with frequent services but lots of stops and the (07:34) train is packed well before reaching London.

The good thing about this route (on Thameslink – not on East Midlands Trains) is that it goes right to the heart of the city (not the West End) although I change at Farringdon to get on the underground towards Tower Hill. Sadly, with no barriers to pass through and crowds of commuters I didn’t see an Oyster touch in/out machine, which I realise after boarding the train – wouldn’t it be good if there were more of these machines or if you could swipe on the train!? I touch out at the end of the journey but am charged the full fare and it takes me a lot of time on the phone waiting to sort out the charging…

Commute route 2: Olney to London via Milton Keynes (London Midland/Virgin Trains)

After a faster drive to Milton Keynes (MK is famous for its roundabouts but there’s a real benefit in the national speed limit grid road network), I park close to the station. The actual station parking is extortionate (so much so that I know some people who don’t pay, preferring to take the risk of an occasional fine) but off-street parking is available and half price if I pay by phone (£4.18).

I buy a ticket at the station but know to always allow time for queuing: there are 6 machines and 4 booths but that’s never enough! It’s 06:54 so I dash for the 06:55 London Midland service, but see that the (faster) 06:53 Virgin train has only just arrived (even though it’s showing as “on time”).

We set off towards London, only to be delayed by a vehicle striking a bridge at Watford and are overtaken by the slower London Midland service that I nearly caught earlier! Eventually, we get moving and arrive in London 20 minutes late…

A dream of a better commute

These real world stories are just single journeys and it could all be so different on another day. So let’s compare with what it could be like:

  • My calendar shows that I’m planning to be in London for the day.
  • My alarm wakes me with enough time to get ready, and the lights in the house gently warm up to wake me from my slumber.
  • I drive to the station and, as I park my phone recognises my location and that I’m stationary, asks me if I need to pay for parking and then takes care of the details.
  • Arriving on the station concourse, my digital personal assistant has pre-bookèd my train ticket and there’s a boarding pass on my phone. No paper tickets are required as the barriers can simply scan a QR code on my screen (or even use NFC?)
  • There’s a steady flow of trains (on time of course!) and as I switch to the Underground, payment is dealt with as I pass through turnstiles using a contactless payment card – and, even if I end up on the platform via a different route I can pick my boarding point (verified using location services) and ensure I’m correctly billed, using a smartphone app…
  • Realising there are delays on the line, my phone reschedules appointments as required, or otherwise ensures that contacts are aware I will be delayed.

It’s not difficult – all of this technology is available today but it just doesn’t quite work together… all of this talk of an Internet of Things brings it tantalisingly close but train companies, car park operators and other organisations still cling on to outdated methods. So it seems I’ll be dreaming for a little while longer…

 

Microsoft course review: 10968B (Designing for Office 365 Infrastructure)

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

I’ve spent the last three days on a Microsoft Official Curriculum training course at QACourse 10968B: Designing for Office 365 Infrastructure. Like many Microsoft courses, this is badly named (it won’t teach you how to design for Office 365) but I really did find it useful because it focuses very heavily on Microsoft’s FastTrack deployment methodology for Office 365.  Stepping through each of the stages of pilot (although it’s questionable whether enterprises will do this), deploy and enhance, the course reminds us of the key points to consider at each stage with labs to work through with a fictitious company (for once, it’s not Contoso).  Then, the final module is a full case study (using Trey Research of course) where the class divides into groups and works with the instructor (as a customer) to walk through a series of meetings to understand the environment and make the appropriate decisions for use of the Office 365 services.

I found it really beneficial – particularly the final exercise – as I’m doing this with customers all the time and it’s good to compare the approach I take with the Microsoft recommendations.  I was fortunate as well that we had a very knowledgeable instructor, Dan Lewis, and that led to some really good classroom conversations (in contrast to an Exchange course I attended at the same venue last year, where the instructor was limited in her knowledge) – and the range of roles in the room (midsize company infrastructure manager; large enterprise employees; specialist service provider; systems integrator) also added to the depth of discussion.

The one negative – and it’s a huge one – was the courseware.  Microsoft has moved from printed materials to online content and I can understand the reasons (both financial and environmental) but the system used is awful.  Microsoft Learning have partnered with Skillpipe, who have a content platform using a proprietary document format (presumably for reasons of digital rights management – although why they can’t use Microsoft’s own DRM is beyond me) and the content is only available in browser, or in a reader app for Windows (Vista/7 or 8/RT). No mobile devices – not even Windows Phone!  Added to which I find it really difficult to absorb information on screen (e.g. reading a scenario) and it really damages the learning experience.

Incidentally, if you want to learn about the detail of Office 365, this course is not for you – there’s a 5 day hands on course (Course 20346B: Managing Office 365 Identities and Services or you can access the same content, minus the hands-on elements, in the Microsoft Virtual Academy). And, if you really think that’s all a bit too much fuss and you would like to engage a Microsoft Partner instead… then you could always contact me at work!

Ethernet control for my office “traffic lights”

This content is 10 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

A couple of years ago, I wrote about the “traffic lights” I’d created for my home office (and subsequent “upgrade”). Shortly after that, I updated the solution to use three LEDs (as shown below) but it still wasn’t quite what I needed. Walking to the door to push a button and change the light defeated the object somewhat.  I needed to enable this device with a “web service”!

The solution comes in the form of an Arduino Ethernet Shield, allowing pin control over a standard Ethernet connection.  I didn’t use the official shield though – cheap imports can be found on eBay for around £7.  Following that, I amended my code using the Instructables Arduino Ethernet Shield Tutorial and another Instructables post on controlling an LED over the Internet using an Arduino.

The end result is below (or on Github) – and the Arduino uses DHCP to obtain an IP address (reservations can be used to control which one – or DHCP logs can be analysed) and a simple query string is read to set the light using:

  • http://xxx.xxx.xxx.xxx/?r for red.
  • http://xxx.xxx.xxx.xxx/?a for amber.
  • http://xxx.xxx.xxx.xxx/?g for green.

Anything else fails back to red.  

/*
Red/green LED indicator with pushbutton control
Based on http://www.makeuseof.com/tag/arduino-traffic-light-controller/

USE_GITHUB_USERNAME=mark-wilson

*/

// Setup Ethernet Shield
#include <SPI.h>
#include <Ethernet.h>
boolean reading = false;

// Enter a MAC address and IP address for your controller below.
// The IP details will be dependent on your local network (commented out if DHCP in use):
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// byte ip[] = { 192, 168, 0, 112 }; //Manual setup only
// byte gateway[] = { 192, 168, 0, 1 }; //Manual setup only
// byte subnet[] = { 255, 255, 255, 0 }; //Manual setup only

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

// Pins for coloured LEDs
int red = 3;
int amber = 4;
int green = 5;
int light = 0;

int button = 2; // Pushbutton on pin 2
int buttonValue = 0; // Button defaults to 0 (LOW)

void setup(){
Serial.begin(9600);

// Set up pins with LEDs as output devices and switch for input
// Pins 10,11,12 & 13 are used by the Ethernet Shield
pinMode(red,OUTPUT);
pinMode(amber,OUTPUT);
pinMode(green,OUTPUT);
pinMode(button,INPUT);

// start the Ethernet connection and the server:
Ethernet.begin(mac);
//Ethernet.begin(mac, ip, gateway, subnet); //for manual setup

server.begin();
Serial.println(Ethernet.localIP());
}

void loop(){

// listen for incoming clients, and process qequest.
checkForClient();

// Read the value of the pushbutton switch
buttonValue = digitalRead(button);
if (buttonValue == HIGH){
changeLights();
delay(1000); // Wait 1 second before reading again
}
}

void changeLights(){
// Change the lights based on current value: 0 is not set; 1 is red; 2 is amber; 3 is green
switch (light) {
case 1:
turnLightAmber();
break;
case 2:
turnLightGreen();
break;
case 3:
turnLightRed();
default:
turnLightRed();
}
}

void turnLightGreen(){
// Turn off the red/amber and turn on the green
digitalWrite(red,LOW);
digitalWrite(amber,LOW);
digitalWrite(green,HIGH);
light = 3;
}

void turnLightAmber(){
// Turn off the green/amber and turn on the red
digitalWrite(green,LOW);
digitalWrite(amber,HIGH);
digitalWrite(red,LOW);
light = 2;
}

void turnLightRed(){
// Turn off the green/amber and turn on the red
digitalWrite(green,LOW);
digitalWrite(amber,LOW);
digitalWrite(red,HIGH);
light = 1;
}

void checkForClient(){

EthernetClient client = server.available();

if (client) {

// An http request ends with a blank line
boolean currentLineIsBlank = true;
boolean sentHeader = false;

while (client.connected()) {
  if (client.available()) {

    if(!sentHeader){
      // Send a standard http response header
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
      client.println();
      sentHeader = true;
    }

    char c = client.read();

    if(reading && c == ' ') reading = false;
    if(c == '?') reading = true; //found the ?, begin reading the info

    if(reading){
      Serial.print(c);

       switch (c) {
         case 'a':
           turnLightAmber();
           break;
         case 'g':
           turnLightGreen();
           break;
         case 'r':
           turnLightRed();
           break;
       }
    }

    if (c == '\n' && currentLineIsBlank)  break;

    if (c == '\n') {
      currentLineIsBlank = true;
    }else if (c != '\r') {
      currentLineIsBlank = false;
    }

  }
}

delay(1); // give the web browser time to receive the data
client.stop(); // close the connection:

}

}

All it needs now is another service to read my Lync status and call the Arduino accordingly, although, having got this far, I have to admit the form factor is not exactly brilliant and I probably should spend the money on a Busylight or a Blynclight instead so that my Arduino can be repurposed for a new project!

Or, of course, there’s Garry Martin (@GarryMartin)’s beautifully simple approach: